machine-learning
  • Welcome
  • 动手学深度学习
    • 1. 前言
    • 2. 预备知识
    • 3. 线性神经网络
    • 4. 多层感知机
    • 5. 深度学习计算
    • 6. 卷积神经网络
    • 7. 现代卷积神经网络
    • 8. 循环神经网络
    • 9. 现代循环神经网络
    • 10. 注意力机制
    • 11. 优化算法
    • 12. 计算性能
    • 13. 计算机视觉
    • 14. 自然语言处理:预训练
    • 15. 自然语言处理:应用
    • 16. 附录:深度学习工具
  • 百面机器学习
    • 1. 特征工程
    • 2. 模型评估
    • 3. 经典算法
    • 4. 降维
    • 5. 非监督学习
    • 6. 概率图模型
    • 7. 优化算法
    • 8. 采样
    • 9. 前向神经网络
    • 10. 循环神经网络
    • 11. 强化学习
    • 12. 集成学习
    • 13. 生成式对抗网络
    • 14. 人工智能的热门应用
  • 百面深度学习
    • 1. 卷积神经网络 CNN
    • 2. 循环神经网络 RNN
    • 3. 图神经网络 GNN
    • 4. 生成模型
    • 5. 生成式对抗网络 GAN
    • 6. 强化学习 RL
    • 7. 元学习
    • 8. 自动化机器学习 AutoML
    • 9. 计算机视觉 CV
    • 10. 自然语言处理 NLP
    • 11. 推荐系统
    • 12. 计算广告
    • 13. 视频处理
    • 14. 计算机听觉
    • 15. 自动驾驶
  • 统计学习方法
  • 推荐系统实践
    • 1. 推荐系统
    • 2. 特征工程
    • 3. Embedding
    • 4. 精排
    • 5. 召回
    • 6. 粗排/重排
    • 7. 多任务/多场景
    • 8. 冷启动
    • 9. 评估调试
    • 10. 自我修养
  • 深度学习推荐系统
    • 1. 推荐系统
    • 2. 进化之路
    • 3. 深度学习的应用
    • 4. Embedding
    • 5. 多角度审视
    • 6. 工程实现
    • 7. 评估方法
    • 8. 前沿实践
    • 9. 知识框架
  • 强化学习的数学原理
    • 1. 基础概念
    • 2. 贝尔曼公式
    • 3. 贝尔曼最优公式
    • 4. 值迭代与策略迭代
    • 5. 蒙特卡洛方法
    • 6. 随机近似与随机梯度下降
    • 7. 时序差分方法
    • 8. 值函数近似
    • 9. 策略梯度方法
    • 10. Actor-Critic方法
Powered by GitBook
On this page
  • 10.1 文本数据 RNN 和 CNN *
  • 10.2 RNN 的梯度消失问题 **
  • 10.3 RNN 能否使用 ReLU ***
  • 10.4 长短期记忆网络 LSTM ***
  • 10.5 Seq2Seq 模型 ***
  • 10.6 注意力机制 Attention ****
  1. 百面机器学习

10. 循环神经网络

Previous9. 前向神经网络Next11. 强化学习

Last updated 3 years ago

10.1 文本数据 RNN 和 CNN *

  • NN:TF-IDF,丢失顺序

  • CNN:捕捉局部特征,很难学习长距离依赖

  • RNN:处理变长&有序,模拟 顺序阅读+记忆能力

    • 每层 ht=f(nett)=f(Uxt+Wht−1)h_t=f(net_t)=f(Ux_t+Wh_{t-1})ht​=f(nett​)=f(Uxt​+Wht−1​),输出 y=g(VhT)y=g(Vh_T)y=g(VhT​)

10.2 RNN 的梯度消失问题 **

  • BPTT(Back Propagation Through Time,基于时间的反向传播)

    • ∂nett∂nett−1=∂nett∂ht−1∂ht−1∂nett−1=W⋅diag[f′(nett−1)]\frac{\partial net_t}{\partial net_{t-1}}=\frac{\partial net_t}{\partial h{t-1}} \frac{\partial h_{t-1}}{\partial net_{t-1}}=W\cdot diag[f'(net_{t-1})]∂nett−1​∂nett​​=∂ht−1∂nett​​∂nett−1​∂ht−1​​=W⋅diag[f′(nett−1​)],称为雅可比矩阵

      • 最大特征值>1,梯度爆炸,梯度裁剪(超过阈值等比收缩)

      • 最大特征值<1,梯度消失,LSTM / GRU

10.3 RNN 能否使用 ReLU ***

  • 可以,但需要限制矩阵初值,否则容易引发数值问题(0 / inf)

    • nettnet_tnett​ 的表达式中,最终包含 t 个 W 的 连乘,因为每层权重相同

    • 需要将 W 初始化为 单位矩阵

10.4 长短期记忆网络 LSTM ***

语音识别、语言建模、机器翻译、命名实体识别、图像描述文本生成

  • 结构

  • 激活函数

    • sigmoid 输出 01 门控,tanh 输出 -11 分布0中心,这两个函数都是饱和的

    • 计算能力有限的设别,使用 0/1门(hard gate)

10.5 Seq2Seq 模型 ***

机器翻译、语音识别、自动对话

  • 思想:输入序列 - 编码 - 解码 - 输出序列

    • 机器翻译:输入 A, B, C, [EOS],输出 W, X, Y, Z

    • 文本摘要:输入 段落,输出 摘要短句

    • 图像描述文本生成:输入 经过视觉网络的特征,输出 描述短句

    • 语音识别:输入 音频信号,输出 文本

  • 核心是 解码环节

    • 贪心法:局部最优解

    • 集束搜素:启发式,每步保留 b 个当前较佳选择,8-12

    • 注意力机制

    • 记忆网络:从外界获取知识

    • 其他:堆叠的 RNN、Dropout 机制、残差连接

10.6 注意力机制 Attention ****

  • Seq2Seq,随着输入序列的增长,性能下降,输出损失信息

  • 注意力机制,解码时,每个输出依赖于 前一个隐状态 + 每一个输入隐状态

      • 在生成一个输出词时,会考虑 每个输入词 和 当前输出词 的 对齐关系

输入门 it=σ(Wixt+Uiht−1+bi)i_t=\sigma(W_ix_t+U_ih_{t-1}+b_i)it​=σ(Wi​xt​+Ui​ht−1​+bi​),当前状态,多大程度更新到记忆单元中

遗忘门 ft=σ(Wfxt+Ufht−1+bf)f_t=\sigma(W_fx_t+U_fh_{t-1}+b_f)ft​=σ(Wf​xt​+Uf​ht−1​+bf​),之前记忆单元中的信息,多大程度被遗忘掉

输出门 ot=σ(Woxt+Uoht−1+bo)o_t=\sigma(W_o x_t+U_o h_{t-1}+b_o)ot​=σ(Wo​xt​+Uo​ht−1​+bo​),当前输出,多大程度取决于当前记忆单元

内部记忆单元 c~t=tanh⁡(Wcxt+Ucht−1)\tilde c_t=\tanh(W_cx_t+U_ch_{t-1})c~t​=tanh(Wc​xt​+Uc​ht−1​),于是 ct=ft⊙ct−1+it⊙c~tc_t=f_t\odot c_{t-1}+i_t\odot \tilde c_tct​=ft​⊙ct−1​+it​⊙c~t​

ht=ot⊙tanh⁡(ct)h_t=o_t\odot \tanh(c_t)ht​=ot​⊙tanh(ct​)

si=f(si−1,yi−1,ci)s_i=f(s_{i-1},y_{i-1},c_i)si​=f(si−1​,yi−1​,ci​)

p(yi∣y1,y2,...,yi−1)=g(yi−1,si,ci)p(y_i|y_1,y_2,...,y_{i-1})=g(y_{i-1},s_i,c_i)p(yi​∣y1​,y2​,...,yi−1​)=g(yi−1​,si​,ci​)

其中 语境向量 ci=∑j=1Tαijhjc_i=\sum_{j=1}^T \alpha_{ij}h_jci​=∑j=1T​αij​hj​,是 输入序列 所有隐状态 hjh_jhj​ 的 加权和

其中 注意力权重系数 αij=softmax(a(si−1,hj))\alpha_{ij}=softmax(a(s_{i-1}, h_j))αij​=softmax(a(si−1​,hj​)),是另一个神经网络计算得到的

LSTM