3. Recursive AutoEncoder(遞歸自動編碼器)


1. AutoEncoder介紹

2. Applications of AutoEncoder in NLP

3. Recursive Autoencoder(遞歸自動編碼器)

4. Stacked AutoEncoder(堆棧自動編碼器)

1. 前言

今天主要介紹用在NLP中比較常見的AutoEncoder的模型,Recursive Autoencoders(遞歸自動編碼模型)。這篇文章主要討論RAE在序列化的數據中,如何把數據降維並且用向量表示。

2. 矩陣表示

假設我們有一個矩陣\(L\)的表示向量,一個有序的有\(m\)個元素的序列,每個元素有\(k\)維的向量表示,我們用\(b_k\)代表我們需要找的那個向量,公式如下:

\[x_i=Lb_k \]

現在我們能用矩陣表示這個\(m\)個元素的序列了,\((x_1,x_2,x_3...,x_m)\)

3. 非監督遞歸自動編碼器

image

上圖是RAE的二叉樹遞歸結構,最底層的節點\(x_1,x_2...,x_m\)都是序列的內容。第一個RAE從在最底層最右邊的兩個孩子節點序列的元素\(x_1\)\(x_2\)開始,對它們進行重構,會產生一個隱藏層\(y_1\)。再上層一點,一個節點是序列中的元\(x_i\)素,另一個節點是下一程節點通過AE的過程算出來的隱藏層向量\(y_i\),經過RAE后,會產生隱藏節點\(y_{i+1}\),如此循環直到序列中所有元素都進行了AE的過程。

  • 編碼過程:父節點是\(y_1\),兩個孩子節點是\(x_1\)\(x_2\):

\[\mathbf{y_1}=f(\mathbf{W}[\mathbf{x}_{1},\mathbf{x}_{2}]+\mathbf{b}) \]

  • 解碼過程:通過父節\(y_1\)點再重構\(x_1\)\(x_2\)

\[[\mathbf{x}_{1}';\mathbf{x}_{2}']=\mathbf{W}'\mathbf{y_1}+\mathbf{b}' \]

  • 損失函數

\[E=\frac{1}{2}\Vert [\mathbf{x}_{1},\mathbf{x}_{2}]-[\mathbf{x}_{1}',\mathbf{x}_{2}']\Vert ^{2} \]

這個過程在每一個AE過程中重復,直到構造出整棵樹。

4. 優化

我們可以從幾個方面去優化RAE。

  1. 選擇一個好的方式去構造樹:我們構造二叉樹的方法很多。例如一個比較好的構造二叉樹的方式是用貪婪算法在每一步去嘗試每個可能選擇孩子節點,最后選擇這一步重構損失最低的方式建樹。
  2. 選擇一個好的重構損失函數:前面我們的重構損失是平均的懲罰所有序列的損失值。假設我們可以包含孩子節點多的RAE過程的損失的權重比包含孩子節點少的RAE過程的損失函數的權重大。
  3. 歸一化:RAE計算的隱藏節點,它們后面會被下一個RAE重建。為了最小化重構的損失,RAE計算隱藏節點的時候可以對它進行歸一化。

5. 總結

本文主要介紹了RAE的構造和優化方向,RAE適合用來處理序列問題。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM