1. 程式人生 > >2.2 logistic回歸損失函數(非常重要,深入理解)

2.2 logistic回歸損失函數(非常重要,深入理解)

問題 好的 為知 得出 cnblogs 回歸算法 很多 將他 深入

  1. 上一節當中,為了能夠訓練logistic回歸模型的參數w和b,需要定義一個成本函數
    1. 使用logistic回歸訓練的成本函數
      1. 技術分享
      2. 為了讓模型通過學習來調整參數,要給出一個含有m和訓練樣本的訓練集
      3. 很自然的,希望通過訓練集找到參數w和b,來得到自己得輸出技術分享
      4. 對訓練集當中的值進行預測,將他寫成y^(I)我們希望他會接近於訓練集當中的y^(i)的數值
  2. 現在來看一下損失函數或者叫做誤差函數
    1. 他們可以用來衡量算法的運行情況
    2. 可以定義損失函數為y^和y的差,或者他們差的平方的一半,結果表明你可能這樣做,但是實際當中,大家都不會這麽做,因為當你學習這些參數的時候,你會發現之後討論的優化問題,會變成非凸的,最後會得到很多的局部最優解,梯度下降算法可能找不到最優的全局最優值,
    3. 直觀理解就是我們定義這個損失函數L,來衡量你的預測輸出值y^和y的實際值有多接近,誤差平方看起來是一個合理的選擇,但是如果用這個的話,梯度下降法就不會很好用,
    4. 在logistic回歸中,我們會定義一個不同的損失函數,它起著於誤差平方相似的作用,這會給我們一個凸的優化問題,他很容易去做優化,
    5. 在logistic回歸中,我們用的損失函數將會是下面這樣的,(非常重要!)
      1. 技術分享
      2. 直觀的看一下為什麽這個函數會起到作用,
        1. 記得如果我們使用誤差平方越小越好
        2. 對於這個logistic回歸的損失函數,同樣的,我們也想讓它盡可能的小,
      3. 為了更好的理解它能起到好的作用,來看兩個例子
        1. 當y=1的時候,就是第一項L帶個負號技術分享
          1. 這就是說,當y=1的時候,你想讓-log(y^)盡可能小(代表著誤差盡可能的小),那麽就需要y^足夠大,但是因為y^是sigmoid函數得出來的,永遠不會比1大,也就是說,如果y=1的時候,你想讓y^,盡可能的大,但是它永遠不會大於1,所以你要讓y^接近1(從sigmoid函數的圖像上看一下,采取什麽樣的措施才能夠讓y^接近於1呢?就是上一節分析的那樣),
        2. 當y=0的時候,
          1. 在學習過程中,想讓損失函數小一些,也就意味著你想要log(1-y^)夠大,通過這一系列的推導,發現,損失函數讓y^盡可能的小,再次,因為y^只能介於0和1之間,所以就是說,當y=0的時候,損失函數會讓這些讓y^盡可能的接近0,有很多函數都能夠達到上面的效果,
      4. 如果y=1,我們盡可能的讓y^很大,如果y=0,盡可能的讓y^足夠小,
        1. 給出解釋為什麽在logistic回歸中,要使用這個形式的損失函數。
      5. 最後說一下
        1. 在單個訓練樣本中定義的,它衡量了在單個訓練樣本上的表現(個人理解也就是一個訓練集中的每個訓練樣本),
  3. 下面定義一個成本函數
    1. 它衡量的是在全體訓練樣本上的表現,這個成本函數J,根據之前得到的兩個參數w和b,J(w,b)等於所有的訓練樣本的損失函數的和的平均數
    2. y^是用一組特定的參數w和b,通過logistic回歸算法得出的預測輸出值,
    3. 損失精度函數適用於單個訓練樣本,而成本函數,基於參數的總成本,所以在訓練logistic回歸模型的是時候,我們需要找到合適的參數w和b,讓下面這裏的成本函數盡可能的小,
  4. 這一節我們看到了logistic回歸算法的過程,以及訓練樣本的損失函數,還有和參數相關的總體成本函數,結果表明,logistic回歸可以被看作是一個非常小的神經網絡,
  5. 下一節講解,神經網絡能夠做什麽,看看如何將logistic回歸看做一個非常小得神經網絡,


來自為知筆記(Wiz)

2.2 logistic回歸損失函數(非常重要,深入理解)