表示學習
表示學習
這一章聚焦表示學習(Representation Learning)及其應用,主要內容有無監督及有監督預訓練的作用,遷移學習及分布式表示。機器學習的主要問題就是如何更合理高效的將特征表示出來。怎么判定某種表示更好呢,這需要具體問題具體分析,這通常依賴于后續的學習任務是否能夠得益于這種表示。通常是進行某些無監督學習提取出特征,而這些特征可用來我們更好的進行監督學習,或者將這些特征遷移到其他相關任務中。同時也可以將監督學習訓練的前饋神經網絡看做是一種表示學習,通常神經網絡的最后一層是個分類器如softmax,它之前的隱藏層可以看做是給這個分類器提供一個高效的表征。
在深度學習的再次興起中,貪心逐層無監督預訓練(Greedy Layer-Wise Unsupervised Pretraining)作為無監督學習的代表起了重要的作用,

這其中包括了RBM(restricted boltzmann machine),單層自編碼器,稀疏自編碼器等等,它可以通過無監督學習得到輸入數據的分布,常常用來提供神經網絡的合理的初始值設置。一個常用例子是word embedding,如果我們僅僅用one-hot encoding即用某個元素上為1其他元素為零的向量來表示所有單詞的時候,所有的單側的距離都是相同的 \(\sqrt2\) ,而我們用word embedding將其映射到新的空間,令詞義更相近的單詞靠得更近,如下圖所示。如果我們有某些字符串類型的數據,則利用word embedding可以更有效的表示數據之間的關系。

當然,隨著深度學習的發展,無監督預訓練重要性逐漸下降,除了自然語言處理外,在其他應用場景如圖像識別漸漸被監督預訓練所取代,即利用某些在大量有標記圖像數據下學習到的公開的較好的配置來初始化我們具體問題的模型。
遷移學習(Transfer Learning)
遷移學習指的是我們將在某種設置下學習到的知識遷移到一個新的領域中,這有點類似于人類舉一反三的能力。其基本思想是對于某類任務,其輸入或輸出遵循一定的基本的共通的規律,學習其中一個則其他任務也可以受益。其中極端的例子是zero-shot learning,即在沒有相應的具有標記的數據的情況下進行學習,例如在機器翻譯中,假如我們想將X語言中的單詞\(A\)翻譯成\(Y\)語言中的單詞\(B\),而我們并沒有直接的將\(X\)中\(A\)對應到\(Y\)中\(B\)單詞的訓練數據,但我們之前已經得到了\(A\)在\(X\)中的表征,\(B\)在\(Y\)中的表征,假如我們學習過\(X\)與\(Y\)的表征空間的映射(例如我們只需要一些\(X\)和\(Y\)中哪些句子是成對的數據而不需要單詞一一對應的數據即可學習這種映射),則我們可以推斷\(A\)的對應的翻譯\(B\)。

分布式表示(Distributed Representation)
分布式表示的概念 ( 由很多元素組合的表示, 這些元素之間可以設置成可分離的 ) 是表示學習最重要的工具之一。分布式表示非常強大, 因為他們能用具有 \(k\) 個值的 \(n\) 個特征去描述 \(k^n\) 個不同的概念。正如在本書中看到的, 具有多個隱藏單元的神經網絡和具有多個潛變量的概率模型都利用了分布式表示的策略。現在再介紹一個觀察結果。許多深度學習算法基于的假設是, 隱藏單元能夠學習表示出解釋數據的潛在因果因子。這種方法在分布式表示上是自然的, 因為表示空間中的每個方向都對應著一個不同的潛在配置變量的值。
\(n\) 維二元向量是一個分布式表示的示例, 有 \(2^n\) 種配置, 每一種都對應輸入空間中的一個不同區域。這可以與符號表示相比較, 其中輸入關聯到單一符號或類別。如果字典中有 \(n\) 個符號, 那么可以想象有 \(n\) 個特征監測器, 每個特征探測器監測相關類別的存在。在這種情況下, 只有表示空間中 \(n\) 個不同配置才有可能在輸入空間中刻畫 \(n\) 個不同的區域。這樣的符號表示也被稱 為 one-hot 表示, 因為它可以表示成相互排斥的 \(n\) 維二元向量 (其中只有一位是激活的)。符號表示是更廣泛的非分布式表示類中的一個具體示例, 它可以包含很多條目,但是每個條目沒有顯著意義的單獨控制作用。下圖為分布式表示:

下圖為符號表示:

以下是基于非分布式表示的學習算法的示例:
-
聚類算法, 包含 k-means 算法: 每個輸入點恰好分配到一個類別。
-
\(k\)-最近鄰算法: 給定一個輸入, 一個或幾個模板或原型樣本與之關聯。在 \(k>1\) 的情況下, 每個輸入都使用多個值來描述, 但是它們不能彼此分開控制, 因此 這不能算真正的分布式表示。
-
決策樹: 給定輸入時, 只有一個葉節點 (和從根到該葉節點路徑上的點) 是被激活的。
-
高斯混合體和專家混合體: 模板 (聚類中心) 或專家關聯一個激活的程度。和 \(k\)-最近鄰算法一樣, 每個輸入用多個值表示, 但是這些值不能輕易地彼此分開控制。
-
具有高斯核(或其他類似的局部核)的核機器:盡管每個“支持向量”或模板樣本的激活程度是連續值, 但仍然會出現和高斯混合體相同的問題。
-
基于 \(n\)-gram 的語言或翻譯模型: 根據后綴的樹結構劃分上下文集合(符號序列 )。例如, 一個葉節點可能對應于最后兩個單詞 \(w_1\) 和 \(w_2\) 。樹上的每個葉節點分別估計單獨的參數 (有些共享也是可能的)。
不可否認的是,之前很多的無監督學習方法有一定的局限性,比如常常需要設定特定的優化目標,比如均方差盡量小,這決定了哪些特征可以是顯著的特征而忽略了其他特征。例如圖像合成領域某些局域的對比度變化不高的圖案會被忽略掉。所以Ian提出了生成對抗網絡(Generative Adversarial Network)簡稱GAN,這個在第20章會詳細總結,其基本思想就是我們訓練生成模型取欺騙另一個分類器,而分類器則是盡量提高能區分出我們的生成模型與真實的訓練數據的準確度。這樣兩個模型都不斷改進,并且能提取所有的關鍵信息而不產生遺漏。如下圖中所示,采用均方差為訓練目標的傳統無監督學習的合成圖像會丟失掉耳朵的信息,而GAN合成的圖像則可以以假亂真。

回到最初的問題,怎樣判定某種表示優于另一種表示呢? 這里總結一些大致的指導思想,當然具體問題還需要選取合適的判定條件:
-
平滑: 假設對于單位 \(\boldsymbolw0obha2h00\) 和小量 \(\epsilon\) 有 \(f(\boldsymbol{x}+\epsilon \boldsymbolw0obha2h00) \approx f(\boldsymbol{x})\) 。這個假設允許學習器從訓練樣本泛化到輸入空間中附近的點。許多機器學習算法都利用了這個想法, 但它不能克服維數災難難題。
-
線性: 很多學習算法假定一些變量之間的關系是線性的。這使得算法能夠預測遠離觀測數據的點, 但有時可能會導致一些極端的預測。大多數簡單的學習算法不會做平滑假設, 而會做線性假設。這些假設實際上是不同的, 具有很 大權重的線性函數在高維空間中可能不是非常平滑的。
-
多個解釋因子: 許多表示學習算法受以下假設的啟發, 數據是由多個潛在解釋因子生成的, 并且給定每一個因子的狀態, 大多數任務都能輕易解決。學習 \(p(x)\) 的結構要 求學習出一些對建模 \(p(\boldsymbol{y} \mid x)\) 同樣有用的特征, 因為它們都涉及到相同的潛在解釋因子。
-
因果因子:該模型認為學成表示所描述的變差因素是觀察數據 \(\boldsymbol{x}\) 的成因, 而并非反過來。這對于半監督學習是有利的, 當潛在成因上的分布發生改變, 或者我們應用模型到一個新的任務上時, 學成的模型會更加魯棒。
-
深度,高級抽象概念能夠通過將簡單概念層次化來定義。從另一個角度來看, 深度架構表達了我們認為任務應該由多個程序步驟完成的觀念, 其中每一個步驟回溯到先前步驟處理之后的輸出。
-
任務間共享因素: 當多個對應到不同變量 \(\mathrm{y}_i\) 的任務共享相同的輸入 \(\mathrm{x}\) 時, 或者當每個任務關聯到全局輸入 \(\mathrm{x}\) 的子集或者函數 \(f^{(i)}(\mathbf{x})\) 時, 我們會假設每個變量 \(\mathrm{y}_i\) 關聯到來自相關因素 \(\mathrm{h}\) 公共池的不同子集。因為這些子集有重疊, 所以通過共享的中間表示 \(P(\mathbf{h} \mid \mathbf{x})\) 來學習所有的 \(P\left(\mathrm{y}_i \mid \mathbf{x}\right)\) 能夠使任務間共享統 計強度。
-
流形: 概率質量集中, 并且集中區域是局部連通的, 且占據很小的體積。在連續情況下, 這些區域可以用比數據所在原始空間低很多維的低維流形來近似。很多機器學習算法只在這些流形上有效。一些機器學習算法, 特別是自編碼器, 會試圖顯式地學習流形的結構。
-
自然聚類:很多機器學習算法假設輸入空間中每個連通流形可以被分配一個單獨的類。數據分布在許多個不連通的流形上, 但相同流形上數據的類別是相同的。這個假設激勵了各種學習算法, 包括正切傳播、雙反向傳播、流形正切分類器和對抗訓練。
-
時間和空間相干性:慢特征分析和相關的算法假設, 最重要的解釋因子隨時間 變化很緩慢, 或者至少假設預測真實的潛在解釋因子比預測諸如像素值這類原 始觀察會更容易些。
-
稀疏性: 假設大部分特征和大部分輸入不相關, 如在表示貓的圖像時, 沒有必要使用象鼻的特征。因此, 我們可以強加一個先驗, 任何可以解釋為 “存在” 或 “不存在” 的特征在大多數時間都是不存在的。
-
簡化因子依賴: 在良好的高級表示中, 因子會通過簡單的依賴相互關聯。最簡 單的可能是邊緣獨立, 即 \(P(\mathbf{h})=\prod_i P\left(\mathbf{h}_i\right)\) 。但是線性依賴或淺層自編碼器所能表示的依賴關系也是合理的假設。這可以從許多物理定律中看出來, 并且假設在學成表示的頂層插入線性預測器或分解的先驗。
總的來說學習數據的更好表示是一個仍需大量深入研究的課題。不僅僅是深度學習,在線性代數,高等代數,復變函數中的多種數學分解,也可以理解為改進數據或者函數的數學表示,從而幫助我們進行后續的處理。而這又與算法的先驗緊緊相關,天下沒有白吃的午餐,所以對于不同的問題,我們需要選擇合理的表示和表示學習法。

浙公網安備 33010602011771號