深度學(xué)習(xí)(二):梯度下降

1、“比較”這一步會(huì)讓你知道自己的模型錯(cuò)了多少。誤差總是正的屈呕。均方誤差是評(píng)估神經(jīng)網(wǎng)絡(luò)準(zhǔn)確性的常用方法
2、在“預(yù)測(cè)”步驟結(jié)束時(shí)棺亭,“學(xué)習(xí)”這一步會(huì)為每項(xiàng)權(quán)重計(jì)算一個(gè)數(shù)字虎眨。這個(gè)數(shù)字告訴我們,如果想要減少誤差,權(quán)重應(yīng)該向哪個(gè)方向變化嗽桩。然后可以根據(jù)這個(gè)數(shù)字對(duì)權(quán)重做出相應(yīng)的調(diào)節(jié)岳守,直到達(dá)到目的

1 冷熱學(xué)習(xí)

1、冷熱學(xué)習(xí)指的是通過擾動(dòng)權(quán)重來(lái)確定向哪個(gè)方向調(diào)整可以使得誤差的降低幅度最大碌冶,基于此將權(quán)重的值向那個(gè)方向移動(dòng)湿痢,不斷重復(fù)這個(gè)過程,直到誤差趨向于0
2种樱、冷熱學(xué)習(xí)的特點(diǎn):
(1)簡(jiǎn)單 在上一次做出預(yù)測(cè)后蒙袍,模型又進(jìn)行了兩次預(yù)測(cè)俊卤,一次的權(quán)重稍高嫩挤,一次的權(quán)重稍低。權(quán)重實(shí)際調(diào)節(jié)的量取決于哪個(gè)方向所得到的誤差更小
(2)效率低 需要多次預(yù)測(cè)才能進(jìn)行一次權(quán)重更新
(3)有時(shí)無(wú)法準(zhǔn)確的預(yù)測(cè)出目標(biāo) step_amout 是任意選擇的消恍,這可能讓你學(xué)不到正確的權(quán)重值

weight = 0.5
input = 0.5
goal_prediction = 0.8
step_amout = 0.001 #每個(gè)迭代岂昭,權(quán)重應(yīng)該調(diào)節(jié)多少
for iteration in range(1101):
    #預(yù)測(cè)
    prediction = input * weight
    error = (prediction - goal_prediction)**2
    print("Error:" + str(error) + " Prediction:" + str(prediction))
    #權(quán)重稍高
    up_prediction = input * (weight + step_amout)
    up_error = (goal_prediction - up_prediction)**2
    #權(quán)重稍低
    down_prediction = input * (weight - step_amout)
    down_error = (goal_prediction - down_prediction)**2

    if up_error < down_error:
        weight = weight + step_amout
    if up_error > down_error:
        weight = weight - step_amout
    print('weight:' ,weight)

2 基于誤差調(diào)節(jié)權(quán)重

1、相對(duì)與冷熱學(xué)習(xí)狠怨,更高級(jí)的學(xué)習(xí)形式叫作梯度下降(Gradient-Descent )约啊。它可以在一行代碼中同時(shí)進(jìn)行方向和幅度的計(jì)算,對(duì)權(quán)重進(jìn)行調(diào)整以減少錯(cuò)誤

2佣赖、縮放恰矩、負(fù)值反轉(zhuǎn)和停止調(diào)節(jié) 這三個(gè)屬性的共同作用是將純誤差轉(zhuǎn)換為我們所需要的權(quán)重調(diào)節(jié)的絕對(duì)幅度。停止調(diào)節(jié): 當(dāng)輸入是0外傅,那么它將強(qiáng)制 direction_and_amount 也為0;負(fù)值反轉(zhuǎn): 即使輸入是負(fù)值俩檬,那么純誤差乘以輸入將改變 direction_and_amount 的方向萎胰;縮放: 如果輸入很大,則權(quán)重更新也會(huì)變得很大棚辽,這更像一種副作用技竟,因?yàn)樗?jīng)常可能失去控制屈藐。我們可以使用 alpha 來(lái)處理這種情況

weight = 0.5
goal_pred = 0.8
input = 0.5

for iteration in range(20):
    pred = input * weight
    error = (pred - goal_pred)**2
    #pred - goal_pred 為純誤差
    #(pred - goal_pred) *input 純誤差與輸入的相乘操作榔组,用于執(zhí)行縮放、負(fù)值反轉(zhuǎn)和停止調(diào)節(jié)
    direction_and_amount = (pred - goal_pred) *input
    print('direction_and_amount:',direction_and_amount)
    weight = weight - direction_and_amount
    print("Error:" + str(error) + " Prediction:" + str(pred))

3联逻、對(duì)于任何 input 和 goal_pred搓扯,結(jié)合有關(guān) prediction 和 error 的公式,我們可以在誤差和權(quán)重之間定義一個(gè)精確的關(guān)系遣妥;這里的 input 和 goal_pred 是確定的值擅编,假設(shè)他們分別是0.5和0.8,那么 error 和 weight 關(guān)系就是下面的一元二次方程和圖像;這里需要用到導(dǎo)數(shù)的知識(shí)爱态,可以用兩種方式解釋導(dǎo)數(shù):一種方法是谭贪,將它理解成函數(shù)中的一個(gè)變量在你移動(dòng)另一個(gè)變量時(shí)是如何變化的。另一種說法是锦担,導(dǎo)數(shù)是直線或曲線上一點(diǎn)的斜率

4俭识、神經(jīng)網(wǎng)絡(luò)實(shí)際上就是一件事情:一堆你可以計(jì)算誤差函數(shù)的權(quán)重。對(duì)于任何誤差函數(shù)洞渔,基于任意權(quán)重值套媚,都可以計(jì)算出網(wǎng)絡(luò)的最終誤差。有了這些信息磁椒,就可以改變神經(jīng)網(wǎng)絡(luò)中的每一項(xiàng) weight 堤瘤,將 error 減少到 0 ,這就是你要做的事情

5浆熔、微積分就是記憶和練習(xí)所有可能存在的函數(shù)的每一個(gè)可能的導(dǎo)數(shù)規(guī)則本辐。實(shí)際應(yīng)用中可以在參考資料中查找導(dǎo)數(shù)

6、將權(quán)重值向?qū)?shù)(derivative)的相反方向移動(dòng)医增,就能得到使誤差更小的權(quán)重值慎皱。這種學(xué)習(xí)方法稱為梯度下降法

error = (input * weight - goal_pred)**2
error = (0.5 * weight - 0.8)**2


梯度下降過程如下:

weight,goal_pred,input = (0.0,0.8,1.1)

for iteration in range(4):
    print('weight:',weight)
    pred = input * weight
    error = (pred - goal_pred)**2
    delta = pred - goal_pred
    weight_delta = input * delta
    weight -= weight_delta
    print('Error:' + str(error) + ' Prediction:' + str(pred))
    print('Delta:' + str(delta) + ' Weight Delta:' + str(weight_delta))

7、如果 input 足夠大叶骨,即使誤差很小茫多,也會(huì)使權(quán)值的增量很大。當(dāng)你的權(quán)重增量(weight_delta = input * delta)很大而誤差很小的時(shí)候忽刽,網(wǎng)絡(luò)會(huì)矯枉過正天揖。這就導(dǎo)致了預(yù)測(cè)結(jié)果爆咋的現(xiàn)象,稱為發(fā)散缔恳。

#將 input 值變?yōu)?時(shí)宝剖,產(chǎn)生發(fā)散現(xiàn)象
weight,goal_pred,input = (0.5,0.8,2)

for iteration in range(20):
    print('weight:',weight)
    pred = input * weight
    error = (pred - goal_pred)**2
    delta = pred - goal_pred
    weight_delta = input * delta
    weight -= weight_delta
    print('Error:' + str(error) + ' Prediction:' + str(pred))
    print('Delta:' + str(delta) + ' Weight Delta:' + str(weight_delta))

8、對(duì)于發(fā)散現(xiàn)象歉甚,解決方案是將權(quán)重的增量乘以一個(gè)比較小系數(shù)万细,讓它變得更小。將權(quán)值增量乘以一個(gè)介于0和1之間的實(shí)數(shù)纸泄,稱為α(alpha)赖钞。隨著時(shí)間推移,如果誤差開始發(fā)散(上升)聘裁,那么alpha值就太高了雪营,需要調(diào)低一點(diǎn)。如果學(xué)習(xí)進(jìn)展太慢衡便,那么 alpha 值太低献起,需要調(diào)高一些洋访。

weight = 0.5
goal_pred = 0.8
input = 2
alpha = 0.1

for iteration in range(20):
    pred = input * weight
    error = (pred - goal_pred)**2
    delta = pred - goal_pred
    derivative = input*delta
    weight = weight - derivative*alpha
    print('Error:' + str(error) + ' Prediction:' + str(pred))

3 參考資料

《深度學(xué)習(xí)圖解》

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市谴餐,隨后出現(xiàn)的幾起案子姻政,更是在濱河造成了極大的恐慌,老刑警劉巖岂嗓,帶你破解...
    沈念sama閱讀 216,324評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件汁展,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡厌殉,警方通過查閱死者的電腦和手機(jī)食绿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)公罕,“玉大人器紧,你說我怎么就攤上這事⊙郑” “怎么了品洛?”我有些...
    開封第一講書人閱讀 162,328評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵树姨,是天一觀的道長(zhǎng)摩桶。 經(jīng)常有香客問我,道長(zhǎng)帽揪,這世上最難降的妖魔是什么硝清? 我笑而不...
    開封第一講書人閱讀 58,147評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮转晰,結(jié)果婚禮上芦拿,老公的妹妹穿的比我還像新娘。我一直安慰自己查邢,他們只是感情好蔗崎,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,160評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著扰藕,像睡著了一般缓苛。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上邓深,一...
    開封第一講書人閱讀 51,115評(píng)論 1 296
  • 那天未桥,我揣著相機(jī)與錄音,去河邊找鬼芥备。 笑死冬耿,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的萌壳。 我是一名探鬼主播亦镶,決...
    沈念sama閱讀 40,025評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼日月,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了缤骨?” 一聲冷哼從身側(cè)響起山孔,我...
    開封第一講書人閱讀 38,867評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎荷憋,沒想到半個(gè)月后台颠,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,307評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡勒庄,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,528評(píng)論 2 332
  • 正文 我和宋清朗相戀三年串前,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片实蔽。...
    茶點(diǎn)故事閱讀 39,688評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡荡碾,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出局装,到底是詐尸還是另有隱情坛吁,我是刑警寧澤,帶...
    沈念sama閱讀 35,409評(píng)論 5 343
  • 正文 年R本政府宣布铐尚,位于F島的核電站拨脉,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏宣增。R本人自食惡果不足惜玫膀,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,001評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望爹脾。 院中可真熱鬧帖旨,春花似錦、人聲如沸灵妨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,657評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)泌霍。三九已至货抄,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間烹吵,已是汗流浹背碉熄。 一陣腳步聲響...
    開封第一講書人閱讀 32,811評(píng)論 1 268
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留肋拔,地道東北人锈津。 一個(gè)月前我還...
    沈念sama閱讀 47,685評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像凉蜂,于是被迫代替她去往敵國(guó)和親琼梆。 傳聞我的和親對(duì)象是個(gè)殘疾皇子性誉,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,573評(píng)論 2 353

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