赞
踩
(1)基于序列到序列(Seq2Seq)学习框架,设计并训练一个中英文机器翻译模型,完成中译英和英译中翻译任务。具体模型选择可以参考如LSTM,GRU,Transformer等,但不做限制;
(2)实验数据集为WMT18新闻评论数据集News Commentary v13,整个语料库分训练集(约252,700条)、验证集和测试集(分别约2,000条)三部分,每部分包含中英文平行语料两个文件,全部语料已预分词处理;
(3)根据指定的评价指标和测试集数据评价模型性能。
由于网络上有很多关于seq2seq的详细知识这里只是简单介绍,不是本实验的重点部分
seq2seq 是一个 Encoder–Decoder 结构的网络,它的输入是一个序列,输出也是一个序列, Encoder 中将一个可变长度的信号序列变为固定长度的向量表达,Decoder 将这个固定长度的向量变成可变长度的目标的信号序列。
这个结构最重要的地方在于输入序列和输出序列的长度是可变的,可以用于翻译,聊天机器人,句法分析,文本摘要等。
(其中的 RNNCell 可以用 RNN ,GRU,LSTM 等结构)
Encoder
Encoder 部分是一个RNNCell(RNN ,GRU,LSTM 等)结构
每个 timestep, 我们向 Encoder 中输入一个字/词,直到我们输入这个句子的最后一个字/词。然后输出整个句子的语义向量 c
每个时刻输入一个词,隐藏层状态根据公式改变。其中激活函数f可以是sigmod,tanh,ReLU,sotfplus,LSTM等。
读完序列的每一个词之后,会得到一个固定长度向量
Decoder
Decoder 根据 Encoder 得到的句向量c,一分析得出信息
本次实验我们使用的是双层的LSTM模型,所以下面简介一下LSTM
长短期记忆(Long short-term memory, LSTM)是一种特殊的RNN,主要是为了解决长序列训练过程中的梯度消失和梯度爆炸问题。简单来说,就是相比普通的RNN,LSTM能够在更长的序列中有更好的表现。
相比RNN只有一个传递状态 ,LSTM有两个传输状态,一个 (cell state),和一个 (hidden state)。(Tips:RNN中的 对于LSTM中的 )
统计单词出现频率
根据单词出现频率构造字典
字典构造结果
实现词汇映射到数字的过程
数据处理结果
Step3.1:init初始化
Step3.2:encoder
Step3.3:decoder
解码器,输出outputs为每一步顶层LSTM的输出
Step3.4:优化部分
梯度下降优化
tf.train.GradientDescentOptimizer
获取单词ID
根据中文词汇表获取中文ID,计算bleu值
计算perplexity值
训练平台:google drive
训练数据:20000train集合
总共训练了10000步
英译中bleu大小仅能保持在0.2-0.3
perplexity值在700-800
英译中bleu大小为0.4-0.5
perplexity值在100-200
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。