[UIM]论文解读:subword Regularization: Multiple Subword Candidates

2023-12-07 09:04

本文主要是介绍[UIM]论文解读:subword Regularization: Multiple Subword Candidates,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • 一、完整代码
    • 二、论文解读
      • 2.1 介绍
      • 2.2 NMT
      • 2.3 Unigram language model
      • 2.4 subword 抽样
      • 2.5 效果
    • 三、整体总结

论文:Subword Regularization: Improving Neural Network Translation Models with Multiple Subword Candidates
作者:Taku Kudo
时间:2018

一、完整代码

这里我们使用python代码进行实现

# 完整代码在这里
有时间再来写;

二、论文解读

2.1 介绍

根据论文标题,subword regularization,类似于其他的regularization,其目的是为了增强结果的robust,这里的目标是利用多种分割方式产生的结果来改善NMT的效果;

subwords是一个解决NMT中的oov问题有效的方法,但是其在切词的时候会出现一个问题,就是说单个词可能被切割成多种形式,这给切割带来了模糊性,这里论文考虑能否利用切割的模糊性作为噪声来增强结果的鲁棒性;

论文中利用概率抽样的方式对多种分割方式进行抽取数据来进行训练;

BPE segmentation gives a good balance between the vocabulary size and the decoding efficiency, and also sidesteps the need for a special treatment of unknown words.

BPE能够很好的平衡词表大小和模型转化效率,但是其弊端在于同一个词可能有多种的分割方式;如图所示:

同一个词的多种分词方式可能会造成语意不明确,但是我们可以利用这个弊端,把其看作噪声进行训练;实验证明这种处理方式可以得到显著的改进;

2.2 NMT

NMT其本质是一个语言模型,给定一个序列 x = ( x 1 , x 2 , … , x 3 ) x=(x_1,x_2,\dots,x_3) x=(x1,x2,,x3), y = ( y 1 , y 2 , … , y 3 ) y=(y_1,y_2,\dots,y_3) y=(y1,y2,,y3),语言模型就是使

概率达到最大,本质使用的是最大似然估计MLE,在给定语料 D = { < X ( s ) > , < Y ( s ) > } s = 1 ∣ D ∣ D=\{<X^{(s)}>,<Y^{(s)}>\}_{s=1}^{|D|} D={<X(s)>,<Y(s)>}s=1D时,对总体,其Loss,就可以对 p p p,求log得到:

但是由于在分词的时候 x x x y y y可能会被分为多个subwords,所以这里我们可以把模型修改为

其中 P ( x ∣ X ) P(x|X) P(xX) P ( y ∣ Y ) P(y|Y) P(yY) x x x y y y的分割概率,这个稍后会讲解是如何计算的;

由于分词数量相对于句子的长度呈现指数型增长,所以我们不可能把所有的分词都计算出来,我们只使用一部分,比如都只使用 k k k个分词结果,得到最后的公式为:

在decoding阶段,由于我们只有一个 x x x的分割序列,我们选出概率最大的 x x x作为best decoding,或者我们选出前几个概率最大的 x x x作为best decoding,后一种由于有不同的分割 x i x_i xi,会产生不同的 y i y_i yi,所以我们需要选择一个好的 y i y_i yi来做最终的 y y y;这里论文给了一个评分公式:

这里 ∣ y ∣ |y| y是指 y y y的subwords的个数; λ \lambda λ是其惩罚参数;

2.3 Unigram language model

BPE分割方式是在NMT任务中运用较为广泛的一种方式,该方法可以有效平衡词表大小和模型转化效率,同一个词可能有多种的分割方式,这是我们需要利用的点,但是如何给出每种分割方式的概率很困难;

为了解决这个问题,这里提出了一个新的分割方法,利用Unigram language model去计算每个分割的subwords的分割概率;

首先定义 P ( x ) P(x) P(x)

这里要满足上述条件,最简单的方式就是统计一段文本中subword出现的次数,然后用次数除以总次数得到 P ( x i ) P(x_i) P(xi)

这里再定义 S ( x ) S(x) S(x) x x x的所有分割序列;

因为文本越长,subword就呈现指数型增长,这里并不好直接计算,但是可以利用Viterbi算法快速求到;

在给定词表vocabulary的情况下,我们接着定义:

通过EM估计最大化似然函数 L L L,再结合上面 P ( x ) P(x) P(x)的定义等式条件,我们可以估计出每一个 P ( x i ) P(x_i) P(xi)

Unigram language model的步骤如下所示:

  1. 先从训练语料中建立一个种子词表,最自然的方式便是结合所处出现的字符以及最常见的字符串,由于UIM是从大表到小表,所以说初始表要尽可能的大才行;这里使用the Enhanced Suffix Array 算法,可以在O (T)时间和O(20T)空间中枚举频繁的子字符串,这里T是语料库的大小;然后选择出现次数排在前面的字符串便可;要值得注意的是,必须要包括所有的单个字符;
  2. 重复这一步直到vocabulary的大小符合预期;首先在词表给定的情况下,通过EM估计每一个 P ( x i ) P(x_i) P(xi),然后计算在vocabulary中删除了 x i x_i xi后似然函数 L L L的变化 l o s s i loss_i lossi,把 l o s s i loss_i lossi从大到小排列,选择排在前面的 η \eta η%的 x i x_i xi构建新的词表;在这里必须要保证单个字符在词表内;

这样UIM的步骤就完成了!

最终的词汇表vocabulary包含了语料库中的所有单个字符,语言模型的分词可以看作是charwordsubword的概率混合;

2.4 subword 抽样

如上文介绍,抽样我们是从 P ( x ∣ X ) P(x|X) P(xX)分布中抽取,首先抽取 l − b e s t l-best lbest分割,这是我们主要考虑的分割;

P ( x ∣ X ) P(x|X) P(xX)分布如下,做了一些平滑处理,其中 α \alpha α是平滑因子:

l l l趋近于无穷的时候,即充分考虑所有的分割,单个计算是不显示的,这里可以使用FFBS算法进行优化;

2.5 效果

效果如图所示,有一点点提升:

三、整体总结

noise regularization技术在神经网络中比较常见;

seq2seq中添加噪声:

  • 通过改变句子顺序添加噪声 DAEs(Lample et al., 2017; Artetxe et al., 2017)
  • 用word embeding的平均来表示word sequence,在平均之前,随机删除某些单词 Word dropout (Iyyer et al., 2015)
  • 随机改变wordcharacter的顺序(Belinkov and Bisk, 2017)(Xie et al., 2017)

subword regularization背后的基本思想和动机与之前的工作相似。为了提高robust,通过随机改变句子的内部表示方式,向输入的句子注入噪声。然而,以往的方法往往依赖于启发式方法来产生合成噪声,这些噪声并不总是反映训练和推理时的真实噪声;此外,这些方法只能应用于源句(编码器),因为它们不可逆地重写了句子的表面。另一方面,subword regularization是用底层语言模型生成合成的子词序列,以更好地模拟噪声和分割错误。由于subword regularization是基于可逆转换的,我们可以安全地将其应用于源句和目标句。

这篇关于[UIM]论文解读:subword Regularization: Multiple Subword Candidates的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/465285

相关文章

AI hospital 论文Idea

一、Benchmarking Large Language Models on Communicative Medical Coaching: A Dataset and a Novel System论文地址含代码 大多数现有模型和工具主要迎合以患者为中心的服务。这项工作深入探讨了LLMs在提高医疗专业人员的沟通能力。目标是构建一个模拟实践环境,人类医生(即医学学习者)可以在其中与患者代理进行医学

MCU7.keil中build产生的hex文件解读

1.hex文件大致解读 闲来无事,查看了MCU6.用keil新建项目的hex文件 用FlexHex打开 给我的第一印象是:经过软件的解释之后,发现这些数据排列地十分整齐 :02000F0080FE71:03000000020003F8:0C000300787FE4F6D8FD75810702000F3D:00000001FF 把解释后的数据当作十六进制来观察 1.每一行数据

Java ArrayList扩容机制 (源码解读)

结论:初始长度为10,若所需长度小于1.5倍原长度,则按照1.5倍扩容。若不够用则按照所需长度扩容。 一. 明确类内部重要变量含义         1:数组默认长度         2:这是一个共享的空数组实例,用于明确创建长度为0时的ArrayList ,比如通过 new ArrayList<>(0),ArrayList 内部的数组 elementData 会指向这个 EMPTY_EL

论文翻译:arxiv-2024 Benchmark Data Contamination of Large Language Models: A Survey

Benchmark Data Contamination of Large Language Models: A Survey https://arxiv.org/abs/2406.04244 大规模语言模型的基准数据污染:一项综述 文章目录 大规模语言模型的基准数据污染:一项综述摘要1 引言 摘要 大规模语言模型(LLMs),如GPT-4、Claude-3和Gemini的快

论文阅读笔记: Segment Anything

文章目录 Segment Anything摘要引言任务模型数据引擎数据集负责任的人工智能 Segment Anything Model图像编码器提示编码器mask解码器解决歧义损失和训练 Segment Anything 论文地址: https://arxiv.org/abs/2304.02643 代码地址:https://github.com/facebookresear

Spring 源码解读:自定义实现Bean定义的注册与解析

引言 在Spring框架中,Bean的注册与解析是整个依赖注入流程的核心步骤。通过Bean定义,Spring容器知道如何创建、配置和管理每个Bean实例。本篇文章将通过实现一个简化版的Bean定义注册与解析机制,帮助你理解Spring框架背后的设计逻辑。我们还将对比Spring中的BeanDefinition和BeanDefinitionRegistry,以全面掌握Bean注册和解析的核心原理。

GPT系列之:GPT-1,GPT-2,GPT-3详细解读

一、GPT1 论文:Improving Language Understanding by Generative Pre-Training 链接:https://cdn.openai.com/research-covers/languageunsupervised/language_understanding_paper.pdf 启发点:生成loss和微调loss同时作用,让下游任务来适应预训

论文翻译:ICLR-2024 PROVING TEST SET CONTAMINATION IN BLACK BOX LANGUAGE MODELS

PROVING TEST SET CONTAMINATION IN BLACK BOX LANGUAGE MODELS https://openreview.net/forum?id=KS8mIvetg2 验证测试集污染在黑盒语言模型中 文章目录 验证测试集污染在黑盒语言模型中摘要1 引言 摘要 大型语言模型是在大量互联网数据上训练的,这引发了人们的担忧和猜测,即它们可能已

OmniGlue论文详解(特征匹配)

OmniGlue论文详解(特征匹配) 摘要1. 引言2. 相关工作2.1. 广义局部特征匹配2.2. 稀疏可学习匹配2.3. 半稠密可学习匹配2.4. 与其他图像表示匹配 3. OmniGlue3.1. 模型概述3.2. OmniGlue 细节3.2.1. 特征提取3.2.2. 利用DINOv2构建图形。3.2.3. 信息传播与新的指导3.2.4. 匹配层和损失函数3.2.5. 与Super

BERT 论文逐段精读【论文精读】

BERT: 近 3 年 NLP 最火 CV: 大数据集上的训练好的 NN 模型,提升 CV 任务的性能 —— ImageNet 的 CNN 模型 NLP: BERT 简化了 NLP 任务的训练,提升了 NLP 任务的性能 BERT 如何站在巨人的肩膀上的?使用了哪些 NLP 已有的技术和思想?哪些是 BERT 的创新? 1标题 + 作者 BERT: Pre-trainin