昨天舉的例子 是一個線性模型(linear model),隨著 越大, 就越大,可以透過設定不同的 來改變斜率,或是設定不同的 來改變直線與 y 軸的交叉點,但它永遠會是一條直線。
然而實際情況可能會是紅色曲線這樣子,但不管怎麼設定 也沒辦法變成紅色那條曲線。由此可知線性模型會有很大的限制(Model Bias),因此如要產生紅色曲線我們就需要更複雜的模型。
紅色曲線可以看成是一個常數加上很多個藍色的函式,從下圖中可以看到紅色的曲線可以由 0(常數項), 1, 2, 3 這四個函數所組成。而這個紅色曲線是由很多線段所組成的,我們稱之為分段線性曲線(Piecewise Linear Curves)。
那剛剛提到的藍色曲線要如何表示呢?
我們可以使用 S型函數(Sigmoid function) 去逼近它,其式子寫成 ,當 趨近於無窮大,, 就會收斂在 ,而當 趨近於無窮小,分母會趨近於無窮大,即 會趨近於 0。這些藍色曲線我們稱之為 Hard Sigmoid。
調整 即會改變斜率,調整 就能將 Sigmoid funtion 左右移動,調整 則會改變高度。
藉由調整不同的參數來產生各種Sigmoid function,再透過這些Sigmoid function產生各種不同的 Piecewise linear function,最後甚至能夠逼近各種連續函數。
根據上述方法我們就可以將原本的 改成 。
我們將上述的數學式子透過圖形來表示,每個圖形都代表著一矩陣或是數值,而我們將這些未知的參數拉直,拼成一個很長的向量 ,即為所有未知的參數。
計算Loss的方法跟昨天教的方法一樣,首先設定一組 的值,接著把feature 代入,得出預測的 ,再去計算預測的值與真實的值的差距 ,最後加總誤差。
方法也跟昨天教的一樣,使用Gradient descent,首先隨機選一個初始數值 ,接著去計算每一個參數對Loss的微分,會得到一個向量 ,即為Gradient,我們可以用 來表示,將式子寫成 ,最後去重複更新所有的參數。
而實際上在做Gradient descent的時候,我們會將我們有的 筆資料隨意分成好幾個Batch ,並對其中一個Batch計算它的Loss ,並使用 來計算Gradient並更新參數,接著再取下一個Batch去計算Loss,以此類推。
每次更新一次參數,我們叫做一次Update,而將所有Batch看過一次,我們稱之為一次Epoch,
Hard sigmoid也可以看成是兩個 Rectified Linear Unit(ReLU) 的加總,其式子寫成 。
將原本Sigmoid換成ReLU,而這兩種function我們稱之為Activation function。