貝葉斯方法,反向傳播
注意:請搭配每日課程觀看以達到最好效果
Faster.ai
近一步理解深度學習,貓狗之外的東西
概念簡單且高度模組化,資料跟工具夠多,社群討論度也高,還對現實世界有極高影響力
隱藏層是不可解釋的黑盒子,需要大量經驗與資料,不知道該用哪個模型,用了還不一定得到正確結果
不確定因素有三種,各有特點
天氣,光線...
無法重現,也可能是捕捉到雜訊,但可以學習
環境,季節...
可以增加樣本學習
在狗訓練集中提供貓的圖片...
增加資料多樣性
貝氏定理:
一種系統中描述觀察到資料的模型,如果單純用機率理論描述模型會學到很多噪聲,所以需要反轉機率,像貝葉斯方法,才可以推論未知
傳統:
節點間參數是單一固定的值
訓練方式可以用貝氏方法(就像MLP,MAP估計)
前向傳播的時候,讓某個神經元的激活值以一定的概率p停止工作,這樣可以使模型泛化性更強,因為它不會太依賴某些局部的特徵,減少神經元相依性,增加魯棒性,避免過擬合
1.隨機刪去隱藏層部分神經元
2.針對剩下神經元前向傳導獲得損失,再反向傳導,用隨機梯度下降更新權重
3.恢復被刪去神經元
4.不斷重複刪去與更新權重過程
二元神經網路(Binary Neural Network,BNN)缺點:
改程式碼很困難,算速度慢,貝葉斯後驗預測的質量取決於先前的規範和後驗近似
回到只有狗的訓練集出現貓的問題,可以觀察Softmax分佈,最大預測類別是否分類錯誤或其實在分類之外
還記得Day24提過GAN嗎
符合固定分佈,盡可能欺騙D,輸入符合高斯分佈的隨機樣本z,輸出生成虛假樣本
辨別生成樣本是真實或虛假的,輸入x,輸出x是真實樣本的機率
GD互相學習,D最後一層是Sigmoid,D何時結束取決於 Binary Cross-Entropy Loss
1.D中池化層用strided convolutions取代,也可以考慮最大池化,G中使用跨步卷積
2.D,G都使用batchnorm加速收斂,增加穩定性
3.在隱藏層中不要有全連接層
4.激活函數G中隱藏層用ReLU,輸出層用Tanh
5.激活函數G中隱藏層用LeakyReLU,輸出層用Sigmoid
Softmax分類溫度
混合密度網路
貝葉斯反向傳播
GAN
程式部分有更簡單實現方式 Pyro, BoTorch , Edward
機率,條件機率與貝葉斯方法是反向傳播很重要的基礎
GAN
https://mlelarge.github.io/dataflowr-web/cea_edf_inria.html
https://zhuanlan.zhihu.com/p/38200980