Q:爲何會說起關於代價函數的理解?函數
A:在 ML 中線性迴歸、邏輯迴歸等總都是繞不開代價函數。優化
理解代價函數:是什麼?做用原理?爲何代價函數是這個?spa
代價函數就是用於找到最優解的目的函數,這也是代價函數的做用。blog
損失函數(Loss Function )是定義在單個樣本上的,算的是一個樣本的偏差。io
代價函數(Cost Function )是定義在整個訓練集上的,是全部樣本偏差的平均,也就是損失函數的平均。可視化
目標函數(Object Function)定義爲:最終須要優化的函數。等於經驗風險+結構風險(也就是Cost Function + 正則化項)。原理
對於迴歸問題,咱們須要求出代價函數來求解最優解,經常使用的是平方偏差代價函數。d3
好比,對於下面的假設函數:
裏面有 θ0 和 θ1 兩個參數,參數的改變將會致使假設函數的變化,好比:
現實的例子中,數據會以不少點的形式給咱們,咱們想要解決迴歸問題,就須要將這些點擬合成一條直線,找到最優的 θ0 和 θ1 來使這條直線更能表明全部數據。
而如何找到最優解呢,就須要使用代價函數來求解了,以平方偏差代價函數爲例。
從最簡單的單一參數來看,假設函數爲:
平方偏差代價函數的主要思想就是將實際數據給出的值與咱們擬合出的線的對應值作差,求出咱們擬合出的直線與實際的差距。
爲了使這個值不受個別極端數據影響而產生巨大波動,採用相似方差再取二分之一的方式來減少個別數據的影響。
這樣,就產生了代價函數:
而最優解即爲代價函數的最小值,根據以上公式屢次計算可獲得代價函數的圖像:
解(求導):能夠看到該代價函數的確有最小值,這裏剛好是橫座標爲 1 的時候。
若是更多參數的話,就會更爲複雜,兩個參數的時候就已是三維圖像:
高度即爲代價函數的值,能夠看到它仍然有着最小值的,而到達更多的參數的時候就沒法像這樣可視化了,可是原理都是類似的。
所以,對於迴歸問題,咱們就能夠歸結爲獲得代價函數的最小值:
首先思考:什麼是代價?
簡單理解代價就是預測值和實際值之間的差距(兩點之間的距離),那對於多個樣原本說,就是差距之和。
代價的正負問題:
若是直接使用,這個公式看起來就是表示假設值和實際值之差,再將每個樣本的這個差值加起來不就是代價了嗎,可是想一下,若是使用這個公式,那麼就單個樣本而言,代價有正有負,所有樣本的代價加起來有可能正負相抵,因此這並非一個合適的代價函數。
解決有正有負的問題:
使用絕對值函數來表示代價,爲了方便計算最小代價(計算最小代價可能用到最小二乘法),直接使用平方來衡量代價,即使用絕對值的平方來表示單個樣本的代價,那麼一個數據集的代價爲:
是否使用平方之和就沒有什麼問題了?
代價函數應該與樣本的數量有關,不然一個樣本和 m 個樣本的差距平方和之間的比較也沒有多少意義,因此將 m 個樣本的代價之和 乘以 1/2m,即代價函數爲:
至於,取 2m 而非 m,是爲了方便計算。