【王树森】RNN模型与NLP应用(7/9):机器翻译与Seq2Seq模型(个人向笔记)

Machine Translation Data

  • 做机器学习任务的第一步都是处理数据,我们首先需要准备机器翻译的数据。
  • 由于我们是学习用途,因此拿一个小规模数据集即可:http://www.manythings.org/anki/
  • 下面的数据集中:一个英语句子对应多个德语句子,如果翻译的时候能命中其中的一个则算作完全正确。
    在这里插入图片描述

1. Preprocessing

  • 将大写全部转化为小写
  • 去掉标点符号
    在这里插入图片描述

2. Tokenization & Build Dictionary

  • 我们分别需要两个Tokenizer,一个英语Tokenizer和一个德语Tokenizer
  • 英语的text最后经过英语Tokenizer转化为 input_tokens
  • 德语的text经过德语Tokenizer转化为target_tokens
  • 在Tokenization后需要建立两个字典,一个英语字典和一个德语字典
  • Tokenization既可以是char-level的,也可以是word-level的
    在这里插入图片描述
  • 本节课使用的是char-level的Tokenization
  • 但是实际的机器翻译都是用word-level的,因为它们的数据集足够大
    在这里插入图片描述
    Question:为什么要用两个不同的Tokenizer?
    答案是在char-level中,语言有不同的char,如下图所示:英语和德语的char总数并不相同,希腊语也类似:
    在这里插入图片描述
    而在word-level的情况下则更需要两个了,原因是:①词汇完全不一样。②分词方法不同。
  • 下面是经过Tokenizaion后的字典:其中 \t 是起始符,\n是终止符。选用其他的字符也行,只要不和已有的冲突即可。
    在这里插入图片描述

3. One-Hot Encoding

  • 经过上面的Tokenize后,我们可以将一段text通过字典转化为一个个数
    在这里插入图片描述在这里插入图片描述
  • 接下来我们把每一个数字用一个One-Hot向量表示如下:
    在这里插入图片描述

Training the Seq2Seq Model

  • LSTM Encode用于提取输入英文文本的信息,它将这句话的最后状态信息作为输入传到LSTM Decoder
  • LSTM Decoder用于生成德语,这其实就是上节课讲到的文本生成器,只不过区别在于这里的文本生成器的初始向量为LSTM Encoder,接受了输入的英语文本的特征作为初始状态,Decoder通过被输入的这个状态来指导这句英语是 go away
  • LSTM Decoder作为一个文本翻译器,那么它需要每次接受一个输入,然后输出对下一个字符的预测。
  • LSTM Decoder第一个输入必须是起始符,这也是为什么需要定义一个起始符的原因
  • 起始符后面预测的字母为m,我们对m作One-Hot Encoding,作为标签y和预测的概率p一起传入交叉熵损失函数,我们希望p尽量接近y,所以损失越小越好。这样我们就可以利用反向传播计算梯度,梯度会传到Decoder,然后顺着Decoder传到Encoder,利用梯度下降即可更新Decoder和Encoder的参数。
  • 我们不断重复这个过程,直到这句德语被预测完

在这里插入图片描述

Seq2Seq Model in Keras

最后对Dense作反向传播的时候可以顺着这张图的链路一直传到Encoder和Decoder
在这里插入图片描述


Inference

  • 在预测时,我们用LSTM Encoder把go away转化为状态向量指导Decoder进行翻译。
    在这里插入图片描述

  • 而Decoder则是从 \t(起始符)开始对整句德语进行预测,过程和上节课讲到的文本生成器一致,直到遇到终止符 \n。
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述


Summary

在这里插入图片描述


How to Improve

1. Bi-LSTM instead of LSTM(Encoder only!)

  • Encoder对一个句子只取最后的那个状态向量,最后的状态向量包含句子的所有信息
  • 如果句子很长的话就会导致遗忘,导致传入的英语文本信息不全导致遗漏
  • 可以想到用双向LSTM来增加LSTM的记忆力
  • 注意Decoder不能用双向,由于文本生成任务的原因,Decoder只能单向
    在这里插入图片描述

2. Word-level Tokenization

  • 本节课用的时char-level比较方便,但是会导致一个句子比较长,容易导致LSTM的遗忘
  • 如果用word-level的话,token的长度会缩短四到五倍,比较容易避免遗忘
  • 但是这样的话需要一个额外的Embedding层,这样就需要大量的数据来对Embedding层的参数进行训练
  • 若训练数据不够而Embedding层的参数又过多就会导致过拟合,这样就还可能需要额外的预训练
    在这里插入图片描述

3. Multi-Task Learning

  • 在任务里多加一个训练从英语到英语的任务,这样在数据量不变的情况下,可训练的数据就多了一倍,这样Encoder会被训练得更好
    在这里插入图片描述
  • 还可以增加更多的任务,比如训练英语到其他语言的翻译,虽然增加了更多Decoder,而且德语Decoder没有改进,但是Encoder只有一个,这样可以更好的训练Encoder。翻译效果还是会提升。
    在这里插入图片描述
    在这里插入图片描述

4. Attention

下节课!

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

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

相关文章

Transforms使用

文章目录 一、认识Transforms二、ToTensor方法使用三、展示图片的方法 一、认识Transforms transforms 是 torchvision 库中的一个模块,它提供了一系列的图像预处理功能。这些功能可以被用来对图像数据进行变换,以便它们能够被神经网络模型更好地处理。…

24:【stm32】DMA数据搬运

DMA数据搬运 1、DMA的简介2、STM32中的DMA结构3、案列3.1、将数组DataA中的数据搬运到DataB中3.2、ADC扫描模式DMA 1、DMA的简介 DMA是直接存储器存取,它可以提供外设寄存器和存储器,存储器与存储器之间的高速数据的传输,无需CPU的干预&…

24数学建模国赛提供助攻(13——灰色系统理论)

需要资料和助攻的小伙伴可以看文章末尾链接加入企鹅!!!! 点击链接获取资料以及国赛助攻https://qm.qq.com/q/NGl6WD0Bky

手撕Python之散列类型

1.字典 思考:如果有多个数据,例如:“凯子”,“男”,19,如何快速存储这些数据 多数我们是通过列表进行存储的 li[凯子,男,19] 在定义完这个列表之后我们如何来找到数据凯子呢? 我们可以通过…

嵌入式全栈开发学习笔记---Linux系统编程(进程间通信)

目录 进程间通信概述 进程通信目的 进程间通信的发展 进程间通信分类 管道通信 无名管道 有名管道mkfifo() 信号 发送信号kill & raise 忽略信号signal() 发送信号alarm() 消息队列 消息队列使用的步骤 创建消息队列msgget() 读写消息队列msgrcv()/msgsnd()…

Your connection to this site is not secure

chrome 打开某一个网站的网页地址栏提示Your connection to this site is not secure,同一个网站的其它地址栏打开不会 无效的方案 浏览器地址栏输入: chrome://flags 找到下边的选项,从Default改为Disabled即可成功解决 亲测这个方法不行 解决方案 点击右上角的3个…

渗透测试靶机--- DC系列 DC-6

渗透测试靶机— DC系列 DC-6 开启靶机,登录页面,平平无奇 扫描ip,端口,服务等信息 访问80,发现这里是WordPress站点 直接wpscan扫描一下用户名wpscan --url http://wordy -e u 这里可以将扫出来的五个用户名保存&…

64位Office API声明语句第001讲

跟我学VBA,我这里专注VBA, 授人以渔。我98年开始,从源码接触VBA已经20余年了,随着年龄的增长,越来越觉得有必要把这项技能传递给需要这项技术的职场人员。希望职场和数据打交道的朋友,都来学习VBA,利用VBA,起码可以提高…

数理天地杂志数理天地杂志社数理天地编辑部2024年第12期目录

基础精讲 “瓜豆模型”与动点问题探析 明倩妤; 2-3 二次函数参数取值范围常见题型分析 邹纯; 4-5 基于数形结合思想的初中数学解题实践——以初中函数问题为例 李玉平; 6-7 旋转思想在构造全等三角形中的渗透 赵兴燕; 8-9 初中数学“一元一次方程”试题设计…

传统CV算法——特征匹配算法

Brute-Force蛮力匹配 Brute-Force蛮力匹配是一种简单直接的模式识别方法,经常用于计算机视觉和数字图像处理领域中的特征匹配。该方法通过逐一比较目标图像中的所有特征点与源图像中的特征点来寻找最佳匹配。这种方法的主要步骤包括: 特征提取&#xff…

实现进程间通信的几种方式

实现进程间通信的几种方式 一. 传统的进程间通信 - 管道文件 管道是 UNIX 系统中最古老的进程间通信技术。早期的管道是半双工通信,现有的系统管道是全双工通信。管道是一种特殊的文件,数据在文件中是流动的,读取之后自动消失,如…

【重学 MySQL】二、MySQL 介绍

【重学 MySQL】二、MySQL 介绍 MySQL 概述MySQL 的主要特点MySQL 的应用场景结论 MySQL 发展史初始创建与发布开源与快速成长重要版本发布收购与变革分支与竞争持续发展与现代应用 关于 MySQL8.0主要新特性和改进兼容性和迁移应用场景总结 为什么选择 MySQLOracle VS MySQL基本…

Java-线程的生命周期7大状态

在 Java 中,线程的生命周期可以分为多个状态,这些状态描述了线程从创建到终止的整个过程。Java 线程的生命周期主要包括以下七大状态: 1.新建状态(New) 当一个线程对象被创建但尚未调用 start() 方法时,线…

mysql高级sql

一,查询 1.按关键字排序 1.1用 **ORDER BY** 语句来实现排序: - ORDER BY 语句用于对查询结果进行排序。可以根据一个或多个字段的值进行升序(ASC)或降序(DESC)排序。1.2排序可针对一个或多个字段&#…

终于有人把数据中台讲明白了

在大数据发展的黄金期,几乎所有的高科技企业都在思考一个问题:海量数据作为大多数企业发展不可避免的一个趋势之后,企业该怎么去应用这部分数据资产,会对其商业产生什么影响,如何使数据对企业产生正面的推动而不是成为…

mysql高级知识之集群

一、安装 源码编译MySQL,若需要MySQLtar包可私信我 #创建数据目录 mkdir /data/mysql -p#安装相关依赖 yum install libtirpc-devel-0.2.4-0.16.el7.x86_64.rpm yum install cmake gcc-c++ openssl-devel ncurses-devel.x86_64 libtirpc-devel-1.3.3-8.el9_4.x86_64.rpm rpcgen…

安防视频综合管理系统EasyCVR视频汇聚平台集群部署出现状态不同步的情况是什么原因?

随着视频监控技术的快速发展,各类视频资源的整合、管理与分发成为了安防行业的重要挑战。视频综合管理系统EasyCVR视频汇聚平台通过集群部署,实现了视频资源的高效整合与管理。集群部署不仅能够提升系统的处理能力和稳定性,还能有效避免单点故…

JVM面试(四)类加载器和双亲委派机制

什么是类加载器? 简单来说的话,是用于实现“类加载动作”的加载器 “通过一个类的全限定名来获取描述该类的二进制字节流”这个动作放到Java虚拟机外部去实现,以便让应用程序自己决定如何去获取所需的类。实现这个动作的代码被称为“类加载器…

Ollama拉起本地模型以及rag系统部署。

什么是 Ollama ? Ollama 是一个简明易用的本地大模型运行框架。能在本地启动并运行 Llama、qwen、Gemma 及其他大语言模型,没有GPU资源照样可以拉起模型,和LocalAI 比较类似,但是加载模型更容易。 1.安装 安装后运行&#xff0c…

解剖学上合理的分割:通过先验变形显式保持拓扑结构|文献速递--基于深度学习的医学影像病灶分割

Title 题目 Anatomically plausible segmentations: Explicitly preserving topology through prior deformations 解剖学上合理的分割:通过先验变形显式保持拓扑结构 01 文献速递介绍 进行环向应变或壁厚度的计算,这些测量通常用于诊断肥厚性心肌病…