官术网_书友最值得收藏!

4.1 從邏輯回歸說起

第2章提到傳統(tǒng)機(jī)器學(xué)習(xí)算法時,就提到了邏輯回歸算法。

(1)隨機(jī)初始化一組ω,比如可以全設(shè)為0,當(dāng)然實(shí)際上不推薦這樣。

(2)訓(xùn)練集中,邏輯回歸函數(shù)里,輸入特征x,計算ωTx,得到預(yù)測結(jié)果?。

(3)計算全部訓(xùn)練集中邏輯回歸的結(jié)果?和實(shí)際y的差別。

(4)根據(jù)上一步的差別更新ω。

(5)重復(fù)(2)~(4)若干次(iterations)。

這個算法,可以用如下簡單的框架表示:

注意,在第2章的代碼中,為了省事,將這里的x輸入換成了[x, 1],加了一個維度,此時兩個輸入ω、b就合并成了一個新的ω。

其次圖中的雙箭頭代表了兩個過程:

  • 從左到右、從下到上的箭頭代表了算法第二步得到預(yù)測結(jié)果的過程(MSE處與y比較除外,是第三步)。
  • 從右往左、從上往下的箭頭代表了算法第四步中更新算法ω、b的過程。

這里將算法框架化之后,我們有一個想法,就是能不能把這個框架加點(diǎn)東西,比如變成這樣:

或者這樣:

當(dāng)然,讀者還可以繼續(xù)思考,設(shè)計新的框架。這里,以上兩種模型成了邏輯回歸的“并聯(lián)”“串聯(lián)”形式。其中,“并聯(lián)”形式類似民主投票,即可以訓(xùn)練多個邏輯回歸模型,每個模型給一個測試樣本預(yù)測一個結(jié)果,然后多個模型匯總結(jié)果,比如70%的模型都通過這個樣本屬于某個分類,則這個結(jié)果就被預(yù)測成這種分類。這種思路逐漸發(fā)展成了模型的聚合(Ensemble)方法,即通過多個弱分類器進(jìn)行組合,形成一個強(qiáng)分類器。我們在第9、10章時使用的模型融合策略就是基于這種思想。這部分更多的內(nèi)容,有興趣的可以繼續(xù)閱讀周志華老師的《機(jī)器學(xué)習(xí)》一書做更深入了解。“串聯(lián)”形式則不斷加大同一模型的復(fù)雜程度,繼而通過更復(fù)雜的模型實(shí)現(xiàn)單一分類器表現(xiàn)的提升。這個思路逐漸發(fā)展成為神經(jīng)網(wǎng)絡(luò)算法,并且隨著網(wǎng)絡(luò)深度逐步提升,模型中零件由乘法+sigmoid激活函數(shù),換成卷積池化+relu激活函數(shù),更是進(jìn)一步奠定了目前火熱的深度學(xué)習(xí)算法的基石。

本章講一講如何用簡單的代碼來實(shí)現(xiàn)“串聯(lián)”形式的計算過程。我們先來說算法,仍然基于之前邏輯回歸的算法:

(1)隨機(jī)初始化一組ω,比如可以全設(shè)為0,當(dāng)然實(shí)際上不推薦這樣。

(2)訓(xùn)練集中,邏輯回歸函數(shù)里輸入特征x,計算ωTx,得到預(yù)測結(jié)果?。

(3)計算全部訓(xùn)練集中邏輯回歸的結(jié)果?和實(shí)際y的差別。

(4)根據(jù)上一步的差別更新ω。

(5)重復(fù)(2)~(4)若干次(iterations)。

這里第二步、第四步有所改動。其中第二步無非是加了一層計算,比較好辦,麻煩的其實(shí)是第四步,怎么更新多組數(shù)字?之前一組數(shù)字可以直接求損失函數(shù)對應(yīng)參數(shù)的導(dǎo)數(shù),然后乘以一個很小的學(xué)習(xí)率,減去這個數(shù),就更新了。現(xiàn)在換成多組數(shù)字,怎么分別求損失函數(shù)對這些數(shù)字的導(dǎo)數(shù)?如果說,這里只是多了一層,直接數(shù)學(xué)推導(dǎo)還比較容易的話,再多幾層,又應(yīng)該怎么辦?

仔細(xì)想一想,這個推導(dǎo)的過程也并非無規(guī)律可循。上一級的神經(jīng)網(wǎng)絡(luò)梯度輸出會被用作下一級計算梯度的輸入,同時下一級計算梯度的輸出會被作為上一級神經(jīng)網(wǎng)絡(luò)的輸入。于是就思考能否將這一過程抽象化,做成一個可以自動求導(dǎo)的框架?OK,以TensorFlow為代表的一系列深度學(xué)習(xí)框架正是根據(jù)這一思路誕生的。

主站蜘蛛池模板: 山阳县| 武宁县| 黔西县| 九江市| 望城县| 游戏| 杭州市| 东辽县| 绍兴市| 东安县| 郴州市| 许昌县| 商水县| 建阳市| 阿拉善盟| 兴海县| 陆河县| 团风县| 金门县| 新龙县| 贵溪市| 石渠县| 呼玛县| 河北省| 宜兰市| 宜昌市| 新竹市| 长泰县| 安陆市| 交口县| 建瓯市| 成武县| 陵水| 新丰县| 上栗县| 永康市| 浮山县| 沂南县| 鹤峰县| 内黄县| 大安市|