《动手学深度学习》《动手学深度学习》task4——机器翻译及相关技术;注意力机器翻译及相关技术;注意力
机制与机制与Seq2seq模型;模型;Transformer笔记笔记
系统学习《动手学深度学习》点击这里:系统学习《动手学深度学习》点击这里:
《动手学深度学习》task1_1 线性回归
《动手学深度学习》task1_2 Softmax与分类模型
《动手学深度学习》task1_3 多层感知机
《动手学深度学习》task2_1 文本预处理
《动手学深度学习》task2_2 语言模型
《动手学深度学习》task2_3 循环神经网络基础
《动手学深度学习》task3_1 过拟合、欠拟合及其解决方案
《动手学深度学习》task3_2 梯度消失、梯度爆炸
《动手学深度学习》task3_3 循环神经网络进阶
《动手学深度学习》task4_1 机器翻译
《动手学深度学习》task4_2 注意力机制和Seq2seq模型
《动手学深度学习》task4_3 Transformer
《动手学深度学习》task5_1 卷积神经网络基础
《动手学深度学习》task5_2 LeNet
《动手学深度学习》task5_3 卷积神经网络进阶
《动手学深度学习》笔记:《动手学深度学习》笔记:
《动手学深度学习》task1——线性回归、softmax与分类模型,多层感知机笔记
《动手学深度学习》task2——文本预处理,语言模型,循环神经网络基础笔记
《动手学深度学习》task3——过拟合、欠拟合及解决方案,梯度消失、梯度爆炸,循环神经网络进阶笔记
本篇目录本篇目录1 机器翻译1.1 数据预处理1.2 Seq2Seq模型的构建1.3 损失函数1.4 训练1.5 测试
1 机器翻译机器翻译
1.1 数据预处理数据预处理
读取数据,处理数据中的编码问题,并将无效的字符串删除
分词,分词的目的就是将字符串转换成单词组成的列表。目前有很多现成的分词工具可以直接使用,也可以直接按照空格进行
分词(不推荐,因为分词不是很准确)
建立词典,将单词组成的列表编程单词id组成的列表,这里会得到如下几样东西 :
去重后词典,及其中单词对应的索引列表
还可以得到给定索引找到其对应的单词的列表,以及给定单词得到对应索引的字典。
原始语料所有词对应的词典索引的列表
对数据进行padding操作。因为机器翻译模型本质上是一个固定输入长度的Seq2Sqe模型,所以我们需要设置最大的数据长
度,如果超出了设定的长度直接把后面的截断,少了的,根据需要进行不同的padding 添加
制作数据生成器,但是需要注意的是对于翻译任务的数据格式,机器翻译的输入是一段文本序列,输出也是一段文本序列。
1.2 Seq2Seq模型的构建模型的构建
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-40U1tQXu-1582114481242)
(task4.assets/1581839832138.png)]
词嵌入,一般情况下输入到编码网络中的数据不是一个one-hot向量而是经过了编码之后的向量,比如由word2vec技术,让编
码后的向量由更加丰富的含义。
Seq2Seq模型有很多种,但是整体框架都是基于先编码后解码的框架。也就是先对输入序列使用循环神经网络对他进行编
码,编码成一个向量之后,再将编码得到的向量作为一个新的解码循环神经网络的隐藏状态的输入,进行解码,一次输出一个
序列的元素,再将模型训练输出的序列元素与真实标签计算损失进行学习。
在进行编码和解码的过程中数据都是以时间步展开,也就是(Seq_len,)这种形式的数据进行处理的
对于编码与解码的循环神经网络,可以通过控制隐藏层的层数及每一层隐藏层神经元的数量来控制模型的复杂度
编码部分,RNN的用0初始化隐含状态,最后的输出主要是隐藏状态,编码RNN输出的隐含状态认为是其对应的编码向量
解码器的整体形状与编码器是一样的,只不过解码器的模型的隐藏状态是由编码器的输出的隐藏状态初始化的。
解码器在rnn层之后还加了一层dense层,目的是将每一个隐藏单元的输出,映射到字典中,得到字典中每个单词出现的得
分,然后选择出现得分最大的单词作为最终预测出的单词
编码器中主要用到的是state,它是语义编码的部分