NLP——Translation 机器翻译

news2024/11/27 0:32:44

文章目录

  • 为什么翻译任务困难
  • Statistical Machine Translation
    • Alignment 对齐
    • summary
  • Neural Machine Translation
    • 如何训练 Neural MT
      • loss 设定
      • Training
      • decoding at Test Time
      • Exposure Bias
      • Exhaustive Search Decoding
      • Beam Search Decoding
      • 什么时候解码停止
      • summary
  • Attention Mechanism
    • attention
      • attention summary
  • Evaluation

为什么翻译任务困难

在这里插入图片描述
在这里插入图片描述

Statistical Machine Translation

在这里插入图片描述
基于统计的机器翻译任务通常通过翻译模型(Translation Model)和语言模型(Language Model)的结合来学习更强大的翻译模型。这种结合被称为统计机器翻译(SMT)。

  • 翻译模型(Translation Model):翻译模型主要关注如何将源语言句子翻译成目标语言句子。它使用双语语料库进行训练,学习源语言和目标语言之间的翻译概率。基于短语的翻译模型是SMT中常用的模型之一,它将源语言和目标语言的句子划分为短语,并建立短语对之间的翻译概率。基于句法的翻译模型则利用语法结构信息来进行翻译。

  • 语言模型(Language Model):语言模型主要关注目标语言句子的流畅性和合理性。它利用目标语言的单语语料库,学习目标语言中句子的概率分布。语言模型可以帮助翻译模型选择更合理的翻译候选,提高翻译的质量。

在SMT中,翻译模型和语言模型的结合通过联合概率来进行建模。给定一个源语言句子,翻译模型计算源语言句子到目标语言句子的翻译概率,语言模型计算目标语言句子的概率,然后将两者结合起来,得到最终的翻译结果。 通常使用最大似然估计或最大后验概率估计来训练这些模型参数。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 那么如何从 corpora 中学习 P ( f ∣ e ) P(f|e) P(fe) 呢?
    在这里插入图片描述
    • 这些给定的 sentence pair 并没有进行对齐

Alignment 对齐

在这里插入图片描述

  • 并行语料库(Parallel Corpora):并行语料库是指在源语言和目标语言之间具有对应关系的句子或短语集合。这种语料库通常是由人工翻译或对齐得到的,是进行机器翻译的理想数据。通过使用已有的并行语料库,可以直接将源语言和目标语言之间的句子或短语进行对齐。

  • 基于词对齐(Word Alignment):基于词对齐的方法尝试将源语言和目标语言中的单词进行对应,以实现句子或短语的对齐。常见的词对齐算法包括IBM模型和统计短语对齐模型。这些模型使用统计方法来学习源语言和目标语言之间的单词对齐概率,从而实现对齐。

  • 基于短语对齐(Phrase Alignment):基于短语对齐的方法将源语言和目标语言的短语进行对应,以实现句子或段落级别的对齐。常见的基于短语对齐的方法包括IBM模型和统计短语对齐模型。这些模型基于统计和概率模型,利用双语语料库来学习源语言和目标语言之间的短语对齐概率。

  • 基于句法对齐(Syntax-based Alignment):基于句法对齐的方法尝试利用源语言和目标语言之间的句法结构进行对齐。这种方法通常使用句法分析工具来分析源语言和目标语言的句法结构,并基于句法结构之间的对应关系来进行对齐。

  • 基于神经网络的对齐方法:近年来,随着神经网络的发展,基于神经网络的方法在对齐任务中取得了一些进展。这些方法使用神经网络模型来学习源语言和目标语言之间的对应关系,可以使用注意力机制或编码器-解码器模型来实现对齐。

在对齐的时候可能出现下述情况:
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

summary

在这里插入图片描述

Neural Machine Translation

在这里插入图片描述
编码器-解码器结构: 基于神经网络的翻译模型通常采用编码器-解码器结构。编码器负责将源语言句子编码为一个固定长度的向量(语义表示),解码器则使用该向量生成目标语言的翻译结果。 编码器和解码器通常使用循环神经网络(RNN)或Transformer等模型来建模上下文和序列信息。

在这里插入图片描述

  • 首先使用一个 encoder 将信息编码成一个 hidden vector 你可以认为这个 vector 包含了原句子的所有语义信息

  • 构建一个 decoder 网络对这个 hidden vector 进行解码
    在这里插入图片描述

  • 负责进行 decoder 的模型可以被称为 conditional language model

  • 条件语言模型(Conditional Language Model)是一种语言模型的变体,它在生成文本时不仅仅考虑上下文,还考虑一个给定的条件。

  • 传统的语言模型(如n-gram模型)是基于给定前面的 n-1个词来预测下一个词的概率分布。而条件语言模型引入了额外的条件信息,使得生成的文本能够与条件相关。条件可以是多样的,例如上下文句子、特定的主题或指定的输入。

    在这里插入图片描述

如何训练 Neural MT

在这里插入图片描述

  • 依然需要平行的数据集
  • 按照训练语言模型的方式来训练

loss 设定

  • 在解码的时候,我们可以根据每个时间步的输出与 label 之间的差距来计算每一步的损失,然后得到 decoder 端的总损失
    在这里插入图片描述

Training

在这里插入图片描述

  • 训练的过程非常简单,因为我们有 target sentence,按部就班执行即可

decoding at Test Time

  • 但是在进行 evaluation 的时候,由于没有 target sentence,所以情况有些复杂
    在这里插入图片描述
  • 因此在预测的时候,我们只能按照更高的概率值来确定每一个时间步的输出
    在这里插入图片描述
  • 这种贪婪的算法会导致一个问题 exposure bias

Exposure Bias

自我评估偏差(Exposure Bias):训练过程中,神经网络模型是通过自回归方式生成目标语言句子的,即每个时间步都使用了前面生成的词作为输入。 然而,在评估阶段,模型必须依赖先前生成的词来生成后续的词,这导致了自我评估偏差。自我评估偏差会使得在训练过程中模型与评估过程中的生成结果之间存在差距,当解码器依赖于之前生成的词来生成下一个词时,模型的错误可能会逐渐累积并导致不准确的生成。 即使模型在训练阶段能够很好地利用真实目标词进行预测,但在推断阶段却不能保证同样的质量。

在这里插入图片描述

  • 这个问题出现的一个重要原因在于:模型在解码的时候采用了 greedy 的方式
  • 要解决这个问题可以采用从全局角度更好的 decoding 方法

Exhaustive Search Decoding

在这里插入图片描述

  • 但是穷举法在实现上显然不可接受
  • 假设一个句子的长度是 n,那么解码过程中需要考虑的复杂度是 O ( V n ) O(V^n) O(Vn) 其中 V V V 是词表的规模

Beam Search Decoding

在这里插入图片描述
在序列生成任务中,神经网络模型生成一个输出序列,例如目标语言句子。Beam Search Decoding通过在每个时间步保留前k个最有可能的候选序列,逐步扩展和搜索最优序列

  • k=1 的时候就是贪婪算法
  • k=V 的时候就是穷举法

下面是一个实例展示:

在这里插入图片描述

  • 假设我们的模型已经完成了训练,现在是在 evaluation 的 decoding 阶段

  • 首先在第一个时间步,cowtigerlogits 值分别如图所示

  • 第二个时间步,我们会将 cowtiger 分别计算,当他们作为第一步解码结果的时候,后面的概率值
    在这里插入图片描述

  • 我们会在第二个时间步结束的时候来选择概率最高的 k 条路径作为全局的最优解码结果,因为这里 k=2 因此我们只选择 cow eatstiger bites 来进行后续的 decoding 任务

  • 同样的过程重复:
    在这里插入图片描述

  • 在第三步的时候,cow eats grasscow eats carrot 成为两个最高的路径

  • 接下来继续生成:
    在这里插入图片描述

  • 直到遇到了 <end> 符号,生成过程结束,最终的 decoding 结果选最高的

什么时候解码停止

  • 生成 end 的时候
  • 或者设置最大的生成数量
    在这里插入图片描述

summary

在这里插入图片描述

Attention Mechanism

在这里插入图片描述

  • 由于 rnn 这里模型构成的 encoder 最终编码的这个 vector 的质量并不特别好(比较长距离的关系捕捉不太好)
  • 而编码段的质量直接影响了解码端的结果,因此我们讲这种现象称为 information bottleneck 信息瓶颈
  • 因此通过 attention mechanism 来解决这个问题

attention

在这里插入图片描述
注意力机制通过动态地对编码器的隐藏状态进行加权汇总,为解码器提供更全面的上下文信息, 从而解决了这个问题。它允许解码器在生成每个目标语言词时,根据输入序列的不同部分进行自适应地关注。

以下是使用注意力机制的编码器-解码器结构的基本步骤:

  • 编码器:将输入序列(源语言句子)通过编码器的循环神经网络(RNN)或Transformer 等模型进行编码,得到一系列的隐藏状态。

  • 注意力计算:在解码器的每个时间步,根据解码器当前的隐藏状态和编码器的隐藏状态,计算注意力权重。这个注意力权重表示解码器对于编码器各个隐藏状态的关注程度。

  • 上下文向量:使用注意力权重对编码器的隐藏状态进行加权汇总,得到一个上下文向量。该上下文向量包含了根据注意力权重对编码器隐藏状态进行加权后的综合信息。

  • 解码器生成:将上下文向量与解码器当前的输入(通常是之前生成的目标语言词)一起输入解码器,生成下一个目标语言词的概率分布。

重复步骤2到步骤4,直到生成完整的目标语言序列。

通过注意力机制,解码器可以根据输入序列的不同部分进行自适应地关注,从而更好地捕捉输入序列的相关信息。注意力机制在翻译任务中的应用可以改善翻译的质量和处理长距离依赖关系的能力。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 通过 attention 进行解码的核心步骤就是,将 decoding 中每个时间步的 hidden stateencoding 端的每一个时间步的 hidden state 进行相似度计算并加权得到一个动态的向量用于解码(代替了最初版本的只在最后一个时间步生成一个 vector 的方式)
    在这里插入图片描述

attention summary

在这里插入图片描述

Evaluation

BLEU(Bilingual Evaluation Understudy):BLEU是一种常用的自动评估指标,用于衡量机器翻译结果与参考翻译之间的相似程度。它通过比较候选翻译与多个参考翻译之间的n-gram重叠来计算得分。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/647221.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux 文件 io 的原子性与 O_APPEND 参数

转自&#xff1a;https://www.cnblogs.com/moonwalk/p/15642478.html 1. 文件 io 1.1 open() 系统调用 在进程/线程 struct task ---> struct files_struct 结构体中&#xff0c;添加一项新打开的文件描述符 fd&#xff0c;并指向文件表创建一个新的 struct file 即文件表…

Debezium系列之:为Debezium集群JMX页面增加监控,JMX页面出现异常时发送飞书告警,确保任务能够获取debezium集群指标

Debezium系列之:为Debezium集群JMX页面增加监控,JMX页面出现异常时发送飞书告警,确保任务能够获取debezium集群指标 一、需求背景二、相关技术博客三、监控JMX页面状态四、发送飞书告警五、定时执行脚本六、告警效果展示七、总结和延展一、需求背景 下游任务需要使用Debeziu…

【正项级数】敛散性判别

Hi&#xff01;&#x1f60a;&#x1f970;大家好呀&#xff01;欢迎阅读本篇文章正项级数敛散性判别。由于最近时间比较紧张&#xff0c;所以几乎没有使用公式编辑器&#xff0c;更多的内容多以图片形式呈现&#xff0c;希望本篇内容对你有帮助呀&#xff01; 可能对你有帮助的…

JavaSE进阶--网络编程

文章目录 前言一、网络编程二、通信1、两个重要的要素2、通信协议 三 、Socket四、基于TCP的网络编程1、单向通信1.1 服务端1.2 客户端 2、双向通信2.1 服务端2.2 客户端 3、传输对象3.1 服务端3.2 客户端 4、保持通信4.1 服务端4.2 客户端 五、基于UDP的网络编程1、单向通信1.…

深入理解深度学习——Transformer:解码器(Decoder)的多头注意力层(Multi-headAttention)

分类目录&#xff1a;《深入理解深度学习》总目录 相关文章&#xff1a; 注意力机制&#xff08;Attention Mechanism&#xff09;&#xff1a;基础知识 注意力机制&#xff08;Attention Mechanism&#xff09;&#xff1a;注意力汇聚与Nadaraya-Watson核回归 注意力机制&…

AI 绘画(1):生成一个图片的标准流程

文章目录 文章回顾感谢人员生成一个图片的标准流程前期准备&#xff0c;以文生图为例去C站下载你需要的绘画模型导入参数导入生成结果&#xff1f;可能是BUG事后处理 图生图如何高度贴合原图火柴人转角色 涂鸦局部重绘 Ai绘画公约 文章回顾 AI 绘画&#xff08;0&#xff09;&…

Fluent基于profile定义变量

1 概述 Profile中文可称呼为数据表&#xff0c;是Fluent中一种定义边界条件和体积域条件的方式。数据表主要用于将实验、第三方软件等其他数据源的物理场分布数据传递给Fluent。 Profile文件为CSV或PROF格式的文本文件&#xff0c;记录了物理场分布规律。 profile文件示意&…

智警杯初赛复现

eee考核的时候搭建环境出了问题。。虽然有点久远&#xff0c;但还能看看 1.克隆centos 先查看第一台的ip ifconfig 编辑另外两台 进入根目录 cd/ 编辑 vim /etc/sysconfig/network-scripts/ifcfg-ens33 更改项 IPADDR192.168.181.4 # 设置为想要的固定IP地址重启 2.…

K8S 基本概念

功能 1. 自动装箱 基于容器对应用运行环境的资源配置要求自动部署应用容器 2. 自我修复(自愈能力) 当容器失败时&#xff0c;会对容器进行重启。 当所部署的 Node 节点有问题时&#xff0c;会对容器进行重新部署和重新调度 当容器未通过监控检查时&#xff0c;会关闭此容器直到…

从零开始理解Linux中断架构(2)-朴素的中断管理设计理念

既然是从零开始,我们先从最为简单的中断逻辑处理架构开始,这个逻辑结构跟CPU架构没有关系,纯逻辑上的。纯逻辑是跨越系统和应用的,不管对于应用程序员还是系统程序员,逻辑推导是基本的工具,设计原型是基本的出发点。 中断发起的时候,PC指针被设置为中断向量表中相对应的…

轻量云服务器远程连接不了怎么办?

​  轻量云服务器为轻量级云计算服务&#xff0c;其可满足低需求、轻体验的个人和企业用户。但是&#xff0c;有时候我们会遇到轻量云服务器远程连接不了的问题&#xff0c;这对于需要远程管理服务器的用户来说是非常困扰的。本文展示了轻量云服务器无法正常远程连接的一些排…

测试老鸟总结,性能测试监控的关键指标(详全)你要的都有...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 稳定性测试的要点…

测试外包公司的妹子每天干15小时,被开发怼了几句,直接提桶跑路了。。。

最近我们公司的测试任务比较重&#xff0c;特别是我们组&#xff0c;每天都要加班两三个小时。我们组还有一个来公司才两三个月的妹子&#xff0c;工作挺认真的&#xff0c;每天加班两三个小时也没有抱怨什么&#xff0c;前几天看她每天太累了&#xff0c;要她放松一下别加那么…

编程示例: 计算CRC校验码

编程示例&#xff1a; 计算CRC校验码 循环冗余检查&#xff08;CRC&#xff09;是一种数据传输检错功能&#xff0c;对数据进行 多项式计算&#xff0c;并将得到的结果附在帧的后面&#xff0c;接收设备也执行 类似的算法&#xff0c;进而可以保证在软件层次上数据传输的正确性…

[golang 微服务] 6. GRPC微服务集群+Consul集群+grpc-consul-resolver案例演示

一. GRPC微服务集群概念 上一节讲解了consul集群: [golang 微服务] 5. 微服务服务发现介绍,安装以及consul的使用,Consul集群,这样的话,当一台server挂掉之后,集群就会从另一台server中获取服务,这就保证了客户端访问consul集群的负载均衡性. 这里还有一个问题: 就是当终端的对…

opencv初学记录

准备工作&#xff1a; 1.找一张图片 2.准备python运行环境&#xff0c;并导入库&#xff0c;pip install opencv-python 读取文件&#xff0c;并打印维度 import cv2 #为什么是cv2不是cv呢&#xff0c;这个2指的是c的api&#xff0c;是为了兼容老板&#xff0c;cv指的就是c&am…

设计模式(十七):行为型之状态模式

设计模式系列文章 设计模式(一)&#xff1a;创建型之单例模式 设计模式(二、三)&#xff1a;创建型之工厂方法和抽象工厂模式 设计模式(四)&#xff1a;创建型之原型模式 设计模式(五)&#xff1a;创建型之建造者模式 设计模式(六)&#xff1a;结构型之代理模式 设计模式…

强化学习笔记-12 Eligibility Traces

前篇讨论了TD算法将MC同Bootstrap相结合&#xff0c;拥有很好的特性。本节所介绍的Eligibility Traces&#xff0c;其思想是多个TD(n)所计算预估累积收益按权重进行加权平均&#xff0c;从而得到更好的累积收益预估值。 价值预估模型的参数更新式子可以调整为&#xff1a; 1. O…

Vue CLI $nextTick 过渡与动画

3.12.$nextTick 这是一个生命周期钩子 **this.$nextTick(回调函数)**在下一次DOM更新结束后执行其指定的回调 什么时候用&#xff1a;当改变数据后&#xff0c;要基于更新后的新DOM进行某些操作时&#xff0c;要在nextTick所指定的回调函数中执行 使用 $nextTick 优化 Todo…

【UE 从零开始制作坦克】2-控制坦克移动(简单的移动效果)

效果 步骤 1. 新建蓝图类&#xff0c;父类选择“VehicleWheel&#xff08;载具车轮&#xff09;” 这里就命名为“TankWheel” 双击打开“TankWheel”&#xff0c;设置形状半径为40 2. 打开 “BP_West_Tank_M1A1Abrams” 选中“网格体&#xff08;VehicleMesh&#xff09;&…