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

一天搞懂深度學習—學習筆記1

Introduce of deep learning

1.問題展示

正常情況下,輸入為‘cat’輸出為一張貓的圖片;而我們研究的內容是輸入一張貓的圖片,輸出‘cat’。f(‘cat’) = a pic of cat,我們研究f(‘a pic of cat’)=‘cat’。

為了達到上述效果,我們需要定義一系列函式,優化函式有關引數,然後在定義的函式中選出最適合的函式。就是這麼簡單的幾步,這就是深度學習要做的事情。只不過上述定義的函式是模擬神經網路建立的, 如圖。可以看到,這裡的計算可以抽象成矩陣的計算,所以線性代數一定要好好學。下圖只是一個函式,而神經網路是有多個這樣的函式序列或者並行組成。

這裡寫圖片描述

一個簡單的圖片識別的例子,如下圖所示

這裡寫圖片描述

文中也介紹到要確定神經網路的層數和每一層的神經元個數需要我們不斷的嘗試和糾正另外也要靠一些直覺。

2.深度學習元件

訓練資料,學習目標,損失,總損失。他們之間的關係是,我們通過訓練資料要達到一定的學習目標,在這個目標情況下,總損失最小。

我們是以函式為訓練目標的,函式結構事先定義好,引數先隨機生成。將前向計算得到的結果和我們的預期結果對比計算出loss,得到總loss,然後根據設定的梯度下降演算法(Gradient Descent)更新引數。而更新

3.為什麼要深度學習

實踐證明,引數越多,效能越好;Fat+Short 比 Thin + Tall效能差。

深度學習的程式碼編寫者有兩種角色,一種是正常角色,即搭積木的孩子;一種非正常角色,即寫函式的大佬。目前的科學研究大部分在於調節深度學習的結構,優化引數等操作。

4 recipe of deep learning

選擇合適損失函式,mini-batch,啟用函式,可適應學習率,momentum,early stop, 正則化, 網路結構。

損失函式有那些:square error,cross entropy
mini-batch:batch是我們選擇的一個處理單位,表明一次取多少資料進行處理
啟用函式:ReLU,Sigmoid,Maxout
學習率

:學習率太高,則總損失在每次更新後可能不會下降,如果學習率太低,則訓練過程會很慢
momentum:momentum是梯度下降法中一種常用的加速技術。(https://www.zhihu.com/question/24529483
early stopping: 學習目標由訓練資料定義,而訓練資料和測試資料往往不一樣,因此我們需要確保訓練資料訓練出來的引數適應於測試資料,不要出現過擬合現象。
正則化:weight decay是一種正則化手段,weight decay是放在正則項(regularization)前面的一個係數,正則項一般指示模型的複雜度,所以weight decay的作用是調節模型複雜度對損失函式的影響,若weight decay很大,則複雜的模型損失函式的值也就大
dropout:是指隨機去掉神經網路中的某些神經元達到優化訓練過程(http://www.cnblogs.com/dupuleng/articles/4341265.html
網路結構:各種cnn模型(Inception v1,v2,v3等)

有錯誤的話歡迎指正~