校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > python實現CTC以及案例講解

python實現CTC以及案例講解

熱門標簽:電梯新時達系統外呼顯示e 西青語音電銷機器人哪家好 地圖標注與注銷 成都呼叫中心外呼系統哪家強 無錫智能外呼系統好用嗎 旅游廁所地圖標注怎么弄 南昌地圖標注 宿州電話機器人哪家好 百應電話機器人總部

在大多數語音識別任務中,我們都缺少文本和音頻特征的alignment,Connectionist Temporal Classification作為一個損失函數,用于在序列數據上進行監督式學習,可以不需要對齊輸入數據及標簽。

對于輸入序列 X = [ x 1 , x 2 , . . , x T ] X=[x_1, x_2, .., x_T] X=[x1​,x2​,..,xT​] 和 輸出序列 Y = [ y 1 , y 2 , . . . , y U ] Y = [y_1, y_2, ..., y_U ] Y=[y1​,y2​,...,yU​],我們希望訓練一個模型使條件概率 P ( Y ∣ X ) P(Y|X) P(Y∣X) 達到最大化,并且給定新的輸入序列時我們希望模型可以推測出最優的輸出序列, Y ∗ = a r g m a x Y   P ( Y ∣ X ) Y^*=\underset{Y}{argmax}\space P(Y|X) Y∗=Yargmax​ P(Y∣X),而CTC算法剛好可以同時做到訓練和解碼。

損失函數

語音識別任務中,大多數情況下都是輸入序列長度大于文本序列長度,所以CTC算法的alignment方案也是基于將連續的幾幀輸入合并對應到某一個輸出的token,即多對一,同時除了訓練數據中所有的token集合,CTC還引入了一個空白token,在這里用 ϵ \epsilon ϵ 指代,他沒有實際意義并且在最終輸出序列中被移除,但這個token對生成alignment很有幫助。

CTC算法生成最終token輸出序列步驟如下:
生成和輸入序列長度相同的alignment → 合并相同token → 刪除空白token → token序列

上面步驟準確來講是解碼的步驟,解碼之前我們要訓練模型,訓練模型就需要損失函數,或者說需要一個被優化的目標函數:

以下圖的普通RNN為例, p t ( a t ∣ X ) p_t(a_t|X) pt​(at​∣X) 是每一幀在token集合(含空白token)上的概率分布

通過每一幀的概率分布我們可以得到所有(有效)alignment的概率,最后所有alignment都可以對應到一個輸出序列,進而也就得到所有輸出序列的概率分布。我們找到所有能夠合并到 label (Y)序列的 alignment,并將他們的概率分數相加,再取負對數就可以得到一對訓練數據的Loss

那么對于整個數據集,可以得到目標函數 ∑ ( X , Y ) ∈ 訓 練 數 據 集 − l o g   P ( Y ∣ X ) \sum_{(X,Y)\in 訓練數據集}-log\space P(Y|X) ∑(X,Y)∈訓練數據集​−log P(Y∣X),訓練中需要將其最小化。

用暴力的方法找出所有alignment并對其概率求和效率很低,常用的算法是通過動態規劃對alignment進行合并,準確來講是一個動態規劃+DFS的算法:

為了實現這個算法,先引入一個中間序列 Z = ( ϵ , y 1 , ϵ , y 2 . . . , ϵ , y U ) Z=(\epsilon,y_1,\epsilon,y_2...,\epsilon,y_U) Z=(ϵ,y1​,ϵ,y2​...,ϵ,yU​),也就是在label序列的起始,中間和終止位置插入空白token,引入這個中間序列可以說是CTC算法的精髓之一,下面我們以簡單的 Y = ( a , b ) Y=(a,b) Y=(a,b) 輸出序列進行說明:

中間序列 Z = ( ϵ , a , ϵ , b , ϵ ) Z=(\epsilon,a,\epsilon,b,\epsilon) Z=(ϵ,a,ϵ,b,ϵ),長度為 S S S

輸入序列 X = ( x 1 , x 2 , x 3 , x 4 , x 5 , x 6 ) X=(x_1, x_2, x_3, x_4,x_5,x_6) X=(x1​,x2​,x3​,x4​,x5​,x6​),長度為 T T T

遞歸參數 α s , t \alpha_{s,t} αs,t​ 到 t t t 時刻為止中間序列的子序列 Z 1 : s Z_{1:s} Z1:s​獲得的概率分數,也就是在 t t t時刻走到中間序列第 s s s個token時的概率分數

算法整體流程如下圖所示,和原文中的圖比起來加入了具體數值,理解起來更加直觀,圖中的紅色路徑表示不能進行跳轉,因為如果直接從 t = 2 t=2 t=2 的第一個 ϵ \epsilon ϵ 跳到 t = 3 t=3 t=3 時刻的第3個 ϵ \epsilon ϵ,中間的token a a a 會被忽略,這樣后面的路徑不管怎么走都得不到正確的token序列。

其他情況下都可以接受來自上一個時刻的第 s − 2 , s − 1 , s s-2,s-1,s s−2,s−1,s個token的跳轉,再對圖中的節點做進一步解釋,以綠色節點為例,該節點就是 α 4 , 4 \alpha_{4,4} α4,4​ (下標從1開始),表示前面不管怎么走,在 t = 4 t=4 t=4時刻落到第4個token時獲得的概率分數,也就是把這個時刻能走到 b b b 的所有alignment 概率分數加起來。那么把最后一幀的2個節點的概率分數相加就是所有alignment的概率分數,即 P ( Y ∣ X ) = α S , T + α S − 1 , T P(Y|X)=\alpha_{S,T}+\alpha_{S-1, T} P(Y∣X)=αS,T​+αS−1,T​

下面直接給出dp的狀態轉換公式, p t ( z s ∣ X ) p_t(z_s|X) pt​(zs​∣X) 表示 t t t 時刻第 s s s 個字符的概率:

α s , t = ( α s , t − 1 + α s − 1 , t − 1 ) × p t ( z s ∣ X ) \alpha_{s,t}=(\alpha_{s,t-1}+\alpha_{s-1, t-1})\times p_t(z_s|X) αs,t​=(αs,t−1​+αs−1,t−1​)×pt​(zs​∣X), ( a , ϵ , a ) (a,\epsilon, a) (a,ϵ,a)或者 ( ϵ , a , ϵ ) (\epsilon,a,\epsilon) (ϵ,a,ϵ) 模式

α s , t = ( α s − 2 , t − 1 + α s − 1 , t − 1 + α s , t − 1 ) × p t ( z s ∣ X ) \alpha_{s,t}=(\alpha_{s-2,t-1}+\alpha_{s-1,t-1}+\alpha_{s,t-1})\times p_t(z_s|X) αs,t​=(αs−2,t−1​+αs−1,t−1​+αs,t−1​)×pt​(zs​∣X),其他情況

解碼

解碼問題就是已經有訓練好的模型,需要通過輸入序列推測出最優的token序列,實際上就是解決 Y ∗ = a r g m a x Y   P ( Y ∣ X ) Y^*=\underset{Y}{argmax}\space P(Y|X) Y∗=Yargmax​ P(Y∣X) 這個問題,那么能想到最直接的方法就是取每一幀概率分數最高的token,連接起來去掉 ϵ \epsilon ϵ 組成輸出序列,也就是貪婪解碼:

這樣做雖然很高效但有時并不是最優解,比如幾個概率分數較小的alignment序列最后都能轉換為相同的token序列,那么將這些較小的alignment概率分數加起來可能會大于貪婪解碼的概率分數。

常用的算法是改進版的beam search,常規的beam search是在每一幀都會保存概率分數最大的前幾個路徑并舍棄其他的,最后會給出最優的 b e a m beam beam 個路徑,在此基礎上,我們在路徑搜索的過程中,需要對能映射到相同輸出的alignment進行合并,合并之后再進行beam的枝剪。

和語言模型結合

CTC最明顯的特點就是前后幀之間的條件獨立假設

缺點:不適合包括語音識別在內的大多數seq2seq任務,上下文之間的相關性會被忽略,因此經常需要額外引入語言模型。

優點:不考慮上下文的相關性可以使模型泛化能力更強,比如如果不考慮文本之間的相關性,用于識別日常會話的聲學模型可以直接用在會議內容轉錄的場景中。

由于語言模型分數和CTC的條件概率分數相互獨立,因此最終的解碼序列可以寫成
Y ∗ = a r g m a x Y   P ( Y ∣ X ) × P ( Y ) α Y^*=\underset{Y}{argmax} \space P(Y|X)\times P(Y)^\alpha Y∗=Yargmax​ P(Y∣X)×P(Y)α, P ( Y ) P(Y) P(Y)表示語言模型的概率分數,可以是bigram也可以是3gram,以bigram為例的話,如果當前時刻序列是 ( a , b , c ) (a,b,c) (a,b,c),計算下一幀跳到 d d d 的概率分數時,不僅要考慮下一時刻的token概率分布,還要考慮訓練文本中 ( c , d ) (c,d) (c,d) 出現的頻次,即 c o u n t ( c , d ) / c o u n t ( c , ∗ ) count(c,d) / count(c,*) count(c,d)/count(c,∗),將這個概率和 d d d出現的概率相乘才是最終的概率分數, α \alpha α 是語言模型因子,需要fine tuning。

代碼實現

損失函數(動態規劃+DFS)
常規beam search解碼
合并alignment的beam search解碼
加入語言模型的 beam search解碼

到此這篇關于python實現CTC以及案例講解的文章就介紹到這了,更多相關python實現CTC內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Asp.net Core 3.1基于AspectCore實現AOP實現事務、緩存攔截器功能
  • 解決Keras中循環使用K.ctc_decode內存不釋放的問題
  • 使用keras框架cnn+ctc_loss識別不定長字符圖片操作
  • Asp.Net Core輕量級Aop解決方案:AspectCore
  • Kotlin基礎教程之dataclass,objectclass,use函數,類擴展,socket
  • IOS ObjectC與javascript交互詳解及實現代碼
  • asp內置對象 ObjectContext 事務管理 詳解

標簽:許昌 辛集 濰坊 西安 雅安 七臺河 贛州 渭南

巨人網絡通訊聲明:本文標題《python實現CTC以及案例講解》,本文關鍵詞  python,實現,CTC,以及,案例,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《python實現CTC以及案例講解》相關的同類信息!
  • 本頁收集關于python實現CTC以及案例講解的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    99久久婷婷国产综合精品| 日韩视频国产视频| 日韩一卡二卡三卡| ...av二区三区久久精品| 经典三级一区二区| 欧美精品电影在线播放| 中文av字幕一区| 国产一区美女在线| 日韩一级高清毛片| 亚洲成国产人片在线观看| 99精品欧美一区二区三区综合在线| 欧美一级午夜免费电影| 一区二区三区不卡在线观看| 国产精品 欧美精品| 欧美成人a视频| 奇米一区二区三区| 91麻豆精品国产综合久久久久久| 奇米777欧美一区二区| 欧美午夜理伦三级在线观看| 中文字幕在线不卡一区二区三区| 国产精品自拍一区| 久久久久久99精品| 国内精品免费**视频| 日韩美女一区二区三区| 免费成人av在线| 日韩午夜小视频| 国产精品99久久久久久宅男| 精品久久人人做人人爽| 精品一区二区三区免费播放| 日韩一区二区精品| 韩国v欧美v日本v亚洲v| 久久久久国产精品人| 狠狠色伊人亚洲综合成人| 久久综合999| 国产成人精品一区二区三区网站观看| 2019国产精品| 国产不卡视频在线观看| 欧美国产欧美综合| 99久久精品国产麻豆演员表| 日韩美女久久久| 欧美午夜寂寞影院| 日韩高清一区在线| xnxx国产精品| 9l国产精品久久久久麻豆| 亚洲欧美另类久久久精品2019| 色狠狠一区二区| 日本伊人色综合网| 久久免费偷拍视频| caoporen国产精品视频| 亚洲影院在线观看| 精品国产免费一区二区三区香蕉| 国产一区二区三区免费看 | 蜜桃视频第一区免费观看| 欧美大片日本大片免费观看| 国产精品99久久久久| 亚洲伦理在线免费看| 777奇米四色成人影色区| 国产一区二区伦理片| 亚洲裸体在线观看| 日韩免费一区二区| 91老司机福利 在线| 蜜桃一区二区三区在线| 一区二区中文字幕在线| 日韩一区二区三区在线| www.66久久| 琪琪久久久久日韩精品| 日韩理论片一区二区| 日韩亚洲欧美成人一区| 97成人超碰视| 麻豆国产精品777777在线| 自拍偷自拍亚洲精品播放| 欧美一级黄色录像| 色播五月激情综合网| 国产精品自拍在线| 日本亚洲一区二区| 国产精品视频yy9299一区| 日韩亚洲电影在线| 欧洲精品一区二区三区在线观看| 国产综合成人久久大片91| 亚洲成av人在线观看| 国产精品久久久久久户外露出| 6080午夜不卡| 在线亚洲一区观看| 成熟亚洲日本毛茸茸凸凹| 麻豆成人免费电影| 亚洲成人你懂的| 中文字幕佐山爱一区二区免费| 精品少妇一区二区三区日产乱码| 91福利资源站| 91啪九色porn原创视频在线观看| 国产真实乱对白精彩久久| 午夜精品影院在线观看| 亚洲欧美日韩国产综合| 国产精品美女一区二区三区 | 欧美三区在线视频| 成人av影院在线| 国产成人在线免费观看| 精品中文av资源站在线观看| 午夜视频一区二区三区| 有坂深雪av一区二区精品| 亚洲欧美在线aaa| 国产精品久久久久久福利一牛影视 | 91麻豆精品国产91久久久资源速度| 99久久伊人久久99| 成人av网站在线观看| 成人免费毛片a| 高清久久久久久| 国产91丝袜在线18| 懂色av中文字幕一区二区三区| 国产精品资源站在线| 国产麻豆视频一区| 国产精品一区2区| 国产宾馆实践打屁股91| 国产成人在线看| 成人免费视频app| 91丨九色丨尤物| 在线精品视频免费播放| 欧美日韩在线不卡| 欧美二区三区的天堂| 91精品国产欧美一区二区| 日韩免费性生活视频播放| 久久这里只有精品首页| 久久精品一区二区三区不卡| 国产色综合一区| 日韩一区在线播放| 亚洲综合激情小说| 日韩av一级片| 国产精品18久久久久久vr| 成人精品一区二区三区中文字幕| 成人h动漫精品一区二区| 色吧成人激情小说| 91麻豆精品国产91久久久使用方法 | 国产欧美一二三区| 亚洲丝袜另类动漫二区| 亚洲电影欧美电影有声小说| 男女激情视频一区| 国产99久久久精品| 欧美无砖砖区免费| 久久久国产午夜精品| 综合久久给合久久狠狠狠97色| 亚洲综合在线电影| 激情六月婷婷久久| 91免费观看视频| 欧美电影免费观看高清完整版在线 | 精品电影一区二区| 亚洲人成网站精品片在线观看 | 亚洲精选免费视频| 日韩av高清在线观看| 成人小视频免费在线观看| 欧美在线高清视频| 久久久久亚洲蜜桃| 亚洲国产综合视频在线观看| 韩国av一区二区三区四区| 91尤物视频在线观看| 日韩亚洲电影在线| 一区二区三区不卡视频在线观看| 捆绑调教一区二区三区| 91色乱码一区二区三区| 欧美成人一区二区| 亚洲精品va在线观看| 国产电影精品久久禁18| 欧美一区三区二区| 亚洲欧洲中文日韩久久av乱码| 九九国产精品视频| 欧美男男青年gay1069videost| 欧美极品另类videosde| 日本女人一区二区三区| 在线观看日韩毛片| 国产精品成人免费在线| 激情欧美一区二区| 欧美久久久久免费| 一区二区三区在线视频观看58 | 国产日韩精品久久久| 青草av.久久免费一区| 91国产福利在线| 日韩毛片在线免费观看| 国产成人亚洲综合a∨婷婷| 精品久久国产字幕高潮| 免费日本视频一区| 欧美日韩精品欧美日韩精品一综合| 国产精品女上位| 国产suv一区二区三区88区| 久久影音资源网| 久久99精品国产麻豆婷婷洗澡| 欧美亚洲图片小说| 一区二区在线观看视频在线观看| 国产精品一二三| 久久久国产一区二区三区四区小说| 男男视频亚洲欧美| 欧美一区二区在线看| 日本一区中文字幕| 欧美一级在线视频| 日本不卡中文字幕| 日韩一卡二卡三卡| 青青草原综合久久大伊人精品优势| 欧美性一区二区| 午夜精品免费在线| 4438成人网| 精彩视频一区二区| 国产欧美一区二区精品忘忧草|