李宏毅NLP-7-计算分数和训练和测试

文章目录

    • 分数计算
    • 训练
    • 测试

分数计算

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
插入式序列生成模型的概率计算逻辑,核心是将 “生成序列 h 的过程” 拆解为一系列插入操作,并通过步骤概率的乘积计算总概率 P ( h ∣ X ) P(h∣X) P(hX)。以下从 模型框架、步骤分解、概率计算 三个层面解析:

一、模型框架:插入式生成的 “状态 - 位置” 双维度

  1. 上层:生成状态( l 0 , l 1 , l 2 , l 3 l^0,l^1,l^2,l^3 l0,l1,l2,l3
  • 代表生成过程中的阶段,对应目标序列的 token:
    • l 0 l^0 l0:起始状态(对应<BOS>,序列开始);
    • l 1 l^1 l1:生成c后的状态;
    • l 2 l^2 l2:生成a后的状态;
    • l 3 l^3 l3:生成t后的状态。
  • 状态转移规则:
    • 插入目标 token(如cat)时,状态前进(如 l 0 → l 1 l^0→l^1 l0l1);
    • 插入占位符 φ时,状态不变(如 l 1 → l 1 l^1→l^1 l1l1)。
  1. 下层:位置索引( x 1 ∼ x 6 x^1∼x^6 x1x6
  • 表示序列的位置坐标(共 6 个位置,对应图中列),每个位置可插入 token 或 φ
  • 绿色模块 h 1 ∼ h 6 h^1∼h^6 h1h6:每个位置的特征表示,用于预测插入概率。

二、步骤分解:生成序列 h 的插入路径

目标序列 h = ϕ c ϕ ϕ a ϕ t ϕ ϕ h=ϕcϕϕaϕtϕϕ h=ϕcϕϕaϕtϕϕ,其生成过程可拆解为 9 步插入操作,每一步对应一个概率:

步骤插入位置当前状态插入内容概率符号含义
1x1l0φp1,0(ϕ)状态l0下,向位置x1插入 φ
2x2l1cp2,0(c)状态l1下,向位置x2插入 c
3x2l1φp2,1(ϕ)状态l1下,向位置x2插入 φ
4x3l1φp3,1(ϕ)状态l1下,向位置x3插入 φ
5x4l2ap4,1(a)状态l2下,向位置x4插入 a
6x4l2φp4,2(ϕ)状态l2下,向位置x4插入 φ
7x5l2tp5,2(t)状态l2下,向位置x5插入 t
8x5l3φp5,3(ϕ)状态l3下,向位置x5插入 φ
9x6l3φp6,3(ϕ)状态l3下,向位置x6插入 φ

三、概率计算:链式法则的应用

生成序列 h h h 的总概率 P ( h ∣ x ) P(h∣x) P(hx)所有插入步骤概率的乘积(遵循概率的链式法则):
在这里插入图片描述
四、核心思想:为什么这样设计?

  1. 灵活性:允许在任意位置插入token 或 φ,突破传统 “逐 token 续写” 的限制,更适合文本编辑、补全、改写等任务。
  2. 条件依赖:每个插入步骤的概率 同时依赖 “当前生成状态( l j l^j lj)” 和 “插入位置( x i x^i xi)”,用 p i , j ( ⋅ ) pi,j(⋅) pi,j() 精准建模这种依赖关系。
  3. 可扩展性:通过 “状态转移 + 位置插入” 的框架,可轻松扩展到更长序列或更复杂的生成任务。
  4. 插入式生成的概率 = 各步骤插入操作的概率乘积,每一步的概率由 “当前生成状态” 和 “插入位置” 共同决定。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
插入式生成的关键是 “允许插入 φ,并让每个插入步骤的概率同时看‘生成到哪一步(状态 l)’和‘插在哪里(位置 x)’”,否则模型会漏掉很多合理的生成路径,并且与之前的路径是独立。
在这里插入图片描述
在这里插入图片描述
这张图围绕 插入式序列生成模型中的 “对齐分数( α i , j α_{i,j} αi,j)” 展开,核心是用 动态规划(DP) 高效计算 所有可能生成路径的概率和。以下从 定义、公式、网格逻辑、求和意义 四个维度解析:

  1. α i , j α_{i,j} αi,j 的定义

α i , j α_{i,j} αi,j: {所有对齐方式的分数之和,这些对齐读取第 i i i 个位置特征(如 x i x^i xi),并输出第 j j j 个 token(含 ϕ)。

  • “对齐(alignment)”:指生成序列的一条具体路径(如 “插入 φ→生成 c→插入 φ→…→生成 t”)。
  • “分数”:路径中各步骤的概率乘积(如之前的 P ( h ∣ X ) P(h∣X) P(hX) 分解)。

2. 递推公式: α 4 , 2 = α 4 , 1 p 4 , 1 ( a ) + α 3 , 2 p 3 , 2 ( ϕ ) α_{4,2}=α_{4,1}p_{4,1}(a)+α_{3,2}p_{3,2}(ϕ) α4,2=α4,1p4,1(a)+α3,2p3,2(ϕ)

公式拆解:

  • 第一项 α 4 , 1 p 4 , 1 ( a ) α_{4,1}p_{4,1}(a) α4,1p4,1(a)
    从 **状态( i = 4 , j = 1 i=4,j=1 i=4,j=1) 转移而来,代表:
    • 已读取位置 x 4 x^4 x4,生成前一个 token(如c之后的状态);
    • 现在 生成 token a(概率为$ p_{4,1}(a)$)。
  • 第二项 α 3 , 2 p 3 , 2 ( ϕ ) α_{3,2}p_{3,2}(ϕ) α3,2p3,2(ϕ)
    从 **状态( i = 3 , j = 2 i=3,j=2 i=3,j=2) 转移而来,代表:
    • 已读取位置 x 3 x^3 x3,处于生成阶段 j=2;
    • 现在 插入占位符 ϕ(概率为 p 3 , 2 ( ϕ ) p_{3,2}(ϕ) p3,2(ϕ)),然后转移到 (i=4,j=2)。

3. 网格与路径:动态规划的状态转移
网格结构:

  • 行(纵轴):目标 token(cat),代表 生成阶段(对应之前的 l j l^j lj)。
  • 列(横轴):位置 x 1 ∼ x 6 x^1∼x^6 x1x6,代表 读取的位置特征(对应之前的 x i x^i xi)。

路径与转移:

  • 虚线箭头:代表 “插入 ϕ” 的转移(不推进生成阶段,仅移动位置)。
  • 实线箭头:代表 “生成 token” 的转移(推进生成阶段,同时移动位置)。
  • 蓝色圆点:状态节点 (i,j),如 α 4 , 2 α_{4,2} α4,2 对应 读取 x 4 x^4 x4、生成阶段到 a 的状态。

4. 求和的意义: ∑ h ∈ a l i g n ( Y ) P ( h ∣ X ) ∑_h∈align(Y)P(h|X) halign(Y)P(hX)

  • a l i g n ( Y ) align(Y) align(Y):所有能生成目标序列 Y Y Y(如cat)的**合法插入路径集合(含 φ 的不同插入方式)。
  • 求和:因为生成 Y Y Y 可能有 多条不同的插入路径(如 φ 插入的位置不同),总概率是所有路径的概率之和。
  • α i , j α_{i,j} αi,j 的作用:通过动态规划递推,**避免枚举所有路径,高效计算总概率(每一步仅依赖前两个状态,时间复杂度从指数级降为多项式级)。

核心结论:动态规划如何简化计算?

α i , j α_{i,j} αi,j 累积 “到达状态( i , j i,j i,j)的所有路径概率”,通过递推公式(生成 token 或插入 φ)高效计算,最终求和得到总概率。


训练

在这里插入图片描述
在这里插入图片描述
通过极大似然估计,让模型参数θ尽可能提升 “所有生成真实序列Y的插入路径的总概率”,梯度计算依赖链式法则分解到每个插入步骤的概率。
在这里插入图片描述
每个步骤概率 p i , j ( ⋅ ) p_i,j(⋅) pi,j()的梯度,等于 “参数对该步骤的影响” 乘以 “该步骤对所有生成路径的总贡献”,最终所有步骤的梯度累加即为总梯度。
在这里插入图片描述
通过 BPTT,反向追溯 p 4 , 1 ( a ) p_{4,1}(a) p4,1(a) 的输入(状态 l 1 l^1 l1、位置 h 4 h^4 h4),再追溯 l 1 l_1 l1 的输入( l 0 l_0 l0c),直到触及模型参数 θ θ θ,累加各路径的梯度贡献。

在这里插入图片描述
总概率 P ( Y ∣ X ) P(Y|X) P(YX) 可拆分为 “包含 p 4 , 1 ( a ) p_{4,1}(a) p4,1(a) 的路径”“不包含 p 4 , 1 ( a ) p_{4,1}(a) p4,1(a) 的路径”
在这里插入图片描述
对于 “含 p 4 , 1 ( a ) p_{4,1}(a) p4,1(a) 的路径”,其概率可分解为: P ( h ∣ X ) = p 4 , 1 ( a ) × o t h e r P(h|X)=p_{4,1}(a)×other P(hX)=p4,1(a)×other

  • “other”:路径中 除 p 4 , 1 ( a ) p_{4,1}(a) p4,1(a)外其他步骤的概率乘积(如 p 1 , 0 ( ϕ ) p_{1,0}(ϕ) p1,0(ϕ) p 2 , 0 ( c ) p_{2,0}(c) p2,0(c)⋅… 中不含 p 4 , 1 ( a ) p_{4,1}(a) p4,1(a) 的部分)。

总概率对 p 4 , 1 ( a ) p_{4,1}(a) p4,1(a)的梯度,等于 “所有含 p 4 , 1 ( a ) p_{4,1}(a) p4,1(a)的路径概率和” 除以 p 4 , 1 ( a ) p_{4,1}(a) p4,1(a)

梯度计算通过 “分解路径、提取公共因子 p 4 , 1 ( a ) p_{4,1}(a) p4,1(a)”,将复杂的路径求和转化为 “路径概率和除以该步骤概率”,大幅简化了计算。
在这里插入图片描述
在这里插入图片描述
“反向累积”:与 α i , j α_{i,j} αi,j(正向累积路径概率)对称, β i , j β_{i,j} βi,j序列末尾开始,向前累积路径概率。

2. 递推公式: β 4 , 2 = β 4 , 3 p 4 , 2 ( t ) + β 5 , 2 p 4 , 2 ( ϕ ) β_{4,2}=β_{4,3}p_{4,2}(t)+β_{5,2}p_{4,2}(ϕ) β4,2=β4,3p4,2(t)+β5,2p4,2(ϕ)

  • 正向 a i , j a_{i,j} ai,j:计算 “到达状态(i,j)的所有路径概率和”,用于前向预测。
  • 反向 β i , j β_{i,j} βi,j:计算 “从状态(i,j)出发到序列结束的所有路径概率和”,用于反向传播或联合概率计算。
  • 协同作用:结合 a i , j a_{i,j} ai,j 和 , β i , j β_{i,j} βi,j可高效计算 单个步骤对总概率的贡献(如之前的梯度分解),避免枚举所有路径。

在这里插入图片描述
结合链式法则,总梯度可简化为:
在这里插入图片描述

  • 每个步骤 p i , j ( ⋅ ) p_{i,j}(⋅) pi,j() 对总概率的梯度贡献,等于 “参数对该步骤的影响” 乘以 “该步骤的前向累积概率 α” 乘以 “该步骤的反向累积概率 β”。
  • 通过正向 α α α 和反向 β β β 的 “双累积”,将 “所有路径的枚举求和” 压缩为 “单步的 α ⋅ p ⋅ β α⋅p⋅β αpβ 乘积”,使梯度计算的复杂度从指数级降为线性级

测试

在这里插入图片描述
在这里插入图片描述

由于枚举所有路径不可行,解码时放弃 “全局概率和最大”,转而寻找 “单条路径概率最大” 的 h h h,再还原出 Y Y Y。用 近似搜索(如贪心、 beam search) 找局部最优路径,平衡计算复杂度与生成质量。

在这里插入图片描述
计算的时候保存概率最大的那个即可。

在这里插入图片描述

模型核心特点适用场景缺点
LAS依赖注意力,隐式对齐,建模长距离依赖离线高精度识别(如语音转写)不支持在线实时处理
CTC独立解码,显式对齐,支持在线实时简单识别(如关键词检测)无法建模 token 依赖
RNN - T依赖解码,显式对齐,支持在线,建模依赖实时高精度识别(如语音助手)训练和推理复杂度较高

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

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

相关文章

Python字符与ASCII转换方法

在Python中&#xff0c;可以使用内置函数 ord() 和 chr() 来转换字符和ASCII码&#xff1a; ​获取字符的ASCII码​ - 用 ord() ascii_code ord(A) # 返回 65 ​将ASCII码转为字符​ - 用 chr() character chr(65) # 返回 A 示例&#xff1a; # 打印字母A-Z的ASCII码…

[IMX][UBoot] 10.启动流程 (6) - bootz 命令启动 Linux

文章链接 UBoot 启动流程 (1) - 基本流程 UBoot 启动流程 (2) - 平台前期初始化阶段 - board_init_f UBoot 启动流程 (3) - UBoot 程序重定位 - relocate_code UBoot 启动流程 (4) - 平台后期初始化阶段 - board_init_r UBoot 启动流程 (5) - UBoot 运行阶段 - main_loop …

TCP 三次握手协商 MSS 前,如何确定 MSS 值(结合 Linux 内核源码分析)

文章目录 一、SYN总结影响 SYN MSS 的因素 二、SYNACK总结影响 SYNACK MSS 的因素 结合 Linux 内核源码 一、SYN 总结影响 SYN MSS 的因素 套接字选项 TCP_MAXSEG路由选项 advmss出口 MTU 减去 40(TCP 和 IP 的固定首部大小)IPV4_MAX_PMTU - 40(同上) 二、SYNACK 总结影响 SY…

面试150 矩阵置0

思路 我们使用两个标记集合&#xff0c;分别记录当矩阵的元素为0的时候的横、纵坐标。然后在对矩阵元素进行遍历&#xff0c;如果所在行或者所在列的索引在集合中&#xff0c;对应的矩阵元素修改为0即可 class Solution:def setZeroes(self, matrix: List[List[int]]) -> N…

Element UI 完整使用实战示例

以下是 Element UI 的完整使用实战示例&#xff0c;涵盖从环境搭建、基础组件使用到项目实战的全流程&#xff0c;结合多个实际场景和代码示例&#xff1a; 一、环境搭建与基础配置 1. 安装 Element UI 通过 npm 或 yarn 安装&#xff1a; npm install element-ui --save # …

C# 线程同步(一)同步概念介绍

目录 1.阻塞&#xff08;Blocking&#xff09; 2.阻塞 VS 轮询 3.线程状态 到目前为止&#xff0c;我们已经阐述了如何在线程上启动任务、配置线程以及实现双向数据传递。同时&#xff0c;我们也说明了局部变量是线程私有的&#xff0c;而引用可以通过共享字段在线程间传递以…

解决leetcode第3588题.找到最大三角形面积

3588.找到最大三角形面积难度&#xff1a;中等问题描述&#xff1a;给你一个二维数组coords&#xff0c;大小为nx2&#xff0c;表示一个无限笛卡尔平面上n个点的坐标。找出一个最大三角形的两倍面积&#xff0c;其中三角形的三个顶点来自coords中的任意三个点&#xff0c;并且该…

WIFI 安全测试记录

之前为实训课特意买的无线网卡没用上&#xff0c;但是我怎么可能让他荒废。所以用了几个下午&#xff0c;浅学了WiFi&#xff0c;当然没找到什么好教材&#xff0c;自己摸索着学的很基础&#xff0c;主要是当练习了&#xff0c;特此把我此前学习…WiFi密码实践过程写上来。 省流…

android14设置--网络--Internet副标题修改

收银机订制项目 插SIM卡&#xff0c;设备使用数据流量时&#xff0c;设置–网络–Internet副标题显示对应SIM卡运营商名称&#xff0c;客户要求修改这时的名称(注意图标也要同步修改) packages\apps\Settings\src\com\android\settings\network\InternetPreferenceController.j…

Web3区块链有哪些岗位?

Web3区块链领域的岗位丰富多样&#xff0c;涵盖技术开发、产品管理、运营、商务等多个方面&#xff0c;以下是具体介绍&#xff1a; - 技术开发类&#xff1a; - 智能合约开发工程师&#xff1a;负责编写、审计和优化智能合约&#xff0c;常见于DeFi开发&#xff0c;包括抵押…

解决 Spring Boot 对 Elasticsearch 字段没有小驼峰映射的问题

场景重现在使用 MyBatis/Mybatis-Plus 框架对 MySQL 操作时习惯了字段名小驼峰映射&#xff0c;然而在操作 Elasticsearch 时发现字段名没有小驼峰映射。解决方法1. 使用 ObjectMapper 手动转换&#xff1a; 这是最直接也最常用的方法。 在 Spring Boot 应用中使用 ObjectMappe…

Error:Cannot find module ‘chokidar‘

错误复现 在vue开发中&#xff0c;出现报错&#xff1a;Error&#xff1a;Cannot find module ‘chokidar’ 原因 缺包导致 解决方案 直接安装依赖包 npm install chokidar依旧无效&#xff0c;删除node_modules重新安装 rm -rf node_modules npm i

Spring AI 向量数据库详解与 RAG 简单实战项目

一、什么是向量数据库&#xff1f; 向量数据库用于存储、检索稠密语义向量&#xff08;Embedding&#xff09;&#xff0c;是构建 RAG&#xff08;检索增强生成&#xff09;系统的核心组件。它支持近似最近邻搜索&#xff08;ANN&#xff09;&#xff0c;可根据语义相似度找出…

【RK3568+PG2L50H开发板实验例程】Linux部分/FPGA FSPI 通信案例

本原创文章由深圳市小眼睛科技有限公司创作&#xff0c;版权归本公司所有&#xff0c;如需转载&#xff0c;需授权并注明出处&#xff08;www.meyesemi.com) 1. 简介 本案例旨在 ARM端运行 Linux系统&#xff0c;基通过 FSPI测试。 2. ARM端和 FPGA端通信流程 (1)ARM端实现SP…

github如何创建一个自己的仓库保姆级教程

文章目录 准备阶段(github官网)添加ssh公钥添加token创建仓库 本地设置本地代理创建仓库添加文件到仓库进行提交 准备阶段(github官网) 添加ssh公钥 创建SSH KEY。先看一下你C盘用户目录下有没有.ssh目录&#xff0c;有的话看下里面有没有id_rsa和id_rsa.pub这两个文件&#…

LabVIEW 网络流通信功能

LabVIEW 的网络流技术实现主机 VI&#xff08;Host VI&#xff09;与客户端 VI&#xff08;ClientVI&#xff09;间的双向数据交互&#xff0c;包含命令发送与波形数据传输&#xff0c;支持跨设备、跨进程的实时通信&#xff0c;满足分布式系统中数据交互与控制需求。 主机 VI逻…

Prompt 精通之路(一)- AI 时代的新语言:到底什么是 Prompt?为什么它如此重要?

AI 时代的新语言&#xff1a;到底什么是 Prompt&#xff1f;为什么它如此重要&#xff1f; 标签&#xff1a; #Prompt新手指南 #提示词入门 #AI指令 #人工智能 #ChatGPT &#x1f680; Prompt 精通之路&#xff1a;系列文章导航 第一篇&#xff1a;AI 时代的新语言&#xff1a…

uniapp 滚动tab

uniapp woui unibest <route lang"json5">{style: {navigationBarTitleText: 知识产权,navigationBarBackgroundColor: #C80F06,navigationBarTextStyle: white,backgroundColorTop: #C80F06,},} </route> <template><view class"bgc-b …

日事清驾驶舱模式上线:实时数据更新+项目管理+数据可视化,提升决策效率​

大家好&#xff01;我们在日事清最新更新中推出了一个令人激动的新功能——驾驶舱模式。这一全新界面将为企业管理者和团队提供一个全面、实时的数据展示平台。下面&#xff0c;让我们详细了解这个功能如何帮助您更好地把握企业动态和提升决策效率。 快速入口&#xff1a;一键激…

【Maven】Maven深度避坑指南:依赖冲突全维度解决方案与工业级实战(超万字解析)

注&#xff1a;本文基于50大型企业级项目经验&#xff0c;结合Maven底层源码机制&#xff0c;系统化解决依赖冲突问题。包含20个实战场景、10类特殊案例及5大防御体系构建方案。 Maven深度避坑指南&#xff1a;依赖冲突全维度解决方案与工业级实战&#xff08;超万字解析&#…