美文网首页
Phrase-Based & Neural Unsupervis

Phrase-Based & Neural Unsupervis

作者: VanJordan | 来源:发表于2019-06-05 10:35 被阅读0次
  • 无监督机器翻译的三大关键
  • 仅仅只是用一个bpe的词表,这样的好处就是不用再推断用哪个语言然后用什么词表了,当然如果是同字母表的语言就更好不过了。
  • back-translation的时候不反向传播更新vu,一是为了简单二是作者说没有什么用。
  • 所有的语言是共享一个encoderdecoder的参数的,作者说encoder共享参数是非常关键的,因此相当于将所有的语言都编码到一个语义的隐空间而decoder的共享参数只是相当于一个正则化,其实不共享空间也是可以的感觉,不共享参数,然后各自训练一个对应语言的language model感觉应该会更加的合理。
  • 进行back translation 的轮次也是越多越好。
  • 数据集的来源
  • bpe的数量
  • 可以使用fastText来产生embedding,感觉是一个trick
  • 对于phrase-based数据的处理方法
  • 训练可以看到使用的是更小的transformer但是好像达到的效果是更好的,beta10.5很有趣,竟然调了这个超参数,然后是greedily search的方法进行生成,但是很好奇为啥不用beam search,可能是因为太慢了??gread search大概比beam search要低2bleu,所以说还是可以接受的,但是慢了好多,这个是不可以接受的,其实可以先用gready search寻找超参,然后使用beam search跑出最后的结果,应该是会有提高的。
  • 每次也不是训练完整的数据集合,而是采样出5million个句子进行训练。
  • 不同的调超参的方法。
  • bpe还是很有用的。

Unsupervised Machine Translation using Monolingual Corpora Only

  • EMNLP bestpaper之前的作品。
  • 所有的语言共享一个encoderdecoder,生成的时候用的是gready decodiing,每一个encoderdecoder都是三层,都是一个encoderdecoder但是能翻译回来是因为各个语言的decoder维护了一个不同的开始符号,如果输入的开始符号是<s>那么就生成英语,如果是<ss>那么就生成法语。
  • 损失函数cross domain training就是cycle-translation
  • Denoising Auto-encoding,从有噪声的数据中回复原始的数据。
  • 对抗损失,让encoder生成出来的和语言无关,感觉这一项有点鸡肋,不知是否真的有用,在另外的一篇论文中验证了确实是有用的。
  • 提出了在无监督的情况下如何衡量翻译好坏的标准。但是感觉没有过拟合的倾向,所以使劲训就行了。



  • 原来一直搞错的,原来是用于第一篇是用于双语对齐的,词向量是根据fastText的方法学到的。
  • 但是fastText貌似只使用于大的语料集,因此可以用wikipedia
  • 判别器用leaky-Relu,以及label smoothing,优化器用RMSProp,学习率0.0005encoder-decoderdiscriminator迭代更新。
  • ablation study可以看到对抗训练确实有用,然后加噪声非常有用,而且如果不pretrain且不训练一个auto-encoder那么根本就训练不起来,pretrain指的是unsupervised word alignment,就是将两个语言的词表顺序一一对应。
  • 作者解释对抗训练为什么会work是因为可以移除数据中的bias仅仅保留本质的东西
  • 在其他领域使用对抗训练的方法去除bias也能获得效果的提升。

两篇文章的对比

  • 第一个文章相当于是第二个文章的改进,改进在于第一没有加入判别encoder出来的语言是什么的对抗训练,而是直接先单独训练两个language model初始化各自的encoderdecoder,也就是说直接把denoise autoencoder放在了预训练language model时候而不是一股脑的训练,因为他的目的就是训练一个好的language model,然后是使用back-translation进行训练,等于是提供了一个无监督翻译的范式把,这样SMT也可以用了,所以说这是一个解耦合。
  • 关于language model的训练方法,还是延承之前的做法,但是最近的方法就光改了用transformer并改变了预训练的任务直接又爆提了9个点,所以说好的language model是关键,去噪自编码器只是达到这一目的的手段。
  • 现在搞不懂为啥训练LM的时候要训练一个多语的LM,感觉不同语言的LM差别还是相当大的,比如en-zh,让NN专精一件事是好的,感觉学的多了反而学不到重要的信息,尤其是生成这种不太容易过拟合的东西,而且encoder共享参数没有什么意见,但是decoder共享参数感觉不可思议,生成翻译的时候decoder的质量至关重要呀。
  • 因为encoder的参数共享所以一定要做cross lingual embedding alignment,但是如果encdoer不共享参数呢?各自训练一个语言模型?以及embedding来初始化的各自的encoderdecoder
  • 还有一个问题是如果在源语言和目标语言不均衡的情况下,比如英语的资料总是多于玛雅文的资料,应该如何改进呢?现在的UMT好像仅仅是
  • 最开始的那篇unsupervised neural machine translation的就是用的是两个decoder不共享参数,但是实验效果并不是很好,还有共用encoder的原因是为了将两种语言映射到同一个子空间中。

Unsupervised Neural Machine Translation withWeight Sharing

  • motivation很自然,和上面我的想法是一致的就是认为应该用不同的encoder,因为不同的语言有不同的语法信息,因此共享一个encoder可能扰乱训练,达不到很好的效果,但是因为要映射到同样的子空间,因此作者提出来的方法是共享encoder的高层信息,因为encoder的低层我们可以认为是语法信息然后高层就是抽象的语义信息的因此是可以共享的,但是明显感觉作者的idea是不work的然后加了很多的其他组件,通过调参让结果看得比较好看,结果是模型的复杂度很高,然后甚至用了强化学习,导致训练效率应该是令人发指的底。
  • 一个比较有意思的点是作者除过对encoder的结果进行对抗训练,还对back-translation生成的结果进行对抗训练,目的就是生成出更加逼真的数据,是用强化学习训练的但是感觉效果应该是不行的,毕竟文本生成搜索空间这么大,用一个监督信息就是生成的是真是假根本就不可能work
  • 第二阶段使用强化学习微调,三个训练目标是每次训练一个batch
  • 实验结果


  • 返回来看emnlp哪一篇的结果发现+是将,
  • 就是,PBSMT训练收敛了然后继续训练NMT
  • 可以看到共享好像没有什么用。因为ablation的话就差一点点。
    image.png

相关文章

网友评论

      本文标题:Phrase-Based & Neural Unsupervis

      本文链接:https://www.haomeiwen.com/subject/rryhxctx.html