給出一個房價預測的例子,x軸是房子的大小,y軸是房子的價格,圖中标注了一些房子作為資料集,而這些點被稱為标注資料(labeled data),利用這樣的資料來預測的方法稱為:監督學習。監督學習分為兩類:分類與回歸,此時,作為預測房價的這個例子是監督學習中的回歸例子。
$m$代表是資料集的個數,$x's$是輸入變量或者特征,$y's$是輸出變量或者目标變量。
選擇題1
整個預測的過程可以歸結為如下圖:
通過訓練資料,将資料輸入到算法裡面,我們能得到一個關于這個模型的一個假設$h$,然後利用這個假設$h$我們将其他輸入變量輸入到該假設中就會得到我們想要的預測結果$y$。那麼對于單變量的線性回歸我們用如下公式來表示:
$$
h_θ(x) = θ_0 + θ_1x
線性模型其意思是模型是呈現線性變化的,為什麼對于該房價的例子我們要采用單變量的,其原因是該模型的未知參數僅有一個$x$來決定。
對于假設函數其包含兩個參數,$θ_0$和$θ_1$,那麼如何來确定這兩個參數來使得得出的假設函數直線更好的拟合資料集或者換句話說如何才能判斷假設函數所産生的誤差最小?
是以,給出如下定義:
minimize{1\over2m}\sum^{m}_{i=1}(h_\theta(x^{(i)})-y^{(i)})^2
h_\theta(x^{(i)}) = \theta_0 + \theta_1x^{(i)}
第一個公式是最小化預測值與真實值差的平方的值,也叫作均方誤內插補點,是衡量誤差的一種方式。第二個公式是我們的假設函數。有時我們更喜歡寫成如下形式:
j(\theta_0,\theta_1) = {1\over2m}\sum^{m}_{i=1}(h_\theta(x^{(i)})-y^{(i)})^2
minimizej(\theta_0,\theta_1)
其中的$j(\theta_0,\theta_1)$叫做代價函數(cost function),我們的目的就是最小化代價函數,使得假設函數更加接近真實資料集。為了能更好的解釋代價函數我們舉個例子并畫出能說明其含義的圖來:
左邊的圖在坐标系中分别畫了三個的點$(1,1)$,$(2,2)$,$(3,3)$,假設這就是我們的資料集,那麼現在我們就要對這個資料集進行假設函數的猜測,當然,學過數學的人一眼就能看出在$\theta_0=0$,$\theta_1=1$時,也就是假設函數$h_\theta(x) = x$時是最吻合資料集的,但是假如該資料集不會這樣簡單,不能一眼看出它的拟合線來該怎麼辦呢?注意到,當假設函數越能拟合資料集時,它的代價函數就越接近$0$,是以這就是采用代價函數來選擇參數$\theta_0$,$\theta_1$進而産生出更好的假設函數來拟合資料集的原因。
選擇題2
剛剛上面的例子圖檔采用的二維的圖像,因為圖檔中隻包含了兩個參數,$\theta_1$和$j(\theta_1)$,如果是三個參數的圖檔則會映射到三維的圖像上面上:
在這個三維圖檔中,圖中的圖檔上的點距離“水準地面”的高度就是它的代價值$j(\theta_0,\theta_1)$,或許我們還可以用另外一種圖檔來表示這個三維圖:剖面圖或者輪廓圖。
從上到下,左邊依次是不同的假設函數直線,右邊依次是不同的輪廓圖,這三個假設直線一個比一個更接近資料集,是以對應的輪廓圖中的代價函數的點會更接近中心區域。是以運用此種圖檔可以更加直覺的來判别假設函數的好壞。
就像圖檔中畫出的那樣,梯度下降就是以最合适的方向來進行遞減。假如自己站在一個山峰的某以高度,現在想以最快的速度去山底,是以就會問自己以我現在所在的位置我的四周360度的方向上哪一個方向上可以令我下降最快,然後不斷進行疊代和執行,這樣終會在某一時刻會到達山底。
但是又如上圖所示,不可避免的當我所站的位置不一樣,會下降到不同的山底,而這樣的山底其實隻是在我目前的視野中的山底并不是真正的山底,是以,此種方法會受限于$color{red}{初始位置}$的選擇。換句話說就是會陷入$color{red}{局部最優}$
下面讓我們來公式化梯度下降算法:
其中$\alpha$叫做學習率(learning rate),${\partial\over\partial\theta_j}$叫做梯度,$color{red}{兩者相乘叫做步長}$。
選擇題3
那麼公式化完了梯度下降的公式,讓我們再來看看這個公式所包含的意義和原理:
上圖中有兩個小坐标圖,先來看第一個小坐标圖,注意到在圖的右邊有個紅點,此時在它目前的位置上的導數是個$color{red}{正數}$,是以對于$\theta_1 := \theta_1 - \alpha{\partial\over\partial\theta_1}$中的$\alpha{\partial\over\partial}$即為$\partial$倍的某一個正數,是以對于更新後的$\theta_1$相當于$color{red}{減小}$了,是以更新後的$\theta_1$會逐漸靠近圖中的谷底。
而第二個小坐标圖,注意到在圖的左邊有個紅點,此時在它目前的位置上的導數是個$color{red}{負數}$,是以對于$\theta_1 := \theta_1 - \alpha{\partial\over\partial\theta_1}$中的$\alpha{\partial\over\partial}$即為$\partial$倍的某一個負數,是以對于更新後的$\theta_1$相當于$color{red}{增加}$了,是以更新後的$\theta_1$也會逐漸靠近圖中的谷底。以上就是梯度下降算法的自更新原理。
對于參數$\alpha$也有選取上的一些注意事項,如果選取的太小則會導緻到達最終點的時間過慢,太大的話會導緻在最終點附近發生來回震蕩(overshoot):
選擇題4
解析
可以看出目前所在的點已經陷入局部最優了,是以此時的$\theta$不會改變并且會停止疊代。
還有一點是需要注意的,$color{red}{當疊代越來越靠近最優點時,其步長會越來越小}$。因為當趨于最優點時其導數會趨于$0$,是以導緻步長越來越小,故隻要确定了合适的學習率$\alpha$就不必擔心步長的大小問題了:
小節測試題1
小節測試題2
小節測試題3
小節測試題4
選項三,$\alpha$選擇過小是有壞處的,會導緻函數收斂速度過慢。
選項四,存在局部最優點的函數在進行梯度下降時會因為初始點的選擇($\theta_0$,$\theta_1$)的不同導緻最終收斂結束後的結果不同。
小節測試題5
選項三,$j(\theta_0,\theta_1)=0$并不能說明疊代至了局部最優點了,隻能說明假設函數與資料集完全拟合了。