從任務到可視化,如何理解LSTM網絡中的神經元
對人類而言,轉寫是一件相對容易并且可解釋的任務,所以它比較適合用來解釋神經網絡做了哪些事情,以及神經網絡所做的事情是否和人類在同樣的任務上做的事情有相似之處。因此,我們從轉寫任務開始進一步從可視化的角度解釋神經網絡中的單個神經元實際上都學到了什么,以及它們到底是如何決策的。
目錄:
- 轉寫
- 網絡結構
- 分析神經元
- 「t」是如何變成「ծ」的?
- 神經元 是如何學習的?
- 可視化長短期記憶(LSTM)網絡中的單元(cell)
- 總結評論
轉寫(Transliteration)
數十億互聯網用戶中,大約有一半在使用非拉丁文字母(non-Latin alphabets)表示的語言,例如俄語、阿拉伯語、中文、希臘語以及亞美尼亞語等。很多時候他們也會隨意地用拉丁文字母來寫這些語言。
- Привет: Privet, Privyet, Priwjet, …
- كيف حالك: kayf halk, keyf 7alek, …
- Բարև Ձեզ: Barev Dzez, Barew Dzez, …
因此,用戶生成的內容中使用「拉丁化」或者「羅馬化」的格式內容越來越多,這些格式的內容難以解析、搜索,甚至識別。轉寫就是就是將這些內容自動地轉換成規范格式的任務。
- Aydpes aveli sirun e.: Այդպես ավելի սիրուն է:
什么因素使得這個問題比較困難呢?
- 如上所示,不同的語言使用者會用到不同的羅馬化方式。例如,v 或者 w 在亞美尼亞語中被寫為վ。
- 多個字母可以被羅馬化成一個拉丁字母。例如 r 可以代表亞美尼亞語中的 ր 或者 ռ。
- 一個單個字母可以被羅馬化成多個拉丁字母或者拉丁字母的組合。例如,ch 組合代表西里爾字母中的ч或者亞美尼亞子母中的 չ,但是 c 和 h 各自又代表其他的東西。
- 英語單詞和跨語言的拉丁文標志,例如 URL,通常都以非拉丁文本的形式出現。例如,youtube.com 和 MSFT 中的字母不會被改變。
人類很擅長解決這些模棱兩可的東西。我們曾經展示過 LSTM 也能夠學會解決所有的這些歧義性,至少在亞美尼亞語上。例如,我們的模型可以正確地將 es sirum em Deep Learning 轉寫為ես սիրում եմ Deep Learning,而不是ես սիրում եմ Դեեփ Լէարնինգ。
網絡架構
我們從維基百科上取了很多亞美尼亞文本,并使用概率規則(probabilistic rules)來得到羅馬化的文本。概率規則覆蓋了人們在亞美尼亞語中使用的大多數羅馬化規則。
我們把拉丁字母編碼成了 one-hot 向量,然后使用字符級別的雙向 LSTM。在每一個時間步長上,網絡都會盡力去猜測原始亞美尼亞語句子中的下一個字符。有時候一個單獨的亞美尼亞字母會由多個拉丁文字母表示,所以在使用 LSTM 之前將羅馬化的文本和原始文本對齊是很有幫助的(否則,我們需要使用句子到句子的 LSTM,但是這種網絡非常難以訓)。幸好我們可以對齊,因為羅馬尼亞文本只由我們自己生成的。例如,dzi 應該被轉寫成ձի,其中 dz 與ձ對應,i 與ի對應。因此我們在亞美尼亞文本中添加了一個占位符:ձի 變成了 ձ_ի,因此現在 z 可以被轉寫為 _。在轉寫完成之后我們只需要將輸出字符串中的所有 _ 清除掉即可。
我們的神經網絡包含兩個 LSTM(共有個 228 個單元),它會沿著拉丁文序列向前和向后遍覽。LSTM 的輸出在每個步驟都是相連的(連接層),然后一個具有 228 個神經元的緊密層(dense layer)用在隱藏層的頂部,然后再用一個使用 softmax 激活函數的緊密層(輸出層)來得到輸出概率。我們還將輸入層與隱藏層連在一起,這樣就有 300 個神經元了。這比我們之前的博客中描述的相同主題上使用的簡化版網絡更加簡潔(主要的區別就是我們沒有使用雙向 LSTM(biLSTM)的第二層)。
分析神經元
我們嘗試回答下面的兩個問題:
- 網絡如何處理具有幾個可能的輸出結果的例子?(例如 r => ր vs ռ 等等)
- 特定的神經元都解決了什么問題?
「t」是如何變成「ծ」的?
首先,我們使用一個特定的字符作為輸入,另一個特定的字符作為輸出。例如,我們對「t」是如何變成「ծ」比較感興趣(我們知道 t 可以變成 տ、թ 或者ծ)。
我們對每一個神經元的正確輸出是ծ和不是ծ的情況都繪制了直方圖。對大多數神經元來說,這個直方圖都是比較相似的,只是有以下這兩種情況而已:
這兩幅直方圖表明,通過觀察這個特定神經元的激活結果,我們就能夠以較高的準確率猜到 t 的輸出結果是不是ծ。為了量化這兩幅直方圖的差別,我們使用了海寧格距離(Hellinger distance),即我們得到對神經元激活結果的***值和最小值,并將它們之間劃分成 1000 分,然后應用海寧哥距離公式。我們計算了每一個神經元的海寧格距離,然后將最感興趣的那些以一幅圖展示了出來:
神經元的顏色代表兩幅直方圖之間的距離(更深的顏色意味著更大的距離)。兩個神經元之間連線的線寬代表從更低層到更高層的連接貢獻,即均值。橙色和綠色的線分別代表正或負的信號。
圖片頂部的神經元來自于輸出層,輸出層下面的神經元來自于隱藏層(頂部的 12 個神經元表示直方圖之間的距離)。隱藏層下面是連接層。連接層的神經元被分成兩部分:左半部分神經元是從輸入序列向輸出序列傳播的 LSTM,右半部分是從輸出向輸入傳播的 LSTM。我們根據直方圖的距離從每個 LSTM 中展示出了前十個神經元。
在 t => ծ 的情況中,很明顯隱藏層的前 12 個神經元都向 ծ 和ց(ց 在亞美尼亞語言也經常被羅馬化成 t)傳遞正信號,向 տ, թ 以及其他的字符傳遞負信號。
我們也可以發現從右到左的輸出顏色更加深,這表明這些神經元「擁有更多關于是否要預測成ծ的知識」,另一方面,這些神經元和隱藏層之間的連線顏色卻更加淺,這意味著他們對隱藏層中頂部的 12 個神經元激活程度的貢獻更大。這是非常自然的結果,因為當下一個符號是 s 的情況下,t 一般會變為ծ,而且,僅僅從右向左的 LSTM 才能意識到下一個字符。
我們對 LSTM 內部的神經元和門(gate)做一下類似的分析。分析結果在圖中底部的 6 行展示了出來。實際上,有趣的是最「置信的」神經元是那些所謂的單元輸入(cell input)。輸入單元和門都依賴于當前步驟的輸入和前一步的隱藏狀態(就像我們談論過的從右向左的 LSTM,這是下一個字符的隱藏狀態),因此它們都「意識」到了下一個 s,但是因為一些原因,單元輸入比其他部分更具置信度。
在 s 應該被轉寫成_(占位符)的情況下,隨著 s 變成 _ ,尤其是在 ts => ծ_的情況下,有用的信息更可能來自輸入到輸出的正向 LSTM。在下圖中可以看到這個情況:
神經元是如何學習的?
在分析的第二部分我們闡釋了在有歧義的情況中,每個神經元是如何起到幫助作用的。我們使用了可以被轉寫為不止一種亞美尼亞字母的拉丁字符集。然后我們移除了在 5000 個樣本句子中出現次數少于 300 次的樣本結果,因為我們的距離因子(distance metric)在那些更少的樣本上不太奏效。然后我們在給定輸入-輸出對的情況下分析了每一個神經元。
例如,這是對從左到右的 LSTM 中輸出層編號為 #70 的神經元的分析。我們在之前的可視化中看到,它有助于決定 s 是否會被轉寫為_。下面是這個神經元判斷的排名前 4 的輸入-輸出對:
所以這個神經元最有助于將 s 預測為_(這個我們早就知道了),但是它也有助于決定拉丁字母 h 是否要被轉寫為亞美尼亞字母հ或者占位符_(例如,亞美尼亞字母չ通常被羅馬化為 ch,因此 h 有時候會變成_)。
當輸入是 h,輸出是_的時候,我們可視化了神經元激活程度直方圖之間的海寧格距離(Hellinger distances),結果發現,在 h=>_的情況下,編號為 #70 的神經元也屬于從左到右的 LSTM 中頂部十個神經元的一個。
可視化 LSTM 單元
受到論文可視化和理解循環網絡(Visualizing and Understanding Recurrent Networks,Andrej Karpathy、Justin Johnson 和 Fei-Fei Li)的啟發,我們嘗試尋找對后綴թյուն(羅馬化為 tyun)反應***烈神經元。
***行是輸出序列的可視化。下面幾行展示了最有趣的神經元的激活程度:
- 輸出到輸入反向 LSTM 中編號為 #6 的單元
- 從輸入到輸出正向 LSTM 中編號為 #147 的單元
- 隱藏層中的第 37 個神經元
- 連接層中的第 78 個神經元
我們可以看到,單元 #6 在 tyuns 上表現的很活躍,但是在序列中的其他部分則并不活躍。前向 LSTM 中的單元 #144 則有完全相反的表現,它對除了 tyuns 之外的一切都感興趣。
我們知道,在亞美尼亞語種,tyuns 中的前綴 t 總應該變成թ,因此我們認為,如果一個神經元對 tyuns 感興趣,那么它有可能會有助于決定拉丁文 t 是否應該別轉寫為 թ 或者 տ。所以我們可視化了在輸入輸出對 t => թ的情況下最重要的神經元。
事實上,前向 LSTM 中的單元 #147 也是屬于 top 10 的。
結語
神經網絡的可解釋性仍然是機器學習中的一個挑戰。卷積神經網絡和長短期記憶對很多學習任務都表現良好,但是鮮有工具能夠理解這些系統的內部運作機制。轉寫是一個用來分析實際神經元作用的很好的問題。
我們的實驗證明,即使在很簡單的例子中,也會有大量的神經元參與決策,但是能夠找到那些比其他神經元更具有作用的一個神經元子集。另一方面,根據上下文,大多數神經元都涉及到了多個決策過程。由于我們在訓練神經網絡時所用的損失函數并沒有強制讓神經元之間相互獨立并且可解釋,所以這是意料之中的。最近,為了得到更多的可解釋性,已經有人嘗試使用信息理論的正則化方法。在轉寫的任務中測試這些思想將會很有趣。