每日最新頭條.有趣資訊

基於Keras的關聯神經網絡CorrNet綜合指南

選自TowardsDataScience

作者:Md Ashiqur Rahman

機器之心編譯

參與:胡曦月、一鳴

利用多模態數據提升機器學習表現是一個值得關注的問題。本教程介紹了一種可同時圖像和音頻數據表征的網絡——CorrNet,並提供了相應的實現代碼。

人與動物都有這五種共同的感官:視覺、聽覺、味覺、嗅覺和觸覺。除此之外我們還有其它諸如平衡感、加速感和時間感等等。人類大腦無時不刻的在處理所有來自這些感官源的信息,這些感官中的每一個都會影響我們的決策過程。

任何對話中,唇部運動、面部表情和聲帶發聲同時有助於充分理解說話者所說的詞匯的意義。我們甚至可以在無聲狀況下單憑觀察唇部運動來理解詞匯,此時這一視覺信息不僅僅是補充信息,而更加是一種必要信息了。

這一現象在「麥格克效應(McGurk effect)」的一個例子中首次提出:當一個視覺可見的音節/ga/在配音時發作了/ba/,多數人聽到的音節是卻是/da/。想要使機器學習模型達到人類這樣的性能,就需要利用各種數據源來進行訓練。

在機器學習中,這些來自不同異構源的數據類型稱為多模態數據,如語音識別中的音頻和視覺信息。由於多模態數據可能由不同維度和類型的數據構成,往往難以在訓練中直接使用。因此許多研究致力於解決多模態數據的通用表示。

學習多視圖數據的通用表示有助於若乾下遊應用,如對視頻及其對應的音頻的通用表示進行學習,相比於單純使用音頻而言可以生成更加精確的字幕。那麽,怎樣學習這種通用表示呢?

關聯神經網絡(CorrNet)

CorrNet 示意圖。嘗試學習兩種數據視圖的共同表示,並且從該編碼表示重構兩種視圖。

相關神經網絡(CorrNet)是學習通用表示的一種方法。它的架構與傳統的單視圖深度自動編碼器幾乎相同。但它為每種數據模態都構建了編解碼對。

模型架構

考慮一個雙視圖輸入,Z = [Ia, Iv],其中,Ia 和 Iv 分別是兩種不同的數據視圖,如音頻和視頻。下圖所示是在該數據輸入時 CorrNet 的一個簡單架構。

在雙模態數據 Z = [Ia, Iv] 的 CorrNet 示例中,Ia 和 Iv 是兩個不同視圖的數據(如音頻和視頻),其中編碼器和解碼器都是單層的。H 為編碼表示,Ha= f( Wa.Ia+b) 為 Ia 的編碼表示,f() 是任意非線性函數(如 sigmoid、tanh 等)。Hv = f( Wa.Ia+b) 同上。雙模態數據Z的通用表示為:H = f( Wa.Ia + Wv.Iv + b)。

在解碼部分,模型試圖從通用表示*H*來重建輸入,可以用以下兩個公式表示:

I』a = g(W』a.H+b』),I』v = g(W』vH+b』)。

其中 g() 為任意激活函數,I』a **和 I』v 是經過重建得到的輸入。

訓練

在訓練階段,可以基於三種損失來計算梯度:

最小化自重建誤差,也就是將 Ia 到 Ia 和 Iv 到 Iv 重建的誤差最小化。

最小化交叉重建誤差,也就是將 Iv 到 Ia 和 Ia 到 Iv 重建的誤差最小化。

最大化兩個視圖的隱藏表示之間的相關性,也就是最大化 Ha 和 Hv 之間的相關性。

最終得到的損失函數為:

此處,Lr() 表示重建損失,可以選擇均方誤差(MSE)或者平均絕對誤差(MAE)。目標就是最小化該損失函數。並且我們想要提升相關性時,可以將它從損失中減去,也就是說,相關性越大,損失越小。

CorrNet 實現

實現可以分為三個部分:建模、設置損失函數和訓練。

建模

在建模階段需要創建自動編碼架構。首先,導入所有需要的包。

然後創建 CorrNet 架構。簡單起見,架構中隻包含單層編碼器和解碼器。

現在來為模型寫相關損失函數。

編譯和訓練

現在對模型進行編譯和訓練

經過訓練,模型所學習到的通用表示可以用於不同的預測任務。比如通過 CorrNet 學習到的通用表示可以用於跨語言文檔分類或音譯等價檢測。許多研究都表明使用通用表示可以提高性能。

此外,它還可以用於數據生成。比如,某個數據集中包含 10000 個音頻片段及其對應的視頻、5000 個丟失對應視頻的音頻片段以及 5000 個丟失對應音頻的視頻。此時,我們就可以用那 10000 個包含對應視頻的音頻片段來訓練一個 CorrNet,並以此來生成數據集中丟失的音頻和視頻。

本文為機器之心編譯,轉載請聯繫本公眾號獲得授權。

------------------------------------------------

獲得更多的PTT最新消息
按讚加入粉絲團