iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 22
0
AI & Data

Python零基礎到Kaggle 系列 第 22

Python零基礎到kaggle-Day21

今日目標

知道什麼是深度學習,跟剩下9天我們要完成的事項
注意:這篇文章可以當名詞解釋,可以大略看過一遍,需要的時候再搜尋就可以囉

看完文章您將學到什麼

理解深度學習的路程

內文

Day3我們提過人工智慧大架構,
Day6我們進入機器學習領域,
現在要進一步知道深度學習架構

神經網路基本架構

y(神經元)=m(權重)x+b(偏置項)

感知器(Preception)

監督學習的線性分類,第一代人工神經網路,只能做簡單運算

多層感知器(Multilayer perceptron)

多層感知機在單層神經網絡的基礎上引入了一到多個隱藏層(hidden layer)。隱藏層位於輸入層和輸出層之間

人工神經網路(Artificial Neural Networks,ANN)

模擬生物神經傳導的機制,由許多層的神經元(Neuron) 互相連結而形成神經網絡有輸入(input) 和 輸出(output),透過 激活函數(Activation Function) 來衡量對神經元輸出的重要性
神經網路表現佳取決於
1.資料量夠大(數據)
2.神經網路也夠大(規模)

前饋神經網路(Feedforward Neural Networks,FNN)

上層輸出做為下層輸入,只要擁有足夠多的隱含層,前饋神經網絡能以任意精讀逼近任意複雜的連續函數

卷積神經網路(Convolutional Neural Networks,CNN)

我們會在Day28說明

遞歸(循環)神經網路(Recurrent Neural Networks,RNN)

我們會在Day28說明

評價函數

損失函數(Loss Function(l))

算一個樣本的誤差,比如我們想要分類,就是預測的類別和實際類別的區別,優化算法使他最小化

代價函數(Cost Function J(w,b))

定義在整個訓練集上面的,也就是所有樣本的誤差的總和的平均,也就是損失函數的總和的平均,訓練模型的過程就是優化代價函數的過程

目標函數(Objective Function)

優化問題的目標函數就是loss function

關於梯度

梯度下降法(Gradient Descent,GD)

Cost function朝局部最小反向梯度收斂過程

反向傳播(Backpropagation,BP)

ANN學習的關鍵,與梯度下降法結合使用,用來訓練人工神經網絡的常見方法,該方法對網絡中所有權重計算損失函數的梯度

梯度爆炸(Gradient Exploding)

隨著序列增加,後續權重的更新大到無法處理的地步,解決這個問題的方式可以用 gradient clipping ,硬性規定一個更新上限,更新值大於上限就用上限值取代

梯度消失(Gradient Vanishing)

隨著序列增加,後續權重的更新小到趨近於 0,使得 RNN 只記得最近發生的事情,而沒有辦法記起時間較久前的結果.而解決這個問題的方式就是 LSTM

基礎激活函數

sigmoid(0,-1)

適合用於二分法(真或偽),但機率平均是0.5,它的梯度太容易飽和(梯度消失)

tanh[-1,1]

比sigmod優,機率平均是0,下層學習更容易,特徵相差明顯時的效果會很好,擠壓到-1跟1之間,在循環過程中會不斷擴大特徵效果

relu[0, ∞]

比tanh優,sigmod跟tanh缺點是如果y非常大或小,GD之後會很小,梯度下降會很慢所以用relu

leaky relu

解決relu在y是負值時微分變0(梯度消失)的問題

softmax(0,1)

輸出單元從一個變成多個,且所有類別的機率總和等於1,適合多分類也使得輸出更適合離散值的預測和訓練,現在主流是隱藏層用leaky relu,輸出層用softmax

深度學習一定會說到類神經網路,他的模式是這樣的(以mxnet為例):

1.生成數據集
2.讀取數據
3.初始化模型參數(初始化神經元的權重和偏權值)

x.attach_grad:申請存儲梯度所需要的內存

4.定義模型(用什麼方法解決問題)

線性迴歸,SVM...

5.定義損失函數(預測跟實際誤差,以損失函數(輸出與結果的誤差)為指標,更新權重參數,縮小損失函數的值)

squared_loss...
loss(預測值,真實值):計算誤差之後求梯度

6.定義優化演算法 :如何梯度下降(更新權重參數時,利用權重參數的梯度,重複進行往梯度方向更新權重值的步驟

sgd...

7.訓練模型

autograd.record:要求 MXNet 記錄與求梯度有關的計算,向前傳導(利用給予微小值時的差分來計算微分,稱作數值微分
backward:自動求梯度<-反向傳播(利用反向傳播法可以求出權重參數的梯度

反思回顧

由於我們的標題是Python零基礎到kaggle,接下來的深度學習算bonus,建議大家可以先把之前的部分消化完再繼續喔,而這篇一樣採取大致看過,需要再搜尋的策略
接下來幾天Day22-27會參考這個帶大家認識深度學習,Day 28,29會參考這本完成CV,NLP支線任務

參考資料

各種神經網路
https://mp.weixin.qq.com/s/VtGpQdB-swz0EhqfQQxrpA
https://zh.wikipedia.org/wiki/反向传播算法


上一篇
Python零基礎到kaggle-Day20
下一篇
Python零基礎到kaggle-Day22
系列文
Python零基礎到Kaggle 31

尚未有邦友留言

立即登入留言