神经网络:全连接神经网络

目录

      • 1 简介
        • 1.1 神经元
        • 1.2 网络结构
        • 1.3 正向传播
        • 1.4 反向传播

1 简介

全连接神经网络 也称作多层感知机(MLP)

1.1 神经元

神经元接收输入向量 x x x
神经元节点有权重向量w和偏置项b 输出值为 f ( w T x + b ) f(w^Tx+b) f(wTx+b)
在经过类似线性回归之后 使用激活函数对得到值进行操作

1.2 网络结构

神经网络:全连接神经网络_第1张图片

  • 输入层:[特征维度,n]
  • 隐含层:权重矩阵 [输出维度,输入维度] 或者说[这层维度,上层维度]
  • 输出层:[类别数,n]

个人对于每一层的理解就是 使用[这层维度,上层维度]的权重矩阵
将输入转化为其他维度 并且使用非线性的激活函数 得到输出

1.3 正向传播

确定网络结构之后
假设有m层网络 第 l l l 层的权重矩阵 W l W^l Wl 偏置为 b l b^l bl
整个网络从输入到输出的流程为

  • x 1 = x x^1=x x1=x
  • 对于 l = 2 , 3 , . . . m l=2,3,...m l=2,3,...m每一层
    u l = W l x l − 1 + b l u^l=W^lx^{l-1}+b^l ul=Wlxl1+bl(线性回归)
    x l = f ( u l ) x^l=f(u^l) xl=f(ul)(非线性激活函数)
  • 得到 x m x^m xm 即为输出 可能是每个类别的概率组成的向量 也可能是回归值

1.4 反向传播

如何训练每一层的W和b 就需要反向传播算法
假设单个样本的损失函数是:
L = 1 2 ( h ( x ) − y ) 2 L=\cfrac12(h(x)-y)^2 L=21(h(x)y)2
目标优化函数:
L = 1 2 m ∑ i = 1 m ( h ( x i ) − y i ) 2 L=\cfrac1{2m}\sum_{i=1}^m(h(x_i)-y_i)^2 L=2m1i=1m(h(xi)yi)2
反向传播算法的流程是:

  • ①正向传播 计算每一层的输出值
  • ②反向传播:对输出层计算 损失函数对 u u u的梯度 ▽ u l L = ( x l − y ) ⨀ f ′ ( u l ) \bigtriangledown _{u^l}L=(x^l-y) \bigodot f^{\prime}(u^l) ulL=(xly)f(ul)(因为损失函数用的欧式距离 所以是 x l − y x^l-y xly)
  • ③对于 l = n l − 1 , n l − 2....2 l=n_l-1,n_l-2....2 l=nl1,nl2....2的各层 计算每层 损失函数对 u u u的梯度
    ▽ u l L = ( W l + 1 ) T [ ▽ u l + 1 L ] ⨀ f ′ ( u l ) \bigtriangledown _{u^l}L=(W^{l+1})^T[\bigtriangledown _{u^{l+1}}L]\bigodot f^{\prime}(u^l) ulL=(Wl+1)T[ul+1L]f(ul)
  • 计算损失函数对 W W W b b b的梯度
    ▽ W l L = [ ▽ u l L ] ( x l − 1 ) T \bigtriangledown _{W^l}L=[\bigtriangledown _{u^l}L] (x^{l-1})^T WlL=[ulL](xl1)T
    ▽ b l L = ▽ u l L \bigtriangledown _{b^l}L=\bigtriangledown _{u^l}L blL=ulL
  • ⑤梯度下降更新 W W W b b b
    W l = W l − η [ ▽ W l L ] W^l=W^l-\eta [\bigtriangledown _{W^l}L] Wl=Wlη[WlL]
    b l = b l − η [ ▽ b l L ] b^l=b^l-\eta [\bigtriangledown _{b^l}L] bl=blη[blL]

需要推导出每一层都适用的结论是
▽ W l L = [ ▽ u l L ] ( x l − 1 ) T \bigtriangledown _{W^l}L=[\bigtriangledown _{u^l}L] (x^{l-1})^T WlL=[ulL](xl1)T
▽ b l L = ▽ u l L \bigtriangledown _{b^l}L=\bigtriangledown _{u^l}L blL=ulL
可见需要每一层 损失函数对u的梯度
然后只有输出层的这个梯度是可以直接求出来的
隐藏层的这个梯度都依靠于下一层才能求出来
所以按顺序计算 n l , n l − 1 , n l − 2 , . . . . , 2 n_l,n_l-1,n_l-2,....,2 nl,nl1,nl2,....,2层的梯度

如果训练时使用多个样本 对每个样本求出梯度 求出梯度的均值 进行梯度下降即可
反向传播算法的证明还需掌握 (复合函数求导

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