『RNN 監督序列標註』筆記-第一/二章 監督序列標註
監督序列標註(Supervised Sequence Labeling)與傳統的監督模式分類(supervised pattern classification)的不同之處在與樣本點不能被當作是獨立的。
序列標註的特點
- 輸入和標籤都具有強相關性。
- 輸入與標籤的對應關係是未知的。
RNNs的優點與缺陷
優點
- 上下文信息非常靈活(因爲它們能夠學習處哪些需要存儲以及哪些需要遺忘)。
- 能夠支持各種形式的數據表達。
- 即使序列存在扭曲失真也能進行識別。
標準 RNN的缺點
- 使其存儲長期信息非常困難。
Long Short-Term Memory (LSTM; Hochreiter and Schmidhuber, 1997) is a redesign of the RNN architecture around special ‘memory cell’ units.
- 它只能夠單向學習上下文信息。(對於序列預測很有用,但是對於序列標註,往往利用上下午的雙向信息會更有效)
Bidirectional LSTM (Graves and Schmidhuber, 2005b) combines the benefits of long-range memory and bidirectional processing. - 單維度序列。
Multidimensional LSTM (Graves et al., 2007) - 訓練非常耗時。
Hierarchical subsampling RNNs (Graves and Schmidhuber, 2009)
監督序列標註
- 監督學習:用許多『輸入-標籤對』來進行訓練。
- 增強學習:僅僅利用標量值訓練。
- 無監督學習:沒有訓練信號。
模式分類 (Pattern Classification)
模式分類的對象是非序列數據,是序列數據的基礎。
概率分類(Probabilistic Classification)
判別函數法(Discriminant Functions)
分類器直接給出類別標籤,如:SVM。
概率分類法(Probabilistic Classification)
得出屬於每一類的概率,其中選取概率最大值對應的類別
- 概率值的大小可以用於觀察置信度的相對值。
- 能夠與其它概率算法聯合使用。
訓練概率分類器
令訓練集爲
對於一個新輸入的樣本
而
實際使用最大後驗(Maximum A Posteriori,MAP)估計來尋找
生成模型與判別模型
- 判別模型:直接計算所屬類別後驗概率
p(Ck|x) 。 - 生成模型:首先生成類別條件密度函數
p(x∣∣Ck) ,再利用貝葉斯公式,以及類別先驗概率p(Ck) ,來得到後驗概率:
p(Ck|x)=p(x∣∣Ck)p(Ck)p(x)
其中
p(x)=∑kp(x∣∣Ck)p(Ck)
之所以稱之爲生成,是因爲p(x) 可以用於生成輸入數據。
- 生成模型優於判別模型的地方在於:各個類別可以獨立訓練;
- 而判別模型當遇到有新類別加入時就需要重新訓練。
- 判別模型對於分類任務一般效果較好,因爲判別模型致力於尋找類別分界面。
序列標註
序列標註的目的在於針對輸入序列數據,根據給定的字母表,給出對應的標籤序列。
例如翻譯一段語音(語音識別)、理解一段視頻中的手勢(手勢識別)以及蛋白質亞結構的預測(並不一定是時間序列)。
序列標註的假設
- 序列之間相互獨立且均勻分佈。
- 輸出序列的長度不超過輸入序列。
序列標註的任務
S 是訓練集,滿足分佈× ,其中每個元素是(x,z) ,粗體代表序列 是輸入空間=(ℝM)∗ ,對應輸入樣本爲M 個實數向量。=L∗ 是輸出空間,對應輸出目標序列z=(z1,z2,…,zU) ,其中有
|z|=U⩽|x|=T
不論輸入序列是否是時間序列,序列中的每個離散點都被作爲時間步。序列標註的任務可以概括爲:
使用
S 訓練出一個序列標註算法h:↦ 將測試集S′⊂× 進行儘可能精確地標記。
三種序列標註任務
按整合程度依次遞增分別爲:
時序(Temporal)分類 -> 時間段(Segment)分類 -> 序列(Sequence)分類
- 序列分類:每個序列對應一個類。
- 時間段分類:每個時間段對應一類。
- 時序分類:運行各種輸入和輸出序列的對齊方式。
序列(Sequence)分類
序列分類相當於輸出(標籤)序列被限制爲長度爲1。這樣每個輸入序列都對應於一個單一的類別。其關鍵特徵在於:
整個序列可以在分類之前就進行處理。
如果輸入序列的長度固定或者使用 padding 的手段,輸入序列就能以輸入向量的形式,應用各種機器學習方法進行分類了,如 CNNs 和 SVM。即使輸入長度已經固定,序列化的算法也能夠更好地適應輸入數據。
序列錯誤率可以定義爲:
Eseq(h,S′)=100∣∣S′∣∣∑(x,z)∈S′{0ifh(x)=z1otherwise
時間段(Segment)分類
時間段分類的輸入時間段與輸出時間段的對應關係式已知的。
其關鍵特點在於過去側時間段的上下文信息能夠被有效利用。
上下文能起到相當重要的作用。如圖所示:
整體上看,這個單詞顯然是『defence』,然而但看中間這段,字母『n』卻是模糊不清的。標準的模式識別算法,每次只能處理一個輸入。一種變通辦法是,將一段時間的數據做成時間窗,然後以時間窗爲單位進行輸入,然而問題在於時間窗的長度不僅使未知的,而且也是隨着時間段而改變的。相應地,
時間段錯誤率可以定義爲:
Eseg(h,S′)=100Z∑(x,z)∈S′HD(h(x),z)
其中Z=∑(x,z)∈S′∣∣z∣∣
而HD(p,q) 是 兩個長度相同序列p 和q 之間的 hamming 距離。
時序(Temporal)分類
時序分類是最一般的情況,唯一的限制在於標籤序列的長度必須小於等於輸入序列的長度,甚至也可以是空。
時序分類與時間段分類最大的區別在於,時序分類算法需要決定在序列的什麼未知作出分類判斷。
由於判斷的邊界未知,因此之前定義錯誤率的方式並不適用。
我們定義從
標籤錯誤率可以定義爲:
Elab(h,S′)=100Z∑(x,z)∈S′ED(h(x),z)
注意這個錯誤率並不是真正的百分比,而可能會大於100。