网络组件
前文介绍的组件如下:
优化器
释义: 损失函数计算出预测值与真实值之间的差距时,有优化器根据一定的策略去调整原有模型的权重,这个调整的策略可以理解成优化器。
举例: 相当于学生考完试,卷子分数出来后,老师根据分数和学生的特点,去制定帮助学生提高学习的方案。
优化器–SGD
公式如下:
优化器–Adam
解读:
1.四个Require指的是必须输入的参数
2.第1行Require,指的就是咱们的学习率-lr;
3.第3行Require,函数指的是模型本身,参数就是模型可以训练的权重
4.第4行告诉我们要初始化3个m、v、t参数,且初始值为0
5.while后面的我们一行行解释:
a. 第1行:t就是计数,每次训练都加1嘛
b. 第2行:就是求梯度的公式
c. 第3行:m可以理解为,每一次的梯度,有包含前面t-1次梯度的影响,但多次梯度都为正,有一次为负时,算下来,还是为正
,只是正值较小;这样可以减少脏数据的影响,降低振荡
d. 第4行:可以和第3行理解相同
e. 第5行:可以简单理解为,随着训练次数的增加,权限随着梯度的改变,越来越接近我们的目标值,在这个阶段中,我们调整每次调整权重的幅度,应该逐渐减小
。
f. 第6行:第6行理解可以参照第5行,一个意思
g. 第7行: 就是计算权重的更新值;其中可以把m理解为梯度,v理解为一个参数,我们称为学习率自适应参数
;如果不太好理解,就整体的来看,第7行求更新的权重时,有m、v两个参数是随着训练的次数等情况在动态调整的,这可以理解成根据训练的情况,自适应的调整权重更新的幅度
。
优点
- 实现简单,计算高效,对内存需求小,因为计算公式比较简单,没有指数或者对数。
- 超参数具有很好的解释性,且通常无需调整或仅需很少的微调
- 更新的步长能够被限制在大致的范围内(初始学习率)
- 能够表现出自动调整学习率
- 很适合应用于大规模的数据及参数的场景
- 适用于不稳定目标函数
- 适用于梯度稀疏或梯度存在很大噪声的问题
总结: 简单的说,Adam简单高效,能够自适应学习率,并且降低震荡。