Sequence to Sequence model

news2025/2/14 5:42:57

基础模型

基础模型是用RNN模型,前部分是encoder用来寻找法语输入的编码,后半部分是decoder用来生成英文翻译作为输出,每次输出一个单词,直到输出结束标志如EOS。

下面是另一个例子,在CNN模型输出层之前会输出图片的向量,我们将这个向量输入到RNN模型,然后让RNN模型输出标题,直到遇到结束符

可以看到上述两个基础模型更像是语言模型的特化版本,语言模型的输入是0向量,而这两个模型的输入是Encoder的输出。

选择最可能的输出

在上面的基础模型中,有了Encoder的输出作为decoder的输入,decoder是一个特化的语言模型,它用来评估一个序列在特定输入下的概率,我们需要挑选出概率最大的输出。

这里我们不能使用上面所说的类似贪心的方式输出,即每轮输出都选用概率最大的下个单词,并将其作为下一轮输出的输入。课程举了一个例子,比如翻译时,前两个输入是Jane is,预测第三个单词时在语言模型中going命中的概率通常要大于visiting,这样会导致语言模型生成了下面的输出,但是可以看到下面的输出质量是不如上面的。

但是所有单词的任意组合是指数形式上涨的,我们没法评估所有的单词组合的概率,因此需要有近似算法来挑选出可能得输出加以评估。

Beam Search

基础版本

以下图词库大小为10000,Beam width为3作为例子,将Encoder的输出作为Decoder输入,并预测下个词的概率之后,选取概率最高的3个单词,分别作为下一轮输入,再预测下一轮输出,一共会有30000个概率,再选取最高的3个,重复上述操作。下面两张图代表了两轮迭代,直到迭代到EOS。

优化版本
打分优化

上面基础版本中最大化的概率函数存在一些问题:

1. 一个序列的概率是每词条件输入的概率连乘,概率都是小于1的,这会导致越乘越小,类似梯度消失问题。

2. 最大化这个概率函数会倾向于选取更短的序列,因为每多一个单词就要多乘一个小于1的数字。

解决上面问题可以分为两步:

1. 首选对概率连乘函数取log,因为是单调递增函数不影响最终排序结果,而且避免了小数连乘,可以解决上面第一个问题,但是依然存在序列越长分数越低的问题

2. 分数乘一个系数\frac{1}{T_y^\alpha }T_y为序列长度,\alpha为超参。

Beam Width选择

没有固定值,上面例子中使用的3,实际生产中可能会用10、100,在学术界为了发表论文时用更准确的数字可能会用1000甚至3000。但是随着B的增长,收益是边际效益递减的。实际应用中可以使用一组备选测试实际效果。

另外不管B多大,Beam Search不能保证返回的全局最优的,但是它执行效率非常高。

误差分析

使用误差分析判断输出结果(比如翻译)不准确的问题,应该归因到RNN模型本身,还是应该归因于B的超参选择有问题。

如下图,可以用你的模型分别计算准确翻译和不准确翻译逐单词输入的概率结果,比较两者概率大小。如果模型认为准确结果的概率更大可以归因于B,而如果确实准确结果的概率就是小于不准确结果,说明是模型本身的问题。

然后对于更多翻译不准确的误差进行分析,分析B导致错误和RNN模型导致错误的比例,来确定后续的改进方向。

BLEU Score(只用于评估机器翻译输出结果,跟模型本身无关)

对于不同的翻译结果如何进行评估是个问题,现在通常使用BLEU分来进行评估。BLEU全称 bilingual evaluation understudy,表达的意思是人类评估的替补。这是2002年提出的评估机器翻译的论文,这篇论文大大推动了机器翻译领域的发展。

比如下图,我们可以将机器翻译的输出了7个the,the在准确翻译中存在,可以认为精确度为7/7;也或者改进的精准度计算中,分子是reference中the出现次数,分母是机器翻译输出中出现次数,则为2/7

我们也可以评估一起出现的临近的两个单词的命中情况,如下图。

即,同理可推广到相邻的n个单词的命中概率

最终定义

所以最终定义如下,这里增加了一个BP(brevity penalty)简短惩罚系数,因为越短的输出会让你更容易在reference中命中,这会让模型倾向于输出更短的翻译,增加简短惩罚系数避免这种倾向,论文中给出的BP定义见下图。

Attention 模型

基础模型的缺陷

前面的基础模型存在一个问题,就是对于长句子的翻译效果较差,这是因为Encoder先输入完所有单词,然后给出一个输出到Decoder,这个输出需要记忆整个长句子是比较困难的,所以随句子扁长,效果会衰退。

而人类进行翻译时,往往是边读边翻译,而不是读完整个句子再翻译。

模型结构

区别于基础模型,其Encoder还是一个RNN类(比如图里的BiRNN)模型,Decoder也是个RNN模型,但是它的输入不再只有Encoder的一个输出,而是在每一个时间步上都将上一轮输出S^{<t-1>}及Encoder中几个时间步上的输出根据注意力系数加权C^{<1>}=\sum_{t^{'}}^{}\alpha ^{<t,t^{'}>}a^{<t^{'}>}作为输入,其中a^{t^{'}}=({​{\overset{\rightarrow }{a}}}^{t^{'}},{​{\overset{\leftarrow }{a}}}^{t^{'}})。这类似于人类翻译,翻译时会考虑附近的一些单词进行翻译。

每轮迭代所有注意力系数之和为1,这里还有个问题就是注意力系数如何计算

注意力系数的计算

通过额外创建一个小模型(如下图左下角,只有一层),用来预测e^{<t,t^{'}>},并通过softmax函数计算\alpha ^{<t,t^{'}>}。这个模型也在语言模型训练过程的反向传播中通过梯度下降更新。

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

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

相关文章

6.appender

文章目录 一、前言二、源码解析AppenderUnsynchronizedAppenderBaseOutputStreamAppenderConsoleAppenderFileAppenderRollingFileAppenderFileNamePattern 三、总结 一、前言 前一篇文章介绍了appender、conversionRule、root和logger节点的解析, 为的是为本篇详细介绍它们的…

Golang的消息队列架构

一、消息队列的定义和作用 消息队列是一种在不同组件之间传递消息的通信机制。它可以解耦系统的各个部分&#xff0c;提高系统的可靠性和扩展性。消息队列可以在系统之间传递消息&#xff0c;并且在消息发送者和消息接收者之间进行异步通信&#xff0c;使得系统可以更加灵活和高…

GESP5级语法知识(十一):高精度算法(一)

高精度加法&#xff1a; #include<iostream> #include<string> #include<algorithm> using namespace std; const int N501;//高精度数的最长长度 //c[]a[]b[]:高精度加法方案一&#xff1a;对应位相加&#xff0c;同时处理进位 void h_add_1(int a[],int b…

【前端】 react项目使用bootstrap、useRef和useState之间的区别和应用

一、场景描述 我想写一个轮播图的程序&#xff0c;只是把bootstrap里面的轮播图拉过来就用上感觉不是很合适&#xff0c;然后我就想自己写自动轮播&#xff0c;因此&#xff0c;这篇文章里面只是自动轮播的部分&#xff0c;没有按键跟自动轮播的衔接部分。 Ps: 本文用的是函数…

PYYAML反序列化详解

前言 最近看了很多pyyaml反序列化的漏洞利用&#xff0c;但是对漏洞怎么来的&#xff0c;没有进行很详细的分析&#xff0c;所以今天刚好学习一下反序列化的原理 Yaml基本语法 一个 .yml 文件中可以有多份配置文件&#xff0c;用 --- 隔开即可对大小写敏感YAML 中的值&#x…

LeeCode题库第十八题

项目场景&#xff1a; 给你一个由 n 个整数组成的数组 nums &#xff0c;和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] &#xff08;若两个四元组元素一一对应&#xff0c;则认为两个四元组重复&#xff09;&…

Zookeeper 和 Redis 哪种更好?

目录 前言 &#xff1a; 什么是Zookeeper 和 Redis &#xff1f; 1. 核心定位与功能 2. 关键差异点 (1) 一致性模型 (2) 性能 (3) 数据容量 (4) 高可用性 3. 适用场景 使用 Zookeeper 的场景 使用 Redis 的场景 4. 替代方案 5. 如何选择&#xff1f; 6. 常见误区 7. 总结 前言…

公然上线传销项目,Web3 的底线已经被无限突破

作者&#xff1a;Techub 热点速递 撰文&#xff1a;Yangz&#xff0c;Techub News 今天早些时候&#xff0c;OKX 将上线 PI 的消息在圈内引起轩然大波&#xff0c;对于上线被板上钉钉为传销盘子的「项目」 &#xff0c;Techub News 联系了 OKX 公关&#xff0c;但对方拒绝置评…

C语言第18节:自定义类型——联合和枚举

1. 联合体 C语言中的联合体&#xff08;Union&#xff09;是一种数据结构&#xff0c;它允许在同一内存位置存储不同类型的数据。不同于结构体&#xff08;struct&#xff09;&#xff0c;结构体的成员各自占有独立的内存空间&#xff0c;而联合体的所有成员共享同一块内存区域…

解锁网络安全:穿越数字世界的防护密码

个人主页&#xff1a;java之路-CSDN博客(期待您的关注) 目录 网络安全&#xff1a;数字时代的基石 网络安全面面观 &#xff08;一&#xff09;定义与范畴 &#xff08;二&#xff09;发展历程 网络安全面临的威胁 &#xff08;一&#xff09;恶意软件肆虐 &#xff08;二…

python爬虫解决无限debugger问题

方法一 关闭定时任务 关闭断点执行代码打开断点 # 无限debugger产生原因 # 1. web开发者工具打开 # 2. js代码中有debugger # 3. js有定时处理[推荐] for(let i0;i<99999;i){window.clearInterval(i)}方法二 关闭breakpoint 方法三 修改JS代码 使用fiddler&#xff0c;抓…

C# 两种方案实现调用 DeepSeek API

目录 序 开发运行环境 访问API的一个通用方法 原生官网实现 申请 API key 调用实现 调用示例 腾讯云知识引擎原子调用 申请 API key 调用示例 小结 序 DeepSeek&#xff08;深度求索&#xff09; 最近可谓火爆的一塌糊涂&#xff0c;具体的介绍这里不再赘述&#x…

Linux下的进程切换与调度

目录 1.进程的优先级 优先级是什么 Linux下优先级的具体做法 优先级的调整为什么要受限 2.Linux下的进程切换 3.Linux下进程的调度 1.进程的优先级 我们在使用计算机的时候&#xff0c;通常会启动多个程序&#xff0c;这些程序最后都会变成进程&#xff0c;但是我们的硬…

anolis os 8.9安装jenkins

一、系统版本 # cat /etc/anolis-release Anolis OS release 8.9 二、安装 # dnf install -y epel-release # wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo # rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.…

Java基础知识总结(四十八)--TCP传输、TCP客户端、TCP服务端

**TCP传输&#xff1a;**两个端点的建立连接后会有一个传输数据的通道&#xff0c;这通道称为流&#xff0c;而且是建立在网络基础上的流&#xff0c;称之为socket流。该流中既有读取&#xff0c;也有写入。 **tcp的两个端点&#xff1a;**一个是客户端&#xff0c;一个是服务…

【python】http.server内置库构建临时文件服务

需要从linux开发机上下载一个文件到本地&#xff0c;约700M比较大&#xff0c;通过sz命令下载较慢且传输过程不稳定连续失败&#xff0c;后采用下面方式解决。 cd到一个目录下执行python -m http.server port&#xff0c;port为服务的端口号&#xff1a; 启动后浏览器中访问…

网络安全ids是什么意思

1、 简述IPS和IDS的异同点&#xff1b; 入侵检测系统&#xff08;IDS&#xff09; IDS&#xff08;Intrusion Detection Systems&#xff0c;入侵检测系统&#xff09;&#xff0c;专业上讲就是依照一定的安全策略&#xff0c;对网络、系统、运行状况进行监视&#xff0c;尽可能…

优选驾考小程序

第2章 系统分析 2.1系统使用相关技术分析 2.1.1Java语言介绍 Java语言是一种分布式的简单的 开发语言&#xff0c;有很好的特征&#xff0c;在安全方面、性能方面等。非常适合在Internet环境中使用&#xff0c;也是目前企业级运用中最常用的一个编程语言&#xff0c;具有很大…

42.水果销售系统(springbootvue的Java项目[含微信小程序])

目录 1.系统的受众说明 2.开发环境与技术 2.1 MYSQL数据库 2.2 Java语言 2.3 微信小程序技术 2.4 SpringBoot框架 2.5 B/S架构 2.6 Tomcat 介绍 2.7 HTML简介 2.8 MyEclipse开发工具 3.系统分析 3.1 可行性分析 3.1.1 技术可行性 3.1.2 经济可行性 3.1.3 操作…

ffmpeg所有版本下载地址

地址如下&#xff1a;Index of /releaseshttps://ffmpeg.org/releases/