李宏毅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,1?p4,1?(a)+α3,2?p3,2?(?)

公式拆解:

  • 第一項 α 4 , 1 p 4 , 1 ( a ) α_{4,1}p_{4,1}(a) α4,1?p4,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,2?p3,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) h?align(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 l0?c),直到觸及模型參數 θ θ θ,累加各路徑的梯度貢獻。

在這里插入圖片描述
總概率 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,3?p4,2?(t)+β5,2?p4,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
英文地址,請注明出處:http://en.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;超萬字解析&#…