【机器学习】18. 反向传播 Backpropagation algorithm, 学习率,动量Momenetum, Xavier,梯度消失

反向传播

  • [1. 定义](#1. 定义)
  • [2. 权重更新公式](#2. 权重更新公式)
  • [3. 梯度下降更新权重](#3. 梯度下降更新权重)
  • [4. 反向传播数学计算理解](#4. 反向传播数学计算理解)
  • [5. 结构来带的问题](#5. 结构来带的问题)
  • [6. 介绍训练例子](#6. 介绍训练例子)
  • [7. 学习率](#7. 学习率)
  • [8. 动量 Momentum](#8. 动量 Momentum)
  • [9. 权重初始化](#9. 权重初始化)
  • [10. 算法的进步](#10. 算法的进步)
  • [11. 梯度消失问题](#11. 梯度消失问题)

1. 定义

对于每一个训练样本传入网络, 直到输出层, 这个过程称为正向传播, 将其输出与标签进行比较, 计算误差, 根据误差, 从输出层到输入层逐级反向传播, 调整每个神经元的权重, 以减小误差, 这个过程就是反向传播.

2. 权重更新公式

w p q n e w = w p q o l d + Δ w p q w^{new}{pq} = w^{old}{pq}+ Δw_{pq} wpqnew=wpqold+Δwpq

3. 梯度下降更新权重

Δ w = η ⋅ δ q ⋅ o p Δw = η⋅δ_q⋅o_p Δw=η⋅δq⋅op

  1. 若q是输出层的神经元, 则
    δ q = ( t q − o q ) f ′ ( z q ) δ_q = (t_q-o_q)f'(z_q) δq=(tq−oq)f′(zq)
    f ' ( x ) = f ( x ) ⋅ ( 1 − f ( x ) ) [ s i g m o i d ] f'(x)=f(x)⋅(1−f(x)) [sigmoid] f'(x)=f(x)⋅(1−f(x))[sigmoid]
    2.若q是隐藏层的神经元,则
    δ q = f ′ ( z q ) ∑ i w q i δ i δ_q = f'(z_q)\sum_i w_{qi}δ_i δq=f′(zq)i∑wqiδi
    i是q后面的神经元,p->q->i

4. 反向传播数学计算理解

transfer function

学习率η=0.9

  1. 首先前向传播得到结果
    z 4 = 1 ∗ 0.2 + 0 ∗ 0.4 + 1 ∗ ( − 0.5 ) − 0.4 = − 0.7 z_4 = 1*0.2 + 0*0.4 + 1*(-0.5) - 0.4 = -0.7 z4=1∗0.2+0∗0.4+1∗(−0.5)−0.4=−0.7 o 4 = 1 / ( 1 + e − x ) = 1 / ( 1 + e 0.7 ) = 0.332 o_4 = 1/(1+e^{-x}) = 1/(1+e^{0.7}) = 0.332 o4=1/(1+e−x)=1/(1+e0.7)=0.332
    z 5 = 1 ∗ ( − 0.3 ) + 0 ∗ 0.1 + 1 ∗ 0.2 + 0.2 = 0.1 z_5 = 1*(-0.3) + 0*0.1 + 1*0.2 +0.2 = 0.1 z5=1∗(−0.3)+0∗0.1+1∗0.2+0.2=0.1 o 5 = 1 / ( 1 + e − x ) = 1 / ( 1 + e − 0.1 ) = 0.525 o_5 = 1/(1+e^{-x}) = 1/(1+e^{-0.1}) = 0.525 o5=1/(1+e−x)=1/(1+e−0.1)=0.525
    z 6 = 0.332 ∗ ( − 0.3 ) + 0.525 ∗ ( − 0.2 ) + 0.1 = − 0.0996 − 0.105 + 0.1 = − 0.1046 z_6 = 0.332*(-0.3) + 0.525*(-0.2) +0.1 = -0.0996-0.105+0.1 = -0.1046 z6=0.332∗(−0.3)+0.525∗(−0.2)+0.1=−0.0996−0.105+0.1=−0.1046 o 6 = 1 / ( 1 + e − x ) = 1 / ( 1 + e 0.105 ) = 0.474 o_6 = 1/(1+e^{-x}) = 1/(1+e^{0.105}) = 0.474 o6=1/(1+e−x)=1/(1+e0.105)=0.474
  2. 接下来反向传播更新权重
    δ 6 = ( t 6 − o 6 ) f ′ ( z 6 ) = ( t 6 − o 6 ) f ( z 6 ) ( 1 − f ( z 6 ) ) = ( 1 − 0.474 ) ∗ 0.474 ∗ ( 1 − 0.474 ) = 0.1311 δ_6 = (t_6-o_6)f'(z_6) = (t_6-o_6)f(z_6)(1-f(z_6)) = (1-0.474) * 0.474*(1-0.474) = 0.1311 δ6=(t6−o6)f′(z6)=(t6−o6)f(z6)(1−f(z6))=(1−0.474)∗0.474∗(1−0.474)=0.1311
    Δ w 46 = η ∗ δ 6 ∗ o 4 Δw_{46} = η *δ_6 *o4 Δw46=η∗δ6∗o4
    w 46 ( n e w ) = w 46 ( o l d ) + Δ w 46 w_{46}(new) = w_{46}(old)+Δw_{46} w46(new)=w46(old)+Δw46
    b 6 ( n e w ) = b 6 ( o l d ) + Δ b 6 b_6(new) = b_6(old) + Δb_6 b6(new)=b6(old)+Δb6

5. 结构来带的问题

太多隐藏层会过拟合,太少会欠拟合

6. 介绍训练例子

  1. 对于每个epoch,选择排列好的训练例子。
  2. 多展示误差较大的例子,少展示误差较小的例子
  3. 不是一个一个地展示这些例子,而是以N个例子为批次,总结它们各自的错误,并在每批(min-batch)后更新

7. 学习率

学习率可以是固定的, 也可以随时间变化.

8. 动量 Momentum

动量, momentum, 通过在权重更新公式中引入一个额外的动量项, 使得当前的权重更新依赖于之前的更新, 从而减少振荡并允许使用更大的学习率

9. 权重初始化

  • 标准的做法: 从-1到1之间选择小的随机数
  • Xavier: 权重从一个正态分布中产生
    σ = 2 N i n + N o u t σ = \sqrt{\frac{2}{N_{in}+N_{out}}} σ=Nin+Nout2
    in 和 out 分别是当前层输入神经元数量和输出神经元数量。

10. 算法的进步

  • 克服消失梯度问题
  • Dropout以避免过拟合
  • 新的初始化方法:使用自动编码器进行预训练
  • 卷积和共享权重

11. 梯度消失问题

o非常小导致δ非常小,权重更新也非常小

  • 特别是如果有许多隐藏层-递减梯度,收敛缓慢
  • 即使输出层的激活不饱和,当我们将梯度从输出层反向传播到隐藏层时进行的重复乘法也可能导致梯度递减
  • 输出到隐藏层可能会导致梯度递减
  • 消失的梯度问题:权重变化为较低的水平都很小;这些层的学习速度比更高的隐藏层要慢
  • 这一直是训练深度神经网络的一个主要问题

解决方法:使用其他激活功能(LReLu)

相关推荐
机智的叉烧5 分钟前
前沿重器[57] | sigir24:大模型推荐系统的文本ID对齐学习
人工智能·学习·机器学习
凳子花❀8 分钟前
强化学习与深度学习以及相关芯片之间的区别
人工智能·深度学习·神经网络·ai·强化学习
量子-Alex1 小时前
【多模态聚类】用于无标记视频自监督学习的多模态聚类网络
学习·音视频·聚类
吉大一菜鸡1 小时前
FPGA学习(基于小梅哥Xilinx FPGA)学习笔记
笔记·学习·fpga开发
泰迪智能科技012 小时前
高校深度学习视觉应用平台产品介绍
人工智能·深度学习
盛派网络小助手2 小时前
微信 SDK 更新 Sample,NCF 文档和模板更新,更多更新日志,欢迎解锁
开发语言·人工智能·后端·架构·c#
Eric.Lee20213 小时前
Paddle OCR 中英文检测识别 - python 实现
人工智能·opencv·计算机视觉·ocr检测
cd_farsight3 小时前
nlp初学者怎么入门?需要学习哪些?
人工智能·自然语言处理
AI明说3 小时前
评估大语言模型在药物基因组学问答任务中的表现:PGxQA
人工智能·语言模型·自然语言处理·数智药师·数智药学
Focus_Liu3 小时前
NLP-UIE(Universal Information Extraction)
人工智能·自然语言处理