代价函数的梯度?
来源:2-5 实战分类模型之数据归一化

慕神4535282
2021-04-21
老师,早上好,请教一个问题?
在本节中,
假设
model.fit(x_train_scaled, y_train, epochs = 10, batch_size = 32,validation_data = (x_valid_scaled, y_valid))
我查看了官方api,这个 batch_size 对应于梯度的样本数,那上面这行代码应该表示每32个样本就计算一次代价函数的梯度吧,
我的问题是:
- 前32个样本计算出来的梯度和后32个样本计算出来的梯度,两者之间没有联系吧?两个梯度都是独立的,互不影响。
- 整个训练集要遍历的总步数是: 总样本数 / batch_size = 55000 / 32 = 1719,这样的话,遍历一个epoch就需要1719步,而每一步会有一个梯度,每一个梯度会产生一个预测函数,即遍历一个epoch会产生1719个预测函数,但是看运行结果,似乎一个epoch只产生了一个预测函数,这其中是用了什么算法把1719预测函数整合为一个预测函数吗?
- 经历一个epoch,是不是对应于 https://coding.imooc.com/learn/questiondetail/4daeRY4Jgzx6nWEp.html 中的(4.2)步?
- 既然经历一个epoch,得到代价函数最小值,从而确定了预测函数,为什么要经历多个epoch呢?为什么这多个epoch得到的代价函数都不一样?
谢谢老师指导!!!
写回答
1回答
-
不是相互独立,前32个样本计算完梯度后就进行了更新,后32个样本是在前32个样本的梯度更新后的参数基础上计算的梯度。
1719步每次计算完梯度都会去更新参数。
不是,经历的1719步中的每一步都相当于那个过程。
对于数据量比较小且feature比较少的时候(比如是个凸问题,凸问题你可以理解为只有一个极值的问题),你可以一次找到最优值,但当样本变多,feature变多,最后的损失函数的就不是凸问题了。此时可能存在多个结果,无法一次找到最优值。所以要逐步更新参数,即w = w - learning_rate * grads, 所以要做多个epoch。
012021-04-26
相似问题