一、Linear Models' Bias
上篇學(xué)習(xí)機(jī)器學(xué)習(xí)一文中,所構(gòu)造的 $y = b + wx_0$ 函數(shù)是一個(gè)linear model亦即線性模型,但是linear models有缺陷的——它過于簡單了。實(shí)際應(yīng)用中,我們所面臨的不會只是一個(gè)簡單的linear model,因此我們需要更復(fù)雜的models。
比如上圖中的紅色曲線,如何找到它的表達(dá)式呢?
可以通過許多條藍(lán)色的函數(shù)相加得到紅色曲線的函數(shù)。所有的Piecewise Linear Curves都可以用一組類似的“藍(lán)色函數(shù) + 常數(shù)”來表達(dá)出來,即使是曲線也可以,如下圖:
?
二、如何找“藍(lán)色函數(shù)”?
Sigmoid Function
$y = c\frac{1}{1 + e ^ {-(b + wx_1)}} = c*sigmoid(b + wx_1)$
其函數(shù)圖像如下表示:
我們可以對sigmoid函數(shù)中的參數(shù)做調(diào)整,得到不同形狀的sigmoid函數(shù),來逼近藍(lán)色函數(shù)。
改變w可以改變sigmoid函數(shù)的斜率;改變b可以左右移動其位置;改變c可以改變其高度,如下圖:
所以不同的常數(shù)c,截距b和斜率w就會得到不同的sigmoid函數(shù),然后將它們加起來就能夠逼近目標(biāo)函數(shù),即
?
三、深度學(xué)習(xí)里的三個(gè)步驟
仿照前面ML里的三個(gè)步驟,我們也可以將其完全套在DL中
1. Function with unkonwn parameters
不同于ML里我們定義的簡單的linear model,通過上面的分析我們可以得到一個(gè)全新的model——擁有更多features的model!
將前面的linear表達(dá)式代入sigmoid函數(shù):
其中:
\(j\)代表第\(j\)個(gè)feature(即第\(j\)天的點(diǎn)擊量);\(i\)代表選擇第\(i\)個(gè)sigmoid函數(shù);\(w_{ij}\)表示在第\(i\)個(gè)sigmoid函數(shù)中\(x_j\)的權(quán)值
如圖,分別代入計(jì)算就能得到:
由線性代數(shù)的知識可以發(fā)現(xiàn),上面的三個(gè)式子可以寫作矩陣的乘法:
然后將\(r\)代入sigmoid函數(shù),記作\(a = \sigma(r)\),乘上系數(shù)\(c\),再加上\(b\)就得到最后的\(y\),即\(y = b + c^Ta\)
最終得到:$$y = b + c^T \sigma({\bf b} + Wx)$$(\(b\)和\(\bf b\)區(qū)別開)
將W矩陣中的行或者列取出來,與\(b\),\(\bf b\)和\(c^T\)豎著排列起來組成:
就進(jìn)入了第2步找Loss函數(shù)
2. Define Loss from Training Data
Loss函數(shù)與ML一節(jié)中講的一樣,定義函數(shù)\(L(\theta)\)
先給定一組參數(shù)代入\(y = b + c^T \sigma({\bf b} + Wx)\)計(jì)算出\(y\)的值,然后將其與真實(shí)值(label) \(\widehat{y}\)比較,得到誤差\(e\),最后便可得Loss函數(shù)的表達(dá)式:
進(jìn)而到第3步找一個(gè)最優(yōu)解的步驟
3. Optimization
記 \(\theta^\star = arg min_{\theta}L\)
-
(Randomly)Pick initial value \(\theta^0\)
gradient \(g = \begin{bmatrix} \dfrac{\partial L}{\partial \theta_1}|_{\theta = \theta^0} \\ \dfrac{\partial L}{\partial \theta_2}|_{\theta = \theta^0} \\ . \\ . \\ . \end{bmatrix}\)
可以記作:\(g =\nabla L(\theta^0)\)(就是梯度符號) -
Compute gradient again and again
\(g =\nabla L(\theta^0)\) \(\theta^1 \leftarrow \theta^0 - \eta g\)
\(g =\nabla L(\theta^1)\) \(\theta^2 \leftarrow \theta^1 - \eta g\)
\(g =\nabla L(\theta^2)\) \(\theta^3 \leftarrow \theta^2 - \eta g\)
還有另一種計(jì)算方式,將整個(gè)L中的數(shù)據(jù)分成N個(gè)batch(批),每批數(shù)據(jù)中有B個(gè)數(shù)據(jù),與上面的方法略有差異,每次update時(shí),是依次從每個(gè)batch里取出數(shù)據(jù)來update,當(dāng)把所有的batch更新過一遍,叫1個(gè)epoch(時(shí)期)
?
四、從sigmoid到ReLU
ReLU(Rectified Linear Unit)是另一種 Activation Function(激活函數(shù)),前面提到的分段Sigmoid(Hard-Sigmoid)函數(shù)的表達(dá)式可能會很難寫出來,但是其可以看作是2個(gè)ReLU函數(shù)相加,ReLU函數(shù)的表達(dá)式如下: $$c*max(0, b + wx_1)$$
如此,我們前面y的表達(dá)式就可以變成:
注意換成ReLU函數(shù)后,\(i\)變?yōu)樵瓉淼?倍,因?yàn)?個(gè)ReLU函數(shù)才能合成一個(gè)Sigmoid函數(shù)
?
五、到底為什么叫Deep Learning ?
上面的例子里我們只套了一層激活函數(shù)就得到了y的表達(dá)式,但是人們發(fā)現(xiàn)套的層數(shù)多一些預(yù)測的效果就會更好一些,所以不妨多套幾層:
其中我們用到的sigmoid或ReLU函數(shù)叫neuron(神經(jīng)元),許多neuron套起來就叫neural network(神經(jīng)網(wǎng)絡(luò))。后來人們又給它們?nèi)×诵碌拿?,每一排的neuron叫作hidden layer(隱含層),有許多層layer所以叫作Deep Learning
文章來源:http://www.zghlxwxcb.cn/news/detail-853500.html
但是層數(shù)越多不見得預(yù)測效果會越好,在課堂實(shí)例中,雖然隨著層數(shù)的增加,在訓(xùn)練數(shù)據(jù)上的效果越來越好,但是在預(yù)測數(shù)據(jù)上誤差出現(xiàn)了增大,這便是overfitting(過擬合)
文章來源地址http://www.zghlxwxcb.cn/news/detail-853500.html
到了這里,關(guān)于深度學(xué)習(xí)基本概念簡介的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!