機(jī)器學(xué)習(xí)中常見的邏輯回歸和線性回歸褪测,都是線性的猴誊,它們簡(jiǎn)單高效。 但也有明細(xì)缺陷侮措,表達(dá)能力弱懈叹,無(wú)法描述非線性問(wèn)題。為了擴(kuò)展它們的表達(dá)能力分扎, 通吵纬桑可以通過(guò)非線性地改變輸入φ(x),比如:添加核函數(shù)畏吓。 設(shè)計(jì)選擇φ(x)的方法:
使用一個(gè)通用的 φ墨状,例如無(wú)限維的 φ。 總是有足夠的能力 來(lái)擬合訓(xùn)練集菲饼,但是對(duì)于測(cè)試集的泛化往往不佳歉胶。
手動(dòng)地設(shè)計(jì) φ。在深度學(xué)習(xí)出現(xiàn)以前巴粪,這一直是主流的方法, 通常是根據(jù)各個(gè)領(lǐng)域的問(wèn)題粥谬,設(shè)計(jì)不同的φ
深度學(xué)習(xí)的策略是去學(xué)習(xí) φ肛根。此時(shí),我們定義函數(shù)族 φ(x; θ), 并且使用優(yōu)化算法來(lái)尋找 θ漏策。這種方法可以同時(shí)獲得上面兩張方法的好處派哲。
實(shí)例:學(xué)習(xí) XOR(異或)
線性模型是無(wú)法擬合XOR函數(shù)的,但是可以通過(guò)多層非線性模型來(lái)擬合掺喻。實(shí)例中使用ReLU激活函數(shù)來(lái)實(shí)現(xiàn)非線性變換芭届。基于梯度的學(xué)習(xí)
神經(jīng)網(wǎng)絡(luò)的非線性導(dǎo)致大多數(shù)損失函都變得非凸。但是感耙,用于非凸損失函數(shù)的隨機(jī)梯度下降不保證收斂性褂乍,并且對(duì)參數(shù)的初始值很敏感。因而對(duì)于前饋神經(jīng)網(wǎng)絡(luò)即硼,將所有的權(quán)重值初始化為小隨機(jī)數(shù)是很重要的逃片。偏置則可以初始化為零或者小的正值。
2.1 代價(jià)函數(shù)
大多數(shù)現(xiàn)代的神經(jīng)網(wǎng)絡(luò)使用最大似然來(lái)訓(xùn)練只酥。這意味著代價(jià)函數(shù)就是負(fù)的對(duì)數(shù)似然褥实,它與訓(xùn)練數(shù)據(jù)和模型分布間的交叉熵等價(jià)呀狼。這個(gè)代價(jià)函數(shù)表示為:
對(duì)輸出分布的最大似然估計(jì)和對(duì)線性模型均方誤差的最小化是等價(jià)的
代價(jià)函數(shù)的梯度必須足夠的大和具有足夠的預(yù)測(cè)性。飽和(變得非常平)的函數(shù)破壞了這一目標(biāo)损离,因?yàn)樗鼈儼烟荻茸兊梅浅P「缤А_@在很多情況下都會(huì)發(fā)生,因?yàn)橛糜诋a(chǎn)生隱藏單元或者輸出單元的輸出的激活函數(shù)會(huì)飽和僻澎。很多輸出單元都會(huì)包含一個(gè)指數(shù)函數(shù)貌踏,這在它的變量取絕對(duì)值非常大的負(fù)值時(shí)會(huì)造成飽和。負(fù)對(duì)數(shù)似然代價(jià)函數(shù)中的對(duì)數(shù)函數(shù)消除某些輸 出單元中的指數(shù)效果怎棱。
學(xué)習(xí)條件統(tǒng)計(jì)量
使用最小化均方誤差代價(jià)函數(shù)(L2)將得到一個(gè)函數(shù)哩俭, 它可以用來(lái)對(duì)每個(gè) x 的值預(yù)測(cè)出 y 的均值
使用L1的代價(jià)函數(shù)將得到一個(gè)函數(shù)可以對(duì)每個(gè) x 預(yù)測(cè) y 取值的中位數(shù)
2.2 輸出單元
2.2.1 用于高斯輸出分布的線性單元
給定特征 h,線性輸出單元層產(chǎn)生一個(gè)向量 y? = W?h + b拳恋,線性輸出層經(jīng)常被用來(lái)產(chǎn)生條件高斯分布的均值
2.2.2 用于 Bernoulli 輸出分布的 sigmoid 單元:
σ(x) = 1/(1+ e ^-x)
當(dāng)我們使用其他的損失函數(shù)凡资,例如均方誤差之類的,損失函數(shù)會(huì)在 σ(z) 飽和時(shí)飽和谬运。sigmoid 激活函數(shù)在 z 取非常小的負(fù)值時(shí)會(huì)飽和到 0隙赁,當(dāng) z 取非常大的正值時(shí) 會(huì)飽和到 1。這種情況一旦發(fā)生梆暖,梯度會(huì)變得非常小以至于不能用來(lái)學(xué)習(xí)伞访,無(wú)論此模型給出的是正確還是錯(cuò)誤的答案。因此轰驳,最大似然幾乎總是訓(xùn)練 sigmoid 輸出單元的優(yōu)選方法厚掷。
2.2.3 用于 Multinoulli 輸出分布的 softmax 單元
負(fù)對(duì)數(shù)似然代價(jià)函數(shù)總是強(qiáng)烈地懲罰最活躍的不正確預(yù)測(cè)。如果正確答案已經(jīng)具有了 softmax 的最大輸入级解,那么 ?zi 項(xiàng)和 log ∑ exp(zj ) ≈ maxj zj = zi j項(xiàng)將大致抵消冒黑。這個(gè)樣本對(duì)于整體訓(xùn)練代價(jià)貢獻(xiàn)很小,這個(gè)代價(jià)主要由其他未被正確分類的樣本產(chǎn)生勤哗。
- 隱藏單元
大多數(shù)的隱藏單元都可以描述為接受輸入向量 x抡爹,計(jì)算仿射變 換 z = W?x + b,然后使用一個(gè)逐元素的非線性函數(shù) g(z)芒划。大多數(shù)隱藏單元的區(qū)別 僅僅在于激活函數(shù) g(z) 的形式冬竟。
激活函數(shù):
整流線性單元激活函數(shù): g(z) = max{0, z},優(yōu)點(diǎn):計(jì)算簡(jiǎn)單民逼,梯度不消失泵殴,缺點(diǎn):在 z = 0 處不可微, 不能通過(guò)基于梯度的方法學(xué)習(xí)那些使它們激活為零的樣本缴挖。
絕對(duì)值整流(absolute value rectification): g(z) = |z|
滲漏整流線性單元:g(z, α)= max(0, z) + αmin(0, z)袋狞, a是個(gè)很小的數(shù),如:0.01
參數(shù)化整流線性單元(parametric ReLU)或者 PReLU: g(z, α)= max(0, z) + αmin(0, z),將 α 作為學(xué)習(xí)的參數(shù)苟鸯。
maxout 單元(maxout unit)
sigmod: σ(x) : x很大或很小的時(shí)候梯度飽和同蜻, 取值范圍不是0對(duì)稱。
雙曲正切函數(shù):g(z)=tanh(z)=2σ(2x)-1 早处, 取值范圍0對(duì)稱
- 架構(gòu)設(shè)計(jì)
在這些鏈?zhǔn)郊軜?gòu)中湾蔓,主要的架構(gòu)考慮是選擇網(wǎng)絡(luò)的深度和每一層的寬度。即使只有一個(gè)隱藏層的網(wǎng)絡(luò)也足夠適應(yīng)訓(xùn)練集砌梆。更深層的網(wǎng)絡(luò)通常能夠 對(duì)每一層使用更少的單元數(shù)和更少的參數(shù)默责,并且經(jīng)常容易泛化到測(cè)試集,但是通常也更難以優(yōu)化咸包。
萬(wàn)能近似定理(universal approximation theorem):一個(gè)前饋神經(jīng)網(wǎng)絡(luò)如果具有線性輸出層和至少一層具有任何一種 “擠壓” 性質(zhì)的激活函數(shù)(例如logistic sigmoid激活函數(shù))的隱藏層桃序,只要給予網(wǎng)絡(luò)足夠數(shù)量的隱藏單元,它可以以任意的精度來(lái)近似任何從一個(gè)有限維空間到另一個(gè)有限維空間的 Borel 可測(cè)函數(shù)烂瘫。在 Rn 的有界閉集上的任意連續(xù)函數(shù)是 Borel 可測(cè)的媒熊, 因此可以用神經(jīng)網(wǎng)絡(luò)來(lái)近似。
總之坟比,具有單層的前饋網(wǎng)絡(luò)足以表示任何函數(shù)芦鳍,但是網(wǎng)絡(luò)層可能大得不可實(shí)現(xiàn), 并且可能無(wú)法正確地學(xué)習(xí)和泛化葛账。在很多情況下柠衅,使用更深的模型能夠減少表示期 望函數(shù)所需的單元的數(shù)量,并且可以減少泛化誤差籍琳。
- 反向傳播和其他的微分算法
反向傳播(back propagation)算法菲宴,經(jīng)常簡(jiǎn)稱為backprop,允許來(lái)自代價(jià)函數(shù)的信息通過(guò)網(wǎng)絡(luò)向后流動(dòng)趋急, 以便計(jì)算梯度裙顽。
The chain rule of derivatives tells us how two small effects (that of a small change of x on y, and that of y on z) are composed. A small change Δx in x gets transformed first into a small change Δy in y by getting multiplied by ?y/?x (that is, the definition of partial derivative). Similarly, the change Δy creates a change Δz in z. Substituting one equation into the other gives the chain rule of derivatives — how Δx gets turned into Δz through multiplication by the product of ?y/?x and ?z/?x. It also works when x, y and z are vectors (and the derivatives are Jacobian matrices).
c: The equations used for computing the forward pass in a neural net with two hidden layers and one output layer, each constituting a module through which one can backpropagate gradients. At each layer, we first compute the total input z to each unit, which is a weighted sum of the outputs of the units in the layer below. Then a non-linear function f(.) is applied to z to get the output of the unit. For simplicity, we have omitted bias terms. The non-linear functions used in neural networks include the rectified linear unit (ReLU) f(z) = max(0,z), commonly used in recent years, as well as the more conventional sigmoids, such as the hyberbolic tangent, f(z) = (exp(z) ? exp(?z))/(exp(z) + exp(?z)) and logistic function logistic, f(z) = 1/(1 + exp(?z)).
d: The equations used for computing the backward pass. At each hidden layer we compute the error derivative with respect to the output of each unit, which is a weighted sum of the error derivatives with respect to the total inputs to the units in the layer above. We then convert the error derivative with respect to the output into the error derivative with respect to the input by multiplying it by the gradient of f(z). At the output layer, the error derivative with respect to the output of a unit is computed by differentiating the cost function. This gives yl ? tl if the cost function for unit l is 0.5(yl ? tl) , where tl is the target value. Once the ?E/?zk is known, the error-derivative for the weight wjk on the connection from unit j in the layer below is just yj ?E/?zk