1. 程式人生 > >CTC(Connectionist Temporal Classification)論文筆記

CTC(Connectionist Temporal Classification)論文筆記

1. 思想

序列學習任務需要從未分割的輸入資料中預測序列的結果。HMM模型與CRF模型是序列標籤任務中主要使用的框架,這些方法對於許多問題已經獲得了較好的效果,但是它們也有缺點:
(1)需要大量任務相關的知識,例如,HMM中的狀態模型,CRF中的輸入特徵選擇;
(2)需要有獨立性假設作為支撐;
(3)對於標準的HMM模型,它是生成式的,但是序列標籤時判別式的。

RNN網路除了出入與輸出的表達方式需要選擇之外不需要任何資料的先驗。它可以進行判別訓練,它的內部狀態為構建時間序列提供了強大的通用機制。此外,其對時間和空間噪聲具有很強的魯棒性。

但是對於RNN呢,它是不能拿來做序列預測的,這是因為RNN只能去預測一些獨立標籤的分類,因而就需要進行序列預分割。要解決該問題,那麼將RNN與HMM結合起來被稱之為hybrid approach。在該方法中使用HMM為長序列結構資料建立模型,神經網路就提供區域性分類。加入HMM之後可以使得在訓練中自動分割序列,並且將原本的網路分類轉換到標籤序列。然而,它並沒有避免上訴內容中HMM使用缺點。

這篇文章提出了CTC( Connectionist Temporal Classification),可以解決前面提到的兩點侷限,直接使用序列進行訓練。CTC引入了一個新的損失函式,可以使得RNN網路可以直接使用未切分的序列記性訓練。為了使用這個損失函式,為RNN引入其可以輸出的“blank”標籤。RNN的輸出是所有標籤的概率。

RNN可以輸出“blank”的好處:
(1)RNN可以選擇任意時刻給出一個標籤,例如在沒有資訊輸入的音訊空白時間給“blank”標籤,其它則出處對應的標籤;
(2)“blank”標籤可以在某一時刻對一個正確的標籤給一個很高的概率,在之前我們是檢視此時所有標籤的概率分佈。
在這裡插入圖片描述

2. Temporal Classification

這裡將Temporal Classification定義為 h h ,訓練資料集合 S S 中資料是成對存在的 (

x , z ) (x, z) ,其中 x x 是訓練的時序資料, z z 是標籤資料。目標就是找到一個時序分類器 h h 使得 S S 中的 x x 被分類到 z z 。訓練這個分類器,就需要一個錯誤度量,這裡就借鑑了ED距離度量,而引入了label error rate(LER)。在這裡還對其進行了歸一化,從而得到了如下的形式:
L E R ( h , S , ) = 1 Z ( x , z ) S E D ( h ( x ) ) ( 1 ) LER(h,S^{,})=\frac{1}{Z} \sum_{(x,z) \in S^{'}}ED(h(x))------(1)

3. 時序分類器

這一部分是最為關鍵的一步,將網路輸出轉換成為基於標籤序列的條件概率,從而可以使用分類器對輸入按照概率大小進行分類。

3.1 從網路輸出到連續標籤

在CTC網路中擁有一個softmax輸出層,其輸出的個數為 L + 1 |L|+1 L L 是標籤元素的集合,額外的一個那當然就是“blank”標籤了。這些輸出定義了將所有可能的標籤序列與輸入序列對齊的所有可能路徑的概率。任何一個標籤序列的總概率可以通過對其不同排列的概率求和得到。

首先,對於一條可行的路徑 p ( π x ) p(\pi |x) 被定義為,對應路徑上各個時刻輸出預測概率的乘積。其定義如下:
在這裡插入圖片描述
對於預測結果中的一條路徑的標籤,在論文中假設的是這些不同時刻網路的輸出是相互獨立的,而這是通過輸出層與自身或網路之間不存在反饋連線來確保實現的。

在此基礎上還定義了對映函式 B B ,它的職責就是去除“blank”與重複的標籤。因而給定的一個標籤其輸出概率就可以描述為幾個可行路徑相加和的形式:
在這裡插入圖片描述

3.2 構建分類器

在上面的內容中已經得到了一個序列標籤的輸出條件概率,那麼怎麼才能找到輸入資料最匹配的標籤呢?最為直觀的便是求解 a r g m a x argmax
在這裡插入圖片描述
在給定輸入情況下找到其最可能的標籤序列,這樣的過程使用HMM中的術語叫做解碼。目前,還沒有一種通過易理解的解碼演算法,但下面的兩種方法在實踐過程中也取得了不錯的效果。

3.2.1 最佳路徑解碼

該方法是建立在概率最大的路徑與最可能的標籤時對應的,因而分類器就被描述為如下形式:
在這裡插入圖片描述
從上面的形式中就可以看出,最佳路徑解碼的計算式很容易的,因為最佳路徑中的元素是各個時刻輸出的級聯。但是呢,這是不能保證找到最可能的標籤的。

3.2.2 字首解碼

通過修改論文中4.2節的前向和後向演算法,便可以有效計算標籤字首的連續擴充套件概率,見下圖
在這裡插入圖片描述
字首解碼在足夠時間的情況下會找到最可能的標籤,但是隨著輸入序列長度的增強時間也會指數增加。如果輸入的概率分佈是尖狀的,那麼可以在合理的時間內找到最可能的路徑。

實踐中,字首搜尋在這個啟發式下工作得很好,通常超過了最佳路徑解碼,但是在有些情況下,效果不佳。

4. 網路訓練

目標函式是由極大似然原理匯出的。也就是說,最小化它可以最大化目標標籤的對數可能性。有了損失函式之後就可以使用依靠梯度進行優化的演算法進行最優化。

4.1 CTC的網路結構

在下圖中給出了CTC放置的位置,其放置在雙向遞迴網路的後面作為序列預測的損失來源。CTC會在RNN網路中傳播梯度,進而使得其學習一條好路徑。
在這裡插入圖片描述

4.2 CTC前向傳播演算法與反向傳播演算法

4.2.1 前向傳播

需要一種有效的方法來計算單個標籤的條件概率 p ( l x ) p(l|x) 。對於這樣問題,其實是對應於給定標籤的所有路徑的總和,通常有很多這樣的路徑。這裡採用使用動態規劃演算法計算所有可能路徑的概率和,其思想是,與標籤對應的路徑和可以分解為與標籤字首對應的路徑的迭代和。
然後,可以使用遞歸向前和向後變數有效地計算迭代。

以下是本文設計到的一些符號定義:
y k t y_{k}^{t} ,時刻 t t 的輸出字元 k k
l l ,標籤序列對應的損失
l l^{'} ,相同的標籤序列,但是在字元之間添加了“blank”標籤
在這裡插入圖片描述
其中, B B 是移除所有“blank”與重複字元的變換; π N T : B ( π 1 : t = l 1 : s \pi \in N^T:B(\pi _{1:t}=l_{1:s}^{'} 是時刻1到t的預測矩陣中,給出經過變換 B B 之後與標籤有前s個一致的所有可行路徑; y t y^{t^{'}} 是指時刻 t t^{'} 時RNN的輸出。而且 α t ( s ) \alpha_{t}(s) 可以通過 α t 1 ( s ) \alpha_{t-1}(s) α t 1 ( s 1 ) \alpha_{t-1}(s-1) 迭代計算出來。

圖3中描述的狀態轉移圖與上面公式的含義是相同的。為了能夠在輸出路徑中出現“blank”標籤,將標籤修改成了 l l^{'} ,也就是在標籤的前後與字元之前插入空白標籤,因而生成的標籤長度就變成了 2 l + 1 2|l|+1 的長度,使其可以再空白標籤與非空白標籤之間轉換,也可以使非空白標籤之間發生轉換。
在這裡插入圖片描述
上面的公式1中已經給出了其計算的內容,但其計算並不具有可行性。但是可以根據圖3中 α t ( s ) \alpha_{t}(s) 的遞迴定義使用動態規劃演算法去解決該問題,仔細看這幅圖,是不是有點像HMM的前向計算過程。

對於解決該問題使用動態規劃的演算法進行解決,首先來分析時刻1時候的情況:
在這裡插入圖片描述
對於後序狀態的關係推導
在這裡插入圖片描述
最後就可以得到一個序列的輸出概率
在這裡插入圖片描述

4.2.1 反向傳播

反向傳播的變數 β t ( s ) \beta_{t}(s) 被定義為 t t 時刻 l s : l l_{s:|l|} 的總概率
在這裡插入圖片描述
注意: β t ( 2 ) = 0 s > 2 t a n d s > l \beta_{t}(2)=0 \forall s \gt 2t and s \gt |l^{’}| ,可見與圖3的左下角處未連線的圓圈。在實踐中上述的計算過程通常會導致數值下溢,其中的一種解決辦法就是對其進行歸一化操作,對於前向傳播演算法這裡定義瞭如下作
在這裡插入圖片描述
對於反向傳播演算法中,也是有類似的定義的
在這裡插入圖片描述
最後的最大似然誤差,也是建立在此基礎之上的
在這裡插入圖片描述

4.3 最大似然訓練

最大似然訓練的目的是同時最大化訓練集中所有正確分類的對數概率。因而這裡可以將損失函式定義為:
在這裡插入圖片描述
為了使用梯度進行網路訓練,因而就需要對網路的輸出進行微分,且訓練樣本是相互獨立的,也就是說可以單獨考慮了,因而可以將微分寫為:
在這裡插入圖片描述
這裡可以用前向後向演算法計算上式。主要思想是:對於一個標記l,在給定s和t的情況下,前向和後向變數的內積是對應l所有可能路徑的概率。表示式為:
在這裡插入圖片描述
且根據上面的公式(2)聯合可以得到:
在這裡插入圖片描述
再與前面的公式(3)聯合可以得到
在這裡插入圖片描述
由於網路的輸出是條件獨立的,我們需要考慮路徑在時刻t經過標記k,得到 p ( l t ) p(l|t) 的偏導數,這是對於 y k t y_k^t 而言的,注意到相同的標籤肯能會重複幾次再一個標記l中,我們定義了一個位置集合,標籤k出現,記為 l a b ( l , k ) = s : l s = k lab(l,k)={s:l_s^{'}=k}

相關推薦

CTCConnectionist Temporal Classification論文筆記

1. 思想 序列學習任務需要從未分割的輸入資料中預測序列的結果。HMM模型與CRF模型是序列標籤任務中主要使用的框架,這些方法對於許多問題已經獲得了較好的效果,但是它們也有缺點: (1)需要大量任務相關的知識,例如,HMM中的狀態模型,CRF中的輸入特徵選擇; (2)需要有獨立性假設

深度學習基礎--loss與啟用函式--CTCConnectionist temporal classification的loss

CTC(Connectionist temporal classification)的loss   用在online sequence。由於需要在分類結果中新增一個{no gesture}的類別,如果用在segmented video的分類時,需要去掉這類(因為視訊總屬於某個類)。

CTCConnectionist Temporal Classification介紹

CTC解決什麼問題 CTC,Connectionist Temporal Classification,用來解決輸入序列和輸出序列難以一一對應的問題。 舉例來說,在語音識別中,我們希望音訊中的音素和翻譯後的字元可以一一對應,這是訓練時一個很天然的想法。但是要對齊是一件很困難的事,如下圖所示(圖源見參考資料[1

論文筆記Connectionist Temporal Classification: Labelling Unsegmented Sequence

標記未分割的序列資料是現實世界序列學習中普遍存在的問題,並且在一些感知任務中是普遍實用的,例如手寫字型識別,語音識別,手勢識別(gesture recognition)。在感知任務中,帶有噪聲的實值輸入流用一串離散的標籤進行標註。例如字母或者單詞。 當前,圖模型,例如HMM,CRFs和他們的變體是序列標註

SPP-NetSpatial Pyramid Pooling Network論文筆記

1. 論文思想 SPP-Net的提出首先是為了解決傳統CNN網路對於輸入影象尺寸具有嚴格的大小限制,其原因也就是最後的全連線層需要的輸入尺寸是固定的。那麼對於一副比較大的影象就需要進行剪裁了,如下圖所示: 但是這樣會造成資料失真以及資料的不完整。那麼,要使CNN網路可以接受任意影象

CTC 白話CTC(connectionist temporal classification)演算法講解

轉自:https://blog.csdn.net/luodongri/article/details/77005948 白話CTC(connectionist temporal classification)演算法講解 2017年08月09日 17:24:21

Connectionist Temporal Classification(CTC)、音識別模型小型綜述和一個簡易的語音識別模型的tensorflow實現

CTC是一種端到端的語音識別技術,他避免了需要字或者音素級別的標註,只需要句子級別的標註就可以進行訓練,感覺非常巧妙,也很符合神經網路浪潮人們的習慣。特別是LSTM+CTC相較於之前的DNN+HMM,LSTM能夠更好的捕捉輸入中的重要的點(LSTM隨著狀態數目增加引數呈線性增加,而HMM會平

基於深度self-attention的字符集語言模型transformer論文筆記

論文題目:Character-Level Language Modeling with Deeper Self-Attention 論文地址:https://arxiv.org/abs/1808.04444v1 摘要       LSTM和其他RNN的變體在

網路結構搜尋1—— NASNeural architecture search with reinforcement learning論文筆記

一、NAS 論文地址:https://arxiv.org/abs/1611.01578  程式碼連線:https://github.com/tensorflow/models ICLR2017由Googlebrain推出的論文 二、Motivation for archit

目標追蹤演算法KCFkernelized correlation filters論文學習筆記

      最近一直在研究KCF演算法,看了原論文和很多相關部落格,本篇博文原作者:http://www.cnblogs.com/YiXiaoZhou/p/5925019.html。我增加了一些自己的理解與思考。 讀"J. F. Henriques, R. Caseir

【算法第4版筆記

bsp .com 二維 一個數 數組 png 初始 算法 nbsp 1、在 Java 程序中創建一個數組需要三步: 聲明數組的名字和類型; 創建數組; 初始化數組元素。 2、典型的數組處理代碼。 3、起別名。

數據結構與算法刺猬書讀書筆記----目錄

更新 rip javascrip tar 結構 順序 耗時 梳理 讀書筆記 最近在抓底層的語言基礎,以前對數據結構和算法並沒有太大感覺,但越往深處學就越覺得這些基礎真的是要牢牢掌握住。一個簡簡單單的數組,深究起來都有很多學問。所以打算寫個一系列的讀書筆記,好好梳理一下這一塊

數據結構與算法刺猬書讀書筆記1----數組

split() ring 此外 結果 shift 即使 cnblogs 操作符 main 在JavaScript中,數組其實是一種特殊的對象,用來表示偏移量的索引是該對象的屬性,所以JavaScript的數組本質上是對象。同時這些數字索引在內部會被轉換成為字符串類型,因為J

算法第四版學習筆記——初級排序算法

space 倒序 優勢 name 算法 turn 資料 eply n) 時間復雜度(Time Complexity): 總運算次數表達式中受n的變化影響最大的那一項(不含系數)(註:若算法中語句執行次數為一個常數,則時間復雜度為O(1)) 若T(n)/f(n)求極限可得

《程序員健康指南The Healthy Programmer筆記

適合 想法 mark 安排 領域 數據 pro 但我 目前 前言 本筆記目標:快速回顧健康要點,幫助記憶。 我問自己:花費了精力、時間,閱讀、整理這本書值得嗎? 值得,只要它是對我的健康有用的,我可不想30歲的時候禿頭、手腕碰不了鍵盤、腰酸背痛上不了媳婦的床。 既然前輩

JavaScript權威指南第6版學習筆記

未定義 顯示 註釋 星期 語句 布爾運算 垃圾 class ron 第2章 詞法結構 一、字符集 *JavaScript程序是用Unicode字符集編寫的。 *JavaScript嚴格區分大小寫。 *JavaScript註釋:(1)“//”用於單行註釋;(2)"/*

JavaScript權威指南第6版學習筆記

設置 ray 每一個 main 需求 創建 per ive customer 第六章對象 對象可以看成其屬性的無序集合,每個屬性都是一個名/值對。JavaScript對象是動態的,可以新增也可以刪除屬性,可以通過引用而非值來操作對象。如果變量x是指向一個對象的引用,那麽執行

最完整的臺達PLC培訓教程沈陽工大學習筆記1

啟動 ces 編程 管理 可擴展 開頭 使用 body 出錯 1) 可編程控制器的應用1 開關量邏輯控制:電動機啟動與停止2 運動控制:對步進電動機或伺服電動機的單軸或多軸系統實現位置控制3 過程控制:對溫度、壓力、流量等連續變化的模擬量進行閉環控制4 數據處理:數據采集-

《Java編程思想》Thinking in Java讀書筆記——01對象導論

動態 執行 線程 情況 依賴關系 AI UC 技巧 復制 1.9 容器 關於容器,最常用的就是Collection接口裏的Set、List和Map所衍生的各種實現類,還有較為少用但又不可或缺的Queue。 它們都有相同的點,即:提供了類似數組類型的數據聚合功能(有部分類型也

STP生成樹協議--學習筆記

STP(生成樹協議)--學習筆記一·STP STP協議在邏輯上斷開網絡的環路,防止廣播風暴的產生,而一旦正在使用的線路出現故障,邏輯上被斷開的線路又被連同,起到了冗余備份的作用。解決二層環路的問題。 二·生成樹工作原理 生成樹協議的算法過程可以歸納為三個步驟:選擇根網橋、選擇根端口、選擇指定端口。  (1)選