大白話5分鐘帶你走進人工智慧-第五節解析解方式求解模型引數

LHBlog發表於2019-03-25

                                                                       第五節解析解方式求解模型引數

    第四節中我們講解了最大似然和最小二乘之間的關係,通過數學原理找到了損失函式為MSE的理論支撐。本節的話我們講解怎麼樣基於目標函式為MSE的情況下,找到最合適的引數模型。在此之前,我們總結下通過最大似然估計建立目標函式思路:

1. 建立線性模型(將誤差視為未統計到的多個維度影響的結果)

2. 對於誤差假設其服從均值為0的高斯分佈

3. 得到每個資料點被取樣到的概率分佈函式(自變數為θ)

4. 最大似然估計--總概率最大

5. 通過兩邊取ln和公式整理,得到結論:mse最小時總似然最大。

我們挨個分析下上面邏輯,第一條什麼是線性模型?所謂的多元線性迴歸裡面的線性模型就是y=W^{T}X,是一個線性相加的結果,並且誤差視為未統計到的多個維度影響的結果且其服從均值為0的高斯分佈。第三條中,對於每一個樣本,都會得到一個概率分佈函式。第四條中,將所有的樣本的概率分佈函式累乘,得到一個似然函式,我們的目標就是使其總樣本發生的概率最大。最後通過對最大似然函式做數學變換,兩邊取ln和公式整理,得到結論為:mse最小時總似然最大。所以我們得到新的目標:所謂學習就是 求出一組使mse最小的θ引數。通常,我們把求一個使某函式達到最大(小)值的自變數解的過程叫做函式最優化,機器學習實質上都是將引數學習問題轉變為函式最優化問題,進而求解,所以對於線性迴歸問題,我們要做的就是對 J(\theta )=\frac{1}{2}\sum_{i=1}^{m}(h_{\theta}x^{i}-y^{i})^{2}其優化。

    那麼如何求函式最小值呢?(函式最優化問題)我們結合高中的知識知道,直接的思路是求導,然後使得導數為零的點,就是我們的最優解。那麼這個思想可以應用到求解我們的模型引數嗎?實際上是可以的,因為都是函式的最優化問題。我們鋪墊幾個向量求導的預備公式:

                            \frac{\partial X\theta }{\partial \theta }=X^{T};        \frac{\partial\theta ^{T}X}{\partial \theta^{T} }=X^{T} ;          \frac{\partial \theta^{T}X }{\partial \theta }=X;        \frac{\partial \theta ^{T}X\theta }{\partial \theta }=2X\theta

上面我們不用管怎麼來的,就是一些數學公式而已,有興趣的自己研究下就可以。先將損失函式寫成矩陣形式:

                                                \frac{1}{2}(X\theta -y)^{T}(X\theta - y)=\frac{1}{2}\sum_{i=1}^{m}(h_{\theta}x^{i}-y^{i})^{2}=J(\theta )

解釋:因為X\theta -y是列向量(X\theta是預測的y,減去對應的真實的y,所以是一個列向量),轉置之後(X\theta -y)^{T}是行向量。所以(X\theta -y)^{T}(X\theta - y)根據向量相乘的規則,對應位置相乘相加,因為對應位置都是同一個元素,所以就是右邊的(h_{\theta}x^{i}-y^{i})^{2}相加,也就是最終的上面的寫成矩陣形式的公式。其中X矩陣是把每個x看做一個行向量張成的矩陣,y是把所有訓練集上的y寫作一個列向量。

因為我們的目標是想得到一組最小的\theta,所以也就是相當於\frac{1}{2}(X\theta -y)^{T}(X\theta - y)\theta求導,並令其導數為0,然後解出來,就是我們的最小的\theta解。既然要求導,那麼我們對目標函式求梯度,我們說對於向量求梯度,實際上就是對於向量中的每個引數求導,這是一 一對應的。我們對目標函式求梯度的過程如下:

                                                   \bigtriangledown _{\theta }J(\theta )=\bigtriangledown_{\theta }\frac{1}{2}(X\theta -y)^{T}(X\theta - y)

                                                                 =\frac{1}{2}\bigtriangledown_\theta (\theta ^{T}X^{T}X\theta -\theta ^{T}X^{T}\hat y-\hat y^{T}X\theta +\hat y^{T}\hat y)

                                                                 =\frac{1}{2}(X^{T}X\theta+X^{T}X\theta-2X^{T}\hat y)

                                                                 =X^{T}X\theta-X^{T}\hat y

其實上面就是我們根據上面鋪墊的向量求導公式結合乘法展開式可得。當梯度為0時,函式應有極小值。此時X^{T}X\theta=X^{T}\hat y 。解得\theta=(X^{T}X)^{-1}X^{T}y。稱該形式為線性迴歸目標函式的解析解。因為解析解不是那麼重要,所以不再詳細一步步展開上面轉換過程。所以我們可以補充總結下線性迴歸學習的整體流程:

1. 一開始我們拿到了訓練集,包含若n個資料點,每個點有m個維度(特徵)
2. 我們設定線性判別模型 y=X^T\theta
3. 想要求得最好的一組θ(學習目標)
4. 建立MSE目標函式
5. 對MSE目標函式求使其極小的θ。第一個工具:解析解。

然而解析解有如下缺陷
1. 解析解函式中存在矩陣求逆的步驟,不是所有矩陣的逆矩陣都可求,有時候只能求近似解
2. 當資料維度非常高時(幾百維度以上) 解析解的求解速度會非常慢(O(n^3))

因此:通常利用梯度下降法求解函式最小問題的數值解。

所以下一節中,我們講解通過梯度下降法求解函式最小問題的數值解,這個是最常用也是機器學習以後經常見到的,會對其原理和過程做詳細介紹。

相關文章