机器学习(5)FP,BP神经网络

一般神经网络教程都会用大脑神经网络作类比,但实际上两个根本是不一样的东西,乱用类比学习是一件很危险的事情,知道神经网络是个数学模型就可以了。

一个简单的神经网络如下图所示,每一个圆圈表示一个神经元,每个神经元接收上一层神经元的输出作为其输入,同时其输出信号到下一层,其中每一层的第一个神经元称为bias unit,它是额外加入的其值为1,通常用+1表示,下图用虚线画出。

机器学习(5)FP,BP神经网络_第1张图片

X为输入层,theta为权重,a为隐藏层。


向前传播(Forward Propagration,FP):

后一层的神经元的值根据前一层神经元的值的改变而改变,以上图为例,第二层的神经元的更新方式为机器学习(5)FP,BP神经网络_第2张图片

g(z)为sidmoid函数

用矩阵表示上面的式子:

机器学习(5)FP,BP神经网络_第3张图片

第一层的值,计算第二层的值;由第二层的值,计算第三层的值,得到预测的输出,计算的方式一层一层往前走的,这也是前向传播的名称由来。

如果把隐藏层去掉,那么神经网络就是一个Logistic 回归:

机器学习(5)FP,BP神经网络_第4张图片

第一个例子,神经网络处理'并','或','非':

下图要把交叉和圆圈分类,看神经网络怎么处理非线性问题

机器学习(5)FP,BP神经网络_第5张图片

令四个坐标(0,0),(1,0),(0,1),(1,1),其中交叉是(0,0),(1,1)

1,实现且操作:

机器学习(5)FP,BP神经网络_第6张图片

2,实现或:

机器学习(5)FP,BP神经网络_第7张图片

3,非:

机器学习(5)FP,BP神经网络_第8张图片

4,(非X1)且(非X2):

机器学习(5)FP,BP神经网络_第9张图片

把上面组合起来:

AND操作(用红色表示)、NAND操作(用青色表示)和OR操作(用橙色表示),从真值表可以看出,该神经网络成功地将(0, 0)(1,1)分为一类,(1,0)(0,1)分为一类,很好解决了线性不可分的问题。

机器学习(5)FP,BP神经网络_第10张图片

没有正则项的神经网络costFunction公式:

(和逻辑回归差不多)

正则化的costFunction:

机器学习(5)FP,BP神经网络_第11张图片


























机器学习(5)FP,BP神经网络_第12张图片



机器学习(5)FP,BP神经网络_第13张图片


BP神经网络:

BP算法实际上用来解决梯度问题。定义一个误差向量,

a为输出层的输出值,y为真实值。a(3)是与a(2),theta2偏导有关,而a(2)又与上一层偏导有关,偏导数可以由当前层神经元向量a(l)与下一层的误差向量δ(l+1)相乘得到。当前层的误差向量δ(l)可以由下一层的误差向量δ(l+1)与权重矩阵Δl的乘积得到。所以可以从后往前逐层计算误差向量,这就是反向传播。

神经网络demo:

matlab手写数字识别:https://gitee.com/CCHChenChangHong/JiQiXueXisample/tree/master/FP,BP%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C/matlab%E5%AE%9E%E7%8E%B0

我的公众号:机器学习(5)FP,BP神经网络_第14张图片

你可能感兴趣的:(机器学习)