CV理论基础(五):神经网络基础知识——神经元、基础神经网络、梯度下降、误差传播

计算机视觉理论基础(五)

  • 神经网络
    • 神经元
    • 人工神经网络
      • 基础神经网络
      • 前馈神经网络
    • 梯度下降
    • 误差传播
      • 误差传播迭代公式

神经网络

神经网络是大量结构简单的,功能接近的神经元节点按一定体系架构连接成的网状结构,类似大脑的结构,需要建议输入和输出的映射关系。

神经网络可以用于分类、模式识别、连续值预测。

神经元

人工神经元:

  1. 来源:生物神经元间相互联系,传递信息。借鉴生物神经元,形成人工神经元。
  2. 概念:
    每个神经元都是一个结构相似的独立单元,它接受前一层传来的数据,并将这些数据的加权和输入非线性作用函数中,最后将非线性作用函数的输出结果传递给后一层。
  3. 模型:
    CV理论基础(五):神经网络基础知识——神经元、基础神经网络、梯度下降、误差传播_第1张图片
    若干输入,每个输入有各自的权重,进行一个混合的操作(线性组合),经过f映射(通常是非线性)后形成一个output值。函数表达如下:
    y = f ( w x ) = f ( ∑ i = 1 d w i x i ) y = f(w^x) = f (\sum_{i=1}^d w_ix_i) y=f(wx)=f(i=1dwixi)
    其中,激活函数是非线性函数f
  4. 重要部分——激活函数(传统)
    将负无穷到正无穷映射到一个范围内
    (1)sigmoid
    f ( x ) = 1 1 + e − x f(x) = \frac{1}{1+e^{-x}} f(x)=1+ex1
    令 y = f ( x ) , f ′ ( x ) = y ( 1 − y ) 令y=f(x) ,f^{'} (x) =y(1-y) y=f(x),f(x)=y1y
    CV理论基础(五):神经网络基础知识——神经元、基础神经网络、梯度下降、误差传播_第2张图片
    (2)tanh
    f ( x ) = t a n h ( x ) = e x − e − x e x + e − x f(x)= tanh(x) = \frac{e^x-e^{-x}}{e^x + e ^{-x}} fx=tanh(x)=ex+exexex

令 y = f ( x ) , f ′ ( x ) = 1 − y 2 令y=f(x) ,f^{'}(x) =1-y^2 y=f(x),f(x)=1y2CV理论基础(五):神经网络基础知识——神经元、基础神经网络、梯度下降、误差传播_第3张图片

人工神经网络

基础神经网络

  1. 、神经网络概念
    大量神经元节点按照一定体系架构连接成的网状结构,一般有输入层,隐含层,输出层。神经元包括输入向量x,权重向量w,偏置标量b和激活函数sigmoid。通长使用梯度下降或者BP后向传播(链式规则)进行优化。
    CV理论基础(五):神经网络基础知识——神经元、基础神经网络、梯度下降、误差传播_第4张图片
    传统的浅层网络,一般有3-5层。
    CV理论基础(五):神经网络基础知识——神经元、基础神经网络、梯度下降、误差传播_第5张图片
  2. 重要概念——层
    实现输入控件到输出空间的线性或非线性变化
    每层可以改变的量:提取不同的特征,提取特征的个数

前馈神经网络

  1. 概念:
    前馈神经网络是各神经元从输入层开始,接收前一级输入,并输出到下一级,直至输出层。整个网络中无反馈,可用一个有向无环图表示。
  2. 特点
    采用一种单项多层结构。其中每一层包含若干个神经元,同一层的神经元之间没有互相连接,层间信息的传送只沿着一个方向。
    其中,第一层称为输入层,最后一层为输出层,中间为隐含层。
  3. 学习规则——Delta
    Delta学习规则是一种有监督学习算法,该算法根据神经元的实际输出与期望输出查别来调整链接权。数学表示如下:
    Δ w i j = a ⋅ ( d i − y i ) x j ( t ) \Delta w_ij=a\cdot (d_i-y_i)x_j(t) Δwij=a(diyi)xj(t)
    其中, Δ w i j \Delta w_ij Δwij表示神经元j到神经元i连接权重增量, d i d_i di是神经元i的期望输出, y i y_i yi是神经元i的实际输出, x j x_j xj表示神经元j状态,a是表示学习速度的常数。
  4. 目标函数
    对于训练样本x,期望输出t和实际输出z越接近越好,即简单目标函数越小越好。
    简单目标函数如下:
    J ( w ) = 1 2 ∣ ∣ t − z ∣ ∣ 2 = 1 2 ∑ k = 1 c ( t k − z k ) 2 J(w)=\frac{1}{2}||t-z||^2=\frac{1}{2}\sum_{k=1}^c(t_k-z_k)^2 J(w)=21tz2=21k=1c(tkzk)2
    注: 1 2 \frac{1}{2} 21是为了求导方便

梯度下降

令权重向梯度下降的方向调整,直到权重无法下降为止。下降调整过程为迭代过程,表示为:
w ( m + 1 ) = w ( m ) + Δ w ( m ) + Δ w ( m ) = w ( m ) − η ∂ J ∂ w w(m+1)=w(m)+\Delta w(m)+\Delta w(m)=w(m)-\eta \frac{\partial J}{\partial w} w(m+1)=w(m)+Δw(m)+Δw(m)=w(m)ηwJ
将此问题类比为爬山,红色部分代表J(w)目标函数有着比较高的取值,需要能够让目标函数的值尽量的低,即深蓝色的部分。
CV理论基础(五):神经网络基础知识——神经元、基础神经网络、梯度下降、误差传播_第6张图片
需要计算梯度的方向,沿梯度方向下降,注意学习速率,持续这个过程直到平地,进行迭代过程,目标函数处处可导

  1. 输出层权重改变量计算
    假定输出层参数如下:
    CV理论基础(五):神经网络基础知识——神经元、基础神经网络、梯度下降、误差传播_第7张图片
    ∂ J ∂ w k j = ∂ J ∂ n e t k ∂ n e t k ∂ w k j \frac{\partial J}{\partial w_{kj}}=\frac{\partial J}{\partial net_k}\frac{\partial net_k}{\partial w_{kj}} wkjJ=netkJwkjnetk
    其中, n e t k net_k netk是输出单元的总输出, n e t k = ∑ i = 1 n H w k i y i net_k=\sum_{i=1}^{n_H}w_{ki}y_i netk=i=1nHwkiyi ∂ n e t k ∂ w k j = y j \frac{\partial net_k}{\partial w_kj}=y_j wkjnetk=yj
    ∂ J ∂ n e t k = ∂ J ∂ z k ∂ z k ∂ n e t k \frac{\partial J}{\partial net_k}=\frac{\partial J}{\partial z_k}\frac{\partial z_k}{\partial net_k} netkJ=zkJnetkzk
    因为 J ( w ) = 1 2 ∣ ∣ t − z ∣ ∣ 2 = 1 2 ∑ k = 1 c ( t k − z k ) 2 J(w)=\frac{1}{2}||t-z||^2=\frac{1}{2}\sum_{k=1}^c(t_k-z_k)^2 J(w)=21tz2=21k=1c(tkzk)2,所以 ∂ J ∂ z k = − ( t k − z k ) \frac{\partial J}{\partial z_k}=-(t_k-z_k) zkJ=(tkzk)
    ∂ J ∂ n e t k = − ( t k − z k ) f ′ ( n e t k ) \frac{\partial J}{\partial net_k}=-(t_k-z_k)f^{'}(net_k) netkJ=(tkzk)f(netk)
    令残差 δ k = ( t k − z k ) f ′ ( n e t k ) \delta_k=(t_k-z_k)f^{'}(net_k) δk=(tkzk)f(netk),则
    ∂ J ∂ w k j = − ( t k − z k ) f ′ ( n e t k ) y j = − δ k y j \frac{\partial J}{\partial w_{kj}}=-(t_k-z_k)f^{'}(net_k)y_j=-\delta_ky_j wkjJ=(tkzk)f(netk)yj=δkyj

  2. 隐藏层权重改变量计算
    CV理论基础(五):神经网络基础知识——神经元、基础神经网络、梯度下降、误差传播_第8张图片
    寻找中间变量,隐藏层输出和隐藏层总输入
    ∂ J ∂ w j i = ∂ J ∂ y j y j ∂ n e t j ∂ n e t k ∂ w j i \frac{\partial J}{\partial w_{ji}}=\frac{\partial J}{\partial y_j}\frac{y_j}{\partial net_j}\frac{\partial net_k}{\partial w_{ji}} wjiJ=yjJnetjyjwjinetk
    其中, n e t j net_j netj是输出单元的总输入, n e t j = ∑ m = 1 d w j m x m net_j=\sum_{m=1}^{d}w_{jm}x_m netj=m=1dwjmxm y j y_j yj是隐藏层单元输出
    ∂ n e t j ∂ w j i = ∂ ∂ w j i ( ∑ m = 1 d w j m x m ) = x i \frac{\partial net_j}{\partial w_{ji}}=\frac{\partial}{\partial w_ji}(\sum_{m=1}^d w_{jm}x_m)=x_i wjinetj=wji(m=1dwjmxm)=xi
    ∂ y j ∂ n e t j = f ′ ( n e t j ) \frac{\partial y_j}{\partial net_j}=f^{'}(net_j) netjyj=f(netj)
    f ′ ( n e t j ) f^{'}(net_j) f(netj)是激活函数的导数
    ∂ J ∂ y j = ∂ ∂ y j [ 1 2 ∑ k = 1 c ( t k − z k ) 2 ] = ∂ ∂ z k ∂ z k ∂ y j ∑ k = 1 c ( t k − z k ) 2 ] = − ∑ k = 1 c ( t k − z k ) ∂ z k ∂ y j \frac{\partial J}{\partial y_j}=\frac{\partial }{\partial y_j}[\frac{1}{2}\sum_{k=1}^c(t_k-z_k)^2]=\frac{\partial}{\partial z_k}\frac{\partial z_k}{\partial y_j}\sum_{k=1}^c(t_k-z_k)^2]=-\sum_{k=1}^c(t_k-z_k)\frac{\partial z_k}{\partial y_j} yjJ=yj[21k=1c(tkzk)2]=zkyjzkk=1c(tkzk)2]=k=1c(tkzk)yjzk
    n e t k net_k netk是输出单元的总输入, n e t k = ∑ i = 1 n H w k i y i net_k=\sum_{i=1}^{n_H}w_{ki}y_i netk=i=1nHwkiyi
    − ∑ k = 1 c ( t k − z k ) ∂ z k ∂ y j = − ∑ k = 1 c ( t k − z k ) ∂ z k ∂ n e t k ∂ n e t k ∂ y j = − ∑ k = 1 c ( t k − z k ) f ′ ( n e t k ) w k j -\sum_{k=1}^c(t_k-z_k)\frac{\partial z_k}{\partial y_j}=-\sum_{k=1}^c(t_k-z_k)\frac{\partial z_k}{\partial net_k}\frac{\partial net_k}{\partial y_j}=-\sum_{k=1}^c(t_k-z_k)f^{'}(net_k)w_{kj} k=1c(tkzk)yjzk=k=1c(tkzk)netkzkyjnetk=k=1c(tkzk)f(netk)wkj
    由输出层权重改变量计算可知 ∂ J ∂ y j = ∂ J ∂ w k j = − ( t k − z k ) f ′ ( n e t k ) y j = − δ k y j \frac{\partial J}{\partial y_j}=\frac{\partial J}{\partial w_{kj}}=-(t_k-z_k)f^{'}(net_k)y_j=-\delta_ky_j yjJ=wkjJ=(tkzk)f(netk)yj=δkyj
    令残差 δ j = f ′ ( n e t j ) ∑ k = 1 c δ k w k j \delta_j=f^{'}(net_j)\sum_{k=1}^c \delta_kw_{kj} δj=f(netj)k=1cδkwkj,则
    ∂ J ∂ w j i = − δ j x i \frac{\partial J}{\partial w_{ji}}=-\delta_j x_i wjiJ=δjxi

  3. 样本多时,使用随机梯度下降方法(SGD),SGD存在着噪音较多的问题,不是每次迭代都向着整体最优化的方向。Mini-batch Gradient Descent是在批量梯度下降和随机梯度下降两种方法的折衷。

误差传播

误差传播迭代公式

  1. 输出层
    目标函数对于隐藏层与输出层权重的偏导等于负的输出层的残差与输出层单元输入的乘积,即

CV理论基础(五):神经网络基础知识——神经元、基础神经网络、梯度下降、误差传播_第9张图片2. 隐含层
目标函数对于输入层与隐含层的权重的偏导等于负的隐藏层的残差与输入的乘积
CV理论基础(五):神经网络基础知识——神经元、基础神经网络、梯度下降、误差传播_第10张图片
2. 总结
输出层和隐藏层误差传播公式可统一为:
权 重 增 量 = − 1 ∗ 学 习 步 长 ∗ 目 标 函 数 对 权 重 的 偏 导 数 \color{#F00}{权重增量=-1*学习步长*目标函数对权重的偏导数} =1

目 标 函 数 对 权 重 的 偏 导 数 = − 1 ∗ 残 差 ∗ 当 前 层 的 输 入 \color{#F00}{目标函数对权重的偏导数=-1*残差*当前层的输入} =1

残 差 = 当 前 层 激 励 函 数 的 导 数 ∗ 上 层 反 传 来 的 误 差 \color{#F00}{残差=当前层激励函数的导数*上层反传来的误差} =

上 层 反 传 来 的 误 差 = 上 层 残 差 的 加 权 和 \color{#F00}{上层反传来的误差=上层残差的加权和} =

你可能感兴趣的:(CV理论基础,神经网络,人工智能,深度学习,机器学习,python)