深度学习15(GRU、LSTM+词嵌入+seq2seq+attention)
目录
GRU、LSTM
词嵌入
seq2seq
attention
GRU、LSTM
GRU和LSTM,这是两种重要的循环神经网络(RNN)变体,用于解决传统RNN中的梯度消失和长程依赖问题。
GRU:
GRU增加了两个门,一个重置门(reset gate)和一个更新门(update gate)
- 重置门决定了如何将新的输入信息与前面的记忆相结合
- 更新门定义了前面记忆保存到当前时间步的量
- 如果将重置门设置为 1,更新门设置为0,那么将再次获得标准 RNN 模型
为了解决短期记忆问题,每个递归单元能够自适应捕捉不同尺度的依赖关系
解决梯度消失的问题,在隐层输出的地方ht,ht-1的关系用加法而不是RNN当中乘法+激活函数
LSTM:
LSTM增加了三个门:遗忘门f、更新门4、输出门o
- 重置门决定了如何将新的输入信息与前面的记忆相结合
- 更新门定义了前面记忆保存到当前时间步的量
- 遗忘门决定丢弃哪些历史信息
便于记忆更长距离的时间状态。
词嵌入
定义:指把一个维数为所有词的数量的高维空间嵌入到一个维数低得多的连续向量空间中,每个单词或词组被映射为实数域上的向量。
特点:
- 能够体现出词与词之间的关系
- 能够得到相似词。
词嵌入(Word Embedding)的实现本质上是通过神经网络学习一个映射函数,将离散的高维 one-hot 向量转换为低维连续向量。
原始空间 (|V|=5) 嵌入空间 (d=2)dog → [1,0,0,0,0] --\\ cat → [0,1,0,0,0] ----- W (5×2矩阵) → dog: [0.8, -0.3]/ cat: [0.7, -0.2] apple→ [0,0,1,0,0] --/ apple: [-0.5, 0.9] banana→[0,0,0,1,0] banana: [-0.4, 0.8] car → [0,0,0,0,1] car: [0.2, 1.1]
seq2seq
seq2seq是一个Encoder-Decoder 结构的网络,它的输入是一个序列,输出也是一个序列,Encoder 中将一个可变长度的信号序列变为固定长度的向量表达,Decoder 将这个固定长度的向量变成可变长度的目标的信号序列。
相当于将RNN模型当中的s0输入encoder
编解码器作用:
-
编码器 (Encoder):将不定长输入序列 x1,…,xt 编码为固定长度的状态向量 C
-
解码器 (Decoder):基于编码状态 CC 和已生成序列 y1,…,yt−1,输出当前词 ytyt 的条件概率
目标函数:
attention
对于更长的句子,seg2seq就显得力不从心了,无法做到准确的翻译,一下是通常BLEU的分数随着句子的长度变化,可以看到句子非常长的时候,分数就很低。
本质原因:在Encoder-Decoder结构中,Encoder把所有的输入序列都编码成一个统一的语义特征C再解码,因此,C中必须包含原始序列中的所有信息,它的长度就成了限制模型性能的瓶颈。当要翻译的句子较长时,一个C可能存不下那么多信息,就会造成翻译精度的下降。
attention机制:
建立Encoder的隐层状态输出到Decoder对应输出y所需要的上下文信息。
目的:增加编码器信息输入到解码器中相同时刻的联系,其它时刻信息减弱。