Reducing the Dimensionality of Data with Neural Networks:神经网络用于降维
????? 原文鏈接:http://www.ncbi.nlm.nih.gov/pubmed/16873662/
???? G. E. Hinton* and R. R. Salakhutdinov . ? Science. 2006 Jul 28;313(5786):504-7.
Abstract
????? ? High-dimensional data can be converted to low-dimensional codes by training a multilayer neural network with a small central layer to reconstruct high-dimensional input vectors. Gradient descent can be used for fine-tuning the weights in such "autoencoder" networks, but this works well only if the initial weights are close to a good solution. We describe an effective way of initializing the weights that allows deep autoencoder networks to learn low-dimensional codes that work much better than principal components analysis as a tool to reduce the dimensionality of data.
Comment in
- Computer science. New life for neural networks. [Science. 2006]
摘要:
??????? 高維數據通過使用一個小中心層(神經元個數小于維數)的多層神經網絡(稀疏編碼?)可以轉換為低維數據 ,并可以通過此網絡重建輸入向量。梯度下降法可以用于在這個“自編碼網絡“? 調整參數 ,只是這種機理?只在?初始權值?接近最優參數?時有效 。?我們設計出一個初始化權值的 有效方法,允許sleep 自編碼器網絡可以?學習低維表示 ,并且在降維的效果上好于主成分分析。
?????? 特征降維廣泛應用于分類、可視化、通信和高緯數據存儲過程。一個簡單和廣泛應用的降維方法是主成分分析PCA,他通過尋找數據集合最大偏差方向?并?映射數據集到此方向,獲得主成分。我們描述了一個非線性PCA產生方法,使用動態的多層編碼器網絡?轉化高緯數據到低維數據,并且可以使用一個?類似的自編碼網絡?可以從?低維數據恢復出元數據。(使用壓縮表示,用數據預訓練——獲取近似最優權值,用以生成可以刻畫樣本隱含性質的壓縮結構)
Fig. 1. Pretraining consists of learning a stack of restricted Boltzmann machines (RBMs), each having only one layer of feature detectors. The learned feature activations of one RBMare used as the ‘‘data’’ for training the next RBM in the stack. After the pretraining, the RBMs are ‘‘unrolled’’ to create a deep autoencoder, which is then fine-tuned using backpropagation of error derivatives.
??????? 預處理包含了?學習 一個?受限玻爾茲曼機棧(?堆疊的RBM),每一個只有一層特征監測子。一層RBM學習過的數據作為下一層RBM的輸入,然后使用BP算法調整參數。
??????? 初始化:隨機產生兩個網絡的權值,他們可以?同時 使用?最小化偏差(原數據和重建數據)方法進行訓練。梯度可以?由先通過解碼網絡再經過編碼網絡反傳導數誤差鏈獲得。整個系統叫做”自編碼器“,在圖表1中?闡述。
?????? 優化有多層網絡的?非線性自編碼器?是非常困難的(2–4),使用大量的初始大參數,自編碼器容易陷入局部最優;使用小的初始化參數,前幾層的梯度?較小,使自編碼器?的多層訓練變得不可行。?若初始化權值接近一個最優方案,梯度衰減可以正常運行,但是尋找這一個近鄰最優權值?需要一個特別的算法, 可以一次性訓練一個特征提取層。?我們為二進制數據引入一個”預處理“過程,并推廣它到?實數數據,結果顯示此過程適用于廣泛的數據集。
?????? 一個二進制向量的組合(比如?一個圖片)可以使用 ”受限玻爾茲曼機RBM“?建模,使用對稱加權連接? 隨機二進制特征 到隨機二進制特征探測器。像素點值對應于RBM的“可見”元,因為?他們是可見的;特征探測子/描述子 對應”隱藏“單元。一個?可見和隱藏單元?生成 聯合分布/配置(v,h)能量:
??????????????????????
where vi and hj are the binary states of pixel i and feature j, biand bjare their biases, and wij is the weight between them.
?這里vi 和 hj?為點i 和特征j 的二進制狀態, bi和 bj為他們的基,wij?為他們的權值。
?????? 網絡通過這個方程 分配一個概率到每一個可能的圖像,正如(8)解釋的。這個訓練圖像的概率?可以 通過調整權值和基 以降低圖片的能量 產生,并生成相似的、”虛構/構建“?的圖片(更偏向于真實數據的網絡)能量。
?????? 特征探測子 j 的二進制狀態 Hj?設定為1以 F(bj +Add(Vi*Wij) ) 的概率,在此F()是邏輯斯特函數(1/(1+exp(-x))),bj 是j的偏差,Vi是i的狀態,Wij是i和j之間的權值。
?????? 一旦二進制狀態被選定到隱藏元,一個?虛構/構建?產生?通過設定每一個Vi為1?以F(bj +?sigma(Vi*Wij)? )的概率,此時bi為i的偏差。隱藏元的權值被更新?以使他們可以?表示"虛構/構建" 的特征,權值更新通過公式
????????? 得出,
?????? 這里emuxilong?是學習率,<ViHi>data為分裂的次數(點i 和 特征檢測子j )當特征檢測子受數據驅動,<ViHi>recon為”虛擬/構建“ 的響應速率。同樣的簡化版本?的學習規則可用于偏差。這個學習過程工作良好即使它并不事實沿著訓練數據(6)的邏輯概率?的梯度方向。
Fig. 2. (A) Top to bottom: Random samples of curves from the test data set; reconstructions produced by the six-dimensional deep autoencoder; reconstructions
by? ‘‘logistic PCA’’ (8) using six components; reconstructions by logistic PCA and standard PCA using 18 components. The average squared error per image for the last four rows is 1.44, 7.64, 2.45, 5.90.?
由頂至下:來自于測試集的隨機采樣曲線;由六維深度自編碼器重建,使用Logistic?PCA方法重建(8)使用6個主元;使用Logistic?PCA方法重建使用18個主元.每個圖像最后四行 平均方差是 1.44, 7.64, 2.45, 5.90.
(B) Top to bottom: A random test image from each class; reconstructions by the 30-dimensional autoencoder; reconstructions by 30- dimensional logistic PCA and standard PCA. The average squared errors for the last three rows are 3.00, 8.01, and 13.87.
自頂向下:每一類的 一個隨機測試圖像;由30維自編碼器重建;使用30維 Logistic?PCA和標準PCA方法重建;最下三行的平均方差?是3.00, 8.01, and 13.87.
(C) Top to bottom: Random samples from the test data set; reconstructions by the 30- dimensional autoencoder; reconstructions by 30-dimensional PCA. The average squared errors are 126 and 135.
自頂向下:每一類的 一個隨機測試樣本;由30維自編碼器重建;使用30維? PCA重建;均方差是126 and 135.
?????? 一個單層二進制特征提取層并非是 為一個圖像集合?建立模型最好的方法。訓練完一層網絡之后,我們可以使它激活,當這一層被數據驅動——進而生成數據作為學習第二層特征的輸入。第一層的特征探測子成為第二層RBM的可見元。這種一層接一層/逐層的學習 當必要時可以重復多次/反復進行。
?????? 可以看出:增加一個額外的層一般可以促進更低的?(這個模型指定給訓練數據的)邏輯概率邊界,此時應假定每層特征檢測子的數目不減少并且他們的初始權值被正確初始化(9)。這個約束不能應用于當一個更高的層具有更少的特征探測子的情況,但 即使如此?逐層學習算法?依然是一個有效去預訓練深度編碼器的權值的方法。每一層的特征捕獲 底層網絡單元中? 更穩定/強 的更高階的聯系。對于更廣泛的數據集,這是漸進地揭示低維數據結構的 有效結構?的一個有效方法。
??????? 預訓練多層網絡之后,模型 對于產生(使用相同權值初始化的)編碼和解碼器?網絡 是 ”開放“的(圖表1)。全局參數調整過程隨后? 用確定性的實值概率和?使用?通過對整個自編碼器反傳?調整權值 取代(stochastic activities)隨機激活去優化結構。
?????? 對于連續數據,第一層RBM隱藏元保持二進制,但是可見元使用高斯噪音處理過的線性單元取代(10)。若噪音單元變量,隱藏元的隨機更新規則?保持相同,這個可見元i的更新規則來自于?使用?單元方差和均值(bj + Add(H j +W ij) )。
??????? 在我們的試驗中,每一個RBM和實值激活?的可見元,邏輯元變化范圍為[0,1]。當訓練更高層的RBM,可見元內設定為激活概率(來自于前一層的?隱藏元——除了頂層RBM的隨機二進制值)。頂層的隱藏元的權值 為隨機實數值 從 一個單變量高斯 提取(其均值 由RBM的 邏輯可見元 決定 )。這?就使得?低維編碼?可以更好地利用連續數據?并且?方便與PCA? 對比。預訓練和參數調整?可以參考(8)。
??????? 為證實我們的預訓練算法可以使我們有效地調節參數,我們訓練一個特定的深度編碼器在一個合成的數據集上(數據集 包含由兩個維度的三個隨機選擇點?生成的 ”曲線“ 圖片? )。對于這個數據集,這個本質/真實 維度是已知的,這個映射從 點的強度到 六個參數 是高度非線性的。點強度范圍為[0,1]?并且是非高斯的,因此我們使用邏輯斯特輸出單元在自編碼器,學習的 參數微調階段使用 最小化 交叉熵損失[-?Add(Pi*? log?M(Pi)? ) - Add( (1-Pi )* log(1-Pi )? )? ] , Pi?為點i的強度,M(Pi)??? 為??此點的重建。
?????? 自編碼器包含了一個尺寸為(28* 28)的編碼器400-200-100-50-25-6和一個合成解碼器。這?在編碼層的六個單元是線性的,且所有的其他單元是?Logistic。此網絡由20000個圖片訓練并使用10000個測試。這個自編碼器?發現?如何轉化784個點圖像?到6個實數(圖表2.A : 可實現完美重建),PCA給出的效果壞的多(有損壓縮?)。若沒有預訓練過程,特定的自編碼器?即使?延長?參數微調(8),也只能恢復出平均數據。只有一層的淺層自編碼器?可以不經預訓練學習,但是經過預訓練可以很大地降低訓練時間(8)。當參數相同時,深度自編碼器?可以比淺層模型 產生更低的重建誤差,但是這種?優勢會隨著參數增長而遞減。
?????? 下一步,我們使用一個 784-1000-500-250-30?自編碼器?提取所有的MINIST訓練集的 編碼。我們使用的訓練和調參Matlab代碼在[ 8 ] 。然后,除 編碼層?? 的30個線性單元?之外,所有單元是?Logistic單元。?在訓練600000?個樣本之后,模型在10000個樣本上測試,取得了比PCA更好的重建結果(圖表2.B)。一個二維?自編碼器?可視化效果?超過?PCA?兩主元分析(圖表3)。
???????? 我們使用?一個625-2000-1000-500-30自編碼器??利用線性輸入元?為灰度圖像塊(Olivetti face data set)?產生30維編碼。自編碼器?明確顯示出PCA(圖表2C).
?????? 當訓練用于文檔,自編碼器產生?允許快速檢索的?編碼。我們?把 804 414?個 每個新聞故事作為一個向量(13), 每個向量對應 文檔特定概率 ——2000個通用詞根之中的。我們訓練?一個 2000-500-250-125-10?自編碼器,使用一半的故事,使用多類交叉熵[-?Add(Pi*? log?M(Pi)? )]?用于參數微調。10個碼為線性 ,其余的隱藏元?為Logistic。兩個編碼的?余弦用于相似性度量,自編碼器(8)依然?效果好于?局部線性嵌入LLE,一個最近?發現的非線性降維方法。
???????逐層/一層又一層預訓練?也可以用于?分類和回歸。在廣泛使用的MNIST手寫數字識別任務上,隨機初始化的BP網絡最好的錯誤率為1.6% ,支持向量機最好為1.4%。在逐層預訓練?的784-500-500-2000-10?網絡,使用梯度下降法和小學習速率 的反傳網絡達到了1.2%。預處理?幫助/促進泛化?是因為權值產生的大多數信息來自于圖像本身的建模。只有特定的受限制的帶標簽的訓練信息用于調整權值。
??????? 從1980年之后,已證明若在計算速度較快、數據集足夠大,初始權值接近最優權值,反傳算法用于深度自編碼將是一個?非常有效?的方法。現在所有三個條件都已經滿足。不像非參數模型(15,16),自編碼器給出了方向和范圍兩方面的映射,并且可以用于大數據集合 ,因為?預處理和?參數微調?都在線性時間和空間?內執行。
參考文獻:
1. D. C. Plaut, G. E. Hinton, Comput. Speech Lang. 2, 35(1987).
2. D. DeMers, G. Cottrell, Advances in Neural Information Processing Systems 5 (Morgan Kaufmann, San Mateo, CA,1993), pp. 580–587.
3. R. Hecht-Nielsen, Science 269, 1860 (1995).
4. N. Kambhatla, T. Leen, Neural Comput. 9, 1493(1997).
5. P. Smolensky, Parallel Distributed Processing: Volume 1:Foundations, D. E. Rumelhart, J. L. McClelland, Eds. (MITPress, Cambridge, 1986), pp. 194–281.
6. G. E. Hinton, Neural Comput. 14, 1711 (2002).
7. J. J. Hopfield, Proc. Natl. Acad. Sci. U.S.A. 79, 2554(1982).
8. See supporting material on Science Online.
9. G. E. Hinton, S. Osindero, Y. W. Teh, Neural Comput. 18,1527 (2006).
10. M. Welling, M. Rosen-Zvi, G. Hinton, Advances in Neural Information Processing Systems 17 (MIT Press, Cambridge,MA, 2005), pp. 1481–1488.
11. The MNIST data set is available at http://yann.lecun.com/exdb/mnist/index.html.
12. The Olivetti face data set is available at www.cs.toronto.edu/ roweis/data.html.
13. The Reuter Corpus Volume 2 is available at http://trec.nist.gov/data/reuters/reuters.html.
14. S. C. Deerwester, S. T. Dumais, T. K. Landauer, G. W.Furnas, R. A. Harshman, J. Am. Soc. Inf. Sci. 41, 391(1990).
15. S. T. Roweis, L. K. Saul, Science 290, 2323 (2000).
16. J. A. Tenenbaum, V. J. de Silva, J. C. Langford, Science
290, 2319 (2000).
17. We thank D. Rumelhart, M. Welling, S. Osindero, and S. Roweis for helpful discussions, and the Natural Sciences and Engineering Research Council of Canada for
funding. G.E.H. is a fellow of the Canadian Institute for Advanced Research.
Supporting Online Material
www.sciencemag.org/cgi/content/full/313/5786/504/DC1
Materials and Methods
Figs. S1 to S5
Matlab Code
20 March 2006; accepted 1 June 2006
10.1126/science.1127647
后記:
????????有一天,把感知和決策?劃歸到?觸發器?分類的范疇,把多類分類?劃歸為?維度壓縮,把任意?物體?壓縮到特征空間 、把特征集合 壓縮到任意?一維?的離散個點上,這就是特征提取和分類器設計。特征提取?和?分類器設計??都是降維?
????????這樣不好吧?
????????參考一下鏈接:http://blog.csdn.net/yihaizhiyan/article/details/8189731?????
????? 代碼下載:http://www.cs.toronto.edu/~hinton/MatlabForSciencePaper.html? (一個需要注意的地方,就是數據文件:要使用gunziptrain-images-idx3-ubyte.gz 進行解壓~若使用winzip解壓后,會損壞相關數據文件~)
總結:
? ? ? ? 參考鏈接:http://blog.csdn.net/zouxy09/article/details/8781543/
工程角度理解:
訓練方法:
1)首先逐層構建單層神經元,這樣每次都是訓練一個單層網絡。
2)當所有層訓練完后,Hinton使用wake-sleep算法進行調優。
??????? 將除最頂層的其它層間的權重變為雙向的,這樣最頂層仍然是一個單層神經網絡,而其它層則變為了圖模型。向上的權重用于“認知”,向下的權重用于“生成”。然后使用Wake-Sleep算法調整所有的權重。讓認知和生成達成一致,也就是保證生成的最頂層表示能夠盡可能正確的復原底層的結點。
?????? 比如頂層的一個結點表示人臉,那么所有人臉的圖像應該激活這個結點,并且這個結果向下生成的圖像應該能夠表現為一個大概的人臉圖像。Wake-Sleep算法分為醒(wake)和睡(sleep)兩個部分。
1)wake階段:認知過程,通過外界的特征和向上的權重(認知權重)產生每一層的抽象表示(結點狀態),并且使用梯度下降修改層間的下行權重(生成權重)。也就是“如果現實跟我想象的不一樣,改變我的權重使得我想象的東西就是這樣的”。
2)sleep階段:生成過程,通過頂層表示(醒時學得的概念)和向下權重,生成底層的狀態,同時修改層間向上的權重。也就是“如果夢中的景象不是我腦中的相應概念,改變我的認知權重使得這種景象在我看來就是這個概念”。
?
DL具體訓練過程:
1)使用自下上升非監督學習:
???? (就是從底層開始,一層一層的往頂層訓練)采用無標定數據(有標定數據也可)分層訓練各層參數,這一步可以看作是一個無監督訓練過程,是和傳統神經網絡區別最大的部分(這個過程可以看作是feature learning過程):
?????? 具體的,先用無標定數據訓練第一層,訓練時先學習第一層的參數(這一層可以看作是得到一個使得輸出和輸入差別最小的三層神經網絡的隱層),由于模型capacity的限制以及稀疏性約束,使得得到的模型能夠學習到數據本身的結構,從而得到比輸入更具有表示能力的特征;在學習得到第n-1層后,將n-1層的輸出作為第n層的輸入,訓練第n層,由此分別得到各層的參數;
2)自頂向下的監督學習:
????? (就是通過帶標簽的數據去訓練,誤差自頂向下傳輸,對網絡進行微調)基于第一步得到的各層參數進一步fine-tune整個多層模型的參數,這一步是一個有監督訓練過程;第一步類似神經網絡的隨機初始化初值過程,由于DL的第一步不是隨機初始化,而是通過學習輸入數據的結構得到的,因而這個初值更接近全局最優,從而能夠取得更好的效果;所以deep learning效果好很大程度上歸功于第一步的feature learning過程。
總結
以上是生活随笔為你收集整理的Reducing the Dimensionality of Data with Neural Networks:神经网络用于降维的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 无线路由器怎么设置-如何重新设置无线路由
- 下一篇: 人工机器:人工智能中的机器学习方法