Stanford機器學(xué)習(xí)---第五講. 神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí) Neural Networks learning

原文http://blog.csdn.net/abcjennifer/article/details/7758797

本欄目(Machine learning)包括單參數(shù)的線性回歸猾编、多參數(shù)的線性回歸、Octave Tutorial彭雾、Logistic Regression蝙叛、Regularization儡陨、神經(jīng)網(wǎng)絡(luò)迷扇、機器學(xué)習(xí)系統(tǒng)設(shè)計鸥昏、SVM(Support Vector Machines 支持向量機)瑟蜈、聚類、降維踪栋、異常檢測焙格、大規(guī)模機器學(xué)習(xí)等章節(jié)夷都。所有內(nèi)容均來自Standford公開課machine learning中Andrew老師的講解。(https://class.coursera.org/ml/class/index

第五講——Neural Networks 神經(jīng)網(wǎng)絡(luò)的表示

===============================

(一)囤官、Cost function

(二)、Backpropagation algorithm

(三)党饮、Backpropagation intuition

(四)、Implementation note: Unrolling parameters

(五)刑顺、Gradient checking

(六)、Random initialization

(七)蹲堂、Putting it together

===============================

(一)、Cost function

假設(shè)神經(jīng)網(wǎng)絡(luò)的訓(xùn)練樣本有m個柒竞,每個包含一組輸入x和一組輸出信號y政供,L表示神經(jīng)網(wǎng)絡(luò)層數(shù),Sl表示每層的neuron個數(shù)(SL表示輸出層神經(jīng)元個數(shù))朽基。

將神經(jīng)網(wǎng)絡(luò)的分類定義為兩種情況:二類分類和多類分類布隔,

卐二類分類:SL=1, y=0 or 1表示哪一類;

卐K類分類:SL=K, yi= 1表示分到第i類稼虎;(K>2)

我們在前幾章中已經(jīng)知道衅檀,Logistic hypothesis的Cost Function如下定義:

其中,前半部分表示hypothesis與真實值之間的距離霎俩,后半部分為對參數(shù)進行regularization的bias項术吝,神經(jīng)網(wǎng)絡(luò)的cost function同理:

hypothesis與真實值之間的距離為 每個樣本-每個類輸出 的加和,對參數(shù)進行regularization的bias項處理所有參數(shù)的平方和

===============================

(二)茸苇、Backpropagation algorithm

前面我們已經(jīng)講了cost function的形式排苍,下面我們需要的就是最小化J(Θ)

想要根據(jù)gradient descent的方法進行參數(shù)optimization,首先需要得到cost function和一些參數(shù)的表示学密。根據(jù)forward propagation,我們首先進行training dataset 在神經(jīng)網(wǎng)絡(luò)上的各層輸出值:

我們定義神經(jīng)網(wǎng)絡(luò)的總誤差為:

希望通過調(diào)整權(quán)重參數(shù)W(也就是theta)來最小化E淘衙。由于所以每一層按如下方式進行更新:

根據(jù)backpropagation算法進行梯度的計算,這里引入了error變量δ腻暮,該殘差表明了該節(jié)點對最終輸出值的殘差產(chǎn)生了多少影響彤守。對于最后一層,我們可以直接算出網(wǎng)絡(luò)產(chǎn)生的輸出與實際值之間的差距哭靖,我們將這個差距定義為具垫。對于隱藏單元我們?nèi)绾翁幚砟兀课覀儗⑼ㄟ^計算各層節(jié)點殘差的加權(quán)平均值計算hidden layer的殘差试幽。讀者可以自己驗證下筝蚕,其實就是E對b求導(dǎo)的結(jié)果。

在最后一層中,

對于前面的每一層起宽,都有

由此得到第l層第i個節(jié)點的殘差計算方法:

由于我們的真實目的是計算,且

所以我們可以得到神經(jīng)網(wǎng)絡(luò)中權(quán)重的update方程:

不斷迭代直到落入local optima,就是backpropagation的算法過程洲胖。

============================================================

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Example of logistical cost:

下面我們針對logistical cost給出計算的例子:而對于每一層,其誤差可以定義為:

分別代入即得

由此得來\theta_{k}的update方程:

如果將誤差對激勵函數(shù)(activation function)的導(dǎo)數(shù)記做δ坯沪,則有:

對于前面一層 ,更新同理绿映,只是上一層\Theta梯度的第一個分量E對a_k求導(dǎo)有所變化,

但是始終是不變的腐晾。

下圖就是上面推導(dǎo)得出的結(jié)果:

由上圖我們得到了error變量δ的計算叉弦,下面我們來看backpropagation算法的偽代碼:

ps:最后一步之所以寫+=而非直接賦值是把Δ看做了一個矩陣藻糖,每次在相應(yīng)位置上做修改。

從后向前此計算每層依的δ榄棵,用Δ表示全局誤差,每一層都對應(yīng)一個Δ(l)疹鳄。再引入D作為cost function對參數(shù)的求導(dǎo)結(jié)果芦岂。下圖左邊j是否等于0影響的是是否有最后的bias regularization項。左邊是定義腺怯,右邊可證明(比較繁瑣)川无。

===============================

(三)、Backpropagation intuition

上面講了backpropagation算法的步驟以及一些公式晾虑,在這一小節(jié)中我們講一下最簡單的back-propagation模型是怎樣learning的仅叫。

首先根據(jù)forward propagation方法從前往后計算z(j),a(j);

然后將原cost function 進行簡化帜篇,去掉下圖中后面那項regularization項笙隙,

那么對于輸入的第i個樣本(xi,yi)坎缭,有

Cost(i)=y(i)log(hθ(x(i)))+(1-y(i))log(1-?hθ(x(i)))

由上文可知签钩,

其中J就是cost。那么將其進行簡化哄尔,暫時不考慮g'(zk) = ak(1-ak)的部分,就有:

經(jīng)過求導(dǎo)計算可得富拗,對于上圖有

換句話說, 對于每一層來說啃沪,δ分量都等于后面一層所有的δ加權(quán)和窄锅,其中權(quán)值就是參數(shù)Θ。

===============================

(四)入偷、Implementation note: Unrolling parameters

這一節(jié)講述matlab中如何實現(xiàn)unrolling parameter。

前幾章中已經(jīng)講過在matlab中利用梯度下降方法進行更新根本殿雪,兩個方程:

function [jVal, gradient] = costFunction(theta)

optTheta = fminunc(@costFunction, initialTheta, options)

與linear regression和logistic regression不同锋爪,在神經(jīng)網(wǎng)絡(luò)中,參數(shù)非常多亏镰,每一層j有一個參數(shù)向量Θj和Derivative向量Dj。那么我們首先將各層向量連起來拆挥,組成大vectorΘ和D某抓,傳入function,再在計算中進行下圖中的reshape汉矿,分別取出進行計算。

計算時洲拇,方法如下:

===============================

(五)奈揍、Gradient checking

神經(jīng)網(wǎng)絡(luò)中計算起來數(shù)字千變?nèi)f化難以掌握赋续,那我們怎么知道它里頭工作的對不對呢?不怕蛾绎,我們有法寶鸦列,就是gradient checking,通過check梯度判斷我們的code有沒有問題薯嗤,ok骆姐?怎么做呢,看下邊:

對于下面這個【Θ-J(Θ)】圖玻褪,取Θ點左右各一點(Θ+ε),(Θ-ε)黄虱,則有點Θ的導(dǎo)數(shù)(梯度)近似等于(J(Θ+ε)-J(Θ-ε))/(2ε)庸诱。

對于每個參數(shù)的求導(dǎo)公式如下圖所示:

由于在back-propagation算法中我們一直能得到J(Θ)的導(dǎo)數(shù)D(derivative)桥爽,那么就可以將這個近似值與D進行比較,如果這兩個結(jié)果相近就說明code正確盗扒,否則錯誤,如下圖所示:

Summary: 有以下幾點需要注意

-在back propagation中計算出J(θ)對θ的導(dǎo)數(shù)D侣灶,并組成vector(Dvec)

-用numerical gradient check方法計算大概的梯度gradApprox=(J(Θ+ε)-J(Θ-ε))/(2ε)

-看是否得到相同(or相近)的結(jié)果

-(這一點非常重要)停止check缕碎,只用back propagation 來進行神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)(否則會非常慢,相當(dāng)慢)

===============================

(六)凡怎、Random Initialization

對于參數(shù)θ的initialization問題,我們之前采用全部賦0的方法统倒,比如:

this means all of your hidden units are computing all of the exact same function of the input. So this is a highly redundant representation. 因為一層內(nèi)的所有計算都可以歸結(jié)為1個房匆,而這使得一些interesting的東西被ignore了。

所以我們應(yīng)該打破這種symmetry墓猎,randomly選取每一個parameter赚楚,在[-ε,ε]范圍內(nèi):

===============================

(七)骗卜、Putting it together

1. 選擇神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)

我們有很多choices of network :

那么怎么選擇呢?

No. of input units: Dimension of features

No. output units: Number of classes

Reasonable default: 1 hidden layer, or if >1 hidden layer, have same no. of hidden units in every layer (usually the more the better)

2. 神經(jīng)網(wǎng)絡(luò)的訓(xùn)練

① Randomly initialize weights

② Implement forward propagation to gethθ(x(i))?for anyx(i)

③ Implement code to compute cost function J(θ)

④ Implement backprop to compute partial derivatives

test:

本章講述了神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)的過程,重點在于back-propagation算法俭嘁,gradient-checking方法,希望能夠有人用我之前這篇文章中的類似方法予以實現(xiàn)神經(jīng)網(wǎng)絡(luò)供填。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?另外提供一篇作為Reference罢猪,供大家參考。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末粘捎,一起剝皮案震驚了整個濱河市危彩,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌咧纠,老刑警劉巖泻骤,帶你破解...
    沈念sama閱讀 221,820評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件梧奢,死亡現(xiàn)場離奇詭異演痒,居然都是意外死亡,警方通過查閱死者的電腦和手機惦蚊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評論 3 399
  • 文/潘曉璐 我一進店門讯嫂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人莉掂,你說我怎么就攤上這事千扔。” “怎么了曲楚?”我有些...
    開封第一講書人閱讀 168,324評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長抚垃。 經(jīng)常有香客問我趟大,道長,這世上最難降的妖魔是什么护昧? 我笑而不...
    開封第一講書人閱讀 59,714評論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮捣炬,結(jié)果婚禮上绽榛,老公的妹妹穿的比我還像新娘。我一直安慰自己灭美,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,724評論 6 397
  • 文/花漫 我一把揭開白布铁坎。 她就那樣靜靜地躺著,像睡著了一般扩所。 火紅的嫁衣襯著肌膚如雪朴乖。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,328評論 1 310
  • 那天袁勺,我揣著相機與錄音畜普,去河邊找鬼。 笑死咐汞,一個胖子當(dāng)著我的面吹牛盖呼,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播约炎,決...
    沈念sama閱讀 40,897評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼圾浅,長吁一口氣:“原來是場噩夢啊……” “哼憾朴!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起灸拍,我...
    開封第一講書人閱讀 39,804評論 0 276
  • 序言:老撾萬榮一對情侶失蹤砾省,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后轩性,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,345評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡揣苏,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,431評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了绅作。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蛾派。...
    茶點故事閱讀 40,561評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖眯杏,靈堂內(nèi)的尸體忽然破棺而出壳澳,到底是詐尸還是另有隱情,我是刑警寧澤萎津,帶...
    沈念sama閱讀 36,238評論 5 350
  • 正文 年R本政府宣布抹镊,位于F島的核電站,受9級特大地震影響颈渊,放射性物質(zhì)發(fā)生泄漏终佛。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,928評論 3 334
  • 文/蒙蒙 一绍豁、第九天 我趴在偏房一處隱蔽的房頂上張望牙捉。 院中可真熱鬧,春花似錦鹃共、人聲如沸鬼佣。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽晶衷。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間晌纫,已是汗流浹背税迷。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留锹漱,地道東北人箭养。 一個月前我還...
    沈念sama閱讀 48,983評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像哥牍,于是被迫代替她去往敵國和親毕泌。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,573評論 2 359

推薦閱讀更多精彩內(nèi)容