訓(xùn)練模型
一、討論兩種訓(xùn)練方法二、線性回歸三、如何訓(xùn)練四、正規(guī)方程五、示例六、模型圖像七、梯度下降八、梯度下降的陷阱
一、討論兩種訓(xùn)練方法
1、直接使用封閉方程進(jìn)行求根運(yùn)算,得到模型在當(dāng)前訓(xùn)練集上的最優(yōu)參數(shù)(即在訓(xùn)練集上使損失函數(shù)達(dá)到最小值的模型參數(shù))2、使用迭代優(yōu)化方法:梯度下降(GD),在訓(xùn)練集上,它可以逐漸調(diào)整模型參數(shù)以獲得最小的損失函數(shù),最終,參數(shù)會收斂到和第一種方法相同的的值。同時,我們也會介紹一些梯度下降的變體形式:批量梯度下降(Batch GD)、小批量梯度下降(Mini-batch GD)、隨機(jī)梯度下降(Stochastic GD)。對于多項(xiàng)式回歸,它可以擬合非線性數(shù)據(jù)集,由于它比線性模型擁有更多的參數(shù),于是它更容易出現(xiàn)模型的過擬合。因此,我們將介紹如何通過學(xué)習(xí)曲線去判斷模型是否出現(xiàn)了過擬合,并介紹幾種正則化方法以減少模型出現(xiàn)過擬合的風(fēng)險(xiǎn)。
二、線性回歸
線性回歸預(yù)測模型
三、如何訓(xùn)練
訓(xùn)練一個模型指的是設(shè)置模型的參數(shù)使得這個模型在訓(xùn)練集的表現(xiàn)較好。為此,我們首先需要找到一個衡量模型好壞的評定方法。在回歸模型上,最常見的評定標(biāo)準(zhǔn)是均方根誤差。因此,為了訓(xùn)練一個線性回歸模型,需要找到一個θ值,它使得均方根誤差(標(biāo)準(zhǔn)誤差)達(dá)到最小值。實(shí)踐過程中,最小化均方誤差比最小化均方根誤差更加的簡單,這兩個過程會得到相同的θ因?yàn)楹瘮?shù)在最小值時候的自變量,同樣能使函數(shù)的方根運(yùn)算得到最小值。線性回歸模型的 MSE 損失函數(shù):
四、正規(guī)方程
為了找到最小化損失函數(shù)的 值,可以采用公式解,換句話說,就是可以通過解正規(guī)方程直接得到最后的結(jié)果。正規(guī)方程如下:
五、示例
生成一些近似線性的數(shù)據(jù)來測試一下這個方程。
importnumpyasnpX=2*np.random.rand(100,1)y=4+3*X+np.random.randn(100,1)
X_b=np.c_[np.ones((100,1)),X]theta_best=np.linalg.inv(X_b.T.dot(X_b)).dot(X_b.T).dot(y)
實(shí)際上產(chǎn)生數(shù)據(jù)的兩個系數(shù)是4和3 。讓我們看一下最后的計(jì)算結(jié)果。
>>>theta_bestarray([[4.21509616],[2.77011339]])
由于存在噪聲,參數(shù)不可能達(dá)到到原始函數(shù)的值?,F(xiàn)在我們能夠使用 來進(jìn)行預(yù)測:
X_new=np.array([[0],[2]])X_new_b=np.c_[np.ones((2,1)),X_new]y_predict=X_new_b.dot(theta_best)y_predict>>>array([[4.21509616],[9.75532293]])
六、模型圖像
plt.plot(X_new,y_predict,"r-")plt.plot(X,y,"b.")plt.axis([0,2,0,15])plt.show()
使用下面的 Scikit-Learn 代碼可以達(dá)到相同的效果:
fromsklearn.linear_modelimportLinearRegressionlin_reg=LinearRegression()lin_reg.fit(X,y)lin_reg.intercept_,lin_reg.coef_(array([4.21509616]),array([2.77011339]))lin_reg.predict(X_new)array([[4.21509616],[9.75532293]])
七、梯度下降
梯度下降是一種非常通用的優(yōu)化算法,它能夠很好地解決一系列問題。梯度下降的整體思路是通過的迭代來逐漸調(diào)整參數(shù)使得損失函數(shù)達(dá)到最小值。假設(shè)濃霧下,你迷失在了大山中,你只能感受到自己腳下的坡度。為了最快到達(dá)山底,一個最好的方法就是沿著坡度最陡的地方下山。這其實(shí)就是梯度下降所做的:它計(jì)算誤差函數(shù)關(guān)于參數(shù)向量 的局部梯度,同時它沿著梯度下降的方向進(jìn)行下一次迭代。當(dāng)梯度值為零的時候,就達(dá)到了誤差函數(shù)最小值 。具體來說,開始時,需要選定一個隨機(jī)的 (這個值稱為隨機(jī)初始值),然后逐漸去改進(jìn)它,每一次變化一小步,每一步都試著降低損失函數(shù)(例如:均方差損失函數(shù)),直到算法收斂到一個最小值。在梯度下降中一個重要的參數(shù)是步長,超參數(shù)學(xué)習(xí)率的值決定了步長的大小。如果學(xué)習(xí)率太小,必須經(jīng)過多次迭代,算法才能收斂,這是非常耗時的。另一方面,如果學(xué)習(xí)率太大,你將跳過最低點(diǎn),到達(dá)山谷的另一面,可能下一次的值比上一次還要大。這可能使的算法是發(fā)散的,函數(shù)值變得越來越大,永遠(yuǎn)不可能找到一個好的答案。最后,并不是所有的損失函數(shù)看起來都像一個規(guī)則的碗。它們可能是洞,山脊,高原和各種不規(guī)則的地形,使它們收斂到最小值非常的困難。梯度下降的兩個主要挑戰(zhàn):如果隨機(jī)初始值選在了圖像的左側(cè),則它將收斂到局部最小值,這個值要比全局最小值要大。 如果它從右側(cè)開始,那么跨越高原將需要很長時間,如果你早早地結(jié)束訓(xùn)練,你將永遠(yuǎn)到不了全局最小值。
八、梯度下降的陷阱
幸運(yùn)的是線性回歸模型的均方差損失函數(shù)是一個凸函數(shù),這意味著如果你選擇曲線上的任意兩點(diǎn),它們的連線段不會與曲線發(fā)生交叉(譯者注:該線段不會與曲線有第三個交點(diǎn))。這意味著這個損失函數(shù)沒有局部最小值,僅僅只有一個全局最小值。同時它也是一個斜率不能突變的連續(xù)函數(shù)。這兩個因素導(dǎo)致了一個好的結(jié)果: 梯度下降可以無限接近全局最小值。(只要你訓(xùn)練時間足夠長,同時學(xué)習(xí)率不是太大 )。
-
梯度
+關(guān)注
關(guān)注
0文章
30瀏覽量
10302 -
線性回歸
+關(guān)注
關(guān)注
0文章
41瀏覽量
4292 -
訓(xùn)練模型
+關(guān)注
關(guān)注
1文章
35瀏覽量
3794
原文標(biāo)題:訓(xùn)練模型
文章出處:【微信號:lccrunfly,微信公眾號:Python機(jī)器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論