「深度学习」循环神经网络RNN

一、序列模型的例子

二、数学符号定义

「深度学习」循环神经网络RNN_第1张图片

X^{(i)}:训练样本 i 的输入序列的第 t 个元素。

T_{X}^{i}:训练样本 i 的输入序列的长度。

Y^{(i)}:训练样本 i 的输出序列的第 t 个元素。

T_{Y}^{i}:训练样本 i 的输出序列的长度。

三、举例:识别人名

【输入和输出序列长度相同】

1、数据表示

准备 Vocabulary/Dictionary

将所有要用到的单词放在一起,做成清单 —— 将每个单词用一位 one-hot 表示

遇见没见过的单词,常见新标记 Unknown Word,使用 来表示

2. 标准神经网络存在的问题

「深度学习」循环神经网络RNN_第2张图片

  • 对于不同的例子,输入和输出会有不同的长度

  • 不共享从文本的不同位置学到的特征

3. 循环神经网络 (RNN)

(1) 构建 RNN

循环神经网络从左向右扫描数据,每一步所用的参数是共享的

缺点:只使用当前输入之前的序列信息来做预测 —— 解决方法:双向循环神经网络(BRNN)

(2) 前向传播

损失函数:「深度学习」循环神经网络RNN_第3张图片

用向量简化符号:「深度学习」循环神经网络RNN_第4张图片

(3)通过时间的反向传播

四、不同类型的循环神经网络

「深度学习」循环神经网络RNN_第5张图片

多对多型(如机器翻译)、多对一型、一对一型(标准的小型神经网络)、一对多型、注意力结构

如音乐生成:「深度学习」循环神经网络RNN_第6张图片、机器翻译:「深度学习」循环神经网络RNN_第7张图片

五、RNN 构建语言模型

1. 定义语言模型

y^{} 来表示输入的文本序列 x^{} = y^{}

训练集: 大量的英文文本 语料库 (large corpus)

句子结尾:增加额外的标记 EOS (可选)

未知词:增加额外的标记 UNK

2. 建立 RNN 模型

「深度学习」循环神经网络RNN_第8张图片

通过前面输入的单词,预测下一个输出单词的概率。

  • 定义代价函数 (softmax):

    L (\overline{y}^{}, y^{}) = -\sum{y_{i}^{} log\overline{y}_{i}^{}}​

    L = \sum{L^{} (\overline{y}^{}, y^{})}

  • 给定新句子输出的概率:

    P(y^{<1>}, y^{<2>},...,y^{}) = P(y^{<1>})P(y^{<2>}|y^{<1>})...P(y^{}|y^{<1>}y^{<2>}...y^{})​

3. 新序列采样

序列模型:模拟了任意特定单词序列的概率

新序列采样:对上述概率分布进行采样,根据训练好的模型,生成新的单词序列/随机的句子。

绝大多数使用基于词汇的语言模型,基于字母的语言模型将得到太长的序列,消耗算力。

六、双向循环神经网络 (BRNN)

两个前向传播:一个从前往后、一个从后往前 —— 既可知道以前的信息,也可以知道未来的信息

「深度学习」循环神经网络RNN_第9张图片​​​​​​​

基本单元可以是标准 RNN 单元,也可以是 GRU​​​​​​​ 单元或 LSTM 单元

常见:带有 LSTM 单元的双向 RNN 模型

缺点:需要完整的数据序列

七、深层循环神经网络 (DRNNs)

a^{[l]}:第 l 层 t 时刻的激活值

「深度学习」循环神经网络RNN_第10张图片​​​​​​​

基本单元可以是标准 RNN 单元,也可以是 GRU​​​​​​​​​​​​​​ 单元或 LSTM 单元

你可能感兴趣的:(深度学习,深度学习,rnn,人工智能,机器学习,神经网络)