深度学习基础:2.最小二乘法
最小二乘法代數表示方法
假設多元線性方程有如下形式:
f(x)=w1x1+w2x2+...+wdxd+bf(x) = w_1x_1+w_2x_2+...+w_dx_d+b f(x)=w1?x1?+w2?x2?+...+wd?xd?+b
令w=(w1,w2,...wd)w = (w_1,w_2,...w_d)w=(w1?,w2?,...wd?),x=(x1,x2,...xd)x = (x_1,x_2,...x_d)x=(x1?,x2?,...xd?),則上式可寫為
f(x)=wTx+bf(x) = w^Tx+b f(x)=wTx+b
多元線性回歸的最小二乘法的代數法表示較為復雜,此處先考慮簡單線性回歸的最小二乘法表示形式。在簡單線性回歸中,w只包含一個分量,x也只包含一個分量,我們令此時的xix_ixi?就是對應的自變量的取值,此時求解過程如下
優化目標可寫為
SSE=∑i=1m(f(xi)?yi)2=E(w,b)SSE = \sum^m_{i=1}(f(x_i)-y_i)^2 = E_(w,b) SSE=i=1∑m?(f(xi?)?yi?)2=E(?w,b)
通過偏導為0求得最終結果的最小二乘法求解過程為:
KaTeX parse error: No such environment: align at position 9: \begin{?a?l?i?g?n?}? \frac{\partial…
KaTeX parse error: No such environment: align at position 9: \begin{?a?l?i?g?n?}? \frac{\partial…
求得:
w=∑i=1myi(xi?xˉ)∑i=1mxi2?1m(∑i=1mxi)2w = \frac{\sum^m_{i=1}y_i(x_i-\bar{x}) }{\sum^m_{i=1}x^2_i-\frac{1}{m}(\sum^m_{i=1}x_i)^2 } w=∑i=1m?xi2??m1?(∑i=1m?xi?)2∑i=1m?yi?(xi??xˉ)?
b=1m∑i=1m(yi?wxi)b = \frac{1}{m}\sum^m_{i=1}(y_i-wx_i) b=m1?i=1∑m?(yi??wxi?)
#最小二乘法的矩陣表示形式
設多元線性回歸方程為:
f(x)=w1x1+w2x2+...+wdxd+bf(x) = w_1x_1+w_2x_2+...+w_dx_d+b f(x)=w1?x1?+w2?x2?+...+wd?xd?+b
令
w^=(w1,w2,...,wd,b)\hat w = (w_1,w_2,...,w_d,b) w^=(w1?,w2?,...,wd?,b)
x^=(x1,x2,...,xd,1)\hat x = (x_1,x_2,...,x_d,1) x^=(x1?,x2?,...,xd?,1)
則
f(x)=w^?x^Tf(x) = \hat w * \hat x^T f(x)=w^?x^T
有多個y值,則所有x值可以用矩陣X進行表示:
X=[x11x12...x1d1x21x22...x2d1............1xm1xm2...xmd1]X = \left [\begin{array}{cccc} x_{11} &x_{12} &... &x_{1d} &1 \\ x_{21} &x_{22} &... &x_{2d} &1 \\ ... &... &... &... &1 \\ x_{m1} &x_{m2} &... &x_{md} &1 \\ \end{array}\right] X=?????x11?x21?...xm1??x12?x22?...xm2??............?x1d?x2d?...xmd??1111??????
y也可用m行1列的矩陣表示:
y=[y1y2...ym]y = \left [\begin{array}{cccc} y_1 \\ y_2 \\ . \\ . \\ . \\ y_m \\ \end{array}\right] y=?????????y1?y2?...ym???????????
此時,SSE表示為:
SSE=∣∣y?Xw^T∣∣22=(y?Xw^T)T(y?Xw^T)=E(w^)SSE = ||y - X\hat w^T||_2^2 = (y - X\hat w^T)^T(y - X\hat w^T) = E(\hat w) SSE=∣∣y?Xw^T∣∣22?=(y?Xw^T)T(y?Xw^T)=E(w^)
根據最小二乘法的求解過程,令E(w^)E(\hat w)E(w^)對w^\hat ww^求導方程取值為0,有
KaTeX parse error: No such environment: equation at position 879: …數,有如下規則: \begin{?e?q?u?a?t?i?o?n?}? \\\frac{\parti…
簡單記憶矩陣的求導,自身轉置對自身求導=其它項的轉置;
其中:
?∣∣y?Xw^T∣∣22\partial{||\boldsymbol{y} - \boldsymbol{X\hat w^T}||_2}^2 ?∣∣y?Xw^T∣∣2?2
下方的2表示L2范式,即里面的內容相乘之后開根號,右上平方之后,消除根號。
進一步可得
XTXw^T=XTyX^TX\hat w^T = X^Ty XTXw^T=XTy
要使得此式有解,等價于XTXX^TXXTX(也被稱為矩陣的交叉乘積crossprod存在逆矩陣,若存在,則可解出)
w^T=(XTX)?1XTy\hat w ^T = (X^TX)^{-1}X^Ty w^T=(XTX)?1XTy
最小二乘法的編程實現
例子:
X=A=[1131]X = A = \left [\begin{array}{cccc} 1 &1 \\ 3 &1 \\ \end{array}\right] X=A=[13?11?]
y=B=[24]y = B = \left [\begin{array}{cccc} 2 \\ 4 \\ \end{array}\right] y=B=[24?]
w^T=XT=[ab]\hat w ^T = X^T = \left [\begin{array}{cccc} a \\ b \\ \end{array}\right] w^T=XT=[ab?]
手動實現
X = A X tensor([[1., 1.],[3., 1.]]) y = B y tensor([[2.],[4.]]) X.t() tensor([[1., 3.],[1., 1.]]) w = torch.mm(torch.mm(torch.inverse(torch.mm(X.t(),X)),X.t()),y)這里直接套用上面推導出來的公式
w tensor([[1.0000],[1.0000]])調用函數求解
torch.lstsq(y, X) torch.return_types.lstsq( solution=tensor([[1.0000],[1.0000]]), QR=tensor([[-3.1623, -1.2649],[ 0.7208, -0.6325]]))對于lstsq函數來說,第一個參數是因變量張量,第二個參數是自變量張量,并且同時返回結果還包括QR矩陣分解的結果。
補充知識點:范數的計算
求解L2范數:
# 默認情況,求解L2范數,個元素的平方和開平方 torch.linalg.norm(t)求解L1范數:
# 輸入參數,求解L1范數,個元素的絕對值之和 torch.linalg.norm(t, 1)總結
最小二乘法計算快速,但條件苛刻,需滿足X存在逆矩陣。
總結
以上是生活随笔為你收集整理的深度学习基础:2.最小二乘法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 冬季黄山(2~3 日游)攻略
- 下一篇: java点赞功能的实现,类似微信点赞,用