1. 程式人生 > >一天搞懂深度學習

一天搞懂深度學習

深度學習的三個步驟

1.定義一組函式→即找到合適的神經網路(網路的引數θ:包括權重和偏移bias)

神經網路的思想來源於對人腦生理上的研究。

人類智慧最重要的部分是大腦,大腦雖然複雜,它的組成單元卻是相對簡單的,大腦皮層以及整個神經系統,是由神經元細胞組成的。而一個神經元細胞,由樹突和軸突組成,它們分別代表輸入和輸出。連在細胞膜上的分叉結構叫樹突,是輸入,那根長長的“尾巴”叫軸突,是輸出。神經元輸出的有電訊號和化學訊號,最主要的是沿著軸突細胞膜表面傳播的一個電脈衝。忽略掉各種細節,神經元,就是一個積累了足夠的輸入,就產生一次輸出(興奮)的相對簡單的裝置。 樹突和軸突都有大量的分支,軸突的末端通常連線到其他細胞的樹突上,連線點上是一個叫“突觸”的結構。一個神經元的輸出通過突觸傳遞給成千上萬個下游的神經元,神經元可以調整突觸的結合強度,並且,有的突觸是促進下游細胞的興奮,有的是則是抑制。一個神經元有成千上萬個上游神經元,積累它們的輸入,產生輸出。

神經網路和人腦類似,存在多個層級(layer),每個層級都有多個節點(神經元),層級和層級之間相互連線(軸突),最終輸出結果。

對於神經網路的計算能力可以理解為通過一層層Layer的計算歸納,逐步的將抽象的原始資料變的具體。以圖片識別為例,輸入是一個個畫素點,經過每層神經網路,逐步變化成為線、面、物件的概念,然後機器有能力能夠識別出來。

2.(不斷訓練)函式達到完善的功能(即使得誤差最小。總的損失:對於所有訓練的資料,總的損失等於各損失之和。

當一個模型輸出結果之後,如果跟預想的結果有偏差(即存在較大的損失)->降低損失->尋找一個可以降低損失的函式->更改引數值(權重,偏差等) 由此可見,對資料的訓練是一個逆向的思維,由結果不斷地去調整網路,直到結果滿意。)

3.選擇最佳函式(採用梯度下降法,但是梯度下降法無法保證結果是全域性最優的,PPT中有圖介紹了該方法,往往用反向傳播演算法BP來計算梯度)

Softmax的概念

輸出層(也可以叫做選擇層),將Softmax層作為輸出層。

我們知道max,假如說我有兩個數,a和b,並且a>b,如果取max,那麼就直接取a,沒有第二種可能。但有的時候我不想這樣,因為這樣會造成分值小的那個飢餓(即一直取不到)。所以我希望分值大的那一項經常取到,分值小的那一項也偶爾可以取到,那麼我用softmax就可以了。現在還是a和b,a>b,如果我們取按照softmax來計算取a和b的概率,那a的softmax值大於b的,所以a會經常取到,而b也會偶爾取到,概率跟它們本來的大小有關。所以說不是max,而是Softmax

訓練方法

訓練過程中會發現了兩種情況:

1. 沒有辦法得到很好的訓練結果 ---》 重新選擇訓練方式

2. 沒有辦法得到很好的測試結果 ---》 往往由於過度擬合導致,需要重新定義方法

優化訓練方法的手段:

1. 選擇合適的Loss function:當使用softmax作為輸出層的時候,Cross Entropy效果要優於Mean Square Error

2. Mini-batch: 每次訓練使用少量資料而不是全量資料效率更高

3. Activation Function:使用ReLU替代Sigmoid可以解決梯度消失的問題,可以訓練更深的神經網路

4. Adaptive Learning Rate:可以隨著迭代不斷自我調整,提高學習效率

5. Momentum: 可以一定程度上避免陷入區域性最低點的問題

避免過度擬合(overfitting)的方法:

1. Early Stopping:使用cross validation的方式,不斷對validation data進行檢驗,一旦發現預測精度下降則停止。

2. Weight Decay:引數正則化的一種方式?

3. Dropout:通過隨機去掉一些節點的連線達到改變網路形式,所以會產生出多種網路形態,然後彙集得到一個最佳結果

4. Network Structure: 例如CNN等其他形態的網路

神經網路變體

Convolutional Neural Network (CNN)

通常情況下,一個CNN包含多次的卷積、池化,然後Flatten,最終再通過一個深度神經網路進行學習預測。CNN在影象、語音識別取得非常好的成績,核心的想法在於一些物體的特徵往往可以提取出來,並且可能出現在圖片的任何位置,而且通過卷積、池化可以大大減少輸入資料,加快訓練效率。

   

Recurrent Neural Network (RNN)

RNN的想法是可以將hidden layer的資料儲存下來,然後作為輸入給下一個網路學習。這種網路的想法可以解決自然語言中前後詞語是存在關聯性的,所以RNN可以把這些關聯性放到網路中進行學習。

其他前沿技術