https://zhuanlan.zhihu.com/p/32714733
参考这篇文章,看了一遍,先记录下,后面再来总结
梯度下降: 是一种优化方法,网络更新参数的公式为:θ=θ−η×∇(θ).J(θ) ,其中η是学习率,∇(θ).J(θ)是损失函数J(θ)的梯度。用于将代价函数降到极小值的最快的一种方式。
梯度下降只是神经网路众多优化算法中的一种。其他的还有如Adam、Momentum等。讲解很好的优化算法文章:
https://zhuanlan.zhihu.com/p/27449596。自己待回头总结下。
反向传播:计算的是梯度,只是从后往前。衡量神经网络中各层的权重参数对于误差影响大小。
“前向传播”求损失,“反向传播”回传误差,反向传播根据误差信号(梯度(偏导值))修正更新每层的权重。
反向传播的思想其实就是,对于每一个训练实例,将它传入神经网络,计算它的输出;然后测量网络的输出误差(即期望输出和实际输出之间的差异),并计算出各层中,上一个隐藏层中各神经元为该层输出结果贡献了多少的误差;利用参数更新公式w'=w-学习率*梯度。反复一直从后一层计算到前一层,直到算法到达初始的输入层为止。此反向传递过程有效地测量网络中所有连接权重的误差梯度,最后通过在每一个隐藏层中应用梯度下降算法来优化该层的参数(反向传播算法的名称也因此而来)。
具体流程:
计算出输出与标签间的损失函数值,然后计算其相对于每个神经元的梯度,根据梯度方向更新权值。
(1)将训练集数据输入到NN的输入层,经过隐藏层,最后达到输出层并输出结果,这是NN的前向传播过程;
(2)由于NN的输出结果与实际结果有误差,则计算估计值与实际值之间的误差,并将该误差从输出层向隐藏层反向传播,直至传播到输入层;(反向传播)
(3)在反向传播的过程中,根据误差调整各种参数的值;不断迭代上述过程,直至收敛。(更新参数)
反向传播也可以看成是保存值的链式求导(CS224N里,老爷子的概述)
激活函数(又叫传递函数):以分类为例,就是对wx+b,再外层套了的一个函数,如sigmoid.(将wx+b的值进一步映射到0,1之间)。将神经网络每层的输出结果变得非线性化,这样使得神经网络才能拟合任意函数。另一个意义:它的存在可以过滤掉一些非重要的信息(将值要到0),放大更重要的信号(值变得相对更大).