機器學習 - 第一講

導論


什麼是機器學習?

監督學習(Supervised Learning)

在監督學習中,我們給出數據組,並且已經知道正確的輸出是什麼樣,明確輸入和輸出之間的關係

監督學習問題可以歸類爲 迴歸(regression)分類(classification) 問題。

迴歸 問題上,我們嘗試預測一個 連續(continuous) 的輸出結果,也就是說我們嘗試去map輸入變量到一些連續的方程。

分類 問題上,我們嘗試預測一個 離散(discrete) 的輸出結果,也就是說我們嘗試去map輸入變量到離散的分類。

例如:

  • 給定關於在房地產市場中房子佔地大小的數據去預測他們的價格。價格作爲關於房子佔地大小的函數是一個連續的輸出,所以這是一個迴歸問題。
  • 迴歸問題:根據給定的一個男性/女性圖片,預測他們的年齡
  • 分類問題:給定一個男性/女性圖片,預測他/她是否是高中生、大學生、研究生年齡。
  • 迴歸問題:銀行根據某人的信用歷史決定是否給他貸款。

非監督學習(Unsupervised Learning)

在非監督學習中,可以解決事先不知道結果會怎麼樣的問題。我們不必知道數據是否有效就可以根據數據派生出結構。

我們可以通過集羣(clustering)基於數據中變量之間關係的數據派生出這種結構。

非監督學習沒有基於預測結果的反饋修正,就像沒有老師糾正一樣。

例如:

  • Clustering:在商學院收集1000份論文,根據詞頻,句子長度,頁碼等等相似或者不同的變量將這些論文自動的劃分爲幾個分組。
  • Non-clustering:根據混亂的數據(例如語音識別音樂識別)找出結構。

單變量線性迴歸(Linear Regression with One Variable)


模型表示(Model Representation)

在迴歸問題中,我們使用輸入變量去滿足一個連續輸出變量的期望結果函數。

單變量線性迴歸也叫做“univariate linear regression”。

當我們想從一個單輸入值 x 預測一個單輸出值 y 時使用單變量線性迴歸。這裏我們使用監督學習,這意味着我們事先知道輸入輸出的關係和應該達到什麼效果。

假設函數(The Hypothesis Function)

我們的假設函數通常爲:

y^=h(x)=θ0+θ1x

注意這個像等式一樣的直線。我們根據 \(\theta_0\ 和\ \theta_1 給定\ h_{\theta}(x) \ \)的值,然後估計 \(\hat{y}\)。換句話說,我們嘗試創建一個 \(h_\theta\) 的函數去map我們的輸入數據(x的)到我們的輸出數據(y的)。

例如:

假設輸入的訓練組數據爲:

  input      output
    x           y
    0           4
    1           7
    2           7
    3           8

現在我們隨機的做一個關於 \(h_{\theta}\) 的猜測:\(\theta_{0} = 2, \theta_{1} = 2 \)。則假設方程爲 \(h_{\theta}(x) = 2 + 2x\)。

於是如果輸入爲 1 ,y 則爲 4 。 與實際的 y 差 3 。注意我們將會嘗試大量的 \(\theta_{0}\) 和 \(\theta_{1}\) ,找出最合適的值(y最貼近真實值)。圖形上表示的是一條最有代表性的直線。(!補圖)

成本函數(Cost Function)

我們可以使用成本函數獲得精確的假設函數。成本函數取得一個關於輸入x的假設的結果和真實的y的對比的均值(實際上是一個比較理想的均值)

J(θ0,θ1)=12mi=1m(yi^yi)2=12mi=1m(hθ(xi)yi)2

分解來看,這個方程表示的是 \(\frac{1}{2}\bar{x}\), \(\bar{x}\) 是 \(h_{\theta}(x_{i})-y_{i}\) 的平方的均值,或者是預測值和真實值的不同。

這個方程又稱“平方誤差函數(Squared error function)”或者“均值平方誤差(Mean squard error)”。 “均值”是一半(\(\frac{1}{2m}\)),這方便計算計算梯度下降(gradient descent),平方函數的導數將會抵消 \(\frac{1}{2}\) .

現在我們可以具體的(通過已知的正確結果)衡量我們預測的方程的精確度,從而預測我們沒有的新結果。

如果考慮可視化,訓練組的數據分散在 x-y 平面。我們嘗試去畫一條穿過分散的數據的直線(根據 \(h_{\theta}(x)\) 定義)。我們的目標是獲得可能性最高的直線。可能性最高的直線應該是所有分佈的點與這條垂直距離最短的直線。最理想的情況是這條線通過訓練組數據所有的點,此時 \(J(\theta_{0}, \theta_{1})\) 值爲0。(!補圖)

梯度下降(Gradient Descent)


我們已經有了假設函數並且有衡量它與數據適配程度的方法。現在我們需要去估計假設函數中的參數,於是我們需要梯度下降。

想象一下我們根據 \(\theta_{0}\) 和 \(\theta_{1}\) 繪出我們的假設函數(事實上是通過成本函數的估計參數)。這有點混亂,我們將這個進行更高一級的抽象。我們沒有繪x和y本身,而是繪假設函數和成本函數裏參數的範圍。

我們將 \(\theta_{0}\) 設爲x軸, \(\theta_{1}\) 設爲 y 軸,成本函數設爲垂直 x-y 的 z 軸。圖中的點是成本函數使用我們的假設值theta參數得出的結果。

我們可以通過查看我們的成本函數是否在圖形最底部(最小值)判斷是否成功。

使用的方法是用成本函數的導數(函數的切線)。切線的斜率是那一點的導數,將會給我們一個導數前進的方向。我們一步一步朝着導數最陡峭的方向下降,每次下降的幅度由參數 \(\alpha\) 決定,稱作學習速率(learning rate)。

梯度下降算法如下:

repeat until convergence:

θj:=θjαθjJ(θ0,θ1)

其中 \(j = 0 , 1\) 代表着參數的索引號

線性迴歸梯度下降(Gradient Descent for Linear Regression)

當應用到線性迴歸中的一個具體情況時,可以派生出一個新的梯度下降等式形式。我們可以將我們實際的成本函數和實際的假設函數和修改過的等式替換成以下式子:

repeat until convergence: {

θ0:=θ0α1mi=1m(hθ(xi)yi)

θ1:=θ1α1mi=1m((hθ(xi)yi)xi)

}

其中 \(m\) 是訓練組的大小, \(\theta_{0}\) 是和 \(\theta_{1}\) 同時變化的常數,\(x_{i}\) 和 \(y_{i}\) 是給定訓練組的值。

注意將 \(\theta\) 分爲兩種情況計算,\(\theta_{j}\) 代表 \(\theta_{0}\) 和 \(\theta_{1}\) ,對於 \(\theta_{1}\) 需要在最後乘 \(x_{i}\) 。

重複以上方程我們得到的假設會越來越準確。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章