1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 《深度学习进阶 自然语言处理》学习笔记(2)

《深度学习进阶 自然语言处理》学习笔记(2)

时间:2021-09-26 20:03:10

相关推荐

《深度学习进阶 自然语言处理》学习笔记(2)

前篇链接link

目录

第五章 RNN语言模型RNN模型模型架构一个典型RNN单元的计算图损失函数的设置评价指标 总结 第六章 Gated RNN上一章RNN存在的问题梯度爆炸与梯度消失 LSTM一个 LSTM 单元的结构记忆单元c_t的引入3个门:遗忘门、输入门、输出门计算图 LSTM的网络架构改进 总结 第七章 基于 RNN 生成文本seq2seq原理改进ReversePeeky自动图像描述 总结

第五章 RNN

前面介绍的word2vec是前馈神经网路无法很好的处理时序信息,引入RNN来解决问题

语言模型

目标:求后验概率 P( w_t | w_1, W_2, …, W_t-1 ),从而求出语言模型的联合概率

RNN模型

模型架构

输入:将时序单词序列 { w0, w1, w2, …, wt } 在空间上展开,依次输入到对应的RNN单元中(即上图等号右侧的一个个RNN框输出:对于输入单词 w_n,输出w_n 接下来出现的一个单词的概率向量

一个典型RNN单元的计算图

h_prev为前一个RNN单元输出的隐藏状态,x为当前时序下输入的单词向量,tanh为激活函数

损失函数的设置

总结——基于时序序列输出的结果序列 { x0, x1, … , xT-1 } 与正确标签{ t0, t1, … , tT-1 }的逐元素二分类交叉熵损失的求和取均值

评价指标

困惑度

总结

RNN 具有环路,可以记忆隐藏状态;

通过展开 RNN 的循环,可以将其解释为多个 RNN 单元水平方向上延伸的神经网络,可以通过基于时间的反向传播进行学习(BPTT);

在学习长时序数据时,要生成长度适中的数据块,进行以块为单位的截断 BPTT 学习(Truncated BPTT);

Truncated BPTT 只截断反向传播的连接;

在 Truncated BPTT 中,为了维持正向传播的连接,需要按顺序输入数据;

语言模型将单词序列解释为概率;

理论上,使用 RNN 层的条件语言模型可以记忆所有已出现单词的信息;

第六章 Gated RNN

上一章的 RNN 存在环路,可以记忆过去的信息,其结构非常简单,易于实现。不过这个 RNN 的效果并不好。许多情况下它都无法很好地学习到时序数据的长期依赖关系。现在,上一章的简单 RNN 经常被LSTM层所代替。实际上RNN更多的是指 LSTM 层,而不是上一章的 RNN。LSTM 增加了一种名为的结构。基于这个门,可以学习到时序数据的长期依赖关系。本章我们将指出上一章的 RNN 的问题,介绍代替它的 LSTM 等“Gated RNN”。我们将花很多时间研究 LSTM 的结构,并揭示它实现“长期记忆”的机制。此外,我们将使用 LSTM 创建语言模型,并展示它可以在实际数据上很好地学习。

上一章RNN存在的问题

梯度爆炸与梯度消失

原因: 激活函数 tanh 的值域 (-1, 1),累积运算使得梯度的传播在逐渐衰减)计算图中MatMul (矩阵乘积),矩阵的最大特征值的模(是否大于1)决定了这个矩阵的特性——累积运算中对于输入信号是放大还是衰减

LSTM

一个 LSTM 单元的结构

记忆单元c_t的引入

c_t / c_t-1:记忆单元,存储了t时刻LSTM的记忆,会在LSTM单元之间水平向右传播计算路径不包括tanh或MatMul,可以有效避免梯度爆炸或者梯度消失

3个门:遗忘门、输入门、输出门

f遗忘门,输入的 x_t 与 h_t-1 被sigmoid函数激活g:h_t-1 与 x_t向当前记忆单元添加的新信息,采用tanh函数激活i输入门,判断新添信息 g 的权重意义o输出门将当前时刻的记忆单元 c_t 与通过输出门的 h_t-1 , x_t 加权求和得到隐藏状态 h_t

tanh函数值域(-1,1),用于编码信息的强弱幅度sigmoid函数值域(0,1),用于控制输出数据的比例

通常,门使用sigmoid,包含实际数据的信息使用tanh。

计算图

LSTM的网络架构

上图所示的是一个由两层LSTM层构成的RNNLM

改进

设置多个LSTM层可以通过在层与层之间添加Dropout抑制过拟合可以对上图的Embedding层和Affine层使用权值共享减少参数,抑制过拟合

最终如下图:

总结

在简单 RNN 的学习中,存在梯度消失和梯度爆炸问题;

梯度裁剪对解决梯度爆炸有效,LSTM、GRU 等 Gated RNN 对解决梯度消失有效;

LSTM 中有 3 个门:输入门、遗忘门和输出门 ;

门有专门的权重,并使用 sigmoid 函数输出 0.0 ~ 1.0 的实数;

LSTM 的多层化、Dropout 和权重共享等技巧可以有效改进语言模型;

RNN 的正则化很重要,人们提出了各种基于 Dropout 的方法;

第七章 基于 RNN 生成文本

本章会介绍一种结构名为seq2seq的新神经网络。seq2seq 是 “(from) sequence to sequence”(从时序到时序)的意思,即将一个时序数据转换为另一个时序数据。

通过组合两个 RNN,可以轻松实现 seq2seq。seq2seq 可以应用于多个应用,比如机器翻译、聊天机器人和邮件自动回复等。

seq2seq

原理

Encoder-Decoder模型

Encoder示例:

下图是对日语“我是一只猫”的编码,输出为最终的隐藏状态h

Decoder示例:

下图是解码器对上图输出的h进行英文解码,解码器区别于译码器:LSTM层会得到一个由解码器输入的初始h解码器第一个LSTM单元固定输入作为起始标识符重复步骤:每个LSTM单元输出的概率分布中最大值代表的单词作为下一个LSTM的输入

改进

Reverse

reverse输入的序列(似乎可以使梯度传播更平滑,玄学)

Peeky

将编码器得到的h依次与解码器输入的单词进行concat,从而输入到所有LSTM单元中将编码器得到的h依次与每个LSTM输出的隐藏状态进行concat,从而输入到所有Affine单元中

自动图像描述

对输入的图像,生成语言描述采用seq2seq结构,编码器是CNN,一维化CNN输出的特征图并输入到LSTM解码器中

总结

基于 RNN 的语言模型可以生成新的文本;

在进行文本生成时,重复【输入一个单词(字符),基于模型的输出 (概率分布)进行采样】这一过程;

通过组合两个 RNN,可以将一个时序数据转换为另一个时序数据(seq2seq);

在 seq2seq 中,编码器对输入语句进行编码,解码器接收并解码这个编码信息,获得目标输出语句;

反转输入语句(Reverse)和将编码信息分配给解码器的多个层(Peeky)可以有效提高 seq2seq 的精度;

seq2seq 可以用在机器翻译、聊天机器人和自动图像描述等各种各样的应用中;

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。