天天看點

文本識别系統是怎麼“看”的

讓我們來看看文本識别系統的神經網絡“黑匣子”内部發生了什麼

用神經網絡實作的現代文本識别系統的性能令人驚歎。他們可以接受中世紀文獻的訓練,能夠閱讀這些文獻,并且隻會犯很少的錯誤。這樣的任務對我們大多數人來說都是非常困難的:看看圖2,并嘗試一下!

文本識别系統是怎麼“看”的

對于大多數人來說很難閱讀,但是對于在這個資料集上訓練的文本識别系統來說很容易

這些系統是如何工作的?這些系統通過檢視圖像中的哪些部分來識别文本?他們是否利用了一些巧妙的模式?還是通過使用資料集特定模式之類的捷徑來作弊?在接下來的文章中,我們将觀察兩個實驗,以更好地了解在這樣一個神經網絡中發生的事情。

第一個實驗:像素相關性

在我們的第一個實驗中,我們提出以下問題:給定一個輸入圖像和正确的類(ground-truth文本),輸入圖像中的哪些像素表示支援,哪些表示反對正确的文本?

我們可以通過比較兩個場景中正确類的分數來計算單個像素對結果的影響:

1、像素包含在圖像中。

2、該像素被排除在圖像之外(通過将該像素的所有可能灰階值邊緣化)。

通過比較這兩個分數,我們可以看到一個像素是支援還是反對正确的類。圖3顯示了圖像中的像素與ground-truth文本“are”的相關性。紅色像素投票給文本“是”,藍色像素投票反對它。

文本識别系統是怎麼“看”的

頂部:輸入圖像。底部:像素相關性和混合輸入圖像。紅色像素投票贊成,藍色像素反對正确的文本“是”

現在,我們可以檢視一些關鍵區域(深紅、深藍),了解哪些圖像特征對神經網絡做出決定是非常重要的:

1、“a”上方的紅色區域在輸入圖像中是白色的,對于正确的結果“are”非常重要。你可能猜到了,如果一個黑點出現在“a”的垂直線上,那麼這條垂直線可以被解釋為“i”。

2、“r”與“e”相連,“e”将神經網絡與藍色區域相混淆。如果這兩個字元被斷開,這應該會增加“are”的分數。

3、“a”(左下内側)内的灰色像素略微反對“are”。如果洞裡面的“a”将是完全白色的,這應該增加分數。

4、在圖像的右上方是正确投票的重要區域。目前還不清楚如何解釋這一地區。

我們來研究一下假設1.- 3.都是正确的,而且明确是什麼意思,4.是通過改變這些區域内的一些像素值。在圖4中顯示了原始和更改後的圖像、正确文本的評分和識别文本。第一行顯示原始圖像,文本“are”的得分為0.87。

1、如果我們在“a”的垂直線上畫一個點,“are”的分數會下降10倍,我們得到的文本是“aive”。是以,神經網絡大量使用上标點來決定一條垂直線是“i”還是别的什麼。

2、删除“r”和“e”之間的連接配接将使得分增加到96。即使神經網絡能夠隐式地分割字元,斷開的字元似乎也能簡化任務。

3、“a”内部的孔對于檢測“a”非常重要,是以将灰色像素與白色像素進行交換可以将分數提高到88。

4、當在圖像的右上角繪制一些灰階像素時,系統識别“ane”,“are”的分數下降到13。在這種情況下,系統顯然已經學會了與文本無關的特性。

文本識别系統是怎麼“看”的

改變一些關鍵區域内的像素,觀察發生了什麼

總結我們的第一個實驗:系統學習了一些有意義的文本特征,比如識别字元“i”的上标點。但它也學會了一些對我們毫無意義的特征。然而,這些特性仍然幫助系統識别它所訓練的資料集中的文本:這些特性讓系統走捷徑,而不是學習真正的文本特性。

第二個實驗:平移不變性

翻譯不變文本識别系統能夠正确地識别獨立于其在圖像中的位置的文本。圖5顯示了文本的三個不同水準翻譯。我們希望神經網絡能夠識别“to”的所有三個位置。

文本識别系統是怎麼“看”的

文本的三個水準翻譯

讓我們再次從包含文本“are”的第一個實驗中擷取圖像。我們将它一個像素一個像素地向右移動,檢視正确的類的分數,以及預測的文本,如圖6所示。

文本識别系統是怎麼“看”的

當文本逐像素向右移動時,文本的得分為“are”。x軸上的标簽顯示了圖像移動的像素數和可識别的文本(使用最佳路徑解碼)

可以看出,系統不是平移不變量。原始圖像的得分為0.87。通過将圖像向右移動一個像素,分數降低到0.53。将它向右移動一個像素将把分數降低到0.28。神經網絡能夠識别正确的文本,直到四個像素的平移。之後,系統偶爾會輸出錯誤的結果,從右邊的“aare”五個像素開始。

神經網絡是在所有單詞都是左對齊的IAM資料集上訓練的。是以,系統從未學習過如何處理左側空白的圖像。忽略空白對我們來說可能是顯而易見的——這是一種需要學習的能力。如果系統從來沒有被強迫去處理這種情況——它為什麼要學習它呢?

score函數的另一個有趣的特性是4個像素的周期性。這四個像素等于卷積網絡的縮減因子,從寬度128像素到序列長度32像素。還需要進一步的調查來解釋這種行為,但這可能是由于具有不連續性的池層造成的:将像素向右移動一個位置,它可能保持在同一池叢集,也可能步到下一個,這取決于它的位置。

結論

文本識别系統學習任何有助于提高其所訓練的資料集準确性的内容。如果一些随機的像素有助于識别正确的類,那麼系統将使用它們。如果系統隻需要處理左對齊的文本,那麼它将不會學習任何其他類型的對齊。有時,它學習我們人類認為對閱讀有用的特性,這些特性概括為廣泛的文本樣式,但有時它學習隻對一個特定資料集有用的捷徑。

我們必須提供不同的資料(例如混合多個資料集或使用資料增強),以確定系統真正學習文本功能,而不僅僅是一些欺騙。