知道什麼是深度學習,跟剩下9天我們要完成的事項
注意:這篇文章可以當名詞解釋,可以大略看過一遍,需要的時候再搜尋就可以囉
理解深度學習的路程
在Day3我們提過人工智慧大架構,
而Day6我們進入機器學習領域,
現在要進一步知道深度學習架構
y(神經元)=m(權重)x+b(偏置項)
監督學習的線性分類,第一代人工神經網路,只能做簡單運算
多層感知機在單層神經網絡的基礎上引入了一到多個隱藏層(hidden layer)。隱藏層位於輸入層和輸出層之間
模擬生物神經傳導的機制,由許多層的神經元(Neuron) 互相連結而形成神經網絡有輸入(input) 和 輸出(output),透過 激活函數(Activation Function) 來衡量對神經元輸出的重要性
神經網路表現佳取決於
1.資料量夠大(數據)
2.神經網路也夠大(規模)
上層輸出做為下層輸入,只要擁有足夠多的隱含層,前饋神經網絡能以任意精讀逼近任意複雜的連續函數
我們會在Day28說明
我們會在Day28說明
算一個樣本的誤差,比如我們想要分類,就是預測的類別和實際類別的區別,優化算法使他最小化
定義在整個訓練集上面的,也就是所有樣本的誤差的總和的平均,也就是損失函數的總和的平均,訓練模型的過程就是優化代價函數的過程
優化問題的目標函數就是loss function
Cost function朝局部最小反向梯度收斂過程
ANN學習的關鍵,與梯度下降法結合使用,用來訓練人工神經網絡的常見方法,該方法對網絡中所有權重計算損失函數的梯度
隨著序列增加,後續權重的更新大到無法處理的地步,解決這個問題的方式可以用 gradient clipping ,硬性規定一個更新上限,更新值大於上限就用上限值取代
隨著序列增加,後續權重的更新小到趨近於 0,使得 RNN 只記得最近發生的事情,而沒有辦法記起時間較久前的結果.而解決這個問題的方式就是 LSTM
適合用於二分法(真或偽),但機率平均是0.5,它的梯度太容易飽和(梯度消失)
比sigmod優,機率平均是0,下層學習更容易,特徵相差明顯時的效果會很好,擠壓到-1跟1之間,在循環過程中會不斷擴大特徵效果
比tanh優,sigmod跟tanh缺點是如果y非常大或小,GD之後會很小,梯度下降會很慢所以用relu
解決relu在y是負值時微分變0(梯度消失)的問題
輸出單元從一個變成多個,且所有類別的機率總和等於1,適合多分類也使得輸出更適合離散值的預測和訓練,現在主流是隱藏層用leaky relu,輸出層用softmax
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/反向传播算法