1. 程式人生 > >論文:用RNN書寫及識別漢字, Drawing and Recognizing Chinese Characters with Recurrent Neural Network

論文:用RNN書寫及識別漢字, Drawing and Recognizing Chinese Characters with Recurrent Neural Network

論文地址:用RNN書寫及識別漢字

摘要

目前識別漢字的通常方法是使用CNN模型,而識別線上(online)漢字時,CNN需要將線上手寫軌跡轉換成像影象一樣的表示。文章提出RNN框架,結合LSTM和GRU。包括識別模型和生成模型(即自動生成手寫體漢字),基於端到端,直接處理序列結構,不需要像轉換成影象表示,也不需要任何特定領域的知識。生成模型中,使用了字元嵌入的條件生成模型。用的庫是ICDAR-2013.

  • 注:識別漢字最重要的領域知識包括: 字元形狀正則化,方向分解特徵對映

1.介紹

  自動手寫體識別已經研究了很久,但是自動書寫並沒有得到很好的研究,知道最近,基於RNN的生成序列技術得到發展.
   漢字識別兩類主流方法

  • online:線上識別,記錄和分析筆尖運動軌跡,識別語言資訊
  • offline:離線識別,對字元(灰度或二進位制)影象進行分析和分類

卷積的先驗知識,使得CNN 成為圖片識別的強有力工具,因為離線字元被表示為影象,因此CNN自然而然的被應用於離線識別。而將CNN用於線上識別的話,就需要將手寫軌跡轉換成為影象一樣的表示,譬如AMAP,the path signature maps, the directional feature maps.
文章提到一些生成工具:NADE , variational auto-encoder , DRAW. 為了更好地模擬生成過程,GAN(生成對抗網路)被用來同時訓練一個生成器來捕獲資料分佈,以及一個鑑別器來區分min-max優化框架中的真實樣本和生成的樣本。
DCGAN,LAPGAN都可以用於生成漢字,但是他們忽略了手寫軌跡(時間順序,及軌跡)。
文章提出一種基於RNN的條件生成模型,而且利用字元嵌入來訓練生成模型。

2.線上手寫漢字的表示

  1. 書寫的動態過程可以用變長序列表示
    序列表示
    其中 x i , y i

    x_i, y_i 表示筆的移動, s i s_i 表示點 i i 屬於哪一劃, 書寫順序也得到儲存。

  2. 預處理
    移除多餘的點

    如圖所示,文章假設 s i = s i 1 = s i + 1 s_i=s_{i-1}=s_{i+1} ,移除的兩個條件是

(6)式用到了餘弦相似性
其中超引數 T d i s t = 0.01 × m a x { H , W } T_{dist}=0.01\times max\lbrace H, W\rbrace ( H H 為高度, W W 為寬度), T c o s = 0.99 T_{cos} = 0.99

座標標準化過程
投影(4)式;計算平均值(5)式;計算偏差(6)式;計算標準差(7)式;得到新值(8)式

Ω \Omega 代表所有直線的集合,這些直線連線兩個連續點(即為同一劃)


標準化後x-y軸上的偏差也得到規範化。

3.識別模型:RNN端到端的識別

在這裡插入圖片描述
六維表示: Δ x i = x i + 1 x i \Delta x_i = x_{i+1}-x_i , Δ y i = y i + 1 y i \Delta y_i = y_{i+1}-y_i .指示函式Ⅱ(等式成立取1,否則取0)此處 [ 0 , 1 ] [0,1] 表示pen-up, [ 1 , 0 ] [1,0] 表示pen-down
為了方便表示用 [ x 1 , x 2 , . . . , x k ] [x_1,x_2, ..., x_k] 代替 [ L 1 , L 2 , . . . , L n 1 ] [L_1,L_2,..., L_{n-1}] ;值得注意的是 x i x_i 代表的是6維向量
RNN模型中,輸入序列為 [ x 1 , x 2 , . . . , x k ] [x_1,x_2, ..., x_k] ,每一個時間步都產生一個隱含態,得到 [ h 1 , h 2 , . . . , h k ] [h_1,h_2, ..., h_k] 。計算方式是 h t = f { x t , h t 1 } h_t = f\lbrace x_t,h_{t-1}\rbrace f f 為遞迴變換函式
輸出序列 [ y 1 , y 2 , . . . , y k ] [y_1,y_2, ..., y_k] y t = g ( h t ) y_t = g(h_t) 得到

論文分別介紹了LSTM與GRU

long Short Term Memory
Gated Recurrent Unit
Stacked and Bidirectional RNN (圖三有體現)


圖中可以看出RNN模型是堆疊雙向的。從左至右 [ x 1 , x 2 , . . . , x k ] [x_1, x_2,...,x_k] 輸入正向迴圈層得到 [ h 1 , h 2 , . . . , h k ] [h_1, h_2,...,h_k] .同時 [ x k , x k 1 , . . . , x 1 ] [x_k, x_{k-1},...,x_1] 輸入反向迴圈層得到 [ h 1 , h 2 , . . . , h k ] [h'_1, h'_2,...,h'_k]