深度学习入门:误差反向传播法

一、神经网络的损失函数

        其实神经网络在干的事情就是学习,我们知道学习是需要“学习资料”以及“参考答案”的,所以呢神经网络的学习就是我们先给神经网络一些训练数据(学习资料)和标签(参考答案),

        然后让给神经网络预先设定一个权重和偏置,让神经网络带着这个假设的权重和偏执自己根据训练数据去预测结果(就是自己做出来的答案),然后对比预测结果和标签,计算出预测结果和标签之间的差距(损失函数),然后想办法优化权重和偏执让每一次预测得到的损失函数越来越小,就可以完成学习过程,得到一个比较好的参数。

        在设计到预测问题的神经网络中,我们一般使用平方误差C来确定损失C = (1/2)* (y -\widehat{ y})^{2},其中y代表标签值,\widehat{y}代表预测值;

        当然我们对于每一个学习资料(每一道题)都能计算出一个误差,假设第k个学习资料得到的误差为C_{k},我们将每一个学习资料的误差进行累加,就可以得到代价函数C_{T}

        所以我们要做的事情就是让代价函数最小

        正好我们已经学过的梯度下降法的用途就是用最快的速度找最小值,在这里正好就可以用到

二、误差反向传播法

        在学习梯度下降法时,我们知道梯度就是一点对于各个自变量的偏导值组成的一个向量,但在有多层的神经网络中,对于偏导的计算非常繁琐,还有可能导致偏导地狱,所以直接使用梯度就不太现实了,为了解决这个问题我们引入了神经单元误差\delta _{j}^{l}

(一)、神经单元误差

       公式:\delta _{j}^{l} = \frac{\psi C}{\psi z_{j}^{l}} ,叫做第l层第j个神经单元的误差,其中C代表损失函数,z_{j}^{l}代表第l层第j个神经单元的加权输入

        经过推导,我们可以将神经单元误差和损失函数关于权重和偏置的偏导建立联系

        \frac{\psi C}{\psi w_{ji}^{l}} = \delta _{j}^{l}*a_{i}^{l-1}  ,  \frac{\psi C}{\psi b_{j}^{l}} = \delta _{j}^{l}

        紧接着计算输出层神经单元的神经单元误差可以得到:

        \delta _{j}^{L} = \frac{\psi C}{\psi a_{j}^{L}} * a{}'(z_{j}^{L})

(二)、误差反向传播

        观察上述输出层神经单元的神经单元误差的式子,带入输出层对应的输入就可以简化这个式子我们就可以发现只要知道了输出层的神经单元误差就可以不计算导数依次推导出其他的神经单元误差。

哎呀妈 好累!打起来真费劲,家人们,我这个可能不准确,欢迎大家提出问题我及时修改!!!!!!谢谢大家!!!!!!!!!!!!

 

 

你可能感兴趣的:(深度学习,深度学习)