[動手學深度學習-PyTorch版]-3.深度學習基礎

3.1 線性回歸

線性回歸輸出是一個連續值,因此適用于回歸問題。回歸問題在實際中很常見,如預測房屋價格、氣溫、銷售額等連續值的問題。與回歸問題不同,分類問題中模型的最終輸出是一個離散值。我們所說的圖像分類、垃圾郵件識別、疾病檢測等輸出為離散值的問題都屬于分類問題的范疇。softmax回歸則適用于分類問題。

由于線性回歸和softmax回歸都是單層神經網絡,它們涉及的概念和技術同樣適用于大多數的深度學習模型。我們首先以線性回歸為例,介紹大多數深度學習模型的基本要素和表示方法。

3.1.1 線性回歸的基本要素

我們以一個簡單的房屋價格預測作為例子來解釋線性回歸的基本要素。這個應用的目標是預測一棟房子的售出價格(元)。我們知道這個價格取決于很多因素,如房屋狀況、地段、市場行情等。為了簡單起見,這里我們假設價格只取決于房屋狀況的兩個因素,即面積(平方米)和房齡(年)。接下來我們希望探索價格與這兩個因素的具體關系。

3.1.1.1 模型定義

image.png

3.1.1.2 模型訓練

接下來我們需要通過數據來尋找特定的模型參數值,使模型在數據上的誤差盡可能小。這個過程叫作模型訓練(model training)。下面我們介紹模型訓練所涉及的3個要素。

(1) 訓練數據

我們通常收集一系列的真實數據,例如多棟房屋的真實售出價格和它們對應的面積和房齡。我們希望在這個數據上面尋找模型參數來使模型的預測價格與真實價格的誤差最小。在機器學習術語里,該數據集被稱為訓練數據集(training data set)或訓練集(training set),一棟房屋被稱為一個樣本(sample),其真實售出價格叫作標簽(label),用來預測標簽的兩個因素叫作特征(feature)。特征用來表征樣本的特點。


image.png

(2) 損失函數

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

image.png

其中常數1/2使對平方項求導后的常數系數為1,這樣在形式上稍微簡單一些。顯然,誤差越小表示預測價格與真實價格越相近,且當二者相等時誤差為0。給定訓練數據集,這個誤差只與模型參數相關,因此我們將它記為以模型參數為參數的函數。在機器學習里,將衡量誤差的函數稱為損失函數(loss function)。這里使用的平方誤差函數也稱為平方損失(square loss)。

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


image.png

image.png

(3) 優化算法

當模型和損失函數形式較為簡單時,上面的誤差最小化問題的解可以直接用公式表達出來。這類解叫作解析解(analytical solution)。本節使用的線性回歸和平方誤差剛好屬于這個范疇。然而,大多數深度學習模型并沒有解析解,只能通過優化算法有限次迭代模型參數來盡可能降低損失函數的值。這類解叫作數值解(numerical solution)。

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

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


image.png

image.png

3.1.1.3 模型預測

image.png

3.1.2 線性回歸的表示方法

我們已經闡述了線性回歸的模型表達式、訓練和預測。下面我們解釋線性回歸與神經網絡的聯系,以及線性回歸的矢量計算表達式。

3.1.2.1 神經網絡圖

在深度學習中,我們可以使用神經網絡圖直觀地表現模型結構。為了更清晰地展示線性回歸作為神經網絡的結構,圖3.1使用神經網絡圖表示本節中介紹的線性回歸模型。神經網絡圖隱去了模型參數權重和偏差。


圖3.1 線性回歸是一個單層神經網絡

image.png

3.1.2.2 矢量計算表達式

在模型訓練或預測時,我們常常會同時處理多個數據樣本并用到矢量計算。在介紹線性回歸的矢量計算表達式之前,讓我們先考慮對兩個向量相加的兩種方法。a

下面先定義兩個1000維的向量。

import torch
from time import time

a = torch.ones(1000)
b = torch.ones(1000)

向量相加的一種方法是,將這兩個向量按元素逐一做標量加法。

start = time()
c = torch.zeros(1000)
for i in range(1000):
    c[i] = a[i] + b[i]
print(time() - start)

輸出:

0.02039504051208496

向量相加的另一種方法是,將這兩個向量直接做矢量加法。

start = time()
d = a + b
print(time() - start)

輸出:

0.0008330345153808594

結果很明顯,后者比前者更省時。因此,我們應該盡可能采用矢量計算,以提升計算效率。


image.png
a = torch.ones(3)
b = 10
print(a + b)
Copy to clipboardErrorCopied

輸出:

tensor([11., 11., 11.])
image.png

小結

  • 和大多數深度學習模型一樣,對于線性回歸這樣一種單層神經網絡,它的基本要素包括模型、訓練數據、損失函數和優化算法。
  • 既可以用神經網絡圖表示線性回歸,又可以用矢量計算表示該模型。
  • 應該盡可能采用矢量計算,以提升計算效率。

注:本節除了代碼之外與原書基本相同,原書傳送門

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,825評論 6 546
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,814評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,980評論 0 384
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 64,064評論 1 319
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,779評論 6 414
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,109評論 1 330
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,099評論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,287評論 0 291
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,799評論 1 338
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,515評論 3 361
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,750評論 1 375
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,221評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,933評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,327評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,667評論 1 296
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,492評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,703評論 2 380

推薦閱讀更多精彩內容