文章目錄
上節課介紹了神經網絡,神經網絡的核心是通過一層層的感知器從輸入數據中提取模式特徵,關鍵是求解每一層的權重向量,通過反向傳播結合梯度下降算法可以很容易的求解出來。那麼神經網絡應該配置多少神經元,配置多少層呢?這兩個配置決定了神經網絡的結構,而神經網絡的結構設計是關鍵。這是本節課討論的內容。
13.1 Deep Neural Network
首先對比一下淺層網絡和深層網絡。其中“深”與“淺”是指隱藏層的數目。兩類網絡的優缺點如下:
淺層網絡:
- 更容易訓練;
- 結構簡單,容易設計;
- 理論上通過多個神經元同樣可以達到深度神經網絡的效果。
深層網絡:
- 不容易訓練;
- 結構複雜,不容易設計;
- fit能力過強;
- ……(之後介紹)
下面看一下其意義:
可以看到,神經網絡將輸入的圖片看作一個個像素(pixel),不同的神經元關注的地方不同,通過不同的神經元來學習不同的特徵,最後通過組合再做判斷;對於淺層神經網絡,需要單層配置多個神經元,這樣會使得每層的負擔(burden)過重,並且需要提取的特徵會更復雜;對於深層神經網絡來說,每層提取的特徵較少,通過組合不同的層來提取複雜的特徵,這在計算機視覺領域非常常用,即通過深層神經網絡從比較複雜的原始數據中提取特徵。下面看一下深度學習的挑戰和關鍵技術:
深度神經網絡的困難及其應對策略主要有四點:
- 網絡結構不容易確定:針對不同領域的問題有不同的應對策略,例如在CV領域,常常通過卷積NN來提取features。
- 模型複雜度高:如果data足夠,則不用擔心overfit;但常常配置正則化方式。
- 不容易優化:梯度下降對起始點敏感,初始化方法重要,所以常常需要預訓練。
- 計算量大,計算困難:常常使用小批量梯度下降,並用GPU訓練。
需要注意的是正則化和初始化方法是深度神經網絡的關鍵。下面看一個簡單的兩階段的深度學習框架:
一般的深度學習流程包含兩個階段:
- 首先通過與訓練的方法,找出隱藏層比較好的權重,並作爲初始權重;
- 然後通過反向傳播算法進行訓練。
將着重介紹最簡單的預訓練技術以及正則化技術。
習題1:
13.2 Autoencoder
上一小節已經介紹了深度學習的基本架構,也知道權重初始化和正則化技術是DNN的關鍵,常通過兩階段的方式訓練DNN。首先介紹第一個階段——預訓練是如何進行的。
神經網絡中的權重實際上是對輸入數據進行特徵轉換,或者說是對輸入數據進行了編碼(encoding)。一個好的神經網絡的初始化權重,應該可以儘可能的包含該層輸入的所有特徵,以便下一層網絡可以準確地解碼(decode),並且層層傳遞過程中信息不會丟失,只是使用不同的表示形式。可以通過一個簡單的神經網絡來實現:
這類神經網絡稱爲自動編碼器(autoencoder)。實際上,自動編碼器是在對輸入數據做逼近恆等映射函數的操作。其中 表示編碼器權重, 表示解碼器權重。下面看一下這麼做的好處:
如果真可以得到逼近恆等映射函數的自動編碼器,那麼其輸入輸出滿足關係式: 。說明自動編碼器可以通過隱藏層很好地學習輸入數據的特徵。那麼對於監督學習來說,這些隱藏層實際上是在對輸入數據進行特徵轉換,並且是很好的特徵轉換,即可以很好地表示輸入數據。那麼這組權重就可以作爲初始的權重。對於無監督學習,自動編碼器可以用來做密度估計(density estimation)。如果輸入與輸出滿足關係式: ,則說明密度較大,如果輸入與輸出相差很遠,則表示密度較小。特就是說可以根據輸入 與 的差距來估計測試數據是落在密度較大還是密度較小的區域。自動編碼器還以用來做離羣值/異常值檢測(outlier detection)。這樣就可以從數據中學習到具有代表性的典型地表示,告訴網絡哪些是典型資料,哪些不是典型資料,方便做預測。即自動編碼器可以通過近似的恆等映射函數進行表示學習。
上圖展示了基本的自動編碼器的特點。自動編碼器使用平方誤差函數,因爲層數較少,所以可以很容易的應用反向傳播算法結合優化算法進行優化求解;通過自動編碼器可以達到降維的效果,即將高維的輸入特徵空間轉化爲低維的特徵表示;通常可以看做無監督學習方法,因爲不需要樣本標籤;通常還限制編碼和解碼的權重是相同的,這樣就起到了類似正則化的效果,即限制了算法的複雜度,但需要注意加上這個限制條件會使得計算梯度時比較複雜。在深度學習中,可以將自動編碼器視爲一個預訓練的方法,通過逐層的訓練,可以得到整個神經網絡的預訓練權重。自動編碼器中的 等於下層的神經元個數。
除了自動編碼器之外,還有許多其它的與訓練方法,其基本思想都是通過不同的網絡結構和正則化方法得到不同的複雜的(‘fancier’ )的自動編碼器。
習題2:
13.3 Denoising Autoencoder
上一小節介紹了自動編碼器可以通過預訓練找出深度神經網絡的初始化權重。本小節介紹深度學習中通過正則化控制模型複雜度的方法。
對於複雜度很高的模型一般需要正則化方法加以限制。常用的方法有:
- 設計網絡時,加以限制;比如不用全連接的方式;
- 常用的正則化方法;
- early stopping;
下面複習一下過擬合的成因:
可以看出造成過擬合的關鍵原因之一是數據中含有噪聲。這也爲下一步處理指明瞭方向,那麼應該如何處理噪聲呢?一種直覺的做法是將噪聲都去除掉;今天從另外一個角度考慮,即在數據中添加噪聲。一個具有魯棒性的自動編碼器應該滿足對於含有噪聲/雜訊(noise)的輸入,其輸出也能很好地逼近不含noise的原始輸入,這說明這個編碼器對noise容忍度很高,稱這類編碼器爲降噪自動編碼器(denoising autoencoder)。如果自動編碼器可以達到去除noise的目的,說明其抗噪能力很強,得到的初始權重更有魯棒性。實際應用過程中,常常在原始數據中添加噪聲數據,訓練降噪自動編碼器,讓初始權重更有魯棒性,起到了正則化作用。
習題3:
13.4 Principal Component Analysis
上文介紹的自動編碼器都是非線性的情況,因爲隱藏層使用的是 激活函數,其是非線性的。本小節介紹線性的自動編碼器相關內容,主成分分析(Principal Component Analysis,PCA)與之有很大關聯。首先看線性的自動編碼器的情況:
考慮三個特殊的條件:
- 不包括 ;
- 添加限制條件;
- 假設 。
下面看一下線性自動編碼器的誤差函數:
直接通過最小化在輸入樣本上的誤差 求得解析解是比較困難的,因爲權重向量 的4次多項式。一個想法是通過線性代數的方法求解。其關鍵步驟有:
-
首先明確求解參數,即權重向量 ,在誤差函數的公式中,該向量以半正定矩陣的形式 存在,一種做法是對其做 特徵分解(Eigen decompose),又稱爲譜分解(Spectral decomposition),是將矩陣分解爲由其特徵值和特徵向量表示的矩陣之積的方法。那麼問題就轉化爲求解矩陣 和 。經過分解之後得到的矩陣 中的向量是相互正交的(orthogonal),即滿足 。 表示正交矩陣(Orthogonal Matrix); 表示第 個維度的單位矩陣(Identity Matrix)。 表示對角矩陣(Diagonal Matrix),對角線上各元素爲特徵值。這裏需要注意,因爲 的維度爲 ,其中 表示編碼器中隱藏層的維度,是一個相對較小的值,因此 的秩(Rank)最大爲 ,而 和 是由 分解而來的,因此對角矩陣 的秩最大也爲 ,即主對角線上的元素不爲零的個數最多爲 。經過分解,對 的限制就轉化對對價矩陣 的限制。
-
經過特徵分解之後,有 。下面逐一來看,首先, 表示向量 左乘正交矩陣 ,其實際上是一種變換關係(在幾何關係上,類似旋轉或映射),只是改變了座標系統。 繼續左乘對角陣 得到 ,因爲對角陣 主對角線上的元素至多有 個不爲零,所以 至少有 個元素等於零,其它不爲零的位置,相當於做了縮放操作。最後繼續左乘 ,得到 ,表示通過係數(coefficients)和偏差(bias)轉換爲原始的座標系,這樣就可以比較與原始數據的誤差。
-
可以將 替換爲 ,乘以單位矩陣不影響原向量,相當於什麼都沒有做,只是爲了便於公式推導。
接下來,通過優化 和 來最小化 。首先看一下對角陣 的優化過程:
特徵轉換 對求模沒有影響,因此可以去掉,那麼最小化公式就轉換爲 ,希望矩陣 中元素爲零的個數越多越好,一種做法是讓兩個矩陣中對應元素儘可能相等,在上述兩個矩陣中,即對角陣的主對角元素儘可能爲1,這樣就可以保證與單位陣 的主對角元素儘可能的相等,從而得到更多的零值。零多說明經過特徵轉換後的數據與原來的數據差距小,說明可以很好地表示原來的數據,並且特徵維度更低,達到了降低算法複雜度的目的。對於對角陣 主對角線最多可以實現有 個1。確定了 ,可以優化 。
上式中, 表示對角陣中不爲零的元素組成的矩陣。接下來看看如何優化 。
當隱藏層的維度(神經元個數)爲 時, 中只有第一行 有用,最大化問題轉化爲上式;接着引入拉格朗日乘子,轉化爲 。此時,易知 爲矩陣 的特徵向量, 爲其對應的特徵值,所以最優解 就是矩陣 的最大特徵值對應的特徵向量。當 時,求解方法類似,最優解 就是矩陣 前 個最大的特徵值對應的特徵向量。以上,就是線性自動編碼器的推導過程。那麼它與PCA有什麼關係呢?
PCA的不同之處在於會減去原始數據的均值。一般認爲,將高維數據投影(降維)到低維空間中,應保證數據的方差越大越好,噪聲的方差越小越好,PCA正是基於此原理推導的。線性自動編碼器和PCA都可用於數據壓縮,但PCA有統計學理論作保證,更常用。
習題4:
Summary
本節課介紹了深度神經網絡,相當於是神經網絡的延伸。之後分別介紹了自動編碼器,降噪自動編碼器,以及線性的自動編碼器。自動編碼器可以用來做權重初始化,降噪自動編碼器使得模型抗噪能力更強,更有魯棒性,有類似正則化效果。線性自動編碼器可以用來做數據壓縮和降維。