www.ai-xlab.com
AI MOOC
MNIST數據集介紹
2
www.ai-xlab.com
AI MOOC
MNIST數據集
MNIST數據集官網:
Yann LeCun’s Website
下載下來的數據集被分成兩部分:60000行的訓練數據集(mnist.train)和
10000行的測試數據集(mnist.test)
www.ai-xlab.com
AI MOOC
MNIST的數據
一張圖片包含28*28個像素,我們把這一個數組展開成一個向量,長度是28*28=784。
如果把數據用矩陣表示,可以把MNIST訓練數據變成一個形狀為 [60000, 784] 的矩陣,
第一個維度數字用來索引圖片,第二個維度數字用來索引每張圖片中的像素點。圖片里
的某個像素的強度值介于0-1之間。
www.ai-xlab.com
AI MOOC
MNIST的數據
www.ai-xlab.com
AI MOOC
獨熱編碼(one-hot)
?
MNIST數據集的標簽是介于0-9的數字,我們要把標簽轉化為“one-hot
vectors”。一個one-hot向量除了某一位數字是1以外,其余維度數字都是0,
比如標簽0將表示為([1,0,0,0,0,0,0,0,0,0]),標簽3將表示為
([0,0,0,1,0,0,0,0,0,0]) 。
?
因此,可以把MNIST訓練集的標簽變?yōu)?[60000, 10] 的矩陣。
www.ai-xlab.com
AI MOOC
Softmax函數介紹
3
www.ai-xlab.com
AI MOOC
Softmax激活函數
在多分類問題中,我們通常會使用softmax函數作為網絡輸出層的激活函數,
softmax函數可以對輸出值進行歸一化操作,把所有輸出值都轉化為概率,所有概率
值加起來等于1,softmax的公式為:
??????????????(???
??
=
?
ex p( ??
??
σ
??
?
ex p( ??
??
www.ai-xlab.com
AI MOOC
Softmax計算例子
例如某個神經網絡有3個輸出值,為[1,5,3]。
計算e1=2.718,e5=148.413,e3=20.086,e1+e5+e3=171.217。
p1
=
??
1
??
1
+
??
5
+??
3
= 0.016
,
p2 =
??
5
??
1
+
??
5
+??
3
= 0.867
,
p3 =
??
3
??
1
+
??
5
+??
3
= 0.117
。
所以加上softmax函數后數值變成了[0.016,0.867,0.117]。
例如手寫數字識別的網絡最后的輸出結果本來是:
[-0.124, -4.083, -0.62, 0.899, -1.193, -0.701, -2.834, 6.925, -0.332, 2.064],
加上softmax函數后會變成:
[0.001, 0.0, 0.001, 0.002, 0.0, 0.0, 0.0, 0.987, 0.001, 0.008]。
www.ai-xlab.com
AI MOOC
交叉熵
4
www.ai-xlab.com
AI MOOC
二次代價函數
二次代價函數:
激活函數的梯度f’(z)越大,w的大小調整得越快,訓練收斂得就越
快。激活函數的梯度f’(z)越小,w的大小調整得越慢,訓練收斂得
就越慢。
www.ai-xlab.com
AI MOOC
二次代價函數
以一個二分類問題為例,進行兩組實驗。輸入同一個樣本數據x=1.0,該樣本對應
的分類為y=0,使用sigmoid激活函數。
www.ai-xlab.com
AI MOOC
二次代價函數
www.ai-xlab.com
AI MOOC
交叉熵(Cross-Entropy)
換一個思路,我們不改變激活函數,而是改變代價函數,
該用交叉熵代價函數:
對于sigmoid函數:
www.ai-xlab.com
AI MOOC
過擬合
5
www.ai-xlab.com
AI MOOC
回歸擬合
欠擬合(Underfitting)
正確擬合(Just right)
過擬合(Overfitting)
www.ai-xlab.com
AI MOOC
分類擬合
x
1
x
2
x
1
x
2
x
1
x
2
欠擬合(Underfitting)
正確擬合(Just right)
過擬合(Overfitting)
www.ai-xlab.com
AI MOOC
過擬合導致測試誤差變大
www.ai-xlab.com
AI MOOC
防止過擬合
6
www.ai-xlab.com
AI MOOC
增大數據集
數據挖掘領域流行著這樣一句話,“有時候擁有更多的數據勝過一個
好的模型”。一般來說更多的數據參與訓練,訓練得到的模型就越好。
如果數據太少,而我們構建的神經網絡又太復雜的話就比較容易產生
過擬合的現象。
www.ai-xlab.com
AI MOOC
增大圖片數據集
1.隨機裁剪
2.水平翻轉
3.光照顏色抖動
www.ai-xlab.com
AI MOOC
Early stopping
在訓練模型的時候,我們往往會設置一個比較大的迭代次數。Early
stopping便是一種提前結束訓練的策略用來防止過擬合。
一般的做法是記錄到目前為止最好的validation accuracy,當連續(xù)10個
Epoch沒有達到最佳accuracy時,則可以認為accuracy不再提高了。此
時便可以停止迭代了(Early Stopping)。
www.ai-xlab.com
AI MOOC
Dropout
www.ai-xlab.com
AI MOOC
正則化項
C0代表原始的代價函數,n代表樣本的個數,λ就是正則項系數,
權衡正則項與C0項的比重。
L1正則化:
L2正則化:
L1正則化可以達到模型參
數稀疏化的效果
L2正則化可以使得模型的權
值衰減,使模型參數值都接
近于0。
www.ai-xlab.com
AI MOOC
正則化項
www.ai-xlab.com
AI MOOC
優(yōu)化器
7
www.ai-xlab.com
AI MOOC
Adadelta
Adagrad
Adam
Adamax
AdamW
ASGD
LBFGS
RMSprop
Rprop
SGD
SparseAdam
優(yōu)化器
www.ai-xlab.com
AI MOOC
優(yōu)化器
www.ai-xlab.com
www.ai-xlab.com
AI MOOC
卷積神經網絡CNN
1
www.ai-xlab.com
AI MOOC
卷積神經網絡是近年發(fā)展起來,并廣泛應用于圖像處理,NLP等領域的一
種多層神經網絡。
傳統(tǒng)BP處理圖像時的問題:
1.權值太多,計算量太大
2.權值太多,需要大量樣本
進行訓練。
CNN
www.ai-xlab.com
AI MOOC
1962年哈佛醫(yī)學院神經生理學家Hubel和Wiesel通過對貓視覺皮層細
胞的研究,提出了感受野(receptive field)的概念,1984年日本學者
Fukushima基于感受野概念提出的神經認知機(neocognitron)可以看
作是卷積神經網絡的第一個實現網絡,也是感受野概念在人工神經網
絡領域的首次應用。
局部感受野
www.ai-xlab.com
AI MOOC
CNN通過
局部感受野
和
權值共享
減少了神經網絡需要訓練的參數個數
局部感受野和權值共享
www.ai-xlab.com
AI MOOC
1*1+1*0+1*1+0*0+1*1+1*0+0*1+0*0+1*1 = 4
特征圖:feature map
卷積核/濾波器
卷積計算
www.ai-xlab.com
AI MOOC
步長為1
步長為2
不同步長的卷積
www.ai-xlab.com
AI MOOC
濾波器
www.ai-xlab.com
AI MOOC
Pooling常用的三種方式:
1.max-pooling
2.mean-pooling
3.stochastic pooling
池化Pooling
www.ai-xlab.com
AI MOOC
SAME PADDING:
給平面外部補0
卷積窗口采樣后得到一個跟原來大小相同的平面
VALID PADDING:
不會超出平面外部
卷積窗口采樣后得到一個比原來平面小的平面
VALID PADDING
SAME PADDING
Padding
www.ai-xlab.com
AI MOOC
SAME PADDING
VALID PADDING
Padding
www.ai-xlab.com
AI MOOC
SAME PADDING:可能會給平面外部補0
VALID PADDING:不會超出平面外部
假如有一個28*28的平面,用2*2步長為2的窗口對其進行卷積/池化操作
使用SAME PADDING的方式,得到14*14的平面
使用VALID PADDING的方式,得到14*14的平面
假如有一個2*3的平面,用2*2步長為2的窗口對其進行卷積/池化操作
使用SAME PADDING的方式,得到1*2的平面
使用VALID PADDING的方式,得到1*1的平面
Padding
www.ai-xlab.com
AI MOOC
LeNET-5
是最早的卷積神經網絡之一,曾廣泛用于美國銀行。手寫
數字識別正確率在99%以上。
卷積窗口:5*5
步長:1
池化窗口:2*2
步長:2
卷積窗口:5*5
步長:1
池化窗口:2*2
步長:2
卷積層
池化層 卷積層
池化層
輸入層
全鏈接層
全鏈接層
輸出層
LeNET-5
www.ai-xlab.com
AI MOOC
可視化:
http://scs.ryerson.ca/~aharley/vis/conv/
http://scs.ryerson.ca/~aharley/vis/conv/flat.html
LeNET-5
www.ai-xlab.com
AI MOOC
ImageNet介紹
2
www.ai-xlab.com
AI MOOC
ImageNet是一個計算機視覺系統(tǒng)識別項目,是目前世界上圖像識別最大
的數據庫。一共有1500萬張左右的圖片,被分為22000個左右的類。是
由斯坦福教授李飛飛領導建立的。
TED演講:我們怎么教計算機理解圖片?
ImageNet
www.ai-xlab.com
AI MOOC
1976年出生于北京,長在四川,16歲隨父母移居美國新澤西州。
1999年畢業(yè)于普林斯頓大學,2005年獲得加州理工學院電子工程博士。
2009年加入斯坦福大學擔任助理教授,并于2012年擔任副教授(終生教授),和
斯坦福人工智能實驗室與視覺實驗室主任。
2017年1月入職Google,擔任谷歌云首席科學家
。
2018年9月卸任谷歌云首席科學家,回歸斯坦福大學當教授。
李飛飛
www.ai-xlab.com
AI MOOC
ILSVRC:ImageNet Large Scale Visual Recognition Challenge
ILSVRC
www.ai-xlab.com
AI MOOC
ILSVRC:ImageNet Large Scale Visual Recognition Challenge
ILSVRC
www.ai-xlab.com
AI MOOC
序列模型
3
www.ai-xlab.com
AI MOOC
RNN(Recurrent Neural Network)
1986年 Rumelhart 等人提出循環(huán)神經網絡(recurrent neural network),簡稱RNN。RNN
跟我們之前學習過的神經網絡都不太一樣,它是一種序列模型。比如卷積網絡是專門用來處
理網格化數據(例如圖像數據)的神經網絡,RNN是專門用來處理序列數據的神經網絡。所
謂的序列數據指的是跟序列相關的數據,比如一段語音,一首歌曲,一段文字,一段錄像等。
www.ai-xlab.com
AI MOOC
序列模型應用:語音識別
把語音轉換成為文字
www.ai-xlab.com
AI MOOC
序列模型應用:文本分類
把文章,郵件或用戶評論等文本數據做分類
www.ai-xlab.com
AI MOOC
序列模型應用:機器翻譯
例如把中文翻譯成英文
www.ai-xlab.com
AI MOOC
序列模型應用:分詞標注
給一段文字做分詞標注,標注每個字對應的標號。假如使用4-tag(BMES)標注標簽,
B表示詞的起始位置,M表示詞的中間位置,E表示詞的結束位置,S表示單字詞。
可以得到類似如下結果:
“人/B 們/E 常/S 說/S 生/B 活/E 是/S 一/S 部/S 教/B 科/M 書/E ”
www.ai-xlab.com
AI MOOC
RNN(Recurrent Neural Network)
www.ai-xlab.com
AI MOOC
RNN(Recurrent Neural Network)
隱層 h
t
接收的是上時刻的隱層(hidden layer)
h
t?1
還是上時刻的輸出(output layer)y
t?1
,
可以分成了兩種 RNN:
Elman network 接收上時刻的隱層 h
t?1
Jordan network 接收上時刻的輸出 y
t?1
www.ai-xlab.com
AI MOOC
RNN一個重要的用法就是通過之前的信息來決策當前的問題。
比如就像我們看電影,我們要根據電影之前的情節(jié),才能理解現在的情節(jié)。
例子1:有一朵云飄在()
例子2:我從小生長在美國。。。我可以說一口流利的()
RNN(Recurrent Neural Network)
www.ai-xlab.com
AI MOOC
RNN(Recurrent Neural Network)
www.ai-xlab.com
AI MOOC
長短時記憶網絡LSTM
4
www.ai-xlab.com
AI MOOC
i
t
輸入門信號
f
t
忘記門信號
??
??
Cell輸入信號
c
t
Cell輸出信號
o
t
輸出門信號
h
t
block輸出信號
x
t
第t個序列輸入
h
t-1
第t-1個序列輸出
σ
g
sigmoid函數
σ
c
tanh函數
σ
h
tanh函數或線性函數
LSTM(Long Short Term Memory)
www.ai-xlab.com
AI MOOC
Peephole LSTM
和之前的公式做比較,發(fā)現只是把 h
t?1
都換成
了 c
t?1
,即三個門的輸入都改成了 [x
t
,c
t?1
] 。因
為是從 cell state 里取得信息,所以叫窺視孔(
peephole)。
www.ai-xlab.com
AI MOOC
FC-LSTM(Fully-connected LSTM )
三個輸入分別是 [x
t
,h
t?1
,c
t?1
]
www.ai-xlab.com
AI MOOC
LSTM(Long Short Term Memory)
www.ai-xlab.com
AI MOOC
LSTM(Long Short Term Memory)
www.ai-xlab.com
AI MOOC
門控循環(huán)單元GRU
5
www.ai-xlab.com
AI MOOC
GRU(Gated Recurrent Unit)
GRU 這個結構是 2014 年才出現的,效果跟
LSTM差不多,但是用到的參數更少。將忘記
門和輸入門合成了一個單一的更新門。
z
t
是更新門(update gate),決定h
t
的更新情況
r
t
是重置門(reset gate),決定是否要放棄h
t-1
?
?
??
是候選輸出,接收 [x
t
,h
t?1
]
h
t
是當前輸出,接收 [h
t?1
,
?
?
??
]
www.ai-xlab.com
AI MOOC
其他RNN模型
6
www.ai-xlab.com
AI MOOC
雙向RNN(Bidirectional RNNs)
雙向的 RNN 是同時考慮“過去”和“未來”的信息,輸入(黑色點)沿著黑色的實線箭
頭傳輸到隱層(黃色點),再沿著紅色實線傳到輸出(紅色點)。黑色實線做完前向傳播
后,在 Bidirectional RNNs 卻先不急著后向傳播,而是從末尾的時刻沿著虛線的方向再回
傳回來。
www.ai-xlab.com
AI MOOC
Stacked Bidirectional RNNs
圖中是雙向的三層 RNNs,堆疊多層的RNN網絡,可以增加模型的參數,提高模型的擬合
能力。每層的 hidden state 不僅要輸給下一時刻,還是當做是此時刻下一層的輸入。
www.ai-xlab.com
AI MOOC
THANKS
到了這里,關于pytorch基礎 神經網絡構建的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!