本篇笔记是因为无意中读了以下博客而写,作者为rachel zhang,本文虽为转载但是我自己标注了很多笔记:
http://blog.csdn.net/abcjennifer/article/details/7758797
作为一个机械电子的毕业生,无意中点链接点到了这篇博客,终于让我看到了计算机科学与控制系统的稍微一点点的关联。人工神经网络和其bp算法是机器学习中一个比较经典的数学工具,它的原理,和最有控制方法其实是十分相似的。
在最优控制中,我们需要找到一个cost function,用某些数值方法找到这个cost function的optimized值(最大或者最小),这些数值方法有很多,例如gradient descent, stochastic gradient descent,牛顿法等等等等。在bp算法中,我们也是需要找到一个cost function,通常这个cost function是要让我们模型得到的输出和reference输出十分的接近,所以bp算法的概念就是使我们模型输出与应得输出的误差最小化,优化的方法举例来说,就是用例如gradient descent更新某个未知数,来迭代求最小。 如果学控制的同学都知道如果用gradient descent,也就是梯度法,我们需要选择一个参数a来作为一个learning rate,这个值如何选择,是要根据模型来进行手动调试的。
下面转帖一下这个博客,红色字是我的笔记笔记:
需要了解的概念,每一个神经元可以有n个输入,但是只有一个输出!!!!
===============================
(一)、Cost function
假设神经网络的训练样本有m个,每个包含一组输入x和一组输出信号y,L表示神经网络层数,Sl表示每层的neuron个数(SL表示输出层神经元个数)。
将神经网络的分类定义为两种情况:二类分类和多类分类,
卐二类分类:SL=1, y=0 or 1表示哪一类;
卐K类分类:SL=K, yi = 1表示分到第i类;(K>2)
我们在前几章中已经知道,Logistic hypothesis的Cost Function如下定义:这里的h(x)相当于下面的g(x),代表非线性函数。
其中,前半部分表示hypothesis与真实值之间的距离,后半部分为对参数进行regularization的bias项,神经网络的cost function同理:
hypothesis与真实值之间的距离为 每个样本-每个类输出 的加和,对参数进行regularization的bias项处理所有参数的平方和
===============================
(二)、Backpropagation algorithm
前面我们已经讲了cost function的形式,下面我们需要的就是最小化J(Θ)
想要根据gradient descent的方法进行参数optimization,首先需要得到cost function和一些参数的表示。根据forward propagation,我们首先进行training dataset 在神经网络上的各层输出值:a是每个神经元的输出,z是每个神经元的输入
============================================================
由上图我们得到了error变量δ的计算,下面我们来看backpropagation算法的伪代码:
ps:最后一步之所以写+=而非直接赋值是把Δ看做了一个矩阵,每次在相应位置上做修改。
从后向前此计算每层依的δ,用Δ表示全局误差,每一层都对应一个Δ(l)。再引入D作为cost function对参数的求导结果。下图左边j是否等于0影响的是是否有最后的bias regularization项。左边是定义,右边可证明(比较繁琐)。