【DL】1 RNN入门——李宏毅机器学习课程RNN笔记

Recurrent Neural Network

  • 1. 应用实例(为什么需要RNN?)
  • 2. RNN基本概念
  • 3. Long Short-term Memory (LSTM)
  • 4. RNN使用
    • 4.1 Loss function
    • 4.2 训练方法
  • 5. RNN的应用前景
  • 小结

1. 应用实例(为什么需要RNN?)

槽位填充
【DL】1 RNN入门——李宏毅机器学习课程RNN笔记_第1张图片
通过Feedforward网络解决槽位填充问题?

输入:一个单词(每一个词都用一个向量表示)
【DL】1 RNN入门——李宏毅机器学习课程RNN笔记_第2张图片

输出:属于槽的输入字的概率分布情况

注:如何将每个单词表示为一个向量?

  • 1-of-N encoding
    矢量是词库大小,每一个维度都对应着词典中的一个词,该词的维度为1,其他维度为0。
  • Beyond 1-of-N encoding
    Dimension for “Other”
    【DL】1 RNN入门——李宏毅机器学习课程RNN笔记_第3张图片
    Word hashing
    【DL】1 RNN入门——李宏毅机器学习课程RNN笔记_第4张图片

前向网络问题:

  • arrive Taipei on November 2nd
  • leave Taipei on November 2nd

希望神经网络在输入Taipei 的时候记住前一个词’leave’或者’arrive’,这就是RNN

2. RNN基本概念

隐藏层的输出存储在存储器中,记忆可以被认为是另一种输入
【DL】1 RNN入门——李宏毅机器学习课程RNN笔记_第5张图片
假设所有的权重都是 “1”,没有bias,所有激活函数都是线性的,结果如下图所示:

【DL】1 RNN入门——李宏毅机器学习课程RNN笔记_第6张图片
改变序列顺序将改变输出!

对于以上填充槽问题,同样的网络一用再用:

【DL】1 RNN入门——李宏毅机器学习课程RNN笔记_第7张图片
【DL】1 RNN入门——李宏毅机器学习课程RNN笔记_第8张图片
当然,它可以深…

【DL】1 RNN入门——李宏毅机器学习课程RNN笔记_第9张图片
艾尔曼(Elman)网络和约旦(Jordan)网络(有更好的表现)

【DL】1 RNN入门——李宏毅机器学习课程RNN笔记_第10张图片
双向(Bidirectional)RNN
【DL】1 RNN入门——李宏毅机器学习课程RNN笔记_第11张图片

3. Long Short-term Memory (LSTM)

【DL】1 RNN入门——李宏毅机器学习课程RNN笔记_第12张图片
仔细来看,LSTM形式如下:

【DL】1 RNN入门——李宏毅机器学习课程RNN笔记_第13张图片
激活函数f通常是一个sigmoid函数,在0和1之间,模仿开关门(注:forget gate打开是记得,关上是遗忘)

有一个LSTM的例子,如下:

【DL】1 RNN入门——李宏毅机器学习课程RNN笔记_第14张图片

  • 当x2=1时,将x1的数字加到存储器中
  • 当x2=-1时,重置内存
  • 当x3=1时,输出存储器中的数字

更具体的例子在李宏毅2020机器学习的28:16,如下:

【DL】1 RNN入门——李宏毅机器学习课程RNN笔记_第15张图片
【DL】1 RNN入门——李宏毅机器学习课程RNN笔记_第16张图片
【DL】1 RNN入门——李宏毅机器学习课程RNN笔记_第17张图片
【DL】1 RNN入门——李宏毅机器学习课程RNN笔记_第18张图片
【DL】1 RNN入门——李宏毅机器学习课程RNN笔记_第19张图片
LSTM和以前学的神经网络有什么关系呢?

原网络:
【DL】1 RNN入门——李宏毅机器学习课程RNN笔记_第20张图片
只需将神经元替换为LSTM即可:

【DL】1 RNN入门——李宏毅机器学习课程RNN笔记_第21张图片
LSTM和RNN关系是什么呢?

把一排LSTM接起来,组成vector:
【DL】1 RNN入门——李宏毅机器学习课程RNN笔记_第22张图片
【DL】1 RNN入门——李宏毅机器学习课程RNN笔记_第23张图片
【DL】1 RNN入门——李宏毅机器学习课程RNN笔记_第24张图片
多层LSTM,这是相当标准的了:
【DL】1 RNN入门——李宏毅机器学习课程RNN笔记_第25张图片

不要担心,如果你不能理解这一点,Keras可以处理。Keras支持"LSTM"、“GRU”(LSTM的简化版本)、"SimpleRNN "Layers

4. RNN使用

4.1 Loss function

【DL】1 RNN入门——李宏毅机器学习课程RNN笔记_第26张图片

4.2 训练方法

时间回溯传播(BPTT)
【DL】1 RNN入门——李宏毅机器学习课程RNN笔记_第27张图片
不幸的是(问题):基于RNN的网络并不总是容易学习的
【DL】1 RNN入门——李宏毅机器学习课程RNN笔记_第28张图片
误差面(error surface)很粗糙,误差面要么很平,要么很陡

【DL】1 RNN入门——李宏毅机器学习课程RNN笔记_第29张图片
为什么RNN会有这种奇怪的特性?

并不是因为使用sigmoid function导致梯度消失导致误差变化很小,下面举例说明为什么

【DL】1 RNN入门——李宏毅机器学习课程RNN笔记_第30张图片
假设:

  • w = 1, y 1000 = 1 y^{1000} = 1 y1000=1
  • w = 1.01, y 1000 = 20000 y^{1000} = 20000 y1000=20000 → large ∂ L / ∂ w \partial L / \partial w L/w → 调小学习率
  • w = 0.99, y 1000 = 0 y^{1000} = 0 y1000=0
  • w = 0.01, y 1000 = 0 y^{1000} = 0 y1000=0 → small ∂ L / ∂ w \partial L / \partial w L/w → 调大学习率

怎么解决?

  • Long Short-term Memory (LSTM)可以处理梯度消失(不是梯度爆炸),为什么能解决?(门控循环单元(Gated Recurrent Unit, GRU):比LSTM简单 )
    • 内存和输入是增加的
    • 影响力永远不会消失,除非忘记门被关闭(无梯度消失(如果忘记门被打开))
  • Clockwise RNN
  • Structurally Constrained Recurrent Network (SCRN)
  • Vanilla RNN初始化,Identity matrix + ReLU激活函数

5. RNN的应用前景

之前,输入和输出都是相同长度的序列,RNN可以做得更多!

  • 多对一
    输入是一个向量序列,但输出只有一个向量
    【DL】1 RNN入门——李宏毅机器学习课程RNN笔记_第31张图片
    【DL】1 RNN入门——李宏毅机器学习课程RNN笔记_第32张图片
  • 多对多
    输入和输出都是序列,但输出较短,例如:语音识别
    【DL】1 RNN入门——李宏毅机器学习课程RNN笔记_第33张图片
    解决办法:Connectionist Temporal Classification (CTC) ,增加一个代表 "空 "的符号 “φ”。
    【DL】1 RNN入门——李宏毅机器学习课程RNN笔记_第34张图片
    CTC训练,穷举所有的结果:
    【DL】1 RNN入门——李宏毅机器学习课程RNN笔记_第35张图片
  • 多对多(无限制)
    输入和输出都是长度不同的序列→ 序列到序列的学习,如:机器翻译(machine learning→机器学习)
    【DL】1 RNN入门——李宏毅机器学习课程RNN笔记_第36张图片
    【DL】1 RNN入门——李宏毅机器学习课程RNN笔记_第37张图片
    所以需要增加一个符号"==="(断)

【DL】1 RNN入门——李宏毅机器学习课程RNN笔记_第38张图片

  • 超越序列
    句法解析
    【DL】1 RNN入门——李宏毅机器学习课程RNN笔记_第39张图片
  • 序列到序列
    自动编码器 - 文本
    要理解词序的含义,不能忽视词的顺序,例如一字不差却含义不同的例子:
    • white blood cells destroying an infection(positive)
    • an infection destroying white blood cells(negative)

【DL】1 RNN入门——李宏毅机器学习课程RNN笔记_第40张图片
【DL】1 RNN入门——李宏毅机器学习课程RNN笔记_第41张图片
自动编码器 - 语音
变长序列的尺寸缩小
音段 (词水平)到固定长度向量
【DL】1 RNN入门——李宏毅机器学习课程RNN笔记_第42张图片
音频档案分为不同长度的音频段
【DL】1 RNN入门——李宏毅机器学习课程RNN笔记_第43张图片
【DL】1 RNN入门——李宏毅机器学习课程RNN笔记_第44张图片
RNN编码器和解码器联合训练

【DL】1 RNN入门——李宏毅机器学习课程RNN笔记_第45张图片
词的嵌入向量可视化

【DL】1 RNN入门——李宏毅机器学习课程RNN笔记_第46张图片
基于注意力的模式

【DL】1 RNN入门——李宏毅机器学习课程RNN笔记_第47张图片
【DL】1 RNN入门——李宏毅机器学习课程RNN笔记_第48张图片
基于注意力的模式v2(神经图灵机)

在这里插入图片描述
主要用在阅读理解中

【DL】1 RNN入门——李宏毅机器学习课程RNN笔记_第49张图片
视觉答题

语音答题

RNN v.s. Structured Learning

【DL】1 RNN入门——李宏毅机器学习课程RNN笔记_第50张图片

小结

第二次看李宏毅老师机器学习课程RNN的课程,主要对RNN的基本概念和LSTM有一个大体的回顾,以及RNN的应用方向,接下来在pytorch编程实现LSTM网络

你可能感兴趣的:(【课程学习】,神经网络,机器学习,循环神经网络,lstm,人工智能)