- 程序員的AI書:從代碼開始
- 張力柯 潘暉
- 574字
- 2020-04-24 15:04:49
2.3 隨機(jī)梯度下降及實(shí)現(xiàn)
在2.2.3節(jié)線性回歸的實(shí)現(xiàn)中,我們看到在update_weights(更新權(quán)重)方法中,實(shí)際上每一次的更新都將所有輸入數(shù)據(jù)處理了一次,將所有輸入都作為一輪訓(xùn)練:

因?yàn)樯侠挠?xùn)練數(shù)據(jù)很少,所以每次都載入所有數(shù)據(jù)進(jìn)行訓(xùn)練并沒有什么關(guān)系。然而,在實(shí)際的生產(chǎn)環(huán)境中訓(xùn)練數(shù)據(jù)可達(dá)到千萬(wàn)級(jí)別,要每次都載入這些數(shù)據(jù)進(jìn)行訓(xùn)練是很不現(xiàn)實(shí)的。但我們可以換一種方式,每次只用一條隨機(jī)數(shù)據(jù)來(lái)訓(xùn)練,這便是隨機(jī)梯度下降的原理。
當(dāng)然,這樣會(huì)讓訓(xùn)練時(shí)間變長(zhǎng),所以人們?cè)趯?shí)際環(huán)境中通常會(huì)采用mini batch方法,也就是每次更新權(quán)重時(shí)既不使用所有數(shù)據(jù),也不隨機(jī)挑選一條數(shù)據(jù),而是隨機(jī)挑選一個(gè)子集來(lái)訓(xùn)練。例如,如果有1000條數(shù)據(jù),那么每次都可以隨機(jī)挑選16條或者64條數(shù)據(jù)進(jìn)行訓(xùn)練。對(duì)mini batch的大小設(shè)置是個(gè)很有趣的研究課題,和模型本身、數(shù)據(jù)特點(diǎn)等都有關(guān)系,這里不必細(xì)究。下面修改2.2節(jié)的線性回歸實(shí)現(xiàn),看看采用mini batch方法是如何進(jìn)行訓(xùn)練的。

如上所示,我們只需要修改update_weights方法即可。在第6行設(shè)置了一個(gè)數(shù)組用于存儲(chǔ)訓(xùn)練數(shù)據(jù)的索引下標(biāo);在第7行將有序索引數(shù)組隨機(jī)打亂;在第8行設(shè)定每次訓(xùn)練都取4條數(shù)據(jù)。于是在第10~11行,我們只需從已經(jīng)隨機(jī)打亂的數(shù)據(jù)索引表中取前4條進(jìn)行訓(xùn)練即可。
訓(xùn)練結(jié)果如下:

把這組結(jié)果和在2.2節(jié)中用全批量數(shù)據(jù)訓(xùn)練的結(jié)果相比,可以看到預(yù)測(cè)效果差別不大,這也證明了mini batch方法的有效性。至于隨機(jī)梯度下降,它只是batch_size為1時(shí)的特殊情況而已。
- Ansible Configuration Management
- Hands-On Intelligent Agents with OpenAI Gym
- 電力自動(dòng)化實(shí)用技術(shù)問(wèn)答
- 人工智能超越人類
- 機(jī)器學(xué)習(xí)及應(yīng)用(在線實(shí)驗(yàn)+在線自測(cè))
- 機(jī)器自動(dòng)化控制器原理與應(yīng)用
- Docker Quick Start Guide
- 大學(xué)計(jì)算機(jī)應(yīng)用基礎(chǔ)
- 大數(shù)據(jù)時(shí)代
- Excel 2007技巧大全
- 突破,Objective-C開發(fā)速學(xué)手冊(cè)
- LAMP網(wǎng)站開發(fā)黃金組合Linux+Apache+MySQL+PHP
- 大數(shù)據(jù)技術(shù)基礎(chǔ):基于Hadoop與Spark
- SMS 2003部署與操作深入指南
- Data Analysis with R(Second Edition)