1手撕深度学习算法答疑微信群建立了!
为了更好地服务于关注于我们手撕深度学习算法讲座的学员,我们成立专门的答疑微信群。4月8日后,我们将再继续释放LSTM后半部讲座视频,敬请关注!届时我们会开放入群。
说在前面
有人问关于深度学习有没有入门的资料,初学者怎么破?
Kalvar Lin老师建议先看看这个视频:
回到今天的话题
首先群里Kalvar Lin老师在群里发了两篇他的手写算式:
老师说:让大家假单认识一下Sigmoid,Hyperbolic Tangent的原型:Logistic Function,这样想试试设计自己的Sigmoid,Tanh是可行的。
问题来了
啥叫Sigmoid?
接着有人补充:
Kalvar Lin老师晚上来总结了一下:
Sigmoid,Hyperbolic Tangent都是常用的激活函式(Activation Function),而这2个都能从Logistic Function推论出来。
Sigmoid 把概率分佈壓在 [0.0, 1.0] 之間,Tanh 則壓在 [-1.0, 1.0] 之間
能看到上面有一張 1/(1+exp(-x)) 的 Sigmoid 曲線圖,神經元的訊號(信号)在做加總後,會把訊號再丟入這 sigmoid(x) 進行活化後輸出對應的 y 值。圖裡有 x, y 這 2 軸,我們就是在輸入 x 變量去求出 y 的分佈值。
开头 2 張的用意是能從源頭去理解,而後設計自己的激活函式
Sigmoid 是以 0.5 為分野,>= 0.5 為正樣本,< 0.5 為負樣本。Tanh 以 0 點為分野。第 2 張圖就是刻意把 x 軸向右偏移 5 單位,再把 y 軸向下移 0.5 單位。
假設神經元訊號總和為 0.5, 則 x = 0.5 分別代入 :
a). 1/(1 + exp(-x)) = 1/(1 + exp(-0.5)) = 0.622
b). 1/(1 + exp(-(x - 5))) - 0.5 = 1/(1 + exp(-(0.5 - 5))) - 0.5 = -0.48901305736
就能讓原本輸入的訊號,由正樣本分佈的 0.622 落入負樣本 -0.489。這作法也能理解為建立了一個門檻 (threshold) 進行活化,去為自己的學習數據彈性的設計自己的函式做數據分割。
那 2 張手稿就是在撕這件事。
Logistic Function 常被用來做 Non-linear (非線性) 分割,LSTM 裡則是利用 Sigmoid 來做訊號壓縮與管控。
补充知识点
LSTM是long short term memory的縮寫 他的基礎是RNN,適合RNN的類型 又需要加上一些"記憶"性質。
http://www-dsi.ing.unifi.it/~paolo/ps/tnn-94-gradient.pdf,這裡有篇文章據說解釋了為什麼原本的RNN面對需要記憶的時候做得不好。