吳恩達機器學習
學習影片參考b站:吳恩達機器學習
本文是參照影片學習的隨手筆記,便於後續回顧。
TensorFlow實現神經網路
模型訓練細節
訓練步驟與和邏輯迴歸的比較
訓練模型分為三步:
1.確定f(x)函式
2.確定損失函式和代價函式
3.透過資料訓練尋找最小值
詳細介紹
1.建立模型
2.損失和代價函式
如果模型解決迴歸而不是分類問題,可以用別的損失函式,例如下方的MeanSquareError()
3.梯度下降
呼叫model.fit函式設定輸入輸出與迭代次數
Neural network libraries--神經網路庫:像是TensorFlow和PyTorch
啟用函式(Activation Function)
sigmoid啟用函式替代(Alternatives to the sigmoid activation)
需求預測模型
替代函式像是ReLU(Rectified Linear Unit)
常用的啟用函式
使用線性啟用函式經常說是沒有使用啟用函式,因為g(z)=z
如何選擇啟用函式
如果是二進位制分類問題,使用sigmoid函式
如果是迴歸,輸出有正負,使用線型啟用函式
如果是迴歸,輸出只有正,使用ReLU函式
現如今大多數都是使用ReLU函式而不是sigmoid函式,原因:
1.sigmoid要取冪等等操作,繁瑣
2.ReLU左邊一段是平的,而sigmoid兩邊都是平的,會導致梯度下降會很慢,影像有很多平坦
Summary
隱藏層建議只使用ReLU,輸出層如果是二進位制分類問題,可以使用sigmoid
還有很多不同不同的啟用函式,在某些具體情況可能效率高
為什麼需要啟用函式
如果啟用函式都是用線性函式,模型訓練會跟線性迴歸沒有什麼區別
全部使用線性函式,模型做的就是線性迴歸,只在最後輸出層使用sigmoid函式,模型做的就是邏輯迴歸
所以不要在隱藏層使用線性函式
多分類問題(Multiclass)
定義&示例
定義:不只是取0,1兩個值,可以取少量的超過兩個的值
示例:劃分空間界限,求不同值的機率
Softmax(Regression Algorithm)
輸出值a的表示式
是邏輯迴歸的推廣,是多類分類上下文的二進位制分類演算法
4個可能輸出示例(Softmax):
所有值的可能性相加為1,如果輸出值只有2個,那麼Softmax迴歸演算法和邏輯迴歸演算法一樣
損失函式與代價函式
神經網路的Softmax輸出
使用Softmax函式的輸出層常常稱為Softmax層
Softmax層的每一個輸出值都需要z1......z10所有的函式值作為輸入
TensorFlow實現
損失函式使用SparseCategoricalCrossentropy(稀疏分類交叉熵)函式
以下這個版本的程式碼不推薦使用,下面會提供效果更好的實施版本,使用下面標題的程式碼!!!
TensorFlow的改進實現
同一個值,透過不同的計算方式減少舍入誤差
邏輯迴歸改進
直接指定他的loss函式而不是透過中間值a來傳值,效果會更好
from_logits=true指的是透過z來傳值,就像是跳過中間值a直接指定loss函式
Softmax函式改進
記住輸出層的啟用函式要改成線性函式,因為要直接提供z
因為輸出層改成線性函式,所以輸出值不再是輸出機率a1......a10,而是值z1......z10
多個輸出的多分類(Classification with multiple outputs)
每個圖都檢測三個01的分類問題(多標籤分類)
用一個神經網路解決三個分類問題,輸出層使用sigmoid函式(解決01問題),而不是用三個神經網路
高階最佳化方法
為什麼需要最佳化方法?
在梯度下降過程中,學習率或大或小,導致梯度下降引數更新的效率並不高,所以需要一個演算法更新學習率α
因此引入Adam演算法
Adam演算法
並沒有全域性單一的學習率α
梯度下降朝著正確的方向進行,就可以增大學習率,如果來回震盪,就可以適當減少學習率
具體實現比較複雜,在此不做講解
Adam需要設定初始學習率,這裡設定的是0.03
其他的網路層型別
之前學習的網路層都是密集層型別(dense),每一個神經元都使用上一層的所有輸出
這裡介紹一個不同的型別,像是卷積層(Convolutional Layer)
每一個神經元都使用前一層的一部分輸出作為輸入
原因:
1.加快計算速度
2.可以使用更少的訓練資料,並且不太容易過擬合(Overfitting)
如果有多個卷積層,就稱為卷積神經網路(Convolutional Neural Network)
示例心電圖:
把列資料分為x1......x100作為輸入
Summary
本週主要學習了以下內容:
1.如何使用TensorFlow實現神經網路,模型訓練的步驟
2.如何選擇啟用函式,為什麼需要啟用函式
3.Softmax迴歸演算法實現多分類,損失函式與代價函式,程式碼實現,程式碼改進
4.高階最佳化方法Adam演算法
5.卷積層與卷積神經網路的概念