線性迴歸

線性迴歸的基本內容

以房價預測來解釋線性迴歸的基本要素。

模型定義

設房屋的面積爲 x1x_1,房齡爲 x2x_2,售出價格爲 yy。我們需要建立基於輸入 x1x_1x2x_2 來計算輸出 yy 的表達式,也就是模型(model)。
y^=x1w1+x2w2+b \hat{y} = x_1 w_1 + x_2 w_2 + b
其中 w1w_1w2w_2 是權重(weight),bb 是偏差(bias),且均爲標量。它們是線性迴歸模型的參數(parameter)。模型輸出 y^\hat{y} 是線性迴歸對真實價格 yy 的預測或估計。我們通常允許它們之間有一定誤差。

模型訓練

訓練就是通過數據來尋找特定的模型參數,使模型在數據集上的誤差儘可能小。

訓練數據

我們通常收集一系列的真實數據,例如多棟房屋的真實售出價格和它們對應的面積和房齡。在機器學習術語裏,該數據集被稱爲訓練數據集(training data set)或訓練集(training set),一棟房屋被稱爲一個樣本(sample),其真實售出價格叫作標籤(label),用來預測標籤的兩個因素叫作特徵(feature)。特徵用來表徵樣本的特點。

假設我們採集的樣本數爲 nn,索引爲 ii 的樣本的特徵爲 x1(i)x_1^{(i)}x2(i)x_2^{(i)},標籤爲 y(i)y^{(i)}。對於索引爲 ii 的房屋,線性迴歸模型的房屋價格預測表達式爲
y^(i)=x1(i)w1+x2(i)w2+b \hat{y}^{(i)} = x_1^{(i)} w_1 + x_2^{(i)} w_2 + b

損失函數

在模型訓練中,我們需要衡量價格預測值與真實值之間的誤差。通常我們會選取一個非負數作爲誤差,且數值越小表示誤差越小。一個常用的選擇是平方函數。它在評估索引爲 ii 的樣本誤差的表達式爲

(i)(w1,w2,b)=12(y^(i)y(i))2\ell^{(i)}(w_1, w_2, b) = \frac{1}{2} \left(\hat{y}^{(i)} - y^{(i)}\right)^2

其中常數 12\frac 1 2 使對平方項求導後的常數係數爲1,這樣在形式上稍微簡單一些。在機器學習裏,將衡量誤差的函數稱爲損失函數(loss function)。這裏使用的平方誤差函數也稱爲平方損失(square loss)。

通常,我們用訓練數據集中所有樣本誤差的平均來衡量模型預測的質量,即

(w1,w2,b)=1ni=1n(i)(w1,w2,b)=1ni=1n12(x1(i)w1+x2(i)w2+by(i))2 \ell(w_1, w_2, b) =\frac{1}{n} \sum_{i=1}^n \ell^{(i)}(w_1, w_2, b) =\frac{1}{n} \sum_{i=1}^n \frac{1}{2}\left(x_1^{(i)} w_1 + x_2^{(i)} w_2 + b - y^{(i)}\right)^2

在模型訓練中,我們希望找出一組模型參數,記爲 w1,w2,bw_1^*, w_2^*, b^*,來使訓練樣本平均損失最小:

w1,w2,b=argminw1,w2,b(w1,w2,b) w_1^*, w_2^*, b^* = \underset{w_1, w_2, b}{\arg\min} \ell(w_1, w_2, b)

優化算法

當模型和損失函數形式較爲簡單時,上面的誤差最小化問題的解可以直接用公式表達出來。這類解叫作解析解(analytical solution)。然而,大多數深度學習模型並沒有解析解,只能通過優化算法有限次迭代模型參數來儘可能降低損失函數的值。這類解叫作數值解(numerical solution)。

在求數值解的優化算法中,小批量隨機梯度下降(mini-batch stochastic gradient descent)在深度學習中被廣泛使用。它的算法很簡單:先選取一組模型參數的初始值,如隨機選取;接下來對參數進行多次迭代,使每次迭代都可能降低損失函數的值。在每次迭代中,先隨機均勻採樣一個由固定數目訓練數據樣本所組成的小批量(mini-batch)B\mathcal{B},然後求小批量中數據樣本的平均損失有關模型參數的導數(梯度),最後用此結果與預先設定的一個正數的乘積作爲模型參數在本次迭代的減小量。

在訓練本節討論的線性迴歸模型的過程中,模型的每個參數將作如下迭代:

w1w1ηBiB(i)(w1,w2,b)w1=w1ηBiBx1(i)(x1(i)w1+x2(i)w2+by(i)),w2w2ηBiB(i)(w1,w2,b)w2=w2ηBiBx2(i)(x1(i)w1+x2(i)w2+by(i)),bbηBiB(i)(w1,w2,b)b=bηBiB(x1(i)w1+x2(i)w2+by(i)). \begin{aligned} w_1 &\leftarrow w_1 - \frac{\eta}{|\mathcal{B}|} \sum_{i \in \mathcal{B}} \frac{ \partial \ell^{(i)}(w_1, w_2, b) }{\partial w_1} = w_1 - \frac{\eta}{|\mathcal{B}|} \sum_{i \in \mathcal{B}}x_1^{(i)} \left(x_1^{(i)} w_1 + x_2^{(i)} w_2 + b - y^{(i)}\right),\\ w_2 &\leftarrow w_2 - \frac{\eta}{|\mathcal{B}|} \sum_{i \in \mathcal{B}} \frac{ \partial \ell^{(i)}(w_1, w_2, b) }{\partial w_2} = w_2 - \frac{\eta}{|\mathcal{B}|} \sum_{i \in \mathcal{B}}x_2^{(i)} \left(x_1^{(i)} w_1 + x_2^{(i)} w_2 + b - y^{(i)}\right),\\ b &\leftarrow b - \frac{\eta}{|\mathcal{B}|} \sum_{i \in \mathcal{B}} \frac{ \partial \ell^{(i)}(w_1, w_2, b) }{\partial b} = b - \frac{\eta}{|\mathcal{B}|} \sum_{i \in \mathcal{B}}\left(x_1^{(i)} w_1 + x_2^{(i)} w_2 + b - y^{(i)}\right). \end{aligned}

在上式中,B|\mathcal{B}| 代表每個小批量中的樣本個數(批量大小,batch size),η\eta 稱作學習率(learning rate)並取正數。需要強調的是,這裏的批量大小和學習率的值是人爲設定的,並不是通過模型訓練學出的,因此叫作超參數(hyperparameter)。我們通常所說的“調參”指的正是調節超參數,例如通過反覆試錯來找到超參數合適的值。在少數情況下,超參數也可以通過模型訓練得到。

參考

動手學pytorch

發佈了11 篇原創文章 · 獲贊 7 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章