人工神经网络

神经网络

神经元的数学模型

\rule[-0pt]{13cm}{0.05em}
\qquad 人工神经网络的本源是人工智能的仿生学派,有两种学派在人工智能诞生以来此消彼长。第一种学派(仿生学派)认为人工智能模拟的是人类大脑对于世界的认识,因此,研究大脑认知机理,总结大脑处理信息的方式是实现人工智能的先决条件。他们认为计算机算法只有深入的模拟大脑的认知机制和信息处理方式才能最终实现人工智能。
\qquad 而另一种学派(数理学派)认为在现在以及可预见的未来,我们无法完全了解人脑的认知机制,另一方面计算机与人脑具有截然不同的物理属性和体系结构。片面强调计算机对人脑的模仿既不可能,也不必须,人工智能的研究应该立足于现有计算机的物理属性和体系结构,用数学和逻辑推理的方法,从现有的计算机结构中获得确定的知识。
\qquad 两名科学家根据单个神经细胞,建立了单个神经元的数学模型-MP模型
在这里插入图片描述
外部的刺激通过树突传递到神经元细胞核,经过细胞核加工后作为输出传递给突触。
在这里插入图片描述
MP模型是将外部刺激模拟为一串数字 x 1 , x 2 , . . . , x m x_1,x_2,...,x_m x1,x2,...,xm的输入,将每个树突对输入的刺激加工过程模拟为某个权重对输入进行加权,将细胞核对输入的处理模拟为一个带有偏置的求和过程 。最后的输出是用激活函数对求和的结果进行非线性变换而得出。因此,MP模型中输入和输出的对应关系为 y = φ ( ∑ i = 1 m w i x i + b ) y=\varphi(\sum_{i=1}^{m}w_ix_i+b) y=φ(i=1mwixi+b)
以向量的形式表示,设: w = [ w 1 w 2 . . . w m ] x = [ x 1 x 2 . . . x m ] w=\begin{bmatrix}w_1\\w_2\\...\\w_m \end{bmatrix} \qquad x=\begin{bmatrix}x_1\\x_2\\...\\x_m \end{bmatrix} w=w1w2...wmx=x1x2...xm
则上述公式变为: y = φ ( W T X + b ) y=\varphi(W^TX+b) y=φ(WTX+b)
但这个模型在提出后因为太过简单,没有实验和证据表明神经元的处理过程就是这样的,所以没有引起重视。
从数学的角度来理解:
设神经元的输出y是输入 x 1 , x 2 , . . . , x m x_1,x_2,...,x_m x1,x2,...,xm的函数,即我们设:
y = f ( x 1 , x 2 , . . . , x m ) ≈ f ( 0 , 0 , . . . , 0 ) + ∑ i = 1 m [ ∂ f ∂ x i ∣ ( 0 , 0 , . . . , 0 ) ] x i + . . . = ∑ i = 1 m w i x i + b \begin{aligned}y&=f(x_1,x_2,...,x_m)\\ &\approx f(0,0,...,0)+\sum_{i=1}^{m}[\frac{\partial f}{\partial x_i}|(0,0,...,0) ]x_i+... \\&=\sum_{i=1}^{m}w_ix_i+b \end{aligned} y=f(x1,x2,...,xm)f(0,0,...,0)+i=1m[xif(0,0,...,0)]xi+...=i=1mwixi+b
第二步是对其进行泰勒展开

感知机算法

\rule[-0pt]{13cm}{0.05em}
感知机算法的实质是在训练数据线性可分的条件下寻找分类的超平面
我们仍然假设输入 ( X i , y i ) . i = 1 ∼ N (X_i,y_i).i=1\sim N (Xi,yi).i=1N 我们的任务是找出一个向量w和一个常数b,使得对i=1…N,有:
( 1 ) 若 y i = + 1 , 则 W T X i + b > 0 ( 2 ) 若 y i = − 1 , 则 W T X i + b < 0 (1)若y_i=+1,则W^TX_i+b>0\\(2)若y_i=-1,则W^TX_i+b<0 (1)yi=+1,WTXi+b>0(2)yi=1,WTXi+b<0
把某个训练数据 X i X_i Xi满足这个条件叫做获得了平衡,否则是没有获得平衡情况如下:
( 1 ) 若 y i = + 1 , 则 W T X i + b < 0 ( 2 ) 若 y i = − 1 , 则 W T X i + b > 0 (1)若y_i=+1,则W^TX_i+b<0\\(2)若y_i=-1,则W^TX_i+b>0 (1)yi=+1,WTXi+b<0(2)yi=1,WTXi+b>0

寻找(w,b)的方法

  1. 随机选择(w,b)
  2. 取一个训练样本(X,y) ( i ) 若 w T + b > 0 且 y = − 1 , 则 : w = w − X b = b − 1 ( i i ) 若 W T + b < 0 且 y = + 1 , 则 : w = w + X b = b + 1 (i)若w^T+b>0且y=-1,则:w=w-X\quad b=b-1\\(ii)若W^T+b<0且y=+1,则:w=w+X\quad b=b+1 (i)wT+b>0y=1,w=wXb=b1(ii)WT+b<0y=+1,:w=w+Xb=b+1
  3. 再另取一个(X,y)回到(2)
  4. 终止条件:直到所有输入输出对(X,y),都不满足(2)中(i)和(ii)之一,退出循环

分析第二步的第一种情形,即当y=-1时,调整方式 W ( 新 ) = W ( 旧 ) − X b ( 新 ) = b ( 旧 ) − 1 W(新)=W(旧)-X\\b(新)=b(旧)-1 W()=W()Xb()=b()1
我们将式子代入下式可以得到:
W ( 新 ) T X + b ( 新 ) = ( W ( 旧 ) − X ) T X + b ( 旧 ) − 1 = [ W ( 旧 ) T X + b ( 旧 ) ] − ( X T X + 1 ) = [ W ( 旧 ) T X + b ( 旧 ) ] − ( ∣ ∣ X ∣ ∣ 2 + 1 ) ≤ [ W ( 旧 ) T X + b ( 旧 ) ] − 1 \begin{aligned}&W(新)^TX+b(新) \\ &=(W(旧)-X)^TX+b(旧)-1\\ &=[W(旧)^TX+b(旧)]-(X^T X+1)\\ &=[W(旧)^TX+b(旧)]-(||X||^2+1)\\ &\leq [W(旧)^TX+b(旧)]-1\end{aligned} W()TX+b()=(W()X)TX+b()1=[W()TX+b()](XTX+1)=[W()TX+b()](X2+1)[W()TX+b()]1
当y=+1,且 W T X + b < 0 W^TX+b<0 WTX+b<0 W ( 新 ) = W ( 旧 ) + X b ( 新 ) = b ( 旧 ) + 1 W(新)=W(旧)+X\\b(新)=b(旧)+1 W()=W()+Xb()=b()+1
W ( 新 ) T X + b ( 新 ) = ( W ( 旧 ) + X ) T X + b ( 旧 ) + 1 = [ W ( 旧 ) T X + b ( 旧 ) ] + ( X T X + 1 ) = [ W ( 旧 ) T X + b ( 旧 ) ] + ( ∣ ∣ X ∣ ∣ 2 + 1 ) ≥ [ W ( 旧 ) T X + b ( 旧 ) ] + 1 \begin{aligned}&W(新)^TX+b(新) \\ &=(W(旧)+X)^TX+b(旧)+1\\ &=[W(旧)^TX+b(旧)]+(X^T X+1)\\ &=[W(旧)^TX+b(旧)]+(||X||^2+1)\\ &\geq [W(旧)^TX+b(旧)]+1\end{aligned} W()TX+b()=(W()+X)TX+b()+1=[W()TX+b()]+(XTX+1)=[W()TX+b()]+(X2+1)[W()TX+b()]+1
可以看出感知器算法是不断输入训练数据,重复第二步,直到W,B对所有的训练样本满足达到平衡状态。(只要训练数据线性可分,感知机算法一定可以停下来)

证明
对于某个 X i X_i Xi,我们定义它的增广向量如下:
( 1 ) 若 y i = + 1 , 则 X i ⃗ = [ x i 1 ] ( 2 ) 若 y i = − 1 , 则 X i ⃗ = [ − x i − 1 ] (1)若y_i=+1,则\vec{X_i}=\begin{bmatrix}x_i\\1 \end{bmatrix}\\ (2)若y_i=-1,则\vec{X_i}=\begin{bmatrix}-x_i\\-1 \end{bmatrix} (1)yi=+1,Xi =[xi1](2)yi=1,Xi =[xi1]
定义增广矩阵的目的是简化我们的表达,我们的任务是找出一个向量w和一个常数b,使得对i=1…N,有: ( 1 ) 若 y i = + 1 , 则 W T X i + b > 0 ( 2 ) 若 y i = − 1 , 则 W T X i + b < 0 (1)若y_i=+1,则W^TX_i+b>0\\(2)若y_i=-1,则W^TX_i+b<0 (1)yi=+1,WTXi+b>0(2)yi=1,WTXi+b<0
现在可以简化表达为:
寻 找 W = [ W b ] , 使 得 对 i = 1... N , 有 : W T X i ⃗ > 0 寻找W=\begin{bmatrix}W\\b\end{bmatrix},使得对i=1...N,有:W^T\vec{X_i}>0 W=[Wb],使i=1...N,WTXi >0
基于增广向量的感知机算法:

Input: x 1 ⃗ , x 2 ⃗ , . . . , x N ⃗ \vec{x_1},\vec{x_2},...,\vec{x_N} x1 ,x2 ,...,xN
Output:w
1 w= [ 0 0 . . . 0 ] \begin{bmatrix} 0\\ 0\\.\\.\\.\\0\end{bmatrix} 00...0;
2 FLAG=1;
3 while FLAG do
4 \qquad FLAG = 0;
5 \qquad for i=1:N do
6 \qquad \qquad if w T x i ⃗ ≤ 0 t h e n w^T\vec{x_i}\leq 0 then wTxi 0then
7 \qquad \qquad w=w+ x i ⃗ \vec{x_i} xi
8 \qquad \qquad FLAG=1
9 \qquad \qquad end
10 \qquad end
11end
12return w;

基于增广向量的感知机算法和原来的感知机算法也是完全等价的
证明感知机算法的收敛定理
对于N个增广向量 x 1 ⃗ , x 2 ⃗ , . . . , x N ⃗ \vec{x_1},\vec{x_2},...,\vec{x_N} x1 ,x2 ,...,xN ,如果存在一个权重向量 w o p t w_{opt} wopt,使得对于每个i=1…N,有: w o p t T x i ⃗ > 0 w^T_{opt}\vec{x_i}>0 woptTxi >0
运用上述感知机算法:
在有限步内找到一个w,使得对于所有的i=1…N,有 w T x i ⃗ > 0 w^T\vec{x_i}>0 wTxi >0
假设 ∣ ∣ w o p t ∣ ∣ = 1 ||w_{opt}||=1 wopt=1
理由: 向 量 W ⃗ 和 a W ⃗ 代 表 的 是 同 一 个 平 面 , 因 此 我 们 可 以 用 一 个 a 去 加 权 w o p t , 使 ∣ ∣ w o p t ∣ ∣ = 1 向量\vec{W}和a\vec{W}代表的是同一个平面,因此我们可以用一个a去加权w_{opt},使||w_{opt}||=1 W aW awopt使wopt=1
定义w(k)为第k次改变后的权重向量值,则有:
情况1:
如 果 w ( k ) T X i ⃗ > 0 对 所 有 i = 1... N , 那 么 所 有 点 已 经 达 到 平 衡 , 感 知 机 算 法 收 敛 如果w(k)^T\vec{X_i}>0对所有i=1...N,那么所有点已经达到平衡,感知机算法收敛 w(k)TXi >0i=1...N
情况2
如 果 存 在 某 个 i , 使 得 w ( k ) T X i ⃗ ≤ 0 , 那 么 根 据 感 知 机 算 法 , w ( k + 1 ) = w ( k ) + x i ⃗ 如果存在某个i,使得w(k)^T\vec{X_i}\leq0,那么根据感知机算法,w(k+1)=w(k)+\vec{x_i} i使w(k)TXi 0w(k+1)=w(k)+xi
将式子两边同时减去 a w o p t aw_{opt} awopt就可以得到:
w ( k + 1 ) − a w o p t = w ( k ) − a w o p t + x i ⃗ w(k+1)-aw_{opt}=w(k)-aw_{opt}+\vec{x_i} w(k+1)awopt=w(k)awopt+xi
取模并展开:
∣ ∣ w ( k + 1 ) − a w o p t ∣ ∣ 2 = ∣ ∣ w ( k ) − a w o p t + x i ⃗ ∣ ∣ 2 = ∣ ∣ w ( k ) − a w o p t ∣ ∣ 2 + 2 w ( k ) T x i ⃗ + ∣ ∣ X i ⃗ ∣ ∣ 2 − 2 a w o p t T x i ⃗ \begin{aligned}&||w(k+1)-aw_{opt}||^2\\&=||w(k)-aw_{opt}+\vec{x_i}||^2\\&=||w(k)-aw_{opt}||^2+2w(k)^T\vec{x_i}+||\vec{X_i}||^2-2aw^T_{opt}\vec{x_i}\end{aligned} w(k+1)awopt2=w(k)awopt+xi 2=w(k)awopt2+2w(k)Txi +Xi 22awoptTxi
我们分析一下这个式子,由于 w ( k ) T x i ⃗ ≤ 0 w(k)^T\vec{x_i}\leq0 w(k)Txi 0,因此有:
∣ ∣ w ( k + 1 ) − a w o p t ∣ ∣ 2 ≤ ∣ ∣ w ( k ) − a w o p t ∣ ∣ 2 + ∣ ∣ X i ⃗ ∣ ∣ 2 − 2 a w o p t T x i ⃗ ||w(k+1)-aw_{opt}||^2\leq ||w(k)-aw_{opt}||^2+||\vec{X_i}||^2-2aw^T_{opt}\vec{x_i} w(k+1)awopt2w(k)awopt2+Xi 22awoptTxi
又由于任意的 i = 1... N , w o p t T x i ⃗ > 0 i=1...N,w^T_{opt}\vec{x_i}>0 i=1...N,woptTxi >0,而 ∣ ∣ X i ⃗ ∣ ∣ 2 ||\vec{X_i}||^2 Xi 2是一个有界的值,那么我们一定可以去一个足够大的a,使得 ∣ ∣ X i ⃗ ∣ ∣ 2 − 2 a w o p t T x i ⃗ < − 1 ||\vec{X_i}||^2-2aw^T_{opt}\vec{x_i}<-1 Xi 22awoptTxi <1
我们有: ∣ ∣ w ( k + 1 ) − a w o p t ∣ ∣ 2 ≤ ∣ ∣ w ( k ) − a w o p t ∣ ∣ 2 − 1 ||w(k+1)-aw_{opt}||^2\leq ||w(k)-aw_{opt}||^2-1 w(k+1)awopt2w(k)awopt21
w的值每更新一次,离 a w o p t aw_{opt} awopt的距离至少减少一个单位,假设w的初值为w(0),那么最多经过 ∣ ∣ w ( 0 ) − a w o p t ∣ ∣ 2 ||w(0)-aw_{opt}||^2 w(0)awopt2次的迭代,w一定会收敛到 a w o p t aw_{opt} awopt
感知机算法的意义
由于时间间隔的原因,感知机算法只是随便找一个可以将两种训练样本分开的超平面,但是支持向量机是找一个最优的超平面,所以支持向量机所表现出来的性能往往要比感知机好一点,但是感知机算法首先提出了一套机器学习的算法框架
在这里插入图片描述
X:输入,Y:输出,f(x,θ):机器学习的模型,其中θ是待学习的参数,现在有一组数据集( X i , y i X_i,y_i Xi,yi),i=1…N,目的是需找一个预测函数y=f(x,θ) ,机器学习的过程就是运用数据集( X i , y i X_i,y_i Xi,yi)来求出θ
在感知机算法中,待估计参数θ=(W,b),而f(X,θ)=sgn(符号函数)( W T X + b W^TX+b WTX+b)。假设X是一个M维的向量,则θ的维度则是M+1维,即我们要估计m+1个参数。这个模型告诉我们训练数据的复杂度应该和预测函数f的复杂度相匹配。
在这里插入图片描述
训练数据的分布相对复杂,f只是一个简单的线性函数,那么θ就不能全面的模拟训练数据的分布 ,我们把训练数据比预测函数更复杂的情况叫做模型欠拟合
在这里插入图片描述
这张图是训练数据和预测函数的复杂度相适应的情况
在这里插入图片描述

这张图训练数据的复杂度低于预测函数的复杂度,其结果是预测函数能相当精确的拟合训练数据,但是在没有数据逇区域函数也会自己制造出复杂的函数值的分布。这种分布是由预测函数f的具体形式决定的。这种情况叫做过拟合

多层神经网络

\rule[-0pt]{13cm}{0.05em}
多层神经网络的结构
在这里插入图片描述
这个图包含两层,有三个神经元相互连接而成,输入x向量,输出y
逐层写出从输入到输出之间的关系:
a 1 = w 11 x 1 + w 12 x 2 + b 1 ( 第 一 个 神 经 元 ) a 2 = w 21 x 1 + w 22 x 2 + b 2 ( 第 二 个 神 经 元 ) z 1 = φ ( a 1 ) ( 非 线 性 函 数 ) z 2 = φ ( a 2 ) ( 非 线 性 函 数 ) y = w 1 z 1 + w 2 z 2 + b 2 ( 第 三 个 神 经 元 ) \begin{aligned}&a_1=w_{11}x_1+w_{12}x_2+b_1(第一个神经元)\\ &a_2=w_{21}x_1+w_{22}x_2+b_2(第二个神经元)\\ &z_1=\varphi(a_1)(非线性函数)\\ &z_2=\varphi(a_2)(非线性函数)\\ &y=w_1z_1+w_2z_2+b_2(第三个神经元)\end{aligned} a1=w11x1+w12x2+b1()a2=w21x1+w22x2+b2()z1=φ(a1)(线)z2=φ(a2)(线)y=w1z1+w2z2+b2()
也可用下面这个公式表示:
y = w 1 φ ( w 11 x 1 + w 12 x 2 + b 1 ) + w 2 φ ( w 21 x 1 + w 22 x 2 + b 2 ) y=w_1\varphi(w_{11}x_1+w_{12}x_2+b_1)+w_2\varphi(w_{21}x_1+w_{22}x_2+b_2) y=w1φ(w11x1+w12x2+b1)+w2φ(w21x1+w22x2+b2)
待求的参数有:第一层网络中的 ( w 11 , w 12 , w 21 , w 22 , b 1 , b 2 ) (w_{11},w_{12},w_{21},w_{22},b_1,b_2) (w11,w12,w21,w22,b1,b2)
第二层网络中的( w 1 , w 2 , b 3 w_1,w_2,b_3 w1,w2,b3
非线性函数 φ ( ) \varphi() φ()是必须的,如果层与层之间不加非线性函数,多层神经网络会退化到一个神经元的感知机模型状态。
阶跃函数
我们要加入的非线性函数是阶跃函数:
在这里插入图片描述
原因:如果非线性函数采用阶跃函数,那么三层神经网络可以模拟任意的非线性函数。
我们可以任意的增加神经网络的层数,也可以任意定义每一层中的神经元的数量。
如图所示:
在这里插入图片描述
我们假设特征空间是二维的,问题是二分类问题,我们给出证明三层神经网络可以模拟任意的非线性函数。
在这里插入图片描述
我们构造一个函数使得如果x在c1则输出>0,否则输出<0
我们先假定这三条边的方程分别是:
在这里插入图片描述
并且定义三个方程朝向三角形的一侧>0,远离的一侧<0
我们构造一个这样的神经网络:在这里插入图片描述
假设 X = [ x 1 x 2 ] X=\begin{bmatrix}x_1\\x_2\end{bmatrix} X=[x1x2]在三角形内,输出的( a 1 , a 2 , a 3 a_1,a_2,a_3 a1,a2,a3)都是>0,经过阶跃函数之后,输出的( z 1 , z 2 , z 3 = 1 z_1,z_2,z_3=1 z1,z2,z3=1),如果X在三角形外面,那么 a 1 , a 2 , a 3 a_1,a_2,a_3 a1,a2,a3至少有一个<0,则 z 1 , z 2 , z 3 z_1,z_2,z_3 z1,z2,z3至少有一个等于0,我们将 z 1 , z 2 , z 3 z_1,z_2,z_3 z1,z2,z3全设置为1,b设置为-2.5就满足条件。一个封闭曲线也可以用多边形去近似,边数趋近于无限时,第二层神经元的个数也会趋近于无限。
\quad 对于两个三角形的例子,我们可以用三层神经网络去解决。

在这里插入图片描述
如果X在某一个三角形里面,那么C1,C2有一个为1,另一个为0。最终y输出0.5

梯度下降

\rule[-0pt]{13cm}{0.05em}
在实际的应用中我们并不知道决策函数是什么,只知道特征空间中一些训练样本和这些训练样本的标签。我们无法知道表征这个神经网络的结构,我们首先假定神经网络是某一种结构,将一堆训练数据输入到这个网络中,去估计这个网络待求的参数。
我们需要解决的两个最重要的因素是:
(1)网络有多少层?
(2)每层神经元的个数是多少?
我们假定神经网络设置已经确定的前提下,如何优化网络中待求的参数
在这里插入图片描述
我们还是举两层神经网络的例子,Y是X的标签,y是神经网络的输出,且y可以写成如下的形式:
a 1 = w 11 x 1 + w 12 x 2 + b 1 ( 第 一 个 神 经 元 ) a 2 = w 21 x 1 + w 22 x 2 + b 2 ( 第 二 个 神 经 元 ) z 1 = φ ( a 1 ) ( 非 线 性 函 数 ) z 2 = φ ( a 2 ) ( 非 线 性 函 数 ) y = w 1 z 1 + w 2 z 2 + b 2 ( 第 三 个 神 经 元 ) \begin{aligned}&a_1=w_{11}x_1+w_{12}x_2+b_1(第一个神经元)\\ &a_2=w_{21}x_1+w_{22}x_2+b_2(第二个神经元)\\ &z_1=\varphi(a_1)(非线性函数)\\ &z_2=\varphi(a_2)(非线性函数)\\ &y=w_1z_1+w_2z_2+b_2(第三个神经元)\end{aligned} a1=w11x1+w12x2+b1()a2=w21x1+w22x2+b2()z1=φ(a1)(线)z2=φ(a2)(线)y=w1z1+w2z2+b2()
或者:
y = w 1 φ ( w 11 x 1 + w 12 x 2 + b 1 ) + w 2 φ ( w 21 x 1 + w 22 x 2 + b 2 ) y=w_1\varphi(w_{11}x_1+w_{12}x_2+b_1)+w_2\varphi(w_{21}x_1+w_{22}x_2+b_2) y=w1φ(w11x1+w12x2+b1)+w2φ(w21x1+w22x2+b2)
我们的目的是使网络输出的y和标签Y尽可能的接近。所以可以定义目标函数为:
M i n i m i z e : E ( w , b ) = E ( X , Y ) [ ( Y − y ) ] 2 Minimize:E(w,b)=E_{(X,Y)}[(Y-y)]^2 Minimize:E(w,b)=E(X,Y)[(Yy)]2
E ( X , Y ) E_{(X,Y)} E(X,Y)是遍历训练样本及标签的数学期望,可以简单理解为对所有训练样本取平均值。
由于y是W,b的非凸函数,因此我们无法求出全局极值,所以采用梯度下降法来求局部极小值。
(1)随机选取w和b的初始值 w ( 0 ) , b ( 0 ) ) w^{(0)},b^{(0)}) w(0),b(0))
(2)利用迭代算法求目标函数的局部极值,在第n步迭代中,w,b的更新公式如下:
w ( n + 1 ) = w ( n ) − α ∂ E ∂ w ∣ w ( 0 ) , b ( 0 ) w^{(n+1)}=w^{(n)}-\alpha\frac{\partial E}{\partial w}|_{w^{(0)},b^{(0)}} w(n+1)=w(n)αwEw(0),b(0)
b ( n + 1 ) = b ( n ) − α ∂ E ∂ b ∣ w ( 0 ) , b ( 0 ) b^{(n+1)}=b^{(n)}-\alpha\frac{\partial E}{\partial b}|_{w^{(0)},b^{(0)}} b(n+1)=b(n)αbEw(0),b(0)
用数学描述梯度下降:
根据泰勒公式 f ( x 0 + Δ x ) = f ( x 0 ) + d f d x ∣ x 0 Δ x + 0 ( Δ x ) f(x_0+\Delta x)=f(x_0)+\frac{df}{dx}|_{x_0}\Delta x+0(\Delta x) f(x0+Δx)=f(x0)+dxdfx0Δx+0(Δx)
我们将 x 1 = x 0 − α d f d x ∣ x 0 x_1=x_0-\alpha\frac{df}{dx}|_{x_0} x1=x0αdxdfx0
代入可以得到: f ( x 1 ) = f ( x 0 − α d f d x ∣ x 0 ) = f ( x 0 ) + d f d x ∣ x 0 [ − α d f d x ∣ x 0 ] + o ( Δ x ) = f ( x 0 ) − α [ d f d x ∣ x 0 ] 2 + o ( Δ x ) < f ( x 0 ) \begin{aligned}f(x_1)&=f(x_0-\alpha\frac{df}{dx}|_{x_0})\\ &=f(x_0)+\frac{df}{dx}|_{x_0}[-\alpha\frac{df}{dx}|_{x_0}]+o(\Delta x)\\ &=f(x_0)-\alpha[\frac{df}{dx}|_{x_0}]^2+o(\Delta x)<f(x_0)\end{aligned} f(x1)=f(x0αdxdfx0)=f(x0)+dxdfx0[αdxdfx0]+o(Δx)=f(x0)α[dxdfx0]2+o(Δx)<f(x0)
我们把α叫做学习率,设置α的值越谨慎,收敛的越快。
推广到多维
最小化二维函数E(w,b),也做泰勒展开,得到:
E ( w 0 + Δ w , b 0 + Δ b ) = E ( w 0 , b 0 ) + ∂ E ∂ w ∣ ( w 0 , b 0 ) Δ w + ∂ E ∂ b ∣ ( w 0 , b 0 ) Δ b + o ( w 0 2 + b 0 2 ) E(w_0+\Delta w,b_0+\Delta b)=E(w_0,b_0)+\frac{\partial E}{\partial w}|_{(w_0,b_0)}\Delta w+\frac{\partial E}{\partial b}|_{(w_0,b_0)}\Delta b+o(\sqrt{w_0^2+b_0^2}) E(w0+Δw,b0+Δb)=E(w0,b0)+wE(w0,b0)Δw+bE(w0,b0)Δb+o(w02+b02 )
将: w ( n + 1 ) = w ( n ) − α ∂ E ∂ w ∣ w ( n ) , b ( n ) w^{(n+1)}=w^{(n)}-\alpha\frac{\partial E}{\partial w}|_{w^{(n)},b^{(n)}} w(n+1)=w(n)αwEw(n),b(n)
b ( n + 1 ) = b ( n ) − α ∂ E ∂ b ∣ w ( n ) , b ( n ) b^{(n+1)}=b^{(n)}-\alpha\frac{\partial E}{\partial b}|_{w^{(n)},b^{(n)}} b(n+1)=b(n)αbEw(n),b(n)

代入上面式子可以得到:
E ( w ( n + 1 ) , b ( n + 1 ) ) = E ( w ( n ) , b ( n ) ) − α [ ∂ E ∂ w ∣ ( w ( n ) , b ( n ) ) ] 2 − α [ ∂ E ∂ b ∣ ( w ( n ) , b ( n ) ) ] 2 + o ( w 0 2 + b 0 2 ) E(w^{(n+1)},b^{(n+1)})=E(w^{(n)},b^{(n)})-\alpha[\frac{\partial E}{\partial w}|_{(w^{(n)},b^{(n)})}]^2-\alpha[\frac{\partial E}{\partial b}|_{(w^{(n)},b^{(n)})}]^2+o(\sqrt{w_0^2+b_0^2}) E(w(n+1),b(n+1))=E(w(n),b(n))α[wE(w(n),b(n))]2α[bE(w(n),b(n))]2+o(w02+b02 )
如果 ∂ E ∂ w \frac{\partial E}{\partial w} wE ∂ E ∂ b \frac{\partial E}{\partial b} bE ( w ( n ) , b ( n ) ) (w^{(n)},b^{(n)}) (w(n),b(n))上不全为0,那么就有: E ( w ( n + 1 ) , b ( n + 1 ) ) < E ( w ( n ) , b ( n ) ) E(w^{(n+1)},b^{(n+1)})<E(w^{(n)},b^{(n)}) E(w(n+1),b(n+1))<E(w(n),b(n))
目标函数若是多维,这种方法也是通用。

后向传播网络

\rule[-0pt]{13cm}{0.05em}
接下来用一个具体的神经网络讲解梯度下降法求解的具体过程
在这里插入图片描述
待求的参数有:第一层网络中的 ( w 11 , w 12 , w 21 , w 22 , b 1 , b 2 ) (w_{11},w_{12},w_{21},w_{22},b_1,b_2) (w11,w12,w21,w22,b1,b2)
第二层网络中的( w 1 , w 2 , b 3 w_1,w_2,b_3 w1,w2,b3
假设目标函数为: M i n i m i z e : E ( w , b ) = 1 2 ( y − Y ) 2 Minimize:E(w,b)=\frac{1}{2}(y-Y)^2 Minimize:E(w,b)=21(yY)2
y的计算:
a 1 = w 11 x 1 + w 12 x 2 + b 1 ( 第 一 个 神 经 元 ) a 2 = w 21 x 1 + w 22 x 2 + b 2 ( 第 二 个 神 经 元 ) z 1 = φ ( a 1 ) ( 非 线 性 函 数 ) z 2 = φ ( a 2 ) ( 非 线 性 函 数 ) y = w 1 z 1 + w 2 z 2 + b 2 ( 第 三 个 神 经 元 ) \begin{aligned}&a_1=w_{11}x_1+w_{12}x_2+b_1(第一个神经元)\\ &a_2=w_{21}x_1+w_{22}x_2+b_2(第二个神经元)\\ &z_1=\varphi(a_1)(非线性函数)\\ &z_2=\varphi(a_2)(非线性函数)\\ &y=w_1z_1+w_2z_2+b_2(第三个神经元)\end{aligned} a1=w11x1+w12x2+b1()a2=w21x1+w22x2+b2()z1=φ(a1)(线)z2=φ(a2)(线)y=w1z1+w2z2+b2()
梯度下降法要求我们求如下九个偏导数:
( ∂ E ∂ w 11 , ∂ E ∂ w 12 , ∂ E ∂ w 21 , ∂ E ∂ w 22 . ∂ E ∂ w 1 , ∂ E ∂ w 2 , ∂ E ∂ b 1 , ∂ E ∂ b 2 , ∂ E ∂ b 3 ) (\frac{\partial E}{\partial w_{11}},\frac{\partial E}{\partial w_{12}},\frac{\partial E}{\partial w_{21}},\frac{\partial E}{\partial w_{22}}.\frac{\partial E}{\partial w_{1}},\frac{\partial E}{\partial w_{2}},\frac{\partial E}{\partial b_{1}},\frac{\partial E}{\partial b_{2}},\frac{\partial E}{\partial b_{3}}) (w11E,w12E,w21E,w22E.w1E,w2E,b1E,b2E,b3E)
但是这样计算量太大,我们要研究的是如何利用神经网络这种分层的结构来简化偏导数的计算,这就要用到我们的后向传播算法。这个算法的核心是这九个偏导数是相互关联的,根据链式求导法则,可以用一些已经算出的偏导数去计算还没有 算出的另一些偏导数。
在这里插入图片描述
我们先计算这三个偏导数,这三个偏导数是整个网络的枢纽。
因为 E ( w , b ) = 1 2 ( y − Y ) 2 E(w,b)=\frac{1}{2}(y-Y)^2 E(w,b)=21(yY)2,所以: ∂ E ∂ y = y − Y \frac{\partial E}{\partial y}=y-Y yE=yY
接着我们根据链式求导法则:
∂ E ∂ a 1 = ∂ E ∂ y ∂ y ∂ a 1 \frac{\partial E}{\partial a_1}=\frac{\partial E}{\partial y}\frac{\partial y}{\partial a_1} a1E=yEa1y
再次利用: ∂ y ∂ a 1 = ∂ y ∂ z 1 ∂ z 1 ∂ a 1 \frac{\partial y}{\partial a_1}=\frac{\partial y}{\partial z_1}\frac{\partial z_1}{\partial a_1} a1y=z1ya1z1
总和上面两个式子:
∂ E ∂ a 1 = ∂ E ∂ y ∂ y ∂ z 1 d z 1 d a 1 \frac{\partial E}{\partial a_1}=\frac{\partial E}{\partial y}\frac{\partial y}{\partial z_1}\frac{d z_1}{d a_1} a1E=yEz1yda1dz1
又因为: y = w 1 z 1 + w 2 z 2 + b 3 y=w_1z_1+w_2z_2+b_3 y=w1z1+w2z2+b3
所以: ∂ y ∂ z 1 = w 1 \frac{\partial y}{\partial z_1}=w_1 z1y=w1,同理: Z 1 = φ ( a 1 ) Z_1=\varphi(a_1) Z1=φ(a1)所以, d z 1 d a 1 = φ ′ ( a 1 ) \frac{dz_1}{da_1}=\varphi^\prime(a_1) da1dz1=φ(a1)
综合起来:
∂ E ∂ a 1 = w 1 ( y − Y ) φ ′ ( a 1 ) \frac{\partial E}{\partial a_1}=w_1(y-Y)\varphi^\prime(a_1) a1E=w1(yY)φ(a1)
经过相似偏导,我们可以得到: ∂ E ∂ a 2 = ∂ E ∂ y ∂ y ∂ z 2 d z 2 d a 2 = w 2 ( y − Y ) φ ′ ( a 2 ) \frac{\partial E}{\partial a_2}=\frac{\partial E}{\partial y}\frac{\partial y}{\partial z_2}\frac{d z_2}{d a_2}=w_2(y-Y)\varphi^\prime(a_2) a2E=yEz2yda2dz2=w2(yY)φ(a2)
这样前面九个偏导数就变得十分好求了。
首先,由于 y = w 1 z 1 + w 2 z 2 + b 3 y=w_1z_1+w_2z_2+b_3 y=w1z1+w2z2+b3因此: ∂ E ∂ w 1 = ∂ E ∂ y ∂ y ∂ w 1 = ( y − Y ) Z 1 \frac{\partial E}{\partial w_1}=\frac{\partial E}{\partial y}\frac{\partial y}{\partial w_1}=(y-Y)Z_1 w1E=yEw1y=(yY)Z1
∂ E ∂ w 2 = ∂ E ∂ y ∂ y ∂ w 2 = ( y − Y ) Z 2 \frac{\partial E}{\partial w_2}=\frac{\partial E}{\partial y}\frac{\partial y}{\partial w_2}=(y-Y)Z_2 w2E=yEw2y=(yY)Z2
∂ E ∂ b 3 = ∂ E ∂ y ∂ y ∂ b 3 = ( y − Y ) \frac{\partial E}{\partial b_3}=\frac{\partial E}{\partial y}\frac{\partial y}{\partial b_3}=(y-Y) b3E=yEb3y=(yY)
由于 a 1 = w 11 x 1 + w 12 x 2 + b 1 a_1=w_{11}x_1+w_{12}x_2+b_1 a1=w11x1+w12x2+b1,因此: ∂ E ∂ w 11 = ∂ E ∂ a 1 ∂ a 1 ∂ w 11 = w 1 ( y − Y ) φ ′ ( a 1 ) x 1 \frac{\partial E}{\partial w_{11}}=\frac{\partial E}{\partial a_1}\frac{\partial a_1}{\partial w_{11}}=w_1(y-Y)\varphi^\prime(a_1)x_1 w11E=a1Ew11a1=w1(yY)φ(a1)x1
∂ E ∂ w 12 = ∂ E ∂ a 1 ∂ a 1 ∂ w 12 = w 1 ( y − Y ) φ ′ ( a 1 ) x 2 \frac{\partial E}{\partial w_{12}}=\frac{\partial E}{\partial a_1}\frac{\partial a_1}{\partial w_{12}}=w_1(y-Y)\varphi^\prime(a_1)x_2 w12E=a1Ew12a1=w1(yY)φ(a1)x2
∂ E ∂ b 1 = ∂ E ∂ a 1 ∂ a 1 ∂ b 1 = w 1 ( y − Y ) φ ′ ( a 1 ) \frac{\partial E}{\partial b_1}=\frac{\partial E}{\partial a_1}\frac{\partial a_1}{\partial b_1}=w_1(y-Y)\varphi^\prime(a_1) b1E=a1Eb1a1=w1(yY)φ(a1)
由于 a 2 = w 21 x 1 + w 22 x 2 + b 2 a_2=w_{21}x_1+w_{22}x_2+b_2 a2=w21x1+w22x2+b2,因此: ∂ E ∂ w 21 = ∂ E ∂ a 2 ∂ a 2 ∂ w 21 = w 2 ( y − Y ) φ ′ ( a 2 ) x 1 \frac{\partial E}{\partial w_{21}}=\frac{\partial E}{\partial a_2}\frac{\partial a_2}{\partial w_{21}}=w_2(y-Y)\varphi^\prime(a_2)x_1 w21E=a2Ew21a2=w2(yY)φ(a2)x1
∂ E ∂ w 22 = ∂ E ∂ a 2 ∂ a 2 ∂ w 22 = w 2 ( y − Y ) φ ′ ( a 2 ) x 2 \frac{\partial E}{\partial w_{22}}=\frac{\partial E}{\partial a_2}\frac{\partial a_2}{\partial w_{22}}=w_2(y-Y)\varphi^\prime(a_2)x_2 w22E=a2Ew22a2=w2(yY)φ(a2)x2
∂ E ∂ b 2 = ∂ E ∂ a 2 ∂ a 2 ∂ b 2 = w 2 ( y − Y ) φ ′ ( a 2 ) \frac{\partial E}{\partial b_2}=\frac{\partial E}{\partial a_2}\frac{\partial a_2}{\partial b_2}=w_2(y-Y)\varphi^\prime(a_2) b2E=a2Eb2a2=w2(yY)φ(a2)
这种根据神经网络结构求解偏导数的简便算法,整个过程是从输出往输入推的,即从后往前推,所以被称为后向传播算法。
下面我们将后向传播算法推广到更一般的神经网络,也就是不限制神经网络的层数和每一层神经元的个数。
在这里插入图片描述
神经网络的矩阵方式:
x = a ( 0 ) ⇒ z ( 1 ) = w ( 1 ) a ( 0 ) + b ( 1 ) ⇒ a ( 1 ) = φ ( z ( 1 ) ) z ( 2 ) = . . . ⇒ z ( l ) = w ( l ) a ( l − 1 ) + b ( l ) ⇒ y = w ( l ) a ( 0 ) + b ( l ) ⇒ a ( l ) = φ ( a ( l ) ) = φ ( z ( 1 ) ) x=a^{(0)}\Rightarrow z^{(1)}=w^{(1)}a^{(0)}+b^{(1)}\Rightarrow a^{(1)}=\varphi(z^{(1)})\\ z^{(2)}=...\Rightarrow z^{(l)}=w^{(l)}a^{(l-1)}+b^{(l)}\Rightarrow y=w^{(l)}a^{(0)}+b^{(l)}\Rightarrow a^{(l)}=\varphi(a^{(l)})=\varphi(z^{(1)}) x=a(0)z(1)=w(1)a(0)+b(1)a(1)=φ(z(1))z(2)=...z(l)=w(l)a(l1)+b(l)y=w(l)a(0)+b(l)a(l)=φ(a(l))=φ(z(1))
说明:
(1)网络共有l层
(2) Z ( k ) , a ( k ) , b ( k ) Z^{(k)},a^{(k)},b^{(k)} Z(k),a(k),b(k)为向量,用 Z i ( k ) , a i ( k ) , b i ( k ) Z_i^{(k)},a_i^{(k)},b_i^{(k)} Zi(k),ai(k),bi(k)表示其第i个分量
(3)输出y可以是向量,用 y i y_i yi表示其第i个分量
设对于一个输入的向量X,其标签为Y,设置目标函数 M i n i m i z e : E ( w , b ) = 1 2 ( y − Y ) 2 Minimize:E(w,b)=\frac{1}{2}(y-Y)^2 Minimize:E(w,b)=21(yY)2
先推导E对"枢纽变量"的偏导数,推导对所有w,b的偏导,设置枢纽变量为:
δ i ( m ) = ∂ E ∂ z i ( m ) \delta_i^{(m)}=\frac{\partial E}{\partial z_i^{(m)}} δi(m)=zi(m)E
最后一层,即第l层:
δ i ( l ) = ∂ E ∂ z i ( l ) = ∂ E ∂ y i ∂ y i ∂ z i ( l ) = ( y i − Y i ) φ ′ ( z i ( l ) ) \delta_i^{(l)}=\frac{\partial E}{\partial z_i^{(l)}}=\frac{\partial E}{\partial y_i}\frac{\partial y_i}{\partial z_i^{(l)}}=(y_i-Y_i)\varphi^\prime(z_i^{(l)}) δi(l)=zi(l)E=yiEzi(l)yi=(yiYi)φ(zi(l))
我们看如何通过m+1层推导第m层
δ i ( m ) = ∂ E ∂ z i ( m ) = ∑ j = 1 S m + 1 ∂ E ∂ z j ( m + 1 ) ⋅ ∂ z j ( m + 1 ) ∂ z i ( m ) \delta_i^{(m)}=\frac{\partial E}{\partial z_i^{(m)}}=\sum_{j=1}^{S_{m+1}}\frac{\partial E}{\partial z_j^{(m+1)}}\cdot\frac{\partial z_j^{(m+1)}}{\partial z_i^{(m)}} δi(m)=zi(m)E=j=1Sm+1zj(m+1)Ezi(m)zj(m+1)
这里的 S m + 1 S_{m+1} Sm+1为第m+1层的神经元个数
经过化简可以得到: = ∑ j = 1 S m + 1 δ i ( m + 1 ) ∂ z j ( m + 1 ) ∂ z i ( m ) =\sum_{j=1}^{S_{m+1}}\delta_i^{(m+1)}\frac{\partial z_j^{(m+1)}}{\partial z_i^{(m)}} =j=1Sm+1δi(m+1)zi(m)zj(m+1)
为了推导第二项 ∂ z j ( m + 1 ) ∂ z i ( m ) \frac{\partial z_j^{(m+1)}}{\partial z_i^{(m)}} zi(m)zj(m+1)我们来看如下的关系:
在这里插入图片描述
因此可以得到: ∂ z j ( m + 1 ) ∂ z i ( m ) = ∂ z j ( m + 1 ) ∂ a i ( m ) ∂ a j ( m ) ∂ z i ( m ) = W j i ( m + 1 ) φ ′ ( Z i ( m ) ) \frac{\partial z_j^{(m+1)}}{\partial z_i^{(m)}}=\frac{\partial z_j^{(m+1)}}{\partial a_i^{(m)}}\frac{\partial a_j^{(m)}}{\partial z_i^{(m)}}=W_{ji}^{(m+1)}\varphi^\prime(Z_i^{(m)}) zi(m)zj(m+1)=ai(m)zj(m+1)zi(m)aj(m)=Wji(m+1)φ(Zi(m))
代入上式可以获得最终的递推公式:
δ i ( m ) = [ ∑ j = 1 S m + 1 δ j ( m + 1 ) W j i ( m + 1 ) ] φ ′ ( Z i ( m ) ) \delta_i^{(m)}=[\sum_{j=1}^{S_{m+1}}\delta_j^{(m+1)}W_{ji}^{(m+1)}]\varphi^\prime(Z_i^{(m)}) δi(m)=[j=1Sm+1δj(m+1)Wji(m+1)]φ(Zi(m))
易求出: ∂ E ∂ W j i ( m ) = δ j ( m ) ⋅ α i ( m − 1 ) ∂ E ∂ b i ( m ) = δ i ( m ) \frac{\partial E}{\partial W_{ji}^{(m)}}=\delta_j^{(m)}\cdot \alpha_i^{(m-1)}\\ \frac{\partial E}{\partial b_{i}^{(m)}}=\delta_i^{(m)} Wji(m)E=δj(m)αi(m1)bi(m)E=δi(m)
总结人工神经网络后向传播算法算法的步骤:
(1)对神经网络每一层的各个神经元,随机选择w,b的值
(2)设置目标函数E,用后向传播算法对每个w,b计算 ∂ E ∂ w , ∂ E ∂ b \frac{\partial E}{\partial w},\frac{\partial E}{\partial b} wE,bE
(3)利用如下的迭代公式更新w,b的值
w ( n + 1 ) = w ( n ) − α ∂ E ∂ w ∣ w ( n ) , b ( n ) w^{(n+1)}=w^{(n)}-\alpha\frac{\partial E}{\partial w}|_{w^{(n)},b^{(n)}} w(n+1)=w(n)αwEw(n),b(n)
b ( n + 1 ) = b ( n ) − α ∂ E ∂ b ∣ w ( n ) , b ( n ) b^{(n+1)}=b^{(n)}-\alpha\frac{\partial E}{\partial b}|_{w^{(n)},b^{(n)}} b(n+1)=b(n)αbEw(n),b(n)
(4)回到(2),不断循环,直到所有 ∣ ∂ E ∂ w ∣ w ( n ) , b ( n ) , ∣ ∂ E ∂ w ∣ w ( n ) , b ( n ) |\frac{\partial E}{\partial w}|_{w^{(n)},b{(n)}},|\frac{\partial E}{\partial w}|_{w^{(n)},b{(n)}} wEw(n),b(n),wEw(n),b(n)很小为止,退出循环。

三个改进

\rule[-0pt]{13cm}{0.05em}
第一个改进是针对非线性函数进行的改进
δ i ( l ) = ∂ E ∂ z i ( l ) = ∂ E ∂ y i ∂ y i ∂ z i ( l ) = ( y i − Y i ) φ ′ ( z i ( l ) ) \delta_i^{(l)}=\frac{\partial E}{\partial z_i^{(l)}}=\frac{\partial E}{\partial y_i}\frac{\partial y_i}{\partial z_i^{(l)}}=(y_i-Y_i)\varphi^\prime(z_i^{(l)}) δi(l)=zi(l)E=yiEzi(l)yi=(yiYi)φ(zi(l))
δ i ( m ) = [ ∑ j = 1 S m + 1 δ j ( m + 1 ) W j i ( m + 1 ) ] φ ′ ( Z i ( m ) ) \delta_i^{(m)}=[\sum_{j=1}^{S_{m+1}}\delta_j^{(m+1)}W_{ji}^{(m+1)}]\varphi^\prime(Z_i^{(m)}) δi(m)=[j=1Sm+1δj(m+1)Wji(m+1)]φ(Zi(m))
可以看出后向传播算法需要对非线性函数求导数,但是阶跃函数在0是没有导数的,也可以说是无限大,所以我们必须对这一点进行改进。
我们将其改为:
φ ( x ) = 1 1 + e − x φ ′ ( x ) = φ ( x ) [ 1 − φ ( x ) ] \varphi(x)=\frac{1}{1+e^{-x}}\\ \varphi^\prime(x)=\varphi(x)[1-\varphi(x)] φ(x)=1+ex1φ(x)=φ(x)[1φ(x)]
在这里插入图片描述
sigmoid函数和阶跃函数一样,在X=-∞=0,在X=∞时=1
也可以用双去正切函数tanh(x)来表示: t a n h ( x ) = e x − e − x e x + e − x tanh(x)=\frac{e^x-e^{-x}}{e^x+e^{-x}} tanh(x)=ex+exexex
在这里插入图片描述
φ ( x ) = e x − e − x e x + e − x , 则 φ ′ ( x ) = 1 − [ φ ( x ) ] 2 \varphi(x)=\frac{e^x-e^{-x}}{e^x+e^{-x}},则\varphi^\prime(x)=1-[\varphi(x)]^2 φ(x)=ex+exexexφ(x)=1[φ(x)]2

第二个改进:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值