机器翻译基础与模型 之一: 基于RNN的模型

一、机器翻译发展历程

基于规则的-->基于实例的-->基于统计方法的-->基于神经网络的

传统统计机器翻译把词序列看作离散空间里的由多个特征函数描述的点,类似
于 n-gram 语言模型,这类模型对数据稀疏问题非常敏感。神经机器翻译把文字序列表示为实数向量,一方面避免了特征工程繁重的工作,另一方面使得系统可以对文字序列的“表示”进行学习。

神经网络模型在机器翻译上的实践发展:

CNN/RNN:存在梯度消失问题

LSTM:seq2seq学习的方法,缓解了梯度消失/爆炸问题,通过遗忘门的设计让网络选择性的记忆信息,缓解了序列中长距离依赖的问题。但句子越长损失的信息越多,模型无法对输入和输出序列的对齐进行建模,不能有效保证翻译质量。

注意力机制:可以有效地处理长句子的翻译,而且注意力的中间结果具有一定的可解释性。但模型计算量很大。

GNMT系统:google发布的基于多层RNN的方法。

Transformer:完全摒弃了RNN和CNN,仅通过多头注意力机制和前馈神经网络的框架。解决了长距离依赖的问题,训练速度快,翻译效果更好。

二、基于RNN的模型

2.1 编码器-解码器

2.1.1 框架结构

编码器将输入的文字序列通过某种转换变为一种新的“表示”形式。解码器把这种“表示”重新转换为输出的文字序列。其中的核心问题是表示学习。

当今主流的神经机器翻译系统中,编码器由词嵌入层和中间网络层组成。当输入一串单词序列时,词嵌入层会将每个单词映射到多维实数表示空间,这个过程也被称为词嵌入。

之后中间层会对词嵌入向量进行更深层的抽象,得到输入单词序列的中间表示。中间层的实现方式有很多,比如:RNN、CNN、自注意力机制等都是模型常用的结构。解码器的结构基本上和编码器是一致的,只比编码器多了输出层,或者多一个编码-解码注意力子层。

编码器-解码器框架已经成为了神经机器翻译系统的标准架构。

2.2 基于RNN的翻译建模

2.2.1 建模问题

序列表示问题:如何描述文字序列。

对序列中某个位置的答案进行预测时需要记忆当前时刻之前的序列信息,这就是RNN网络诞生的背景。RNN处理序列问题的实例: 循环单元的输入由上一时刻的输出和当前时刻的输入组成。

在RNN神经机器翻译里,把源语言句子、目标语言句子分别看作两个序列,使用两个RNN分别对其进行建模。一个就是编码器,另一个就是解码器。

三个关键问题:
(1)词嵌入,即词的分布式表示问题。RNN网络的输入。
(2)句子的表示学习,即在词嵌入的基础上获取整个序列的表示。RNN网络的最后一层输出。
(3)译文单词生成,即每个目标语言单词的概率。 softmax输出层来获得所有单词的分布。

2.2.2 LSTM模型 (长短时记忆模型)

LSTM 模型是 RNN 模型的一种改进。相比 RNN 仅传递前一时刻的状态,LSTM 会同时传递两部分信息:状态信息和记忆信息 。

LSTM的结构主要分为三部分: 遗忘、记忆更新、输出。

见之前博文:理解LSTM模型-CSDN博客

2.2.3 GRU 门控循环单元(Gated Recurrent Unit)

GRU是LSTM的一个变体,继承了门控单元控制信息传递的思想,并对其进行了简化。GRU只有两个门信号: 重置门、更新门。GRU比LSTM运算效率高些。

2.2.4 双向RNN模型

双向循环网络,同时考虑前文和后文的信息。编码器可以看作由两个RNN构成,第一个RNN从句子的右边进行处理,第二个RNN从句子左边开始处理,最终将正反向得到的结果融合后传递解码器。

2.3 注意力机制

注意力机制的概念来源于生物学的现象:当待接受的信息过多时,人类会选择性地关注部分信息而忽略其他信息。

2.3.1 翻译中的注意力机制

在翻译中引入注意力机制是为了在生成目标语言单词时有选择地获取源语言句子中更有用的部分,即相关性更高的源语言片段应该在句子的表示中体现出来,而不是将所有的源语言单词一视同仁。

对每个目标语言单词y_j,注意力机制会生成一个动态的表示C_j,而不是采用静态的表示。C_j也被称作对于目标语言位置j的上下文向量。

2.3.2 上下文向量的计算

注意力机制的核心是:针对不同目标语言单词生成不同的上下文向量。可以将注意力机制看做是一种对接收到的信息的加权处理。对于更重要的信息赋予更高的权重即更高的关注度,对于贡献度较低的信息分配较低的权重,弱化其对结果的影响。

根据这种思想,上下文向量 Cj 被定义为对不同时间步编码器输出的状态序列{h1,...,hm} 进行加权求和,如下式:Cj =SUM( αi,j * hi) 。其中, αi,j 是注意力权重(Attention Weight),它表示目标语言第 j 个位置与源语言第 i 个位置之间的相关性大小。

注意力权重αi,j的计算:第一步计算相关性系数\beta i,j,第二步用softmax函数将\beta i,j做归一化处理得到注意力权重αi,j。

计算过程实例:

2.3.3 注意力机制的解读

基于模糊匹配的查询模型。

2.3.4 实例:GNMT

GNMT是google在2016年发布的神经机器翻译系统。

2.4 训练与推断

2.4.1 损失函数、参数初始化

交叉熵损失函数。一般选择凸函数。

大量实践中发现,神经机器翻译模型对初始化方式非常敏感,性能优异的系统往往需要特定的初始化方式。

2.4.2 优化策略、梯度裁剪、学习率策略

学习率调整策略:预热阶段、衰减阶段。

学习率的预热阶段便是通过在训练初期使学习率从小到大逐渐增加来减缓在初始阶段模型“跑偏”的现象。常用的余热方法是:逐渐预热(Gradual Warmup)

模型训练逐渐接近收敛的时候,使用太大学习率会很容易让模型在局部最优解附近震荡,从而错过局部极小,因此需要通过减小学习率来调整更新的步长,以此来不断地逼近局部最优,这一阶段也称为学习率的衰减阶段。学习率衰减方法:指数衰减、余弦衰减、分段常数衰减(Piecewise Constant Decay)等。

2.4.3 并行训练

a.数据并行

如果一台设备能完整放下一个神经机器翻译模型,那么数据并行可以把一个大批次均匀切分成 n 个小批次,然后分发到 n 个设备上并行计算,最后把结果汇总。

b.模型并行

把较大的模型分成若干小模型,之后在不同设备上训练小模型。

2.4.4 推断

神经机器翻译的推断是一个搜索问题。全搜索 Vs 自左向右的搜索。

自左向右的搜索: 贪婪搜索、束搜索。都是典型的自回归模型。

a.贪婪搜索

解码过程中每一个时间步的单词预测都依赖于其前一步单词的生成。因为是基于贪心的方法,这
里会选择概率最大(top-1)的单词作为输出。

贪婪搜索的优点在于速度快,而且原理非常简单,易于快速实现。由于每一步只保留一个最好的局部结果,贪婪搜索往往会带来翻译品质上的损失。

b.束搜索

束搜索是一种启发式图搜索算法。对于每一个目标语言位置,束搜索选择了概率最大的前 k 个单词进行扩展(其中 k 叫做束宽度,或简称为束宽)。

假设 {y1,...,yn} 表示生成的目标语言序列,且 k = 3,则束搜索的具体过程为:在预测第一个位置时,可以通过模型得到 y1 的概率分布,选取概率最大的前 3 个单词作为候选结果(假设分别为“have” , “has” , “it”)。在预测第二个位置的单词时,模型针对已经得到的三个候选结果(“have” , “has” , “it”)计算第二个单词的概率分布。因为 y2 对应 |V | 种可能,总共可以得到 3 × |V | 种结果。然后从中选取使序列概率 P(y2,y1|x) 最大的前三个 y2 作为新的输出结果,这样便得到了前两个位置的top-3 译文。在预测其他位置时也是如此,不断重复此过程直到推断结束。

可以看到,束搜索的搜索空间大小与束宽度有关,也就是:束宽度越大,搜索空间越大,更有可
能搜索到质量更高的译文,但同时搜索会更慢。束宽度等于 3,意味着每次只考虑三个最有可能的结果,贪婪搜索实际上便是束宽度为 1 的情况。在神经机器翻译系统实现中,一般束宽度设置在 4~8 之间。

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

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

相关文章

【优选算法篇】分治乾坤,万物归一:在重组中窥见无声的秩序

文章目录 分治专题(二):归并排序的核心思想与进阶应用前言、第二章:归并排序的应用与延展2.1 归并排序(medium)解法(归并排序)C 代码实现易错点提示时间复杂度和空间复杂度 2.2 数组…

DrugLLM——利用大规模语言模型通过 Few-Shot 生成生物制药小分子

摘要 小分子由于能够与特定的生物靶点结合并调节其功能,因此在药物发现领域发挥着至关重要的作用。根据美国食品和药物管理局(FDA)过去十年的审批记录,小分子药物占所有获批上市药物的 76%。小分子药物的特点是合成相对容易&…

「一」HarmonyOS端云一体化概要

关于作者 白晓明 宁夏图尔科技有限公司董事长兼CEO、坚果派联合创始人 华为HDE、润和软件HiHope社区专家、鸿蒙KOL、仓颉KOL 华为开发者学堂/51CTO学堂/CSDN学堂认证讲师 开放原子开源基金会2023开源贡献之星 「目录」 「一」HarmonyOS端云一体化概要 「二」体验HarmonyOS端云一…

架构师:使用 Atomix 实现分布式协调服务的技术指南

1、简述 Atomix 是一个强大的分布式协调框架,提供了分布式数据结构、协调工具和一致性协议,帮助开发者实现高可用、强一致性的分布式系统。它构建于 Raft 和 Paxos 等一致性协议之上,支持创建分布式锁、Leader 选举、分布式 Map、消息发布-订阅等功能,常用于微服务架构和分…

根据条件 控制layui的table的toolbar的按钮 显示和不显示

部分代码&#xff1a; <!-----查询条件-----> <input type"date" id"StartDate" onchange"PageList()" /> <input type"date" id"EndDate" onchange"PageList()" /><!-----表格Table-----&…

100.【C语言】数据结构之二叉树的堆实现 上

目录 1.顺序结构 2.示意图 ​编辑 从物理结构还原为逻辑结构的方法 3.父子节点编号的规律 4.顺序存储的前提条件 5.堆的简介 堆的定义 堆的两个重要性质 小根堆和大根堆 6.堆的插入 7.堆的实现及操作堆的函数 堆的结构体定义 堆初始化函数HeapInit 堆插入元素函…

CommonsBeanutils与Shiro发序列化利用的学习

一、前言 前面的学习中&#xff0c;过了一遍cc1-cc7的利用链&#xff0c;在CC2的利用链中&#xff0c;学习了 java.util.PriorityQueue&#xff0c;它在Java中是一个优先队列&#xff0c;队列中每一个元素都有自己的优先级。在反序列化这个对象时&#xff0c;为了保证队列顺序…

OpenGL入门008——环境光在片段着色器中的应用

本节将在片段着色器中应用环境光照(Ambient) 文章目录 一些概念光照模型环境光漫反射镜面反射总结 实战简介dependencieslightShader.vslightShader.fsshader.vsshader.fs utilsCube.hCube.cpp main.cppCMakeLists.txt最终效果 一些概念 光照模型 环境光 概述&#xff1a; 在…

cesium for unity的使用

先聊聊导入 看到这里的因该能够知道&#xff0c;官网以及网上绝大多数的方法都导入不进来&#xff0c;那么解决方法如下: 两个链接&#xff1a;按照顺序依次下载这两个tgz和zip&#xff0c;其中tgz为主要部分&#xff0c;zip为示例工程项目 如果您要查看示例工程项目的话&am…

stm32cubemx+VSCODE+GCC+makefile 开发环境搭建

title: stm32cubemxVSCODEGCCmakefile 开发环境搭建 tags: FreertosHalstm32cubeMx 文章目录 内容往期内容导航第一步准备环境vscode 插件插件配置点灯 内容 往期内容导航 第一步准备环境 STM32CubeMXVSCODEMinGWOpenOcdarm-none-eabi-gcc 然后把上面下载的软件 3 4 5 bin 文…

20241120-Milvus向量数据库快速体验

目录 20241120-Milvus向量数据库快速体验Milvus 向量数据库pymilvus内嵌向量数据库模式设置向量数据库创建 Collections准备数据用向量表示文本插入数据 语义搜索向量搜索带元数据过滤的向量搜索查询通过主键搜索 删除实体加载现有数据删除 Collections了解更多 个人主页: 【⭐…

【Axure高保真原型】3D农业管理大屏可视化案例

今天和大家分享3D农业管理大屏可视化案例的原型模板&#xff0c;里面包括重点指标分析、产量分析、种类分析、分布分析、收入分析和销售分析&#xff0c;具体效果可以点击下方视频观看或打开下方预览地址查看哦 【原型效果】 【Axure高保真原型】3D农业管理大屏可视化案例 【原…

使用 LSTM(长短期记忆网络) 模型对时间序列数据(航空旅客人数数据集)进行预测

代码功能 数据准备 加载数据&#xff1a;从公开的航空旅客人数数据集&#xff08;Airline Passengers Dataset&#xff09;中读取时间序列数据。 对数变换和平稳化&#xff1a;对数据应用 log1p 函数减少趋势和波动&#xff0c;使模型更容易学习规律。 归一化处理&#xff1a;…

Redis Search系列 - 第七讲 Windows(CygWin)编译Friso

目录 一、背景二、安装CygWin三、编译Friso四、运行Friso五、Friso分词效果测试 一、背景 最近在做RedisSearch的中文分词效果调研&#xff0c;底层的中文分词插件使用的就是Friso&#xff0c;目前手里的Linux环境上yum镜像仓库有问题导致没法安装gcc&#xff0c;又急于验证Fr…

【AI大模型引领变革】探索AI如何重塑软件开发流程与未来趋势

文章目录 每日一句正能量前言流程与模式介绍【传统软件开发 VS AI参与的软件开发】一、传统软件开发流程与模式二、AI参与的软件开发流程与模式三、AI带来的不同之处 结论 AI在软件开发流程中的优势、挑战及应对策略AI在软件开发流程中的优势面临的挑战及应对策略 结论 后记 每…

智领未来: 宏集物联网HMI驱动食品与包装行业迈向智能化新高度

行业现状与挑战 食品与包装行业对设备的自动化、智能化水平要求日益提高&#xff0c;特别是瓶装和灌装生产线需要实现高速、高效的生产。此外&#xff0c;该行业还需遵循严格的卫生标准和安全规范&#xff0c;以保证产品质量符合消费者需求。在提高生产效率的同时&#xff0c;…

LeetCode 热题100(九)【图论】(待更新)

目录 9.图论 9.1岛屿数量&#xff08;中等&#xff09; 9.2腐烂的橘子&#xff08;中等&#xff09; 9.3课程表&#xff08;中等&#xff09; 9.4实现 Trie (前缀树)&#xff08;中等&#xff09; 9.图论 9.1岛屿数量&#xff08;中等&#xff09; 题目描述&#xff1a;…

数据结构--跳表

跳表 原理实现 原理 跳表&#xff08;skiplist&#xff09;是一种链表&#xff0c;而链表查询的时间复杂度为O(n)&#xff0c;为了优化查询效率&#xff0c;我们可以让每相邻两个节点升高一层&#xff0c;增加一个指针&#xff0c;让指针指向下下个节点&#xff1a; 这样所有…

ChatGPT高级语音模式正在向Web网页端推出!

大家好&#xff0c;我是木易&#xff0c;一个持续关注AI领域的互联网技术产品经理&#xff0c;国内Top2本科&#xff0c;美国Top10 CS研究生&#xff0c;MBA。我坚信AI是普通人变强的“外挂”&#xff0c;专注于分享AI全维度知识&#xff0c;包括但不限于AI科普&#xff0c;AI工…

多传感器融合slam过程解析【大白话版】

SLAM&#xff08;同步定位与地图构建&#xff09;是自动驾驶、机器人导航和三维建模的关键技术之一。多传感器融合&#xff08;激光雷达、IMU、相机&#xff09;进一步提升了SLAM的鲁棒性和适应性&#xff0c;使其能够在复杂环境中实时构建高精度地图。本文将围绕激光雷达IMU相…