lstm神经网络_机器翻译与高级循环神经网络LSTM,GRU

2023-11-04

No.1

机器翻译概述

机器翻译就是将一种语言翻译为另一种语言。所有机器翻译系统本质上都是基于统计的,我们将总尝试使用非常大的语料库,一般称为平行语料库。在语料库中,有许多句子或段落以不同语言表述。

No.2

深度学习出现之前的机器翻译模型

一、模型概述

1.源语言f:法语

2.目标语言e:英语

3.模型的概率规则基于贝叶斯公式,普通的贝叶斯公式如下:

3ebb5be262fa0f36e2778255347680f6.png

而模型中的规则对贝叶斯公式进行了修改,去掉了右侧的分母部分,模型的概率规则如下所示:

371e6a0743b1486b88e361fdf96771e9.png

可以看出虽然去掉了右侧的分母部分,但是对argmax(求最大值的下标)的结果是不影响的。

371e6a0743b1486b88e361fdf96771e9.png

4.翻译模型P(e|f)只在平行语料上训练

5.语言模型P(e)只在英语语料上训练,语言模型就是指计算句子出现概率的模型。

整个的模型图如下所示:

e906392f4bdd7aa7f8b9796a642b36e5.png

二、训练模型

1.通过匹配/对齐来训练Translation Model:匹配步骤的目标是找出源语言中哪个单词或者词组将会翻译到目标语言的某个词或者词组.下面是一个英语与法语对齐的例子。

82a7d0a403311ca0f52dba36324b16e7.png

其中法语中的"Le"在法语中没有真实含义,因此翻译时应该跳过"Le".翻译的过程中还有其他特殊情况比如1对多、多对1、多对多,颠倒顺序等。如果你想通过所有的统计数据并收集这些(那个词会被翻译成那个词)的概率,这成了一个非常非常复杂的问题。

2.开始翻译

经过上面多步之后我们获得了所有潜在的匹配(对齐),当从源语言开始翻译时,会有很多候选词/短语,最终也会造成组合爆炸。如下图所示:

9f8d35c78d976a205160082d26ff9e77.png

3.用束搜索(beam search)来得到最好的结果

a70e5880bd24d99800f032535a842204.png

beam search是对greedy search的一个改进算法,每次从当前的候选节点处选择最有可能的k个节点进行后续扩展,详细内容在这里不展开了。

三、这种模型的缺点

根据上面的描述,可以看出基于统计的机器翻译模型是一个非常复杂的系统,系统分成多个模块,不能一起得到一致的训练。与之相反,深度学习模型试图构建一个端到端的可训练模型,你只需要关心最终的目标函数,所有的东西都会在一个模型里共同学习。

No.3

深度学习在机器翻译领域的应用

一、基本的深度学习翻译模型

最简单的翻译模型是直接用RNN,模型分为两部分encoder和decoder,encoder将源语言句子信息编码成一个向量,decoder根据向量解码出目标语言,模型图如下:

f234c28bd1872866323ec2c09858a036.png

可以看出encoder的最后一个向量需要捕获整个句子的信息,而不幸的是,通常一个周期只能捕获5-6个词,前面的信息都丢失掉了。模型公式如下:

51e64dd34b18648e72f71b8b57ae7183.png

二、循环神经网络的扩展

1.在训练encoding和decoding时使用不同的权重,每个输入都有一个权重矩阵W与之关联

2.decoder的输入除了包括前一层的隐含层输出外还包括encoder的最后一次输出以及上一次预测输出的单词,模型图和公式如下:

f776ec5c6e7a7a170cbc65cff18bd294.png cc4e8b46c99e17d31535cb28c141d4e1.png

其中$D表示sigmod(Wh,Uc,Vy)。将y_(t-1)输入模型可以帮助模型防止多次重复预测同一单词。

3.用多层RNN

4.训练双向的encoder

5.可以将原来的输入反向输入,这样源语言的第一个单词(输入的最后一个单词)与目标语言的第一个距离最近,因此至少在开始处,那些会较好的被翻译出来。

No.4

GRU门控循环单元

之前也提到过普通的循环神经网络有一个缺陷就是一般只能记住前面5-6个单词,也就是存在遗忘问题。GRU应运而生,它的思想是我们希望保存一些记忆能捕获一些较长依赖的关系。顾名思义,GRU中有2种门分别是更新门update gate和重置门reset gate,两者都是根据当前输入词和隐含层状态计算的,与计算当前隐含层状态的公式类似:

更新门(update gate)

818a8ea812b3bfee93f3dcbb6620ba7d.png

重置门(reset gate)

a0cf9a0d949c3c8373cfbcc62178deaa.png

GRU在每个时间点引入了一个临时的状态ht',用来表示当前的新的内容,公式如下:

531c8ba4e0894bd33a28410619eb5702.png

    因为计算重置门的时候外面加的是sigmod函数,所以rt是一个0-1之间的值,当重置门的值是0的时候,它会忽略之前的内存只表示当前的输入单词。

Question:那么为什么要有重置门呢?让我们拿情感分析任务来举一个例子,假设打算讨论一个谈论剧情的电源评论,会先说一端比较长的电影剧情,最后评论说“这个电影真的很无聊”。虽然评论是围绕着整个情节,但是这不重要,“无聊”是非常强烈的负面词,并且基本上会让模型忽略之前的剧情总结,因为着与情感分析任务不相关,这就是重置门做的事情。

      接下来就是更新门登场了,它是在计算当前时间步最终的状态时出现的,公式如下:

aa85debb255c16c338995ec0c4bd0327.png

     从公式可以看出,如果zt是1的话,模型就可以完全复制上一个时间点的数据。

 Question:那么为什么要有更新门呢?

假如还是那个情感分析的例子,在评论刚开始时,作者说“这个故事真好,我真喜欢这个故事,之后开始说故事情节”,这里对于情感分析任务真正有作用的不是爱情故事本身,而是开头的那句话,并且你需要确保不会丢失这条信息,这个模型可以解决这个问题,模型会自动学习何时重置何时更新。

      为了让读者可以更清楚的理解,下面给出模型图:

3a58689d9ab11376873c01ae1bd9c9f8.png

No.5

LSTM长短时记忆网络

LSTM比GRU更加复杂,LSTM中有输入门,遗忘门,输出门和记忆单元,最终内存以及最终隐状态,公式如下:

ca4ee1a25dc281d765b1aad85b5caa79.png

1.输入门决定了当前单元或当前输入的词的作用有多大

2.遗忘门是一种分离机制,告诉单元需要遗忘多少内容

3.输出门:当有这些输出门时将分离那些与预测相关的内容和在当前单元需要保留在循环神经网络中的内容。也就是说在当前节点,这个特定的节点并不重要,不过随后会变得重要,因此现在不会输出到最终的softmax上。这是一个分离机制,会去学习何时输出。

Chris Ola在博客中将此模型画了出来,如下所示:

9eba6d983011107ab775496b47cd5d4c.png
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

lstm神经网络_机器翻译与高级循环神经网络LSTM,GRU 的相关文章

  • 解答:什么是卫星链路

    本文足对卫星链路预算做的一个最基本 简单 通俗的介绍 以期使普通读者都能够对链路预算有一个了解 有个概念 如感兴趣则需再深入学下去 就会将链路预算彻底搞明白 链路预算的目的和作用卫星链路预算的目的和作用 简单的讲就是帮助新用户经济合理地选配
  • 睿智的seq2seq模型4——往英文到法文的翻译里加上注意力机制

    睿智的seq2seq模型4 往英文到法文的翻译里加上注意力机制 学习前言 什么是注意力机制 如何将注意力机制应用到翻译中 英文翻译到法文的思路 1 对英文进行特征提取 2 将提取到的特征传入到decoder 3 将 t 作为起始符预测第一个
  • vue项目中使用可选链 ( ?. )和双问号 ( ?? )配置

    1 安装插件 babel plugin proposal optional chaining npm install save dev babel plugin proposal optional chaining 2 配置babel ba
  • 2017中国大学生程序设计竞赛 - 女生专场

    1 HDU 6023 点我看题 此链接为vjudge链接 题意 给出题目的数量 提交的次数 每次提交的题目编号 提交时间以及结果 其中罚时为每次错误提交20min 第一次成功提交的时间 问最后AC的题目数量以及总罚时 提交结果不存在CE 分
  • 宋浩概率论与数理统计-第六章-笔记

    概率论与数理统计 第六章 6 1 总体与样本 6 2 1 统计量的定义 6 2 2 常用统计量 6 3 1 抽样分布 2 chi 2 2分布
  • 在Linux上将作业提交到Yarn上运行报错Caused by: java.io.IOException: Exceeded MAX_FAILED_UNIQUE_FETCHES的解决办法

    楼主在Linux服务器上将作业提交到Yarn上报错 Caused by java io IOException Exceeded MAX FAILED UNIQUE FETCHES bailing out 经过网上的搜索以及自己的实验 解决
  • zabbix监控——监控主机

    目录 一 zabbix介绍 二 部署zabbix 2 1 server端部署 2 2 agent端部署 2 3 中文字体乱码设置 三 Zabbix API方式配置 一 zabbix介绍 1 zabbix是一个基于WEB界面的提供分布式系统监
  • 项目js文件修改后chrome不能及时更新的解决办法

    在做web开发过程中 经常需要调试js代码 而在这个时候我们修改过的代码可能不能生效 这是因为浏览器默认是有缓存的 但是这个时候缓存就会影响我们的调试工作 在这里就介绍一下chrome浏览器解决该问题的方法 方法一 调试前清除浏览器缓存 在
  • 浅谈为何选择Dubbo

    本文摘录至搜狐 个人觉得很值得已读 仅用于学习交流 1 为什么要做服务 编者的话 随着现在互联网行业的发展 越来越多的框架 中间件 容器等开源技术不断地涌现 更好地来服务于业务 实现业务并解决问题 然而面对众多的技术选择 我们要如何甄别出适
  • Zookeeper的Quorum机制-谈谈怎样解决脑裂(split-brain)

    在使用zookeeper的过程中 我们经常会看到这样一些说法 1 zookeeper cluster的节点数目必须是奇数 2 zookeeper 集群中必须超过半数节点 Majority 可用 整个集群才能对外可用 这个说法在大多数情况下是
  • C语言_自定义数据类型

    目录 1 自定义数据类型 结构体 1 1 结构体类型的声明 1 1 1 匿名结构体 1 2 结构体的自引用 1 2 1 Typedef结构体重命名 1 3 结构体变量的定义和初始化 1 4 结构体内存对齐 1 4 1 结构体的对齐规则 1
  • 文件下载本地测试OK,部署到环境上报错,原因是jar包中不能通过this.getClass().getClassLoader().getResource(““).getFile()获取

    修改之前获取资源目录下的文件 但是后面定位发现当前jar包中的资源文件这种方式访问不到 打印出来的目录都是带 的 后面在网上各种找 结果看完后凉凉 后面想用getResourceAsStream读成流形式 但是下载下来打不开 开始以为是还是
  • 【送书活动】网络安全(黑客)自学

    前言 作者主页 雪碧有白泡泡 个人网站 雪碧的个人网站 推荐专栏 java一站式服务 React从入门到精通 前端炫酷代码分享 从0到英雄 vue成神之路 uniapp 从构建到提升 从0到英雄 vue成神之路 解决算法 一个专栏就够了 架
  • ffmpeg实战教程(四)格式转换如MP4转MKV等

    知识延伸 I P B帧和PTS DTS的关系 基本概念 I frame 帧内编码帧 又称intra picture I 帧通常是每个 GOP MPEG 所使用的一种视频压缩技术 的第一个帧 经过适度地压缩 做为随机访问的参考点 可以当成图象
  • 训练loss不下降原因集合

    11年it研发经验 从一个会计转行为算法工程师 学过C c java android php go js python CNN神经网络 四千多篇博文 三千多篇原创 只为与你分享 共同成长 一起进步 关注我 给你分享更多干货知识 目录 一 t
  • 人工智能发展现状

    作者 Chen Zhang 链接 https www zhihu com question 20102212 answer 126994210 来源 知乎 著作权归作者所有 商业转载请联系作者获得授权 非商业转载请注明出处 随着深度学习技术

随机推荐

  • 数组的浅拷贝与深拷贝

    文章目录 1 数据类型 2 浅拷贝与深拷贝 3 实现深拷贝方法 3 1 JSON string 结合 JSON parse 3 2 递归 4 JS 中的拷贝方法 4 1 concat 4 2 slice 4 3 展开运算符 4 4 Obje
  • 函数栈帧的创建和销毁

    函数栈帧的创建和销毁 目录 一 困惑 二 详解 三 解惑 一 困惑 前期学习的时候 我们可能会有很多困惑 比如 局部变量是怎么创建的 为什么局部变量的值是随机值 函数是怎么传参的 传参的顺序是怎样的 形参和实参是什么关系 函数调用是怎么做的
  • MOT17数据集评估时遇到的一个错误:TypeError: __new__() got an unexpected keyword argument ‘labels‘

    在跑centertrack的test py的最后一步 对MOT17数据集评估这个部分遇到了一些bug 记录一下 问题1 找不到gt文件 解决方法 因为本地空间不够 所以我没把mot17数据集放在工程目录下直接在opt文件里面改的数据集目录
  • tx2安装onnx报错

    ERROR Failed building wheel for onnx Failed to build onnx ERROR Could not build wheels for onnx which is required to ins
  • 爬虫逆向(某财)

    在搜索中输入关键字 搜索 日期 涨 本文主要逆向的参数 代码实现 1 js部分 var aling this var document var window function n t function var r e a r e a n v
  • matlab使用教程(5)—矩阵定义和基本运算

    本博客介绍如何在 MATLAB 中创建矩阵和执行基本矩阵计算 MATLAB 环境使用矩阵来表示包含以二维网格排列的实数或复数的变量 更广泛而言 数组为向量 矩阵或更高维度的数值网格 MATLAB 中的所有数组都是矩形 在这种意义上沿任何维度
  • Vue弹窗的使用与传值

    Vue弹窗的使用 Vue弹窗传值
  • 练习-Java继承和多态之super关键字

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 题目 练习 Java继承和多态之super关键字 任务 定义 Person 类和 Student 类 分别实现定义各自基本属性的功能 代码 Student java 定义 P
  • 6月3号绝地求生服务器维护,绝地求生6月3日维护到几点_2020年6月3日绝地求生更新维护开服时间介绍_咖绿茵手游站...

    绝地求生6月3日维护到几点呢 2020年6月3日绝地求生对正式服进行停机维护 接下来就让咖绿茵小编给大家带来 绝地求生 6月3日更新维护开服时间介绍 绝地求生 6月3日更新维护开服时间介绍 绝地求生在北京时间6月3日 星期三 08点30分开
  • 解决Flutter PageView页面切换时数据刷新问题

    首先补充一下 之前我没有写是在切换pageView页面的主页面写还是展示的子页面写 这里我说一下 一定要在切换的子页面里面使用这个方法 否则不生效 例如使用了PageView组件 每次切换页面时都会走initState 和dispose 方
  • TCP/IP详解 卷1:协议 学习笔记 第二十六章 Telnet和Rlogin:远程登录

    TCP IP网络上 有两种应用提供远程登录功能 1 Telnet 几乎每个TCP IP的实现都提供这个功能 它能够运行在不同操作系统的主机之间 Telnet通过客户进程和服务器进程之间的选项协商机制 从而确定通信双方可以提供的功能特性 2
  • [JAVA数据结构]HashMap

    目录 1 HashMap 1 1Map的常用方法 1 2HashMap的使用案例 1 HashMap 基于哈希表的实现的Map接口 Map底层结构 HashMap 底层结构 哈希桶 插入 删除 查找时间复杂度 O 1 是否有序 无序 线程安
  • 了解 z-index 层叠等级属性的使用

    当对多个元素同时设置定位时 定位元素之间有可能会发生重叠 接下来我会用代码来进行演示和讲解层叠的效果和使用 代码如下
  • provider模式学习——simpledemo

    1 首先建立一个类库项目 Provider Demo 添加如下类 并要添加引用System Configuration 1 1 创建ParentProvider类继承自provider的基类 namespace provider Provi
  • 如何做好项目的需求与业务调研?

    1 调研工作如何组织 很多人认为调研工作极难 水平最高的人才能做好一次调研 软件工程中也强调需求获取是最难的事情 有的人要么认为不过如此 甚至是一个普通技术支持都可以做的工作 现在有很多企业上管理软件之前都希望软件公司派人来了解情况 提出针
  • 搭建游戏环境

    搭建游戏环境 安装docker curl fsSL https get docker com bash s docker mirror Aliyun 安装docker compose curl L https github com dock
  • 标准模板库(STL)

    STL 标准模板库 Standard Template Library STL 是一个基于模板的容器类库 可用STL创建一个类 为任意数据类型定义矢量 链表 队列和栈等操作 STL中的泛型算法 generic algorithm 和函数对象
  • Python——— 面向对象

    一 初识面向对象 Python完全采用了面向对象的思想 是真正面向对象的编程语言 完全支持面向对象的基本功能 例如 继承 多态 封装等 Python 支持面向过程 面向对象 函数式编程等多种编程范 式 Python 中 一切皆对象 我们在前
  • 使用pickle模块序列化数据,优化代码

    使用pickle模块序列化数据 优化代码 pickle是Python标准库中的一个二进制序列化和反序列化库 可以以二进制的形式将数据持久化保存到磁盘文件中 可以将数据和代码分离 提高代码可读性和优雅度 一 pickle模块介绍 pickle
  • lstm神经网络_机器翻译与高级循环神经网络LSTM,GRU

    No 1 机器翻译概述 机器翻译就是将一种语言翻译为另一种语言 所有机器翻译系统本质上都是基于统计的 我们将总尝试使用非常大的语料库 一般称为平行语料库 在语料库中 有许多句子或段落以不同语言表述 No 2 深度学习出现之前的机器翻译模型