日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > pytorch >内容正文

pytorch

深度学习基础:2.最小二乘法

發布時間:2023/12/14 pytorch 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 深度学习基础: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=1m?(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?)2i=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=1m?(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^T22?=(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^T2?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.最小二乘法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。