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

4.1 從邏輯回歸說起

第2章提到傳統機器學習算法時,就提到了邏輯回歸算法。

(1)隨機初始化一組ω,比如可以全設為0,當然實際上不推薦這樣。

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

(3)計算全部訓練集中邏輯回歸的結果?和實際y的差別。

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

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

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

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

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

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

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

或者這樣:

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

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

(1)隨機初始化一組ω,比如可以全設為0,當然實際上不推薦這樣。

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

(3)計算全部訓練集中邏輯回歸的結果?和實際y的差別。

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

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

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

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

主站蜘蛛池模板: 双峰县| 抚州市| 巴林右旗| 新泰市| 安龙县| 丹棱县| 车险| 台北县| 门头沟区| 民和| 手机| 长治县| 双城市| 安新县| 青龙| 科尔| 钦州市| 肥城市| 河曲县| 酒泉市| 都江堰市| 大宁县| 南澳县| 乌拉特前旗| 清丰县| 桐乡市| 铁岭县| 绵阳市| 丰城市| 临夏市| 星子县| 于都县| 米脂县| 于都县| 梅州市| 洮南市| 南木林县| 罗山县| 合川市| 大庆市| 焦作市|