AI技术百科
学习速率 learning rate
运用梯度下降算法进行优化时,权重的更新规则中,在梯度项前会乘以一个系数,这个系数就叫学习速率 α:
如果学习速率太小,则会使收敛过慢。
如果学习速率太大,则会导致代价函数振荡,迭代过快,梯度下降法可能会越过最低点,甚至可能发散。
学习速率的取值取决于数据样本,可以多取一些值,从大到小,分别运行算法,看看迭代效果,如果损失函数在变小,说明取值有效,否则要增大步长。
例如:把学习速率设置为 0.01,然后观察 training cost 的走向,如果cost 在减小,可以逐步地调大学习速率,试试 0.1,1.0 如果 cost 在增大,那就得减小学习速率,试试0.001,0.0001。经过一番尝试之后,可以大概确定学习速率的合适的值。
学习速率的调节
在优化的过程中,learning rate应该是逐步减小的,越接近“山谷”的时候,迈的“步伐”应该越小。
人工调节
可以先对 learning rate 设置初始值,如:0.25,迭代到一定程度时,如:第20个epoch时候,将 learning rate 除以10,设置为0.025。
自动调节
一个简单有效的做法就是,当验证集的准确率不再提高时,可以让 learning rate 减半或除以10,然后继续迭代。
参考的配置
AlexNet 以及 VGG 中的学习率设定:
学习率初始设定为 0.01,然后当验证集准确率停止改善时,减少10倍。学习率总共降低3次。
The heuristic which we followed was to divide the learning rate by 10 when the validation error rate stopped improving with the current learning rate. The learning rate was initialized at 0.01 and reduced three times prior to termination.
22
条内容
激活函数(Activation functions)对于人工神经网络 [1] 模型去学习、理解非常复杂和非线性的函数来说具有十分重要的作用。它们将非线性特性引入到我们的网络中。如图1,在神经元中,输入的 inputs 通过加权,求和后,还被作用了一个函数,这个函数就是激活函数。引入激活函数是为了增加神经网络模型的非线性。没有激活函数的每层都相当于矩阵相乘。就算你叠加了若干层之后,无非还是个矩阵相乘罢了。
如果不用激活函数,每一层输出都是上层输入的线性函数,无论神经网络有多少层,输出都是输入的线性组合,这种情况就是最原始的感知机(Perceptron)。
如果使用的话,激活函数给神经元引入了非线性因素,使得神经网络可以任意逼近任何非线性函数,这样神经网络就可以应用到众多的非线性模型中。