【机器学习】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)

相关推荐
77qqqiqi2 分钟前
算法——数学基础
算法
啊?啊?3 分钟前
7 排序算法通关指南:从 O (n²)(选择 / 冒泡)到 O (nlogn)(快排 / 归并)+ 计数排序
数据结构·算法·排序算法
张较瘦_6 分钟前
[论文阅读] 算法 | 抗量子+紧凑!SM3-OTS:基于国产哈希算法的一次签名新方案
论文阅读·算法·哈希算法
芒克芒克7 分钟前
LeetCode 面试经典 150 题:多数元素(摩尔投票法详解 + 多解法对比)
算法·leetcode·面试
wow_DG8 分钟前
【Vue2 ✨】Vue2 入门之旅 · 进阶篇(二):虚拟 DOM 与 Diff 算法
开发语言·javascript·vue.js·算法·前端框架
云雾J视界8 分钟前
AI时代技术面试重构:谷歌如何用Vibe Coding与抗作弊革命重塑招聘
人工智能·google·面试·重构·谷歌·ai工具·技术面试
BFT白芙堂9 分钟前
GRASP 实验室研究 论文解读 | 机器人交互:基于神经网络引导变分推理的快速失配估计
人工智能·神经网络·机器学习·mvc·人机交互·科研教育机器人·具身智能平台
和光同尘 、Y_____10 分钟前
BRepMesh_IncrementalMesh 重构生效问题
c++·算法·图形渲染
深蓝学院11 分钟前
智源研究院新研究:突破物理世界智能边界的RoboBrain 2.0,将重构具身AI能力天花板
人工智能·重构
做萤石二次开发的哈哈13 分钟前
萤石安全生产监管解决方案:构建企业安全智能化防护网
大数据·人工智能