李宏毅NLP-4-語音識別part3-CTC

Connectionist Temporal Classification|CTC


基于連接主義時間分類(CTC)的語音識別架構,具體描述如下:

  1. 輸入層:底部的 x 1 , x 2 , x 3 , x 4 x^1, x^2, x^3, x^4 x1,x2,x3,x4代表輸入的語音信號分幀數據,是語音識別的原始輸入。
  2. 編碼器(Encoder):淺藍色模塊表示編碼器(如循環神經網絡 RNN),負責對輸入的語音幀 x i x^i xi 進行特征提取和時序建模,輸出隱藏狀態 h 1 , h 2 , h 3 , h 4 h^1, h^2, h^3, h^4 h1,h2,h3,h4
  3. 分類器(Classifier):每個隱藏狀態 h i h^i hi輸入到分類器(灰色模塊),通過矩陣 W W W 線性變換后,再經過 Softmax 函數,生成詞匯表 V V V 大小的概率分布( token?distribution \text{token distribution} token?distribution),表示每個時刻對應詞匯表中各 token 的預測概率。
  4. 在線流式處理說明:圖下方文字 “For on - line streaming speech recognition, use uni - directional RNN” 指出,對于在線流式語音識別,采用單向 RNN,確保實時處理,不依賴未來幀的數據。

該架構通過 CTC 解決語音幀與文本標簽的對齊問題,適用于端到端的語音識別任務,特別是需要實時處理的流式場景。
在這里插入圖片描述介紹連接主義時間分類(CTC)的核心特性及處理規則:

  1. 輸入輸出特性
    • 輸入 T T T 個聲學特征,輸出 T T T 個 tokens(忽略下采樣),即輸入與輸出時間步一一對應。
  2. 輸出處理規則
    • 輸出 tokens 包含空白符 ? \phi ?,最終需通過“合并重復 tokens,去除 ( \phi )”得到最終結果。
  3. 示例說明
    • 英文示例:
      • ? ? d d ? e ? e ? p p \phi \ \phi \ d \ d \ \phi \ e \ \phi \ e \ \phi \ p \ p ????d?d???e???e???p?p:合并重復的 d d d e e e p p p,去除 ? \phi ?,得到 d e e p d \ e \ e \ p d?e?e?p
      • ? ? d d ? e e e e ? p p \phi \ \phi \ d \ d \ \phi \ e \ e \ e \ e \ \phi \ p \ p ????d?d???e?e?e?e???p?p:合并重復的 d d d e e e p p p,去除 ? \phi ?,得到 d e p d \ e \ p d?e?p
    • 中文示例:
      • “好 好 棒 棒 棒 棒 棒”:合并重復的“好”“棒”,得到“好 棒”。
      • “好 ? \phi ? ? \phi ? ? ? \phi \ \phi ???”:合并重復的“棒”,去除 ? \phi ?,得到“好 棒 棒”。

通過這些規則,CTC 解決了語音幀與文本標簽對齊的難題,適用于語音識別等序列建模任務。
在這里插入圖片描述
展示連接主義時間分類(CTC)在訓練中的應用,具體內容如下:

  • 左側訓練數據:標注為 “paired training data”,輸入為 x 1 x^1 x1 x 4 x^4 x4的聲學特征,對應標簽為 “好棒”。紅色文字 “much less than T T T, no ? \phi ?” 表明標簽長度遠小于輸入時間步 T T T,且不含空白符 ? \phi ?,體現了 CTC 處理輸入輸出長度不對齊的特性。
  • 右側模型架構
    • Encoder(編碼器):處理輸入$ x^1$到 x 4 x^4 x4,輸出隱藏狀態 h 1 h^1 h1 h 4 h^4 h4
    • Classifier(分類器):將每個 h i h^i hi轉換為 token?distribution \text{token distribution} token?distribution(令牌分布),表示每個時間步對詞匯單元的預測概率。
    • 交叉熵損失(cross - entropy):圖中紅色框標注,每個時間步的輸出通過交叉熵與目標標簽比較,指導模型訓練。盡管標簽長度短于輸入時間步,CTC 仍能通過引入空白符 ? \phi ?、合并重復令牌等機制,解決輸入與輸出的對齊問題,實現端到端的訓練。
      該圖直觀呈現了 CTC 在語音識別等序列任務中,處理輸入輸出不對齊數據的訓練過程與架構。

在這里插入圖片描述
窮舉所有的alignment作為訓練數據
訓練原理:CTC 在訓練時考慮所有可能的對齊路徑(即不同的 ? 插入方式),對這些路徑的概率進行求和,通過最大化目標標簽的總概率來更新模型參數。這種方式解決了語音識別等任務中輸入(如聲學特征)與輸出(如文本標簽)長度不一致的難題,無需精確對齊每一個時間步,只需利用插入 ? 的多種對齊方式進行訓練,使模型學習到更魯棒的序列映射關系。

在這里插入圖片描述
整體通過展示 CTC 模型在語音識別任務中對目標 token / 單詞的高概率預測,直觀證明了 CTC 在序列建模中有效,能夠準確捕捉并輸出目標序列。

在這里插入圖片描述

在這里插入圖片描述
CTC 模型中解碼器(Decoder)存在的問題具體如下:

  • 假設與模型結構

    • 假設前三個幀對應字符 “c”。圖中下方的 “Encoder” 生成隱藏狀態 h 1 , h 2 , h 3 , h 4 h^1, h^2, h^3, h^4 h1,h2,h3,h4,傳遞給上方的解碼器(灰色模塊)。
    • 解碼器特性標注為 “Only attend on one vector”(僅關注一個向量)和 “Each output is decided independently”(每個輸出獨立決定),即每次僅基于單個輸入向量獨立生成輸出,不考慮前后文依賴。
  • 輸出問題示例

    • 輸出序列中出現 “c - ? \phi ? - c”。第一個對話框 “後面不可以再輸出 c 了” 表明,由于前三個幀已對應 “c”,后續不應再輸出 “c”,但解碼器獨立決策未考慮此約束。
    • 第二個對話框 “我不知道前面發生甚麼事?” 體現解碼器獨立生成輸出,缺乏對前文信息的記憶與關聯,導致重復或不合理輸出(如再次輸出 “c”)。

綜上, CTC 解碼器因獨立輸出、不考慮前后文依賴而產生的問題,即無法利用序列的歷史信息進行全局優化決策。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/76040.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/76040.shtml
英文地址,請注明出處:http://en.pswp.cn/web/76040.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

如何構建類似云數據倉庫 Snowflake 的本地數據倉庫?

目錄 一、Snowflake 架構的三大核心價值 二、本地數據倉庫要“像 Snowflake”,關鍵在數據服務化 三、SQL2API:本地數據服務共享的核心引擎 ? 什么是 SQL2API? ? 為什么是構建本地類 Snowflake 架構的關鍵? 四、QuickAPI&a…

設計模式 - 單例模式

一個類不管創建多少次對象,永遠只能得到該類型一個對象的實力 常用到的,比如日志模塊,數據庫模塊 餓漢式單例模式:還沒有獲取實例對象,實例對象就已經產生了 懶漢式單例模式:唯一的實例對象,…

【Windows Cmake工程配置Boost庫】

Windows Cmake工程配置Boost庫 背景配置流程1. 下載Boost庫2. 配置環境變量3. 修改CmakeLists背景 Windows環境下使用cmake開發程序,如圖需要用到boost庫,但是從官網下載的boost庫源碼沒有編譯成功,于是從網上下載boost預編譯庫,直接配置。 配置流程 1. 下載Boost庫 官…

長期堅持的本質,看重休息,看輕自律

01 你有沒有這樣的經歷, 年初立下減肥20斤、讀完100本書、旅行10次等目標, 年中發現進度太慢, 于是降低年初目標, 但年終完成度仍然不及格。 只好跨年時將希望寄托于來年, 明年復明年,明年何其多。 …

Python實現貪吃蛇三

上篇文章Python實現貪吃蛇一,實現了一個貪吃蛇的基礎版本。后面第二篇文章Python實現貪吃蛇二修改了一些不足,但最近發現還有兩點需要優化: 1、生成食物的時候有概率和記分牌重合 2、游戲缺少暫停功能 先看生成食物的時候有概率和記分牌重合的…

LSTM概述

一、LSTM的背景與動機 1.1 為什么需要LSTM? 在深度學習中,普通的神經網絡(如全連接網絡或卷積神經網絡)在處理序列數據時表現不佳,因為它們無法捕捉數據中的時間依賴關系。循環神經網絡(RNN)被設計來處理序列數據,通過隱藏狀態在時間步之間傳遞信息。然而,傳統RNN存…

DDS信號發生器設計

一、基本概述 1.1 DDS簡介 DDS信號發生器即直接數字頻率合成(Direct Digital Frequency Synthesis,簡稱DDS)是一種利用數字技術生成信號的方法。它通過數字信號處理技術,將數字信號轉換為模擬信號,從而生成高質量的正…

生成式AI:如何用大模型呼叫系統提升銷售轉化率?

生成式AI技術正以驚人的速度重塑商業版圖。從智能助手到自動化營銷,從數據分析到客戶洞察,生成式AI正在顛覆傳統商業模式,云蝠智能以大模型、智能體為核心技術,致力于為百萬企業提供語音互動智能體平臺與解決方案,為企業在銷售轉化…

OOP丨《Java編程思想》閱讀筆記Chapter 6 : 訪問權限控制

《Java編程思想》Chapter 6 : 訪問權限控制 1. 前言 1.1. 訪問權限控制的等級1.2. package關鍵字的引入 2. 包:庫單元 2.1. 代碼組織2.2. 包名的創建 3. Java訪問權限修飾詞 3.1. 包訪問權限3.2. public: 接口訪問權限3.3. private: 你無法訪問3.4. protected: 繼承…

reconic 天空 模型

目錄 推理代碼: EnvLight 代碼: 推理代碼: sky_model self.models["Sky"]outputs["rgb_sky"] sky_model(image_info)outputs["rgb_sky_blend"] outputs["rgb_sky"] * (1.0 - outputs["opa…

從服務器多線程批量下載文件到本地

1、客戶端安裝 aria2 下載地址:aria2 解壓文件,然后將文件目錄添加到系統環境變量Path中,然后打開cmd,輸入:aria2c 文件地址,就可以下載文件了 2、服務端配置nginx文件服務器 server {listen 8080…

C++ | 可變模板參數

1. 為什么需要可變模板參數? 在C11之前,若想實現一個接受任意數量參數的函數,只能依賴va_list等C風格可變參數,但這種方式類型不安全且難以調試。例如printf函數: printf("%d %f %s", 10, 3.14, "hel…

【機器學習】每日一講-樸素貝葉斯公式

文章目錄 **一、樸素貝葉斯公式詳解****1. 貝葉斯定理基礎****2. 從貝葉斯定理到分類任務****3. 特征獨立性假設****4. 條件概率的估計** **二、在AI領域的作用****1. 文本分類與自然語言處理(NLP)****2. 推薦系統****3. 醫療與生物信息學****4. 實時監控…

AI Agents系列之AI代理的類型

在本文中,我們將探討不同類型的 AI 代理,包括它們的實現、實際應用、優勢和局限性。從簡單反射代理到多代理系統,我們將了解這些模型如何推動自動化、決策制定和智能問題解決。 文章目錄 1. AI代理的類型1.1 簡單反射代理1.1.1 實現**1.1.2 優勢****1.1.3 局限性**1.2 基于…

C# --- IEnumerable 和 IEnumerator

C# --- IEnumerable 和 IEnumerator IEnumerableIEnumeratorIEnumerable 和 IEnumerator 的作用手動實現 IEnumerableIEnumerable vs. IQueryable為什么有了ienumerator還需要ienumerable IEnumerable 在C#中,IEnumerable 是一個核心接口,用于表示一個可…

鏡舟科技助力某大型電網企業破解數據架構升級難題,打造國產化湖倉標桿

在 “十四五” 規劃全面推進國產化替代的背景下,某大型電網企業聯合鏡舟科技與騰訊云,基于全球領先的開源分析型數據庫 StarRocks 及騰訊 TBDS 大數據平臺,構建電力行業國產化湖倉一體架構。該項目實現 PB 級電力數據的統一管理,為…

Spark-SQL核心編程3

數據加載與保存 通用方式: SparkSQL 提供了通用的保存數據和數據加載的方式。這里的通用指的是使用相同的API,根據不同的參數讀取和保存不同格式的數據,SparkSQL 默認讀取和保存的文件格式為parquet 數據加載方法: spark.read.lo…

使用HTML + CSS + JS,編寫一個臺球追分計分器

目錄 一.代碼 二.效果展示 三.該計分器的優點 一.代碼 <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><…

LLM小白自學筆記:1.兩種指令微調

一、LoRA 簡單來說&#xff0c;LoRA不直接調整個大模型的全部參數&#xff08;那樣太費資源&#xff09;&#xff0c;而是在模型的某些層&#xff08;通常是注意力層&#xff09;加個“旁路”——兩個小的矩陣&#xff08;低秩矩陣&#xff09;。訓練時只更新這倆小矩陣&#x…

2026《數據結構》考研復習筆記一(C++基礎知識)

C基礎知識復習 一、數據類型二、修飾符和運算符三、Lambda函數和表達式四、數學函數五、字符串六、結構體 一、數據類型 1.1基本類型 基本類型 描述 字節&#xff08;位數&#xff09; 范圍 char 字符類型&#xff0c;存儲ASCLL字符 1&#xff08;8位&#xff09; -128…