機器學習系列 2:代價函數
- 2019 年 10 月 7 日
- 筆記

現在我有一些數據集,就像上圖中的叉。那麼我想通過一次函數也叫線性回歸函數(一條直線)去擬合這些數據,一次函數在沒有確定之前,應該是這個樣子的:

其中 θ0 和 θ1 都是未知量。現在關鍵就是如何求 θ0 和 θ1 這兩個參數。θ0 和 θ1 可以取任意值,怎麼取值才能讓這條直線最佳地擬合這些數據呢?這就是代價函數(Cost Function)登場的時刻了。

這就是一次函數的代價函數 J(θ0, θ1)。看到這個複雜的函數有沒有頭很暈的感覺呢?如果暈,沒關係,讓我們一步步來分析這個函數。判斷擬合的這個函數是否準確就是判斷通過這個函數的出來的結果與實際結果有多大的誤差:

i 為第 i 個數據,上式表示我通過擬合函數 hθ(x) 得到的第 i 個數據與真實的第 i 個數據的誤差。總共有 m 個數據,那麼我們就應該把 m 個數據的誤差求和然後再求出平均誤差,得到下面這個式子。

只要我讓這個值儘可能的小,我所做的擬合函數就越準確,那麼剛才求擬合函數的問題就轉化成了通過 θ0 和 θ1 求 J(θ0, θ1) 的最小值。
為了說明代價函數是如何進行工作的,現在我們來簡化一下問題,讓 θ0=0,這樣我們要求的擬合函數就是一條過原點的直線,參數就剩下一個 θ1,θ1 代表直線的斜率。如下圖所示,我想要擬合左圖中的 3 個點,我就要取不同的參數 θ1 進行嘗試,θ1 取值不同,直線的顏色不同。這裡 θ1 分別取 0, 0.5, 1,直線的顏色分別為深藍、紫色和淺藍色。如何確定哪條直線擬合的最好呢,我們就要把 θ1 的不同取值帶入到代價函數 J(θ1) 中(右圖)。這裡我們就發現,當 θ1=1 時,代價函數值最小為 0,那麼我們就找到了擬合函數 hθ(x)= θ1x 的最佳參數 θ1=1。

如果有兩個參數 θ0 和 θ1,那麼他們的代價函數影像就是這樣。

用輪廓圖畫出來的話就是這樣(輪廓圖類似於等高線圖)

那麼現在關鍵的問題來了,我個人比較懶,不希望每次都要我親自處理這些數據,從代價函數圖中找到最小值所在的點。有沒有一種演算法可以自動地求出使得代價函數最小的點呢?有,那就是梯度下降。在這裡先賣個關子,梯度下降演算法我下次再介紹。
see you next time.