国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

《動(dòng)手學(xué)深度學(xué)習(xí)(PyTorch版)》筆記3.1

這篇具有很好參考價(jià)值的文章主要介紹了《動(dòng)手學(xué)深度學(xué)習(xí)(PyTorch版)》筆記3.1。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

Chapter3 Linear Neural Networks

3.1 Linear Regression

3.1.1 Basic Concepts

我們通常使用 n n n來(lái)表示數(shù)據(jù)集中的樣本數(shù)。對(duì)索引為 i i i的樣本,其輸入表示為 x ( i ) = [ x 1 ( i ) , x 2 ( i ) , . . . , x n ( i ) ] ? \mathbf{x}^{(i)} = [x_1^{(i)}, x_2^{(i)},...,x_n^{(i)}]^\top x(i)=[x1(i)?,x2(i)?,...,xn(i)?]?,其對(duì)應(yīng)的標(biāo)簽是 y ( i ) y^{(i)} y(i)

3.1.1.1 Linear Model

在機(jī)器學(xué)習(xí)領(lǐng)域,我們通常使用的是高維數(shù)據(jù)集,建模時(shí)采用線性代數(shù)表示法會(huì)比較方便。當(dāng)我們的輸入包含 d d d個(gè)特征時(shí),我們將預(yù)測(cè)結(jié)果 y ^ \hat{y} y^?(通常使用“尖角”符號(hào)表示 y y y的估計(jì)值)表示為:

y ^ = w 1 x 1 + . . . + w d x d + b . \hat{y} = w_1 x_1 + ... + w_d x_d + b. y^?=w1?x1?+...+wd?xd?+b.

將所有特征放到向量 x ∈ R d \mathbf{x} \in \mathbb{R}^d xRd中,并將所有權(quán)重放到向量 w ∈ R d \mathbf{w} \in \mathbb{R}^d wRd中,我們可以用點(diǎn)積形式來(lái)簡(jiǎn)潔地表達(dá)模型:

y ^ = w ? x + b (1) \hat{y} = \mathbf{w}^\top \mathbf{x} + b \tag{1} y^?=w?x+b(1)

在式(1)中,向量 x \mathbf{x} x對(duì)應(yīng)于單個(gè)數(shù)據(jù)樣本的特征。用符號(hào)表示的矩陣 X ∈ R n × d \mathbf{X} \in \mathbb{R}^{n \times d} XRn×d可以很方便地引用我們整個(gè)數(shù)據(jù)集的 n n n個(gè)樣本。其中, X \mathbf{X} X的每一行是一個(gè)樣本,每一列是一種特征。對(duì)于特征集合 X \mathbf{X} X,預(yù)測(cè)值 y ^ ∈ R n \hat{\mathbf{y}} \in \mathbb{R}^n y^?Rn可以通過(guò)矩陣-向量乘法表示為:

y ^ = X w + b {\hat{\mathbf{y}}} = \mathbf{X} \mathbf{w} + b y^?=Xw+b

給定訓(xùn)練數(shù)據(jù)特征 X \mathbf{X} X和對(duì)應(yīng)的已知標(biāo)簽 y \mathbf{y} y,線性回歸的目標(biāo)是找到一組權(quán)重向量 w \mathbf{w} w和偏置 b b b:當(dāng)給定從 X \mathbf{X} X的同分布中取樣的新樣本特征時(shí),這組權(quán)重向量和偏置能夠使得新樣本預(yù)測(cè)標(biāo)簽的誤差盡可能小。

雖然我們相信給定 x \mathbf{x} x預(yù)測(cè) y y y的最佳模型會(huì)是線性的,但我們很難找到一個(gè)有 n n n個(gè)樣本的真實(shí)數(shù)據(jù)集,其中對(duì)于所有的 1 ≤ i ≤ n 1 \leq i \leq n 1in, y ( i ) y^{(i)} y(i)完全等于 w ? x ( i ) + b \mathbf{w}^\top \mathbf{x}^{(i)}+b w?x(i)+b。無(wú)論我們使用什么手段來(lái)觀察特征 X \mathbf{X} X和標(biāo)簽 y \mathbf{y} y,都可能會(huì)出現(xiàn)少量的觀測(cè)誤差。因此,即使確信特征與標(biāo)簽的潛在關(guān)系是線性的,我們也會(huì)加入一個(gè)噪聲項(xiàng)來(lái)考慮觀測(cè)誤差帶來(lái)的影響。

在開(kāi)始尋找最好的模型參數(shù)(model parameters w \mathbf{w} w b b b之前,
我們還需要兩個(gè)東西:

  • 一種模型質(zhì)量的度量方式;
  • 一種能夠更新模型以提高模型預(yù)測(cè)質(zhì)量的方法。
3.1.1.2 Loss Function

在我們開(kāi)始考慮如何用模型擬合(fit)數(shù)據(jù)之前,我們需要確定一個(gè)擬合程度的度量。
損失函數(shù)(loss function)能夠量化目標(biāo)的實(shí)際值與預(yù)測(cè)值之間的差距。通常我們會(huì)選擇非負(fù)數(shù)作為損失,且數(shù)值越小表示損失越小,完美預(yù)測(cè)時(shí)的損失為0。回歸問(wèn)題中最常用的損失函數(shù)是平方誤差函數(shù)。當(dāng)樣本 i i i的預(yù)測(cè)值為 y ^ ( i ) \hat{y}^{(i)} y^?(i),其相應(yīng)的真實(shí)標(biāo)簽為 y ( i ) y^{(i)} y(i)時(shí),
平方誤差可以定義為以下公式:

l ( i ) ( w , b ) = 1 2 ( y ^ ( i ) ? y ( i ) ) 2 . l^{(i)}(\mathbf{w}, b) = \frac{1}{2} \left(\hat{y}^{(i)} - y^{(i)}\right)^2. l(i)(w,b)=21?(y^?(i)?y(i))2.

常數(shù) 1 2 \frac{1}{2} 21?不會(huì)帶來(lái)本質(zhì)的差別,但這樣在形式上稍微簡(jiǎn)單一些(因?yàn)楫?dāng)我們對(duì)損失函數(shù)求導(dǎo)后常數(shù)系數(shù)為1)。由于訓(xùn)練數(shù)據(jù)集并不受我們控制,所以經(jīng)驗(yàn)誤差只是關(guān)于模型參數(shù)的函數(shù)。由于平方誤差函數(shù)中的二次方項(xiàng),估計(jì)值 y ^ ( i ) \hat{y}^{(i)} y^?(i)和觀測(cè)值 y ( i ) y^{(i)} y(i)之間較大的差異將導(dǎo)致更大的損失。為了度量模型在整個(gè)數(shù)據(jù)集上的質(zhì)量,我們需計(jì)算在訓(xùn)練集 n n n個(gè)樣本上的損失均值(也等價(jià)于求和)。

L ( w , b ) = 1 n ∑ i = 1 n l ( i ) ( w , b ) = 1 n ∑ i = 1 n 1 2 ( w ? x ( i ) + b ? y ( i ) ) 2 . L(\mathbf{w}, b) =\frac{1}{n}\sum_{i=1}^n l^{(i)}(\mathbf{w}, b) =\frac{1}{n} \sum_{i=1}^n \frac{1}{2}\left(\mathbf{w}^\top \mathbf{x}^{(i)} + b - y^{(i)}\right)^2. L(w,b)=n1?i=1n?l(i)(w,b)=n1?i=1n?21?(w?x(i)+b?y(i))2.

在訓(xùn)練模型時(shí),我們希望尋找一組參數(shù)( w ? , b ? \mathbf{w}^*, b^* w?,b?),這組參數(shù)能最小化在所有訓(xùn)練樣本上的總損失。如下式:

w ? , b ? = argmin ? w , b ? L ( w , b ) . \mathbf{w}^*, b^* = \operatorname*{argmin}_{\mathbf{w}, b}\ L(\mathbf{w}, b). w?,b?=w,bargmin??L(w,b).

3.1.1.3 Analytical Solution

線性回歸有解析解(analytical solution)。首先,我們將偏置 b b b合并到參數(shù) w \mathbf{w} w中,合并方法是在包含所有參數(shù)的矩陣中附加一列。我們的預(yù)測(cè)問(wèn)題是最小化 ∥ y ? X w ∥ 2 \|\mathbf{y} - \mathbf{X}\mathbf{w}\|^2 y?Xw2。這在損失平面上只有一個(gè)臨界點(diǎn),這個(gè)臨界點(diǎn)對(duì)應(yīng)于整個(gè)區(qū)域的損失極小點(diǎn)。將損失關(guān)于 w \mathbf{w} w的導(dǎo)數(shù)設(shè)為0,即
X ? X w = X ? y \mathbf X^\top \mathbf{X}\mathbf{w}=\mathbf X^\top \mathbf{y} X?Xw=X?y
得到解析解:

w ? = ( X ? X ) ? 1 X ? y \mathbf{w}^* = (\mathbf X^\top \mathbf X)^{-1}\mathbf X^\top \mathbf{y} w?=(X?X)?1X?y

像線性回歸這樣的簡(jiǎn)單問(wèn)題存在解析解,但并不是所有的問(wèn)題都存在解析解。

3.1.1.4 Stochastic Gradient Descent

我們用到一種名為梯度下降(gradient descent)的方法,幾乎可以?xún)?yōu)化所有深度學(xué)習(xí)模型。它通過(guò)不斷地在損失函數(shù)遞減的方向上更新參數(shù)來(lái)降低誤差。

梯度下降最簡(jiǎn)單的用法是計(jì)算損失函數(shù)(數(shù)據(jù)集中所有樣本的損失均值)關(guān)于模型參數(shù)的導(dǎo)數(shù)(在這里也可以稱(chēng)為梯度)。但實(shí)際中的執(zhí)行可能會(huì)非常慢:因?yàn)樵诿恳淮胃聟?shù)之前,我們必須遍歷整個(gè)數(shù)據(jù)集。因此,我們通常會(huì)在每次需要計(jì)算更新的時(shí)候隨機(jī)抽取一小批樣本,這種變體叫做小批量隨機(jī)梯度下降(minibatch stochastic gradient descent)。

在每次迭代中,我們首先隨機(jī)抽樣一個(gè)小批量 B \mathcal{B} B,它是由固定數(shù)量的訓(xùn)練樣本組成的。然后,我們計(jì)算小批量的平均損失關(guān)于模型參數(shù)的導(dǎo)數(shù)(也可以稱(chēng)為梯度)。最后,我們將梯度乘以一個(gè)預(yù)先確定的正數(shù) η \eta η,并從當(dāng)前參數(shù)的值中減掉。

我們用下面的數(shù)學(xué)公式來(lái)表示這一更新過(guò)程,其中 w \mathbf{w} w x \mathbf{x} x都是向量, ∣ B ∣ |\mathcal{B}| B表示每個(gè)小批量中的樣本數(shù),稱(chēng)為批量大小(batch size)。
η \eta η表示學(xué)習(xí)率(learning rate)。

( w , b ) ← ( w , b ) ? η ∣ B ∣ ∑ i ∈ B ? ( w , b ) l ( i ) ( w , b ) . (\mathbf{w},b) \leftarrow (\mathbf{w},b) - \frac{\eta}{|\mathcal{B}|} \sum_{i \in \mathcal{B}} \partial_{(\mathbf{w},b)} l^{(i)}(\mathbf{w},b). (w,b)(w,b)?Bη?iB??(w,b)?l(i)(w,b).

總而言之,算法的步驟如下:
(1)初始化模型參數(shù)的值,如隨機(jī)初始化;
(2)從數(shù)據(jù)集中隨機(jī)抽取小批量樣本且在負(fù)梯度的方向上更新參數(shù),并不斷迭代這一步驟。
對(duì)于平方損失和仿射變換,可以寫(xiě)成如下形式:

w ← w ? η ∣ B ∣ ∑ i ∈ B ? w l ( i ) ( w , b ) = w ? η ∣ B ∣ ∑ i ∈ B x ( i ) ( w ? x ( i ) + b ? y ( i ) ) ?(關(guān)于 w 的偏導(dǎo)) b ← b ? η ∣ B ∣ ∑ i ∈ B ? b l ( i ) ( w , b ) = b ? η ∣ B ∣ ∑ i ∈ B ( w ? x ( i ) + b ? y ( i ) ) ?(關(guān)于 b 的偏導(dǎo)) \begin{aligned} \mathbf{w} &\leftarrow \mathbf{w} - \frac{\eta}{|\mathcal{B}|} \sum_{i \in \mathcal{B}} \partial_{\mathbf{w}} l^{(i)}(\mathbf{w}, b) = \mathbf{w} - \frac{\eta}{|\mathcal{B}|} \sum_{i \in \mathcal{B}} \mathbf{x}^{(i)} \left(\mathbf{w}^\top \mathbf{x}^{(i)} + b - y^{(i)}\right) \text{ (關(guān)于$\mathbf{w}$的偏導(dǎo))}\\ b &\leftarrow b - \frac{\eta}{|\mathcal{B}|} \sum_{i \in \mathcal{B}} \partial_b l^{(i)}(\mathbf{w}, b) = b - \frac{\eta}{|\mathcal{B}|} \sum_{i \in \mathcal{B}} \left(\mathbf{w}^\top \mathbf{x}^{(i)} + b - y^{(i)}\right) \text{ (關(guān)于$b$的偏導(dǎo))} \end{aligned} wb?w?Bη?iB??w?l(i)(w,b)=w?Bη?iB?x(i)(w?x(i)+b?y(i))?(關(guān)于w的偏導(dǎo))b?Bη?iB??b?l(i)(w,b)=b?Bη?iB?(w?x(i)+b?y(i))?(關(guān)于b的偏導(dǎo))?

批量大小和學(xué)習(xí)率的值通常是手動(dòng)預(yù)先指定,而不是通過(guò)模型訓(xùn)練得到的。這些可以調(diào)整但不在訓(xùn)練過(guò)程中更新的參數(shù)稱(chēng)為超參數(shù)(hyperparameter)。調(diào)參(hyperparameter tuning)是選擇超參數(shù)的過(guò)程。超參數(shù)通常是我們根據(jù)訓(xùn)練迭代結(jié)果來(lái)調(diào)整的,而訓(xùn)練迭代結(jié)果是在獨(dú)立的驗(yàn)證數(shù)據(jù)集(validation dataset)上評(píng)估得到的。

在訓(xùn)練了預(yù)先確定的若干迭代次數(shù)后(或者直到滿(mǎn)足某些其他停止條件后),我們記錄下模型參數(shù)的估計(jì)值,表示為 w ^ , b ^ \hat{\mathbf{w}}, \hat w^,b^。但是,即使我們的函數(shù)確實(shí)是線性的且無(wú)噪聲,這些估計(jì)值也不會(huì)使損失函數(shù)真正地達(dá)到最小值。因?yàn)樗惴〞?huì)使得損失向最小值緩慢收斂,但卻不能在有限的步數(shù)內(nèi)非常精確地達(dá)到最小值。
線性回歸恰好是一個(gè)在整個(gè)域中只有一個(gè)最小值的學(xué)習(xí)問(wèn)題,但是對(duì)像深度神經(jīng)網(wǎng)絡(luò)這樣復(fù)雜的模型來(lái)說(shuō),損失平面上通常包含多個(gè)最小值。深度學(xué)習(xí)實(shí)踐者很少會(huì)去花費(fèi)大力氣尋找這樣一組參數(shù),使得在訓(xùn)練集上的損失達(dá)到最小。事實(shí)上,更難做到的是找到一組參數(shù),這組參數(shù)能夠在我們從未見(jiàn)過(guò)的數(shù)據(jù)上實(shí)現(xiàn)較低的損失,這一挑戰(zhàn)被稱(chēng)為泛化(generalization)。

3.1.1.5 Using Models for Prediction

給定特征估計(jì)目標(biāo)的過(guò)程通常稱(chēng)為預(yù)測(cè)(prediction)或推斷(inference)。但在統(tǒng)計(jì)學(xué)中,推斷更多地表示基于數(shù)據(jù)集估計(jì)參數(shù)。

3.1.2 Vectorization Acceleration

在訓(xùn)練我們的模型時(shí),我們經(jīng)常希望能夠同時(shí)處理整個(gè)小批量的樣本。為了實(shí)現(xiàn)這一點(diǎn),需要我們對(duì)計(jì)算進(jìn)行矢量化,從而利用線性代數(shù)庫(kù),而不是在Python中編寫(xiě)開(kāi)銷(xiāo)高昂的for循環(huán),即使用:

n = 10000
a = torch.ones([n])
b = torch.ones([n])
c=a+b

而不是:

c = torch.zeros(n)
for i in range(n):
    c[i] = a[i] + b[i]

3.1.3 Normal Distribution and Squared Loss

噪聲正態(tài)分布如下式:

y = w ? x + b + ? , y = \mathbf{w}^\top \mathbf{x} + b + \epsilon, y=w?x+b+?,

其中, ? ~ N ( 0 , σ 2 ) \epsilon \sim \mathcal{N}(0, \sigma^2) ?N(0,σ2)。

因此,我們現(xiàn)在可以寫(xiě)出通過(guò)給定的 x \mathbf{x} x觀測(cè)到特定 y y y似然(likelihood):

P ( y ∣ x ) = 1 2 π σ 2 exp ? ( ? 1 2 σ 2 ( y ? w ? x ? b ) 2 ) . P(y \mid \mathbf{x}) = \frac{1}{\sqrt{2 \pi \sigma^2}} \exp\left(-\frac{1}{2 \sigma^2} (y - \mathbf{w}^\top \mathbf{x} - b)^2\right). P(yx)=2πσ2 ?1?exp(?2σ21?(y?w?x?b)2).

現(xiàn)在,根據(jù)極大似然估計(jì)法,參數(shù) w \mathbf{w} w b b b的最優(yōu)值是使整個(gè)數(shù)據(jù)集的似然最大的值:

P ( y ∣ X ) = ∏ i = 1 n p ( y ( i ) ∣ x ( i ) ) . P(\mathbf y \mid \mathbf X) = \prod_{i=1}^{n} p(y^{(i)}|\mathbf{x}^{(i)}). P(yX)=i=1n?p(y(i)x(i)).

根據(jù)極大似然估計(jì)法選擇的估計(jì)量稱(chēng)為極大似然估計(jì)量。雖然使許多指數(shù)函數(shù)的乘積最大化看起來(lái)很困難,但是我們可以在不改變目標(biāo)的前提下,通過(guò)最大化似然對(duì)數(shù)來(lái)簡(jiǎn)化。由于歷史原因,優(yōu)化通常是說(shuō)最小化而不是最大化。我們可以改為最小化負(fù)對(duì)數(shù)似然 ? log ? P ( y ∣ X ) -\log P(\mathbf y \mid \mathbf X) ?logP(yX)。由此可以得到的數(shù)學(xué)公式是:

? log ? P ( y ∣ X ) = ∑ i = 1 n 1 2 log ? ( 2 π σ 2 ) + 1 2 σ 2 ( y ( i ) ? w ? x ( i ) ? b ) 2 . -\log P(\mathbf y \mid \mathbf X) = \sum_{i=1}^n \frac{1}{2} \log(2 \pi \sigma^2) + \frac{1}{2 \sigma^2} \left(y^{(i)} - \mathbf{w}^\top \mathbf{x}^{(i)} - b\right)^2. ?logP(yX)=i=1n?21?log(2πσ2)+2σ21?(y(i)?w?x(i)?b)2.

現(xiàn)在我們只需要假設(shè) σ \sigma σ是某個(gè)固定常數(shù)就可以忽略第一項(xiàng),現(xiàn)在第二項(xiàng)除了常數(shù) 1 σ 2 \frac{1}{\sigma^2} σ21?外,其余部分和前面介紹的均方誤差是一樣的。因此,在高斯噪聲的假設(shè)下,最小化均方誤差等價(jià)于對(duì)線性模型的極大似然估計(jì)。

3.1.4 From Linear Regression to Deep Networks

我們可以用描述神經(jīng)網(wǎng)絡(luò)的方式來(lái)描述線性模型,從而把線性模型看作一個(gè)神經(jīng)網(wǎng)絡(luò)。
《動(dòng)手學(xué)深度學(xué)習(xí)(PyTorch版)》筆記3.1,python,筆記,深度學(xué)習(xí),pytorch,筆記,python,人工智能,算法

首先,我們用“層”符號(hào)來(lái)重寫(xiě)這個(gè)模型。深度學(xué)習(xí)從業(yè)者喜歡繪制圖表來(lái)可視化模型中正在發(fā)生的事情。我們將線性回歸模型描述為一個(gè)神經(jīng)網(wǎng)絡(luò)。需要注意的是,該圖只顯示連接模式,即只顯示每個(gè)輸入如何連接到輸出,隱去了權(quán)重和偏置的值。
在圖中所示的神經(jīng)網(wǎng)絡(luò)中,輸入為 x 1 , … , x d x_1, \ldots, x_d x1?,,xd?,因此輸入層中的輸入數(shù)(或稱(chēng)為特征維度,feature dimensionality)為 d d d。網(wǎng)絡(luò)的輸出為 o 1 o_1 o1?,因此輸出層中的輸出數(shù)是1。需要注意的是,輸入值都是已經(jīng)給定的,并且只有一個(gè)計(jì)算神經(jīng)元。由于模型重點(diǎn)在發(fā)生計(jì)算的地方,所以通常我們?cè)谟?jì)算層數(shù)時(shí)不考慮輸入層。也就是說(shuō),圖中神經(jīng)網(wǎng)絡(luò)的層數(shù)為1。我們可以將線性回歸模型視為僅由單個(gè)人工神經(jīng)元組成的神經(jīng)網(wǎng)絡(luò),或稱(chēng)為單層神經(jīng)網(wǎng)絡(luò)。對(duì)于線性回歸,每個(gè)輸入都與每個(gè)輸出(在本例中只有一個(gè)輸出)相連,我們將這種變換( 圖中的輸出層)稱(chēng)為全連接層(fully-connected layer)或稱(chēng)為稠密層(dense layer)。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-823584.html

到了這里,關(guān)于《動(dòng)手學(xué)深度學(xué)習(xí)(PyTorch版)》筆記3.1的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包