1. 程式人生 > >ARCore之路-計算機視覺之機器學習(二)

ARCore之路-計算機視覺之機器學習(二)

  機器學習遇到的第一個模型便是線性迴歸,而且是一元線性迴歸,但這個最簡單的模型卻包含了很多的知識點,如矩陣計算、最小二乘、梯度下降等等。這是機器學習的入門,理解這些基本概念對後面的學習有極其重要的影響。在這篇文章中,我們主要對迴歸模型進行闡述,然後還會討論梯度下降演算法。我們力求通俗易懂,但數學應有的嚴謹性又不能不有所涉及,重在理解。

一、線性迴歸

  在統計學中,線性迴歸(Linear Regression)是利用稱為線性迴歸方程的最小平方函式對一個或多個自變數和因變數之間關係進行建模的一種迴歸分析。通俗的講,線性迴歸就是在給定一定量資料的情況下,通過分析找到一個最佳的線性方程來擬合所有的資料,並以此方程作為模型來預測未知資料。 迴歸屬於有監督學習中的一種方法。該方法的核心思想是從連續型統計資料中得到數學模型,然後將該數學模型用於預測或者分類。在監督學習中,如果預測的變數是離散的,我們稱其為分類(如決策樹,支援向量機等),如果預測的變數是連續的,我們稱其為迴歸。迴歸分析中,如果只包括一個自變數和一個因變數,且二者的關係可用一條直線近似表示,這種迴歸分析稱為一元線性迴歸分析。如果迴歸分析中包括兩個或兩個以上的自變數,且因變數和自變數之間是線性關係,則稱為多元線性迴歸分析。對於二維空間線性是一條直線;對於三維空間線性是一個平面,對於多維空間線性是一個超平面。

DavidWang原創

  線性迴歸原理是根據連續統計資料情況下,選取大量的樣本資料,如上圖所示,根據這些樣本的趨勢,選擇合適的假設函式,此處選擇的是線性迴歸的假設函式。根據樣本,計算代價函式的極小值,此時的θ值就是我們需要得到的數學模型的引數值,同時,這個假設函式即為我們要選取的資料模型。在選擇這個線性模型中,理想情況是能夠儘量符合所有樣本的數學模型。當然,一般情況下很難找到這個全擬合的模型,因此,我們需要找到儘可能符合當前統計資料的數學模型來代替。並使樣本在數學模型中的誤差平方和最小,這也就產生了代價函式。我們只需要找到代價函式的極小值,此時的θ代入到假設函式中,我們就得到了比較符合要求的數學模型。

DavidWang原創
  在上圖中,我們可以用一條曲線去儘量準的擬合這些資料,這條曲線不一定能符合每一個樣本點,但其方差值最小,這條曲線即為我們尋找的資料模型,這樣,我們就可以根據這條曲線的情況來預測在x軸的某點對應的y軸上的值。   線性迴歸已經存在多年,並且被認為是解決許多統計資料分析問題的基礎,它是許多其他機器學習的基礎。對於上圖,在不深入瞭解數學細節的情況下,只需要理解這條線是為了最小化迴歸曲線和樣本點之間的誤差,這通常是稱為最佳擬合線或使誤差最小化的線。需要指出的是,概率和統計在各種形式的機器學習中都發揮著重要作用,良好的概率與統計知識將地機器學習起到很好的幫助作用。   根據我們剛學習的知識,下面介紹典型的機器學習的過程。首先給出一個輸入資料(樣本),我們的演算法會通過一系列的過程得到一個估計的函式(訓練),這個函式有能力對沒有見過的新資料給出一個新的估計,也被稱為構建一個模型。如下圖所示:
DavidWang原創

   線性迴歸假設特徵點(樣本值)和結果滿足線性關係。其實線性關係的表達能力非常強大,每個特徵對結果的影響強弱可以由前面的代價函式引數體現,而且每個特徵變數可以首先對映到一個函式,然後再參與線性計算。這樣也可以表達特徵與結果之間的非線性關係。
   對上圖,我們用X1,X2…Xn 去描述特徵點(樣本值)裡面的分量,比如x1=售價,x2=重量等等,我們可以做出一個估計函式:

DavidWang原創

   θ在這兒稱為引數,在這的意思是調整特徵點(樣本值)中每個分量的影響力,即哪個分量更重要。如果我們令X0 = 1,就可以用向量的方式來表示了:

DavidWang原創
   我們程式需要一個機制去評估我們θ是否最優,這就需要對我們做出的h函式進行評估,一般這個函式稱為損失函式(loss function)或者錯誤函式(error function),其用來描述h函式好不好的程度,在下面,我們稱這個函式為J函式,這個J函式如下:
DavidWang原創
   這個錯誤估計函式是去對x(i)的估計值與真實值y(i)差的平方和作為錯誤估計函式,前面乘上的1/2是為了在求導的時候消除引數。 如何調整θ以使得J(θ)取得最小值有很多方法,其中有最小二乘法(min square)和梯度下降法。

二、梯度下降演算法

   在選定線性迴歸模型後,只需要確定引數θ,就可以將模型用來預測。然而θ需要在J(θ)最小的情況下才能確定,因此問題歸結為求極小值問題。梯度下降法(Gradient descent)最大的問題是求得的值有可能不是全域性極小值,這與初始點的選取有關。理解梯度下降運作方式的恰當比喻是想象一個丘陵地形,我們立在一個隨機點,並且想抵達整個丘陵的最低點。我們叫它地形最小值。每一步,梯度下降向所在高度的更低位置移動。如果地形的幾何結構相對簡單,這個方法將會向著谷底靠攏。下圖展示一個梯度下降的成功案例。案例中,我們有一個單參(X軸)函式,返回誤差值(Y軸),從X軸隨機點開始(藍和綠點),梯度下降應該迫使我們向最小值方向移動(藍和綠箭頭)。

DavidWang原創

   在上例中,我們移動的方向是顯而易見的。然後,因為梯度下降沒有最小值在哪裡的先驗知識,演算法能做到的最佳猜測就是沿著斜率的方向移動,也稱作函式的斜率。理想情況下,跟著斜率就可以走到山谷。下圖展示了兩個不同點的誤差函式的斜率:

DavidWang原創
   為使梯度下降演算法有效,我們想得到的最小化函式應該滿足特定的屬性。如果地形函式相對平滑,就會有更高几率使梯度下降成功。在不連續或有許多峰巒的地形上,我們可能不得不為了到達山谷底部而走一段很長很長的路。

   斜率估算
   函式的斜率和它的導數密切相關。然而計算導數,要求函式滿足特定的數學屬性,不是所有函式都有導數。此外,導數的分析推導需要有分析的誤差函式。在一些問題中,有時得到函式的導數是不可能的。因此解決方法是得到這個值的匡算(粗略估計)。下圖展示了一維簡單函式中我們通過附近取樣點並計算區域性斜率。如果左邊的誤差函式更小,則向左。如果右邊的誤差函式更小,則向右。

DavidWang原創

   斜率和導數
   斜率和導數的概念是有嚴格的相互關聯性的。函式的斜率或者方向導數是指向最陡上升方向的向量。在單維函式中(就像圖中顯示的那樣)隨著函式起伏,斜率要麼是+1 要麼是-1 。函式的導數是一個在它的斜率方向上移動時,表明函式上升的有多快的數值。我們的目的不是計算出函式的真實斜率。相反,我們提供一個預估,預估斜率是一個向量,表示方向或是最陡上升方向。

   抽樣
   取樣距離對估計會產生很大影響,如下圖所示,取樣距離過大會產生右側的高度比左側高的錯覺,這將會引向了錯誤的方向。減少採樣距離可以弱化這個問題,但是依然沒有辦法完全避免。對於一個解決方案來說,更小的取樣距離導致更慢的收斂速度(當然,這個問題可以通過採取更高階的梯度下降法來解決)。

DavidWang原創

   幾個區域性最小值

   梯度下降演算法並不能保證找到極小值,如下圖所示:

DavidWang原創
   在上圖函式中。函式有三個區域性最小值,代表著三個不同的極小值。如果我們使用綠色區域的點來初始化梯度下降,我們會在綠色區域的谷底停住。這同樣適用於紅色和藍色區域(這個問題可以通過採取更高階的梯度下降法來解決)。

   數學原理
   梯度下降是一種數學運算。第一步是計算在特定點p上誤差函式的斜率f,因為函式的斜率和它的導數密切相關。由此,我們比較好的切入點是求取誤差函式在某位置導數,f的導數被稱為f’,它表示函式f的發展速率。並且具有以下屬性:

  • f ( p ) > 0 f'(p)>0 則函式f上升;
  • f ( p ) < 0 f'(p)<0 則函式f下降;
  • f ( p ) = 0 f'(p)=0 則函式f平行;

下圖直觀的展示了導數與斜率的關係。

DavidWang原創
   我們關心的是需要取樣的兩點之間的誤差函式的導數。dx是我們在前文中介紹的取樣距離。函式的實際導數需要使用一個極限來進行計算,在計算梯度時使用足夠小的取樣距離來對導數進行估計。

三、最小二乘法

   最小二乘法(又稱最小平方法)是一種數學優化技術。它通過最小化誤差的平方和尋找資料的最佳函式匹配,利用最小二乘法可以簡便地求得未知的資料,並使得這些求得的資料與實際資料之間誤差的平方和為最小,最小二乘法還可用於曲線擬合。
   以最簡單的一元線性模型來解釋最小二乘法。對於一元線性迴歸模型, 假設從總體中獲取了n組觀察值(X1,Y1),(X2,Y2), …,(Xn,Yn)。對於平面中的這n個點,可以使用無數條曲線來擬合。要求樣本回歸函式儘可能好地擬合這組值。綜合起來看,這條直線處於樣本資料的中心位置最合理。 選擇最佳擬合曲線的標準可以確定為:使總的擬合誤差(即總殘差)達到最小。有以下三個標準可以選擇:
   (1)用“殘差和最小”確定直線位置是一個途徑。但很快發現計算“殘差和”存在相互抵消的問題。
   (2)用“殘差絕對值和最小”確定直線位置也是一個途徑。但絕對值的計算比較麻煩。
   (3)最小二乘法的原則是以“殘差平方和最小”確定直線位置。用最小二乘法除了計算比較方便外,得到的估計量還具有優良特性。這種方法對異常值非常敏感。
   最常用的是普通最小二乘法( Ordinary Least Square,OLS):所選擇的迴歸模型應該使所有觀察值的殘差平方和達到最小。(Q為殘差平方和)- 即採用平方損失函式。

參考文獻

1、An Introduction to Gradient Descent An Introduction to Gradient Descent