最近哪里都去不了,還是在家學習點什么好,人工智能最近很火,來學學吧。長期和短期記憶(LSTM)網絡是最先進的長期序列建模工具。然而,很難理解LSTM學到了什么,也很難研究他們犯某些錯誤的原因。卷積神經網絡領域有很多文章和論文,但是我們沒有足夠的工具來可視化和調試LSTM。
在本文中,我們試圖部分填補這一空白。我們從澳大利亞手語符號分類模型可視化LSTM網絡的激活行為,並通過在LSTM層的激活單元上訓練降噪自編碼器來實現這一點。通過使用密集的自編碼器,我們將LSTM激活值的100維向量投影到二維和三維。由於這一點,我們可以在某種程度上直觀地探索激活空間。我們分析這個低維空間,並嘗試探索這個降維操作如何幫助找到數據集中樣本之間的關系。
Auslan符號分類器 人工智能在線寫作生成器_ai人工智能作文
本文是米羅斯拉夫·巴托爾德工程論文(巴托爾德,2017)的延伸。本文使用的數據集來自(Kadous,2002)。該數據集由95個澳大利亞手語符號組成,使用配有高質量位置跟蹤器的手套采集。但是,由於其中一個符號的數據文件有問題,仍有94個類可用。每個符號由本地手語用戶重復27次,每個時間步長用22位數字編碼(每只手11位數字)。在數據集中,最長序列的長度是137。然而,由於長序列的數量很少,我們將把長度保持在90位,並用零序列填充短序列的前端。
米羅斯拉夫的論文測試了幾個分類器,所有的分類器都基於LSTM架構,分類准確率約為96%。
如果你不熟悉LSTM,可以看看克里斯托弗·奧拉(Christopher Olah)的博客,其中對LSTM網絡有很好的解釋:.或“機器之心”文章:在調用API之前,你需要了解LSTM是如何工作的。
在本研究中,我們將重點關注一個包含100個LSTM單元的單一隱藏層架構。架構的最后一個分類層有94個神經元。它的輸入是一個有90個時間步長的22維序列。我們使用了Keras功能性應用編程接口,其網絡架構如圖1所示。圖1:模型架構
圖1所示的λ元素從完整的激活序列中提取最后一級激活(因為我們將return_sequences=True傳遞給了LSTM)。關於實施過程的細節,我們希望您能檢查我們的回購。
這是第一次嘗試了解LSTM網絡的內部結構。
受《Visualizing and Understanding Recurrent Networks》 (Karpathy,2015)的啟發,我們試圖定位(並分享)一些對應於容易識別的子手勢的神經元,例如握緊拳頭或使用手繪圓圈。然而,這一想法由於以下五個主要原因而失敗:
來自位置跟蹤器的信號不足以完全重建手的運動。
手勢在跟蹤器和真實空間中的表現明顯不同。
我們只有來自 的手勢視頻,但數據集中沒有實際執行符號的視頻。
數據集和視頻中的詞匯來自不同的方言,所以同義詞可能會出現。
100個神經元和94個符號是人類理解的很大空間。
因此,我們只關注可視化技術,希望它能幫助我們揭開一些關於LSTM單位和數據集的神秘面紗。
去噪自編碼器
為了可視化所有手勢的LSTM輸出激活序列,我們將嘗試在每個時間步長使用去噪自編碼器將代表激活值的100維向量減少到2-3維向量。我們的自編碼器由五個完全連接的層組成,其中第三層是具有線性激活功能的瓶頸層。
如果您不熟悉上述主題,您可以了解有關自編碼器的更多信息:http://ufl dl . Stanford . edu/tutorial/unsupervised/auto encoders/。
為了使圖像清晰可讀,線性激活函數被證明是最佳激活函數。對於所有測試的激活函數,所有示例路徑(該術語將在下一節中解釋)都從圖表的(0,0)點附近開始。對於非奇對稱函數(ReLU和sigmoid),所有樣本路徑都在坐標系的第一象限。對於奇數函數(如正切函數和線性函數),所有路徑在所有象限中大致均勻分布。然而,tanh函數將路徑壓縮到-1和1左右(這使得圖像太假),而線性函數沒有這個問題。如果您對可視化其他類型的激活函數感興趣,您可以在repo中找到代碼實現。在圖2中,我們示出了2D自編碼器的架構。3D自編碼器幾乎與它相同,但它在第三致密層有3個神經元。
在每個手勢實現的所有單個時間步驟中,自編碼器使用LSTM單元的輸出激活向量進行訓練。這些激活向量然后被加擾,並且一些冗余的激活向量被移除。冗余激活向量是指從每個手勢的開始和結束獲得的向量,並且它們的激活基本保持不變。
圖2自編碼器架構
自編碼器中的噪聲遵循平均值為0、標准偏差為0.1的正態分布。這些噪聲被添加到輸入向量中。網絡使用亞當優化器進行訓練,以最小化均方誤差。
形象化
通過將對應於單個手勢的LSTM單元激活序列輸入到自編碼器,我們可以獲得瓶頸層上的激活。我們使用這個低維瓶頸層激活序列作為樣本路徑。
在一些示例的最后一步附近,我們給出了它所代表的手勢符號的名稱。在圖3中,我們顯示了訓練集的樣本路徑的可視化結果。
圖3激活時間演變的可視化
可視化中的每個點代表一個時間步長和自編碼器2D激活值的樣本。圖表中點的顏色代表每個符號的時間步長(從0到90),黑線連接單個樣本路徑的點。在可視化之前,每個點由函數lambda x : numpy . sign(x)* numpy . log1p(numpy . ABS(x))轉換。這種轉換使我們能夠更仔細地觀察每條路徑的起始位置。
在圖4中,我們顯示了每個訓練樣本的最后一步的激活。這是從輸入點到分類層的二維投影。
圖4 LSTM最后一層的激活
令人驚訝的是,所有路徑看起來都非常平滑,並且可以在空間上很好地分離,因為在訓練自編碼器之前,幾乎每個時間步長和樣本的所有激活操作都被中斷。圖4中的空間結構解釋了為什么我們的最后一個分類層可以在如此小的訓練集(接近2000個樣本)上實現高精度。
對於那些對研究2D空間感興趣的人,我們已經在以下地址提供了圖2的大版本: .
在圖5中,我們展示了3D LSTM激活的可視化結果。為了清楚起見,我們只標出了一些要點。出於數據分析的目的,在本文的第二部分,我們只關注2D可視化。圖5 LSTM激活的三維可視化版本
分析
可視化看起來很好,但是還有什么更有意義的嗎?如果一些路徑非常接近,這是否意味着這些手勢符號更相似?
讓我們看看這個空間,同時考慮右手和雙手符號的划分(我們不僅僅用左手看到符號)。該划分基於手持式跟蹤器的信號可變性統計。更多詳細信息,請參見回購。
為了清楚起見,我們在圖6中畫了一條沒有點的路徑。右手手勢符號為青色,雙手手勢符號為品紅色。我們可以清楚地看到,這兩個符號占據了空間的互補部分,很少相互混淆。
圖6根據手的使用對激活路徑進行分類
現在讓我們先看看酒后危險。它們都是“青色”手勢,但是它們占據了圖6中間右側的大部分品紅色。在我們的數據中,這兩種手勢都是單手的,但是奧斯蘭信號銀行的視頻解釋顯示危險手勢顯然是雙手的。
這可能是由標簽錯誤引起的。請注意,危險必須是單手的,並且喝酒是相似的(至少在手勢的第一部分)。因此,我們認為標簽危險實際上是危險的。我們在圖7中畫出這兩個手勢。
圖7飲料和危險標簽的LSTM激活值
在圖8中,世衛組織和世衛組織的手勢非常相似。手套中只有一個彎曲跟蹤器,手指彎曲測量不太准確。這就是為什么這兩個手勢在圖8中看起來比在視頻中更相似。
圖8世界衛生組織和其他標簽的LSTM激活值
瘋狂和思考符號的樣本路徑在圖9中占據相同的空間區域。然而,思考看起來是稍微長一點的瘋狂手勢的主要部分。當我們看奧斯蘭信號銀行的視頻時,我們發現思維關系是正確的,瘋狂的符號看起來像是思維加上手掌張開的過程。
圖9思考和瘋狂的LSTM激活值
在圖10中,盡管當我們看着你的符號時,我們發現這個符號垂直於瘋狂、思考、抱歉(以及這里沒有顯示的其他手勢),當我們在signbank中比較它們的視頻時,我們找不到這些符號和你之間的任何相似之處。圖LSTM思考/瘋狂/抱歉/你的激活值
我們應該記住,每個LSTM單元的狀態將記住它自己以前的狀態,它在每個時間步長由相應的輸入序列饋入,並且當路徑占據相同的空間時,可能存在時間演化差異。因此,除了我們在分析中考慮的因素,實際上還有更多的變量將決定路徑的形狀。這可以解釋為什么當我們不能觀察到符號之間的視覺相似性時,我們可以發現一些樣本路徑之間的交叉關系。
從可視化結果中獲得的一些緊密聯系被證明是錯誤的。在編碼器重新訓練期間(或LSTM單元重新訓練后),某些鏈路會發生變化;有些鏈接不會改變,可能代表真正的相似之處。例如,上帝和科學有時在2D空間共享相似的路徑,有時他們彼此遠離。
錯誤分類的樣本
最后,讓我們看看被錯誤分類的樣本。在圖11、12和13中,我們分別在訓練集、驗證集和測試集中可視化錯誤分類的樣本。錯誤分類樣本上的藍色標簽是它們真正的類別。下面是型號選擇的標簽,標有紅色。
對於訓練樣本,只有三個樣本貼錯標簽,其中兩個(傷害所有和感謝熱)在二維空間中非常接近。感謝熱在視頻中也很接近,但是傷害-所有的都不是。
圖11訓練集中錯誤分類的樣本
正如我們所預期的,驗證集和測試集都有更多的分類錯誤樣本,但是這些錯誤更經常出現在投影空間更近的手勢中。
圖12驗證集中錯誤分類的示例
圖13測試集中錯誤分類的示例
摘要
我們將激活值的100維向量投影到低維空間中。這種投影看起來很有趣。它似乎保留了符號之間的許多(但不是全部)關系。這些關系似乎與我們在現實生活中觀察手勢時所感知的相似,但是如果沒有實際匹配手勢視頻進行分析,我們就無法確定這一點。
這些工具在一定程度上可以用來觀察LSTM表征的結構。此外,它可以作為比使用原始輸入更好的工具來查找樣本關系。