目录
初识神经网络 1.1 感知器 1.2 Sigmoid函数 1.3 代价函数 1.4 梯度下降算法反向传播算法神经网络改进算法深度学习 4.1 万有逼近定理(Universal Approximation Theory) 4.2 训练深度神经网络时的问题 4.3 卷积神经网络(CNN)我们现在知道可以通过梯度下降算法来学习权值 ω ω 和偏置b的最优值来获得目标输出,但如何快速计算梯度呢,这里就要应用到反向传播算法(Backpropagation algorithm)。 反向传播算法是目前计算梯度最常用的快速算法。 首先定义(第 l l 层)加权输入zl=wlal−1 blzl=wlal−1 bl,则输出为 al=σ(zl) a l = σ ( z l ) 。其矩阵形式为, zlj=∑kwljkal−1k+blj z j l = ∑ k w j k l a k l − 1 + b j l ,其中 ωljk ω j k l 表示第 l l 层的j个神经元和第l−1l−1层的第k个神经元之间的权值。 下面我们再定义第 l l 层第j个神经元的误差δlj=∂C∂zljδjl=∂C∂zjl,引入误差 δl δ l 是因为反向传播算法是通过计算每一层的误差得到梯度值( ∂C/∂ωljk和∂C/∂blj ∂ C / ∂ ω j k l 和 ∂ C / ∂ b j l )的。 反向传播算法基于四个公式,
其中 ⊙ ⊙ 表示哈马德乘积,即矩阵对应元素相乘。根据 δl δ l 的定义及链式求导法则可以证明这四个公式(证明略)。 基于上述定义,现在可以引入反向传播算法:
1输入 a1 a 1 (X)2前向反馈 zl=wlal−1+bl,al=σ(zl) z l = w l a l − 1 + b l , a l = σ ( z l ) 3误差 δL=∇aC⊙σ′(zL) δ L = ∇ a C ⊙ σ ′ ( z L ) 4反向传播 δl=((wl+1)Tδl+1)⊙σ′(zl) δ l = ( ( w l + 1 ) T δ l + 1 ) ⊙ σ ′ ( z l ) 5输出 ∂C∂wljk=al−1kδlj,∂C∂blj=δlj ∂ C ∂ w j k l = a k l − 1 δ j l , ∂ C ∂ b j l = δ j l注:反向传播算法实际上对单个输入样本计算梯度,因此这里面的代价函数C= Cx C x 。
那么反向传播算法的实质是什么呢? 假设将 l l 层的某个权值ωljkωjkl增加 Δωljk Δ ω j k l ,则这个权值增量会影响 l+1 l + 1 层的输出 al+1j a j l + 1 ,继而又会影响 l+2 l + 2 层的所有输出 al+2 a l + 2 ,然后又影响之后各层的输出……从而影响代价函数C。(因此神经网络需要经过多轮训练,从而找到所有相互依赖的参数的最优值) 用数学描述上述过程,即
ΔC≈∑mnp…q∂C∂aLm∂aLm∂aL−1n∂aL−1n∂aL−2p…∂al+1q∂alj∂alj∂wljkΔwljk,(1) (1) Δ C ≈ ∑ m n p … q ∂ C ∂ a m L ∂ a m L ∂ a n L − 1 ∂ a n L − 1 ∂ a p L − 2 … ∂ a q l + 1 ∂ a j l ∂ a j l ∂ w j k l Δ w j k l , 或 ∂C∂wljk=∑mnp…q∂C∂aLm∂aLm∂aL−1n∂aL−1n∂aL−2p…∂al+1q∂alj∂alj∂wljk.(2) (2) ∂ C ∂ w j k l = ∑ m n p … q ∂ C ∂ a m L ∂ a m L ∂ a n L − 1 ∂ a n L − 1 ∂ a p L − 2 … ∂ a q l + 1 ∂ a j l ∂ a j l ∂ w j k l . 综上,反向传播算法是一种巧妙的追踪参数( ω ω ,b)影响的算法,这种影响的描述即是梯度。最后用流程对神经网络整体框架做一简单总结: