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

相关推荐
浊酒南街6 分钟前
吴恩达深度学习笔记:卷积神经网络(Foundations of Convolutional Neural Networks)4.9-4.10
人工智能·深度学习·神经网络·cnn
Tony聊跨境21 分钟前
独立站SEO类型及优化:来检查这些方面你有没有落下
网络·人工智能·tcp/ip·ip
懒惰才能让科技进步27 分钟前
从零学习大模型(十二)-----基于梯度的重要性剪枝(Gradient-based Pruning)
人工智能·深度学习·学习·算法·chatgpt·transformer·剪枝
Qspace丨轻空间38 分钟前
气膜场馆:推动体育文化旅游创新发展的关键力量—轻空间
大数据·人工智能·安全·生活·娱乐
没有不重的名么39 分钟前
门控循环单元GRU
人工智能·深度学习·gru
Ni-Guvara41 分钟前
函数对象笔记
c++·算法
love_and_hope43 分钟前
Pytorch学习--神经网络--搭建小实战(手撕CIFAR 10 model structure)和 Sequential 的使用
人工智能·pytorch·python·深度学习·学习
Chef_Chen1 小时前
从0开始学习机器学习--Day14--如何优化神经网络的代价函数
神经网络·学习·机器学习
芊寻(嵌入式)1 小时前
C转C++学习笔记--基础知识摘录总结
开发语言·c++·笔记·学习
2403_875736871 小时前
道品科技智慧农业中的自动气象检测站
网络·人工智能·智慧城市