線性回歸的基本要素
模型
為了簡單起見,這裡我們假設**只取決於房屋狀況的兩個因素,即面積(平方公尺)和房齡(年)。接下來我們希望探索**與這兩個因素的具體關係。線性回歸假設輸出與各個輸入之間是線性關係:
price=warea⋅area+wage⋅age+b
price=warea⋅area+wage⋅age+b
資料集
我們通常收集一系列的真實資料,例如多棟房屋的真實售出**和它們對應的面積和房齡。我們希望在這個資料上面尋找模型引數來使模型的****與真實**的誤差最小。在機器學習術語裡,該資料集被稱為訓練資料集(training data set)或訓練集(training set),一棟房屋被稱為乙個樣本(sample),其真實售出**叫作標籤(label),用來**標籤的兩個因素叫作特徵(feature)。特徵用來表徵樣本的特點。
損失函式
在模型訓練中,我們需要衡量****值與真實值之間的誤差。通常我們會選取乙個非負數作為誤差,且數值越小表示誤差越小。乙個常用的選擇是平方函式。 它在評估索引為 ii 的樣本誤差的表示式為
l(i)(w,b)=12(y^(i)−y(i))2,
l(i)(w,b)=12(y^(i)−y(i))2,
l(w,b)=1n∑i=1nl(i)(w,b)=1n∑i=1n12(w⊤x(i)+b−y(i))2.
l(w,b)=1n∑i=1nl(i)(w,b)=1n∑i=1n12(w⊤x(i)+b−y(i))2.
優化函式 - 隨機梯度下降
當模型和損失函式形式較為簡單時,上面的誤差最小化問題的解可以直接用公式表達出來。這類解叫作解析解(analytical solution)。本節使用的線性回歸和平方誤差剛好屬於這個範疇。然而,大多數深度學習模型並沒有解析解,只能通過優化演算法有限次迭代模型引數來盡可能降低損失函式的值。這類解叫作數值解(numerical solution)。
在求數值解的優化演算法中,小批量隨機梯度下降(mini-batch stochastic gradient descent)在深度學習中被廣泛使用。它的演算法很簡單:先選取一組模型引數的初始值,如隨機選取;接下來對引數進行多次迭代,使每次迭代都可能降低損失函式的值。在每次迭代中,先隨機均勻取樣乙個由固定數目訓練資料樣本所組成的小批量(mini-batch) bb ,然後求小批量中資料樣本的平均損失有關模型引數的導數(梯度),最後用此結果與預先設定的乙個正數的乘積作為模型引數在本次迭代的減小量。
(w,b)←(w,b)−η|b|∑i∈b∂(w,b)l(i)(w,b)
(w,b)←(w,b)−η|b|∑i∈b∂(w,b)l(i)(w,b)
學習率: ηη 代表在每次優化中,能夠學習的步長的大小
批量大小: bb 是小批量計算中的批量大小batch size
總結一下,優化函式的有以下兩個步驟:
(i)初始化模型引數,一般來說使用隨機初始化;
(ii)我們在資料上迭代多次,通過在負梯度方向移動引數來更新每個引數。
向量計算
在模型訓練或**時,我們常常會同時處理多個資料樣本並用到向量計算。在介紹線性回歸的向量計算表示式之前,讓我們先考慮對兩個向量相加的兩種方法。
向量相加的一種方法是,將這兩個向量按元素逐一做標量加法。
向量相加的另一種方法是,將這兩個向量直接做向量加法。
線性回歸模型從零開始的實現
# import packages and modules
%matplotlib inline
import torch
from ipython import display
from matplotlib import pyplot as plt
import numpy as np
import random
print(torch.version)
生成資料集
使用線性模型來生成資料集,生成乙個1000個樣本的資料集,下面是用來生成資料的線性關係:
price=warea⋅area+wage⋅age+b
定義模型
定義用來訓練引數的訓練模型:
price=warea⋅area+wage⋅age+b
定義損失函式
我們使用的是均方誤差損失函式:
l(i)(w,b)=12(y^(i)−y(i))2,
定義優化函式
在這裡優化函式使用的是小批量隨機梯度下降:
(w,b)←(w,b)−η|b|∑i∈b∂(w,b)l(i)(w,b)
動手學深度學習(一)
其中 w1 和 w2 是權重 weight b 是偏差 bias 且均為標量。訓練資料 損失函式 通常,我們用訓練資料集中所有樣本誤差的平均來衡量模型 的質量 w 1,w 2,b 為使訓練樣本平均損失最小的解 優化演算法 b 代表每個小批量中的樣本個數 批量大小,batch size 稱作學習率 l...
筆記 動手學深度學習
在求數值解的優化演算法中,小批量隨機梯度下降 mini batch stochastic gradient descent 在深度學習中被廣泛使用。它的演算法很簡單 先選取一組模型引數的初始值,如隨機選取 接下來對引數進行多次迭代,使每次迭代都可能降低損失函式的值。在每次迭代中,先隨機均勻取樣乙個由...
《動手學深度學習》 深度學習基礎複習
交叉熵只關心對正確類別的 概率,因為只要其值足夠大,就可以確保分類結果正確,而平方損失則過於嚴格,例如y i 1 y i 2 0比y i 1 0,y i 2 0.4的損失要小很多,雖然兩者都有同樣正確的分類 結果。正則化通過為模型損失函式新增懲罰項使學出的模型引數值較小,是應對過擬合的常用手段。權重...