今天主要解决以下四个问题:超参数,动量梯度下降,权重初始化,BP网络反向传播算法,只学习了部分内容,以后接触到相关问题再进行补充。
(1)训练神经网络的超参数设置
现在我了解到的超参数:学习率,权重衰减,mini_batch,
学习率:是权重更新的步长,梯度是权重更新的方向,反向传播是计算梯度的方法,梯度下降是求解的方式。学习率可以是固定学习率设置,也可以动态调节学习率。
由于在参数求解接近最优时,较大的步长会越过最优解,因此此时最好设置较小的学习率。最好不要使用固定的学习率。
使用动态的学习率包括(1)使用一段一段的学习率,如训练4个epoch,每个epoch对应的学习率为1 0.1 0.01 0.001,(2)可以根据验证误差,减半学习率,
不断减半学习率,(3)可以使用指数衰减的方式,(4)可以使用自适应学习率的方式,如RMSProp,Adam。
权重衰减:就是正则化的系数。
mini_batch:设置为2的倍数最好,1 2 4 8 16 32 64 128 256 512 1024,常用的为64 128 256,设置过大非常需要内存,设置过小无法表现数据规律,可能训练效果不好。
(2)动量梯度下降
积累了之前梯度的加权平均,可以使网络训练更快地收敛。超参数beta控制指数加权平均数,一般取0.9,代表取前10个梯度的平均值。当时想到动量梯度下降公式
中的dw代表什么意思?其实还是损失函数关于w的偏导,不知道是缩写还是什么原因写成这样,一下弄蒙我了。
(3)权重初始化
目前了解到的常用的设置权重初始化的方式为Xavier初始化,高斯分布,截断高斯分布。
(4)BP反向传播
BP反向传播四个公式:输出层误差的方程,使用下一层的误差表示当前层的误差,代价函数关于网络中任意偏置的改变率,代价函数关于网络中任意权重的改变率
学习过程中,想到一个问题,训练经常遇到的梯度消失或梯度爆炸问题,我们是如何判断出现这个问题的?通过查看相应的权重不更新,还是保存计算的梯度为0呢?暂时没有这方面的资料供我参考,
好希望有个大佬带我学习,解我疑惑。