abstract

token vocabulary的选择对机器翻译结果的影响比较大
本文研究什么样才是好的词表,并且能不能不通过训练直接找到最优的词表
首先提供一种从信息理论的角度来分析词表的作用
通过optimal transport的思路来找到最佳token词典,并且有一个合适的词表大小,不用训练
降低70%的词表大小,取得0.5bleu提升
相对于BPE-search,搜索时间从384gpu->30gpu,这个的意思有些没看懂,是指vocabularies的时间。
背景:
当所有样本等几率出现的情况下,熵达到最大值(所有可能的事件等概率时不确定性最高)
对于样本等几率分布而言,样本数越大,熵值越大(可能的事件越多,不确定性越高)

1. intoduction

  1. 用更小的词表来压缩数据,减少熵,可以使语料更容易训练和预测,降低过拟合的风险。
  2. byte-pair encoding BPE:就是选择最高频的sub-words或者sub-word pieces来做的。
  3. 因为词表大小也会影响下游任务的表现,如何选择合适的大小呢,只考虑频率也是不妥的,通过实验来做,需要一个一个来做,比较繁琐,导致大家现在都是只选择30k-40k左右。
  4. 一般来说减低熵和词表大小是矛盾的,词表越大,熵约大。
  5. 根据语料的熵和词表大小,选择合适的词表,并且可以再polynomial时间内解决。
  6. muv作为评价指标,muv=熵在词表大小上的微分=diff(熵)/m,m为词表大小的diff。
  7. muv和下游任务的表现基本上是正相关的,所以优化muv就是优化下游任务了?所以可以直接算出muv最大值,拿到最佳词表大小,就可以拿到一个比较好的下游表现了?
  8. 通过找到最大的muv来找到词表,并且将其转化成optimal transport problem来做,相当于是从字符的分布到词表的分布中找到最佳转移矩阵optimal transport matrix,最终是通过这个矩阵来产生词表。

2. related work

  1. 字级别的词典有大小限制,会遇到oov
  2. 有基于char的,BPE等优化方法,拿到subword-level级别的词表,例如happy可能和happier比较相似,在char-lvel,并且在小的粒度上就没有oov了,还有sentencepiece方法等
  3. 一般大家只注意到频率,没有注意到词表大小,并且确定词表是一个很耗资源的工作

3. MUV是啥

  1. muv定义了增加词表大小带来的收益。
  2. 通过实验证明了muv和bleu的关系,验证了用muv来衡量的正确性。

4 Maximizing MUV via Optimal Transport

4.1 idea

  1. 词表是离散的,找最佳muv的搜索空间太大。
  2. 简化:从固定大小的词表中找到最佳muv,固定的步长还是固定的大小?
    S:递增整数数列
    t:timestep,代表diff t
    总结:
    固定t,找到最佳muv(找到最大熵的词表)
    枚举所有t
  • 词表到转移矩阵

不同的转移矩阵有不同的转移cost,目标是找到最小的cost,例如负的熵等。

4.2 optimal transport solution

  • 给定词表,要找到最大熵,公式可转化为:

  • 合并,减少token太大带来的计算量问题

  • 计算转移矩阵的每一行的和和每一列的和干啥?

  • 非平衡交叉熵的正则最优化转移问题?

  • 可以用Sinkhorn算法解决,每个时间t,产生一个新的词表,根据转移矩阵p计算交叉熵分数,根据熵挑选词表,输出词表。

4.3 implementation

  1. 根据频率将所有token排序,用的是BPE方法生成的token,例如利用BPE-100K作为候选,其他的也可以,基本可以带来类似的结果。
  2. 用他们的概率初始化L
  3. 每个timestep,根据当前的词表及其转移矩阵计算最大的熵。
  4. 枚举t,选择合适的词表。
  5. 有词表后,使用贪心算法去对句子进行编码。
    • 将句子分裂到char粒度的token
    • 和并consecutive tokens到一个,如果他在词表中
    • oov token会被分到更细的粒度

5. experience

  1. 就用VOLT来选词表,效果居然就好了

  2. 对于低资源的数据集,BPE-1k通过很多实验拿到词表,VOLT通过一次实验,0.5CPU hours,30GPU hours就找到了最优的词表。

  3. VOLT是一个绿色的词表化解决方案,通过比较BPE-search:一种从BPE生成的词表中,根据BLEU分数选择最优词表的方法,来证明,VOLT在一个cpu花费少量时间就能算出来0.5h,BPE-search在需要在GPU上花费上百小时。

5.3 讨论

  1. VOLT生成的词表能达到SOTA结果。
  2. 领先sentencePiece和wordPiece方法非常多,这两个是分到细粒度词的一种分词方法。
  3. 各种架构都适应,transformer-big结构,seq2seq结构都适应。
  4. VOLT能在训练阶段带来加速,主要因为降低embedding参数的大小,对于softmax计算,因为在gpu中已经并行计算了,提升不大。
  5. VOLT和BPE词表高度重叠,相当于直接可以拿到BPE的结果?

6. 结论

不用训练,直接可能产生词表搜索的方法,利用信息论理论,通过两步优化,离散化目标函数和最优化转移方案来实现。实验表明效果非常有效。

  1. 构造目标函数
  2. optimal transport solution解目标函数极值的方法。

Vocabulary Learning via Optimal Transport for Neural Machine Translation论文解读相关推荐

  1. Bi-SimCut: A Simple Strategy for Boosting Neural Machine Translation 论文笔记

    目录 一.摘要 二.Token Cutoff介绍.公式 2-1.背景介绍 2-2.Cutoff介绍.架构示意图.公式详解 三.Bi-SimCut介绍.公式 3-0.Bi-SimCut完整概要 3-1. ...

  2. 阅读笔记|Ensemble Learning for Multi-Source Neural Machine Translation

    原文链接: Ensemble Learning for Multi-Source Neural Machine Translation Abstract 本文描述和评价了神经机器翻译(NMT)中进行集 ...

  3. nlp论文-《Neural Machine Translation by Jointly Learning to Align and Translate》-基于联合学习对齐和翻译的神经机器翻译(一)

    <Neural Machine Translation by Jointly Learning to Align and Translate>--基于联合学习对齐和翻译的神经机器翻译 作者 ...

  4. 《Reducing Word Omission Errors in Neural Machine Translation:A Contrastive Learning Approach》论文阅读笔记

    Reducing Word Omission Errors in Neural Machine Translation:A Contrastive Learning Approach 基本信息 研究目 ...

  5. neural machine translation by jointly learning to align and translate

    1.论文出处 Dzmitry Bahdanau, KyungHyun Cho, Yoshua Bengio, "neural machine translation by jointly l ...

  6. 【论文泛读】4. 机器翻译:Neural Machine Translation by Jointly Learning to Align and Translate

    更新进度:■■■■■■■■■■■■■■■■■■■■■■■|100% 理论上一周更一个经典论文 刚刚开始学习,写的不好,有错误麻烦大家留言给我啦 这位博主的笔记短小精炼,爱了爱了:点击跳转 目录 准备 ...

  7. 《Neural Machine Translation by Jointly Learning to Align and Translate》阅读笔记

    个人总结 本文最大贡献是提出了注意力机制,相比于之前 NMT(Neural Machine Translation) 把整个句子压缩成一个固定向量表示的方法,对不同位置的目标单词计算每个输入的不同权重 ...

  8. [论文阅读]Neural Machine Translation By Jointly Learning to Align and Translate

    文章目录 前言 摘要 一.神经机器翻译 1.机器翻译 2.基于RNN的Encoder-Decoder架构 二.文章贡献 三.模型架构 1.译码器:整体概述 2.编码器:用于注释序列的双向RNN 四.实 ...

  9. 论文阅读笔记:Frequency-Aware Contrastive Learning for Neural Machine Translation

    论文链接:https://arxiv.org/abs/2112.14484 author={Zhang, Tong and Ye, Wei and Yang, Baosong and Zhang, L ...

最新文章

  1. Microsoft Expression Blend 2 密钥,key
  2. 初学者学python好还是c-学Python还是学C?
  3. Android开发之蓝牙--扫描已经配对的蓝牙设备
  4. MaxScript 扇子打开
  5. Robotium导入被测源码遇到问题 had used a different Landroid/support/v4/view/ViewPager
  6. 运营商缺的是应用还是想法--广州晨皓
  7. Java方法调用和参数传递
  8. csdn中下载资源入口查找
  9. 国家标准《文后参考文献著录规则》(GB7714-87)
  10. word2016 插入书签域
  11. 使用Git初始化已有的项目
  12. python爬取企业电话_Python爬取天眼查企业数据
  13. Eclipse中Outline里各种图标的含义
  14. 如何开发微信小程序?微信小程序有哪些特点?
  15. Day14【元宇宙的实践构想03】—— 元宇宙的资产观(NFT、数字资产、虚拟地产、与现实世界资产关系)
  16. 红绿灯pipeline探索
  17. 在腾讯云服务器Linux系统中安装MySQL【完美解决】
  18. 变频器的工作原理及其电路分析
  19. 玩转软件|WinRAR压缩软件,去除advert教程
  20. 这12个最新AI开源项目,你一定要收下

热门文章

  1. 【软件工程】-- 期末考试题含答案(二)(考前必看、看完不挂科)
  2. ESP32-pico-kit 串口通信 与 蓝牙串口
  3. 计算机网络基础知识(笔记)
  4. SQL中的left outer join,inner join,right outer join用法详解
  5. 利用tftpd32在Linux与Windows7之间传输文件
  6. ODrive应用 #1 ODrive入门指南
  7. 我是在校大学生(计算机专业)需要提前报考阿里云ACP证书吗?大家对此有什么看法?
  8. 27岁了,老大不小了,转载一篇文章作年度回顾
  9. 摄像头捕获视频流软件AMCAP使用教程(视频采集捕获处理媒体制作微型软件)
  10. 手机电脑文件怎样同步?