deep learning本身算是machine learning的乙個分支,簡單可以理解為neural network的發展。
deep learning與傳統的神經網路之間有相同的地方也有很多不同。
二者的相同在於deep learning採用了神經網路相似的分層結構,系統由包括輸入層、隱層(多層)、輸出層組成的多層網路,只有相鄰層節點之間有連線,同一層以及跨層節點之間相互無連線,每一層可以看作是乙個logistic regression模型;這種分層結構,是比較接近人類大腦的結構的。
而為了克服神經網路訓練中的問題,dl採用了與神經網路很不同的訓練機制。傳統神經網路中,採用的是back propagation的方式進行,簡單來講就是採用迭代的演算法來訓練整個網路,隨機設定初值,計算當前網路的輸出,然後根據當前輸出和label之間的差去改變前面各層的引數,直到收斂(整體是乙個梯度下降法)。而deep learning整體上是乙個layer-wise的訓練機制。這樣做的原因是因為,如果採用back propagation的機制,對於乙個deep network(7層以上),殘差傳播到最前面的層已經變得太小,出現所謂的gradient diffusion(梯度擴散)。
傳統神經網路的訓練方法為什麼不能用在深度神經網路。
bp演算法作為傳統訓練多層網路的典型演算法,實際上對僅含幾層網路,該訓練方法就已經很不理想。深度結構(涉及多個非線性處理單元層)非凸目標代價函式中普遍存在的區域性最小是訓練困難的主要**。
bp演算法存在的問題:
(1)梯度越來越稀疏:從頂層越往下,誤差校正訊號越來越小;
(2)收斂到區域性最小值:尤其是從遠離最優區域開始的時候(隨機值初始化會導致這種情況的發生);
(3)一般,我們只能用有標籤的資料來訓練:但大部分的資料是沒標籤的,而大腦可以從沒有標籤的的資料中學習;
deep learning訓練過程
如果對所有層同時訓練,時間複雜度會太高;如果每次訓練一層,偏差就會逐層傳遞。這會面臨跟上面監督學習中相反的問題,會嚴重欠擬合(因為深度網路的神經元和引數太多了)。
2023年,hinton提出了在非監督資料上建立多層神經網路的乙個有效方法,簡單的說,分為兩步,一是每次訓練一層網路,二是調優,使原始表示x向上生成的高階表示r和該高階表示r向下生成的x』盡可能一致。方法是:
1)首先逐層構建單層神經元,這樣每次都是訓練乙個單層網路。
2)當所有層訓練完後,hinton使用wake-sleep演算法進行調優。
將除最頂層的其它層間的權重變為雙向的,這樣最頂層仍然是乙個單層神經網路,而其它層則變為了圖模型。向上的權重用於「認知」,向下的權重用於「生成」。然後使用wake-sleep演算法調整所有的權重。讓認知和生成達成一致,也就是保證生成的最頂層表示能夠盡可能正確的復原底層的結點。比如頂層的乙個結點表示人臉,那麼所有人臉的影象應該啟用這個結點,並且這個結果向下生成的影象應該能夠表現為乙個大概的人臉影象。wake-sleep演算法分為醒(wake)和睡(sleep)兩個部分。
1)wake階段:認知過程,通過外界的特徵和向上的權重(認知權重)產生每一層的抽象表示(結點狀態),並且使用梯度下降修改層間的下行權重(生成權重)。也就是「如果現實跟我想象的不一樣,改變我的權重使得我想象的東西就是這樣的」。
2)sleep階段:生成過程,通過頂層表示(醒時學得的概念)和向下權重,生成底層的狀態,同時修改層間向上的權重。也就是「如果夢中的景象不是我腦中的相應概念,改變我的認知權重使得這種景象在我看來就是這個概念」。
deep learning訓練過程具體如下:
1)使用自下上公升非監督學習(就是從底層開始,一層一層的往頂層訓練):
採用無標定資料(有標定資料也可)分層訓練各層引數,這一步可以看作是乙個無監督訓練過程,是和傳統神經網路區別最大的部分(這個過程可以看作是feature learning過程):
具體的,先用無標定資料訓練第一層,訓練時先學習第一層的引數(這一層可以看作是得到乙個使得輸出和輸入差別最小的三層神經網路的隱層),由於模型capacity的限制以及稀疏性約束,使得得到的模型能夠學習到資料本身的結構,從而得到比輸入更具有表示能力的特徵;在學習得到第n-1層後,將n-1層的輸出作為第n層的輸入,訓練第n層,由此分別得到各層的引數;
2)自頂向下的監督學習(就是通過帶標籤的資料去訓練,誤差自頂向下傳輸,對網路進行微調):
基於第一步得到的各層引數進一步fine-tune整個多層模型的引數,這一步是乙個有監督訓練過程;第一步類似神經網路的隨機初始化初值過程,由於dl的第一步不是隨機初始化,而是通過學習輸入資料的結構得到的,因而這個初值更接近全域性最優,從而能夠取得更好的效果;所以deep learning效果好很大程度上歸功於第一步的feature learning過程。
深度學習Deep Learning
概述 deep feedforward network 深度前饋網路 又名feedforward neural network 前饋神經網路 或 multilayer perceptron 多層感知器 是深度學習模型的精髓 前饋網路的目的是逼近某種方程f 比如乙個分類器,y f x 將輸入x對映到類...
DeepLearning 應用概述
利用卷積的目標篩選功能,用在視覺識別領域。現在此領域好用的網路基本上全部基於cnn,核心都是卷積。迴圈神經網路用於語音識別於自然語言處理。相較於 cnn 在影象識別和檢測方面的廣泛應用,基於序列模型的 rnn 的應用方面則是語音識別 文字翻譯和自然語言處理等其他更為激動人心的領域。所以,正如 cnn...
深度學習Deep learning
第二章 tensorflow之前期零七八碎的小知識 二 tensorflow小知識 總結深度學習入門必須了解一些關於numpy的知識,本文介紹一些零七八碎的注意事項。array1 1,2,3 4,5,6 7,8,9 array2 array1 這麼做是不對的 python中只是把array1的記憶體...