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

1. AutoEncoder介紹

2. Applications of AutoEncoder in NLP

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

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

1. 前言

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

2. 矩陣表示

假設咱們有一個矩陣\(L\)的表示向量,一個有序的有\(m\)個元素的序列,每一個元素有\(k\)維的向量表示,咱們用\(b_k\)表明咱們須要找的那個向量,公式以下:算法

\[ x_i=Lb_k \]app

如今咱們能用矩陣表示這個\(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}' \]spa

  • 損失函數

\[ E=\frac{1}{2}\Vert [\mathbf{x}_{1},\mathbf{x}_{2}]-[\mathbf{x}_{1}',\mathbf{x}_{2}']\Vert ^{2} \]
這個過程在每個AE過程當中重複,直到構造出整棵樹。3d

4. 優化

咱們能夠從幾個方面去優化RAE。code

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

5. 總結

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

相關文章
相關標籤/搜索