Tensorflow 机器翻译NMT笔记 1 快速上手
2017-09-03 21:17
633 查看
开始
首先,这篇博客基本基于:https://github.com/tensorflow/nmt/ 的内容来的,作为个人学习的笔记,也当做一个博客内容分享。顺序和Github上的顺序有一些区别,注意咯首先,这里讲的是一个基于Seq2Seq实现的机器翻译系统,即Neural Machine Translation,具体的论文可以参考(Sutskever et al., 2014, Cho et al., 2014)。具体关于Seq2Seq是什么,以及Encoder-Decoder是什么,我就不再详细赘述了,有兴趣的可以看看我博客里之前的内容,都有。
在Readme里面,对于这个项目来说,具有轻量化、高质量、集成了一些Google NMT的技巧以及具备实际使用能力等几个特性,也就是说非常具有参考学习的意义。
这个项目更好的一个地方在于,提供了两类不同的语料供我们测试,一大一小,如果大家没有GPU或者只是单纯想学习一下,那么那个小规模的语料就很贴心了。
Small-scale: English-Vietnamese parallel corpus of TED talks (133K sentence pairs) provided by the IWSLT Evaluation Campaign.
Large-scale: German-English parallel corpus (4.5M sentence pairs) provided by the WMT Evaluation Campaign.
NMT
传统的phrase-based机器翻译是将源语句按照一定的规则,分解成不同的phrase,然后在逐个翻译,造成翻译结果不流畅,并且系统复杂性太差。而在NMT当中,则是应用了这样一个Encoder-Decoder的模型,原始的Encoder-Decoder当中,Encoder将源语句按顺序读入,然后归纳成为一个蕴含了逐个语句所有信息的上下文向量Context,然后Decoder通过这个Context可以生成一个新的语句,并且是另一种语言的语句,从而完成了翻译。这样一个模型,除了做NMT以外,也可以做对话、语音识别、文字归纳等任务。
当然在实际使用中,不可能使用上面所说的那么简单的Encoder-Decoder。具体的一些经典的改进和细节可以有:
1. Attention:Attention绝对是Encoder-Decoder的标配,有了Attention,Decoder不再使用一个固定的Context,而是动态的计算当前状态的Context,效果改进明显。
2. 一般Encoder和Decoder都使用RNN网络,当然也不可能是原始的RNN,一般都是LSTM或者GRU,主要用于解决长期依赖问题,通俗一点就是原始的RNN不适合处理太长的序列,需要LSTM GRU等加强版的RNN来解决。
3. RNN可以是单向的,也可以是双向的RNN,一般Encoder部分都是用双向的RNN,似乎Decoder部分双向不太合适?(待求证)
4. RNN可以多层堆叠,这个我也写过,需要的可以自行看下。
代码初步运行
在写记录的这个时间,这个实例代码提供的是Tensorflow 1.2版本的,要是遇到什么问题的话,记得更新改进下版本。基本的机器环境:
Python 2.7,Tensorflow(GPU or CPU 版都可以) 1.2.1,Ubuntu 64bit
按照官方的教程:克隆代码,下载数据集,运行Demo,这个三个步骤来完成一个最简单的初步上手
# 从github克隆代码到本地 git clone https://github.com/tensorflow/nmt/ # 使用自带的脚本下载一个简单的数据集 cd nmt nmt/scripts/download_iwslt15.sh /tmp/nmt_data # 运行代码 mkdir /tmp/nmt_model python -m nmt.nmt \ --src=vi --tgt=en \ --vocab_prefix=/tmp/nmt_data/vocab \ --train_prefix=/tmp/nmt_data/train \ --dev_prefix=/tmp/nmt_data/tst2012 \ --test_prefix=/tmp/nmt_data/tst2013 \ --out_dir=/tmp/nmt_model \ --num_train_steps=12000 \ --steps_per_stats=100 \ --num_layers=2 \ --num_units=128 \ --dropout=0.2 \ --metrics=bleu
如果不出意外的话,那么就可以运行结束,与此同时,可以使用Tensorboard来观察训练的各项指标
tensorboard --port 6222 --logdir /tmp/nmt_model/
确定了自己程序没有问题后,就开始聊聊和分析下这个项目吧,请期待第二篇
相关文章推荐
- iOS开发笔记--Masonry介绍与使用实践:快速上手Autolayout
- [置顶] Qt Quick学习笔记之Qt开发环境快速上手
- oracle快速上手笔记
- 【懒懒的Tensorflow学习笔记一之快速入门】
- Nunit2.5.10快速上手(笔记)
- Nutch 笔记(一):Nutch 快速上手指南(收藏)
- gRPC官方快速上手学习笔记(c#版)
- Struts学习笔记之快速上手
- 谷歌神经网络机器翻译NMT:人人可利用TensorFlow快速建立翻译模型
- NodeJS学习系列课程笔记(NodeJs 快速上手+用法示例)
- CloudFoundry 快速上手笔记
- 【学习笔记】AS3快速上手笔记
- gRPC官方快速上手学习笔记(c#版)
- Tensorflow 10分钟快速上手
- 读《Python编程快速上手 让繁琐工作自动化》笔记
- 神经网络体系搭建(四)——快速上手TensorFlow
- 【C】【笔记】《C和指针》 第一章 快速上手 第二章 基本概念 第三章 数据 第四章 语句 第五章 操作符和表达式
- TensorFlow.org教程笔记(一)Tensorflow初上手
- CMake快速上手笔记
- 快速上手|TensorFlow从入门到实战资料汇总