NLP——Translation 机器翻译

文章目录

  • 为什么翻译任务困难
  • 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重叠来计算得分。
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

异常数据检测 | Python实现支持向量机(SVM)的异常数据检测

文章目录 文章概述模型描述源码分享学习小结参考资料文章概述 SVM通常应用于监督式学习,但OneClassSVM算法可用于将异常检测这样的无监督式学习,它学习一个用于异常检测的决策函数其主要功能将新数据分类为与训练集相似的正常值或不相似的异常值。 模型描述 OneClassSVM的思…

为什么中国大公司不开发 Linux 桌面应用?

我们Linux平台C端的业务&#xff0c;也就是给大家提供的Linux的个人版本。目前真的是靠爱发电了&#xff0c;逃&#xff09; 更爱的是&#xff0c;我们不只是提供了X64平台&#xff0c;更是提供了Arm&#xff0c;MIPS64平台的二进制包。 估计国内在Linux平台首发新功能的桌面应…

asp.net高校食谱管理系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio

一、源码特点 asp.net高校食谱管理系统 是一套完善的web设计管理系统&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为vs2010&#xff0c;数据库为sqlserver2008&#xff0c;使用c#语言 开发 asp.net高校食谱管理系统VS开发s…

Pytest自动化测试框架生成allure的报告

一、前言 最近通过群友了解到了allure这个报告&#xff0c;开始还不以为然&#xff0c;但还是逃不过真香定律。 经过试用之后&#xff0c;发现这个报告真的很好&#xff0c;很适合自动化测试结果的展示。下面说说我的探索历程吧。 选用的项目为Selenium自动化测试Pytest框架实…

为什么要使用微软的 Application Framework?

我是荔园微风&#xff0c;作为一名在IT界整整25年的老兵&#xff0c;今天来看一下我们为什么要使用微软的 Application Framework&#xff1f; 虽然Application Framework 并不是新观念&#xff0c;它们却在最近数年才成为 PC 平台上软件开发的主流工具。面向对象语言是具体实…

【活动访谈】发力数字基座 推动物联创新—航天科技控股集团AIRIOT4.0平台发布会活动专访

近日&#xff0c;由航天科技控股集团股份有限公司主办的“数字基座 智慧物联—AIRIOT4.0平台发布会”在北京圆满落幕。航天三院科技委总工程师王连宝应邀出席本次会议并接受媒体采访&#xff0c;共同参与访谈的还有AIRIOT产品研发创始人、航天科技控股集团股份有限公司智慧物联…

SpringCloud第三篇:GateWay服务网关

一、为什么需要服务网关&#xff1a; 1、什么是服务网关 传统的单体架构中只需要开放一个服务给客户端调用&#xff0c;但是微服务架构中是将一个系统拆分成多个微服务&#xff0c;如果没有网关&#xff0c;客户端只能在本地记录每个微服务的调用地址&#xff0c;当需要调用的…

【连续介质力学】变形梯度

变形梯度 简介 本节讨论两个不同质点P和Q的之间的相对运动变化 拉伸比和相对伸长 d X ⃗ d\vec X dX : 在参考构形连接质点P和Q的向量&#xff0c;线单元 M ^ \hat M M^: d X ⃗ d\vec X dX 方向的单位向量 d x ⃗ d\vec x dx : 在当前构形连接质点P’和Q‘的向量&#xff…

简要介绍 | 计算机视觉中的开放词汇:挑战与未来

注1&#xff1a;本文系“简要介绍”系列之一&#xff0c;仅从概念上对计算机视觉中的开放词汇(open vocabulary)进行非常简要的介绍&#xff0c;不适合用于深入和详细的了解。 注2&#xff1a;"简要介绍"系列的所有创作均使用了AIGC工具辅助 计算机视觉中的开放词汇&…

深入理解Java虚拟机jvm-对象的内存布局

对象的内存布局 对象头&#xff08;Header&#xff09;实例数据&#xff08;Instance Data&#xff09;对齐填充&#xff08;Padding&#xff09; 在HotSpot虚拟机里&#xff0c;对象在堆内存中的存储布局可以划分为三个部分&#xff1a;对象头&#xff08;Header&#xff09;、…

jenkins用户权限管理

环境准备: 登录jenkins: http://192.168.9.190:8091/ admin asdwhl@0 一、用户权限插件安装 1、Dashboard > Manage Jenkins > Manage Plugins > Available(可选插件) 依次安装: Role-based Authorization Strategy Authorize Project

【Git】git push origin master时发生的各类错误汇总

文章目录 一、常见的git命令二、错误一三、错误二四、错误三五、问题解决 一、常见的git命令 使用 git 命令时&#xff0c;您可以执行一系列操作来管理代码仓库。下面是一些常用的 git 命令及其功能&#xff1a; git init: 在当前目录初始化一个新的 git 仓库。git clone <…

stm32超声波测距代码

操作思路&#xff1a; 初始化时将trig和echo端口都置低&#xff0c;首先向给trig 发送至少10 us的高电平脉冲&#xff08;模块自动向外发送8个40K的方波&#xff09;&#xff0c;然后等待&#xff0c;捕捉 echo 端输出上升沿&#xff0c;捕捉到上升沿的同时&#xff0c;打开定时…

Spark大数据处理学习笔记(3.2.2)掌握RDD算子

衔接上文&#xff1a;http://t.csdn.cn/Z0Cfj 文章目录 三、掌握行动算子3.1 归约算子 - reduce()3.2 采集算子 - collect()3.3 首元素算子 - first()3.4 计数算子 - count()3.5 按键计数算子 - countByKey()3.6 前截取算子 - take(n)3.7 排序前截取算子 - takeOrdered(n)[(ord…

vim实用功能汇总

文章目录 1. 读代码1.1 vim中文件跳转1.2 语法高亮模式1.3 Visual 模式 2. 配置vim成为python的IDE 1. 读代码 1.1 vim中文件跳转 vim中文件跳转 这个其实不是靠什么插件完成的&#xff0c;而是vim编辑器自带的功能把光标放在要跳转的文件上&#xff0c;按下gf&#xff0c;即…

加速应用迭代与更新:Weex与小程序容器的快速开发之道

Weex是一个跨平台的移动应用开发框架&#xff0c;由阿里巴巴旗下的阿里巴巴前端团队开发。它允许开发者使用单一的代码库来构建同时适用于iOS和Android平台的移动应用。Weex使用基于Vue.js的声明式语法来描述应用程序的界面&#xff0c;并通过JavaScript运行时引擎在移动设备上…

2023年中职组“网络安全”赛项南昌市竞赛任务书

2023年中职组“网络安全”赛项 南昌市竞赛任务书 网络空间安全赛项规程 一、赛项名称 赛项名称&#xff1a;网络空间安全 赛项组别&#xff1a;中职组 二、竞赛目的 通过竞赛&#xff0c;检验参赛选手对网络、服务器系统等网络空间中各个信息系统的安全防护能力&#xff0…

Python学了基本语法 下一步该干什么 ?

刚入门Python,学习了基本语法后&#xff0c;你可以开始编写简单的程序了。接下来&#xff0c;你可以学习Python的标准库和第三方库&#xff0c;掌握更多的编程技巧和知识&#xff0c;提高自己的编程能力。同时&#xff0c;也可以通过实践项目来巩固所学知识&#xff0c;提高自己…

接口测试和功能测试的区别

目录 前言&#xff1a; 一、测试目的不同 二、测试内容不同 三、测试重点不同 四、总结 前言&#xff1a; 接口测试和功能测试是软件测试中的两种不同类型。接口测试侧重于测试不同模块之间的接口&#xff0c;而功能测试则注重测试完整的业务功能。 一、测试目的不同 接…

【实战】minigpt4的体验和微调

MiniGPT-4 https://github.com/vision-cair/minigpt-4 1 环境配置 1.1 安装环境 git lfs install //如果报错 &#xff1a;git: lfs is not a git command. See git --help. //尝试使用&#xff1a; sudo apt-get install git-lfs git lfs install1.2 准备Vicuna权重 &…