[机器学习(周志华)]神经网络总结

这是关于周志华的《机器学习》这本书中关于神经网络的BP算法的证明与部分总结,用来给自己留个记录。

神经网络的原理是来自于生物学上的神经元,当神经元兴奋时,会向与之相连的下一个神经元发送信号,当收到信号的神经元所接收到的信号超过阈值时,那么这个神经元就会被激活,进入兴奋,重复上一步骤。

由于激活或者未被激活,可以用0/1这两种状态表示,所以需要能够表述超过即为1,不超过即为0的阶跃函数作为激活函数。由于阶跃函数不连续、不平滑,因此神经网络经常使用Sigmod函数替代阶跃函数作为激活函数。

这是一张神经元的图,x为来自其它神经元的输入,w为连接权重,θ为阈值,输出为<img src=”http://www.forkosh.com/mathtex.cgi? y=f(\sum_{i=1}^{n}w_{i}x_{i} – \Theta )”>

《[机器学习(周志华)]神经网络总结》 image.png

神经网络中最常见的结构就是这个结构,有一个输入层、一个输出层、若干个隐藏层。以及基于这种神经网络的结构所产生的误差逆传播算法(BP算法)。BP算法笼统来说可以理解为,使用当前神经网络得到了一个结果,使用这个结果与真实的结果进行比较,将其中的差值作为一个参考,对当前神经网络中的参数(权值、阈值等)进行调整,最终达到使神经网络得到的结果等于真实结果。(在训练的时候,这里不能等于真实结果,以防止过拟合的发生)

《[机器学习(周志华)]神经网络总结》 image.png

BP算法的具体证明如下

《[机器学习(周志华)]神经网络总结》 image.png

其中第二行的求导转换的是由于方差E的变化是由输出y的变化导致的,y的变化是由变量β导致的,β的变化才是由于w导致的。因此将E对w的求导转换成E对y的求导、y对β的求导、β对w的求导的乘积。学习率是一个可调节的变量,这个变量的意义在于权值、阈值等参数调整的快慢。乘以-1的意义在于,要尽量使总方差变小,所以要找使梯度下降的方向,因此要乘以一个-1.

同样可得到v的变化量

《[机器学习(周志华)]神经网络总结》 image.png

关于神经网络还有很多其它的算法还有模型结构。这里不想记录太多,其实神经网络包括深度学习会由一个模型演变成各种各样的模型,每一种变体都会有个自己的优势和适合的使用方向。由于我也不是资深的了解者,暂时不说太多。

之所以将BP算法的证明特意拎出来单说,跟我个人的经历有关。当时找工作的时候,面试官曾经跟我说,如果是应届生来面试的话,至少要能够将BP算法证明出来,所以如果可以的话,最好是要将这个证明记得滚瓜烂熟。

在机器学习的学习上,其实实践是非常重要的一件事,有的时候算法是什么样的,怎样去计算变得不再那么重要。因为像TensorFlow这些框架已经将很多算法集成进去,不太需要再了解是算法是如何训练的。但是如果希望改进算法,想要提升精确度,有的时候确实是要从算法入手,了解了算法,才能真正更好的去进行改进。算法与实践,其实缺一不可。

    原文作者:陆地上的鲤鱼王
    原文地址: https://www.jianshu.com/p/8ca52b37a559
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞