深度学习笔记(二)神经网络

1)发展历史
因为感知器只能 处理线性问题,当Hinton在1986年发明了适用于多层感知器(MLP)的BP算法,并采用Sigmoid进行非线性映射有效解决了非线性分类和学习的问题

原理:
上一个章节介绍了感知器,分析了感知器为啥不可以解决非线性问题。如果将**函数改为sigmoid或者relu将能过够处理非线性问题。同时多层感知器出现,经证明,多层感知器能表示任何的函数

结构:
      三个层次的神经网络。红色的是输入层,绿色的是输出层,紫色的是中间层(也叫隐藏层)。输入层有3个输入单元,隐藏层有4单元,输出层有2单元。后文中,我们统一使用这种颜色来表达神经网络的结构。

深度学习笔记(二)神经网络
2)理解神经网络

怎样理解非线性变换和多层网络后的线性可分,神经网络的学习就是学习如何利用矩阵的线性变换加**函数的非线性变换

线性可分:

  • 一维情景:以分类为例,当要分类正数、负数、零,三类的时候,一维空间的直线可以找到两个超平面(比当前空间低一维的子空间。当前空间是直线的话,超平面就是点)分割这三类。但面对像分类奇数和偶数无法找到可以区分它们的点的时候,我们借助 x % 2(除2取余)的转变,把x变换到另一个空间下来比较0和非0,从而分割奇偶数。

  • 深度学习笔记(二)神经网络

  • 二维情景:平面的四个象限也是线性可分。但下图的红蓝两条线就无法找到一超平面去分割。

    深度学习笔记(二)神经网络

    神经网络的解决方法依旧是转换到另外一个空间下,用的是所说的5种空间变换操作。比如下图就是经过放大、平移、旋转、扭曲原二维空间后,在三维空间下就可以成功找到一个超平面分割红蓝两线 (同SVM的思路一样)。

    深度学习笔记(二)神经网络

    上面是一层神经网络可以做到的空间变化。若把y⃗ y→ 当做新的输入再次用这5种操作进行第二遍空间变换的话,网络也就变为了二层。最终输出是y⃗ =a2(W2(a1(W1x⃗ +b1))+b2)y→=a2(W2⋅(a1(W1⋅x→+b1))+b2)。设想当网络拥有很多层时,对原始输入空间的“扭曲力”会大幅增加,如下图,最终我们可以轻松找到一个超平面分割空间。

    深度学习笔记(二)神经网络

    当然也有如下图失败的时候,关键在于“如何扭曲空间”。所谓监督学习就是给予神经网络网络大量的训练例子,让网络从训练例子中学会如何变换空间。每一层的权重WW控制着如何变换空间,我们最终需要的也就是训练好的神经网络的所有层的权重矩阵。。这里有非常棒的可视化空间变换demo一定要打开尝试并感受这种扭曲过程。 更多内容请看Neural Networks, Manifolds, and Topology

  • 深度学习笔记(二)神经网络

线性可分视角:神经网络的学习就是学习如何利用矩阵的线性变换加**函数的非线性变换,将原始输入空间投向线性可分/稀疏的空间去分类/回归。

增加节点数:增加维度,即增加线性转换能力。

增加层数:增加**函数的次数,即增加非线性转换次数


3)数学表达式

上面数学思维角度学习了神经网络的原理。下面推到数学表达式
神经网络如下图:

深度学习笔记(二)神经网络
因为每一个节点都是一个神经元。有 Y=a*(W*X+b)   a 是**函数。w是权值,b是偏移量。
对于a4有如下深度学习笔记(二)神经网络
y1有如下的表达式
 深度学习笔记(二)神经网络
所以有如下表达式:
 深度学习笔记(二)神经网络
然后:令
深度学习笔记(二)神经网络
代入上面的的方程得到
深度学习笔记(二)神经网络
 再带入带入
深度学习笔记(二)神经网络
得到y1 = f(w8*a8)
其中w8= [w84 w85 w86 w87 w8b]
a = [a4,a5,a6,a7,1]
所以对于多次网络
深度学习笔记(二)神经网络

可以写成
深度学习笔记(二)神经网络
4)训练参数
 因为所有的参数都不能通过求解获得,而是根据不同的输入和输出的比较训练出来的,所以都是监督学习。

结论:
 深度学习笔记(二)神经网络
深度学习笔记(二)神经网络

过程如图:注意里面的变量符号:
深度学习笔记(二)神经网络

从输出层到&有如下表达式:推倒过程下一个节分析
其中,&是节i的误差项,是节点输出值是样本对应于节点目标值。举个例子,根据上图,对于输出层节点8来说,它的输出值是,而样本的目标值是,带入上面的公式得到节点8的误差项应该是:
深度学习笔记(二)神经网络
深度学习笔记(二)神经网络
同时对于隐含层有
 深度学习笔记(二)神经网络
所以有
深度学习笔记(二)神经网络
 将③和④合并,然后求出w有
深度学习笔记(二)神经网络
所以有:
深度学习笔记(二)神经网络
 有
深度学习笔记(二)神经网络

这个过程叫做BP过程,下一个章节重点分析过程的推倒和原理。

 注意一下:上面的bp的**函数是sigmoid,如果不是sigmoid 则训练参数不同。