圖片來源:https://hackmd.io/@allen108108/rkn-oVGA4
延續昨天提取特徵的部分
卷積後產生出來的圖片(Feature Map)
每格像素會再乘上激勵函數再輸出給下一層
Day2提到神經元的概念
輸入x->y=f(x)->輸出y
f(x)=神經元對於輸入資料的反應
這是一個有3層神經元的網路
w1,w2,w3是訓練時更新的權重值
每層的輸出大概可以寫成一個線性公式: f(x) = w*x + b
x = 明天要不要去吃拉麵?
w = 參加意願的程度(喜好度)
b = 實際上有沒有空
那如果改問一個不合邏輯的問題 EX:星期九要不要來一杯痛苦的滋味???(比喻非線性資料)
我想聽到的人都會突然腦死
激勵函數就可以解決對非線性資料的處理問題
例如聽到星期九這樣奇怪的時間,就直接拒絕(輸出0)
聽到星期六,就輸出認真決定的結果
來介紹一個常用的函數-Relu
由圖可知
if x <= 0 : y=0
else: y=x
輸入負數將會輸出零
輸出零的的神經元會像死亡一樣停止更新 就像我們忘記東西一樣
所以最後神經網路所記得的特徵不會是死的(只認得一種)
藉此避免結果過度擬和,練成一顆死腦筋XD
像這種已知解答、不斷對答案修正的訓練法叫做反向傳播算法(Backpropagation,縮寫為BP)
因為我們希望與答案的誤差(loss)是收斂的
會使用BP配合梯度下降法去修正神經元的f(x)往正解的方向一步步不斷趨近
而梯度指的就是對f(x)中的未知數偏微分(求變化量),再用得出來的梯度去修正參數
算式:
t:第幾次更新參數
γ:學習率(Learning rate)=一次要趨近多少步x^(t)為初始解(初始先猜答案),然後根據這組隨機產生的「解」開始算此「解」的梯度方向大小,然後將這個「解」去減去梯度方向
例如這邊有條 f(x)=x²-10x+1 的曲線 紅點的地方為初始解
可以看見曲線收斂在x=5
如果學習率太大(一步走太寬) 紅點有可能最後在x=0跟x=10的地方跳來跳去
永遠到不了最佳解
https://medium.com/%E5%AD%B8%E4%BB%A5%E5%BB%A3%E6%89%8D/activation-function-relu-maxout-f958f066fbfa
https://zh.wikipedia.org/wiki/%E5%8F%8D%E5%90%91%E4%BC%A0%E6%92%AD%E7%AE%97%E6%B3%95
https://zh.wikipedia.org/wiki/%E7%BA%BF%E6%80%A7%E6%95%B4%E6%B5%81%E5%87%BD%E6%95%B0#%E4%BC%98%E5%8A%BF
https://ithelp.ithome.com.tw/articles/10198715
https://kknews.cc/zh-tw/code/p95ko58.html
https://medium.com/@chih.sheng.huang821/%E6%A9%9F%E5%99%A8%E5%AD%B8%E7%BF%92-%E5%9F%BA%E7%A4%8E%E6%95%B8%E5%AD%B8-%E4%BA%8C-%E6%A2%AF%E5%BA%A6%E4%B8%8B%E9%99%8D%E6%B3%95-gradient-descent-406e1fd001f