作者:气象学渣
来源:气象学渣
梯度下降法是目前神经网络训练过程中最为核心的算法之一,配合链式求导可实现误差在神经网络中的反向传播,更新参数,优化模型。由于大部分深度学习框架事先将其进行了封装,使其使用起来变得相当方便。
但这也直接导致了我们对其原理与实现过程缺乏直观的感受,本篇借助Excel实现梯度下降法求解二元线性方程,并绘图呈现优化过程,以进一步加深理解。
整个求解过程与神经网络相似:选择一个合适的损失函数,通过学习大量样本,不断优化模型参数,逐渐'猜测'出样本特征与样本标签之间的关系与规律,使得模型输出与标签之间的损失最小。
那么该怎么猜,随机瞎猜肯定不是这么回事儿,神经网络动辄千百万参数,不现实。那是否可以以什么方向猜呢,答案就是梯度!梯度是一种特别的导数,其为函数空间中某一位置上最大的方向导数,意味着沿着梯度方向移动单位距离函数值增加最大。在三维直角坐标系中,其向量可由各方向上的偏导数表示:由于在前向计算过程中训练样本可视为不发生变化,那么模型的损失仅与模型参数有关,可以认为损失是参数的函数L,让损失最小化的问题亦转变为求函数L极小值的问题。而极小值点本身二阶导数为零,大于极小值点时,导数为正,函数单调递增;小于极小值点时,导数为负,函数单调递减,因此不管当前是否在极小值点的左侧或右侧,我们只需沿着梯度的相反方向挪动一小步就能更靠近极小值一点(步伐通过学习率设定)。
当函数维度增加,则目标变成寻找更高维空间的极小值点。以三维空间为例,该过程就好比从山上下山一样,总是寻找当前脚下四周最陡峭的地方落脚,这样下山当然最快了。
假定所求二元线性方程为:Y=2X1+3X2+3,新建一个excel工作表,并按下列两表格中单元格位置输入对应内容。为方便求导,损失取均方误差的1/2。
输入完毕后使用Excel填充功能,批量生成2000个样本并训练优化,如图:最后使用Excel绘制参数和损失训练过程中的演变曲线。可以看出参数收敛于事先设定的系数,而损失收敛于零。有兴趣的童鞋可以试试修改学习率和初始参数值,看看对结果有什么影响,或者加上链式求导构造一个简单的神经网络(MLP)。
您的关注是对小渣莫大的鼓舞
点击下方二维码添加订阅,下期再会咯!