九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項超值服

開通VIP
神經(jīng)網(wǎng)絡(luò)如何學(xué)習(xí)的?

像下山一樣,找到損失函數(shù)的最低點(diǎn)。

毫無疑問,神經(jīng)網(wǎng)絡(luò)是目前使用的最流行的機(jī)器學(xué)習(xí)技術(shù)。所以我認(rèn)為了解神經(jīng)網(wǎng)絡(luò)如何學(xué)習(xí)是一件非常有意義的事。

為了能夠理解神經(jīng)網(wǎng)絡(luò)是如何進(jìn)行學(xué)習(xí)的,讓我們先看看下面的圖片:

如果我們把每一層的輸入和輸出值表示為向量,把權(quán)重表示為矩陣,把誤差表示為向量,那么我們就得到了上述的一個神經(jīng)網(wǎng)絡(luò)的視圖,它只是一系列向量函數(shù)的應(yīng)用。也就是說,函數(shù)將向量作為輸入,對它們進(jìn)行一些轉(zhuǎn)換,然后把變換后的向量輸出。在上圖中,每條線代表一個函數(shù),它可以是一個矩陣乘法加上一個誤差向量,也可以是一個激活函數(shù)。這些圓表示這些函數(shù)作用的向量。

例如,我們從輸入向量開始,然后將其輸入到第一個函數(shù)中,該函數(shù)用來計算其各分量的線性組合,然后我們將獲得的向量作為輸出。然后把這個向量作為激活函數(shù)的輸入,如此類推,直到我們到達(dá)序列中的最后一個函數(shù)。最后一個函數(shù)的輸出就是神經(jīng)網(wǎng)絡(luò)的預(yù)測值。

到目前為止,我們已經(jīng)討論過神經(jīng)網(wǎng)絡(luò)是如何得到輸出的,這正是我們感興趣的內(nèi)容。我們知道神經(jīng)網(wǎng)絡(luò)只是將它的輸入向量傳遞給一系列函數(shù)。但是這些函數(shù)要依賴于一些參數(shù):權(quán)重和誤差。

神經(jīng)網(wǎng)絡(luò)如何通過學(xué)習(xí)得到這些參數(shù)來獲得好的預(yù)測呢?

讓我們回想一下神經(jīng)網(wǎng)絡(luò)實(shí)際上是什么:實(shí)際上它只是一個函數(shù),是由一個個小函數(shù)按順序排列組成的大函數(shù)。這個函數(shù)有一組參數(shù),在一開始,我們并不知道這些參數(shù)應(yīng)該是什么,我們僅僅是隨機(jī)初始化它們。因此在一開始神經(jīng)網(wǎng)絡(luò)會給我們一些隨機(jī)的值。那么我們?nèi)绾胃倪M(jìn)他們呢?在嘗試改進(jìn)它們之前,我們首先需要一種評估神經(jīng)網(wǎng)絡(luò)性能的方法。如果我們沒有辦法衡量模型的好壞,那么我們應(yīng)該如何改進(jìn)模型的性能?

為此,我們需要設(shè)計一個函數(shù),這個函數(shù)將神經(jīng)網(wǎng)絡(luò)的預(yù)測值和數(shù)據(jù)集中的真實(shí)標(biāo)簽作為輸入,將一個代表神經(jīng)網(wǎng)絡(luò)性能的數(shù)字作為輸出。然后我們就可以將學(xué)習(xí)問題轉(zhuǎn)化為求函數(shù)的最小值或最大值的優(yōu)化問題。在機(jī)器學(xué)習(xí)領(lǐng)域,這個函數(shù)通常是用來衡量我們的預(yù)測有多糟糕,因此被稱為損失函數(shù)。我們的問題就變成了找到使這個損失函數(shù)最小化的神經(jīng)網(wǎng)絡(luò)參數(shù)。

隨機(jī)梯度下降算法

你可能很擅長從微積分中求函數(shù)的最小值。對于這種問題,通常取函數(shù)的梯度,令其等于0,求出所有的解(也稱為臨界點(diǎn)),然后從中選擇使函數(shù)值最小的那一個。這就是全局最小值。我們能做同樣的事情來最小化我們的損失函數(shù)嗎?事實(shí)上是行不通的,主要的問題是神經(jīng)網(wǎng)絡(luò)的損失函數(shù)并不像微積分課本中常見的那樣簡潔明了。它是一個極其復(fù)雜的函數(shù),有數(shù)千個、幾十萬個甚至數(shù)百萬個參數(shù)。有時甚至不可能找到一個解決問題的收斂解。這個問題通常是通過迭代的方法來解決的,這些方法并不試圖找到一個直接的解,而是從一個隨機(jī)的解開始,并在每次迭代中嘗試改進(jìn)一點(diǎn)。最終,經(jīng)過大量的迭代,我們將得到一個相當(dāng)好的解決方案。

其中一種迭代方法是梯度下降法。你可能知道,一個函數(shù)的梯度給出了最陡的上升方向,如果我們?nèi)√荻鹊呢?fù)值,它會給我們最陡下降的方向,也就是我們可以在這個方向上最快地達(dá)到最小值。因此,在每一次迭代(也可以將其稱作一次訓(xùn)練輪次)時,我們計算損失函數(shù)的梯度,并從舊參數(shù)中減去它(乘以一個稱為學(xué)習(xí)率的因子)以得到神經(jīng)網(wǎng)絡(luò)的新參數(shù)。

其中θ(theta)表示包含神經(jīng)網(wǎng)絡(luò)所有參數(shù)的向量。

在標(biāo)準(zhǔn)梯度下降法中,梯度是將整個數(shù)據(jù)集考慮進(jìn)來并進(jìn)行計算的。通常這是不可取的,因?yàn)樵撚嬎憧赡苁前嘿F的。在實(shí)踐中,數(shù)據(jù)集被隨機(jī)分成多個塊,這些塊被稱為批。對每個批進(jìn)行更新。這種方法就叫做隨機(jī)梯度下降。

上面的更新規(guī)則在每一步只考慮在當(dāng)前位置計算的梯度。這樣,在損失函數(shù)曲面上運(yùn)動的點(diǎn)的軌跡對任何變動都很敏感。有時我們可能想讓這條軌跡更穩(wěn)健。為此,我們使用了一個受物理學(xué)啟發(fā)的概念:動量。我們的想法是,當(dāng)我們進(jìn)行更新時,也考慮到以前的更新,這會累積成一個變量Δθ。如果在同一個方向上進(jìn)行更多的更新,那么我們將'更快'地朝這個方向前進(jìn),并且不會因?yàn)槿魏涡〉臄_動而改變我們的軌跡。把它想象成速度。

其中α是非負(fù)因子,它可以決定舊梯度到底可以貢獻(xiàn)多少值。當(dāng)它為0時,我們不使用動量。

反向傳播算法

我們?nèi)绾斡嬎闾荻饶??回想一下神?jīng)網(wǎng)絡(luò)和損失函數(shù),它們只是一個函數(shù)的組合。那么如何計算復(fù)合函數(shù)的偏導(dǎo)數(shù)呢?我們可以使用鏈?zhǔn)椒▌t。讓我們看看下面的圖片:

如果我們要計算損失函數(shù)對第一層權(quán)重參數(shù)的偏導(dǎo)數(shù):我們首先讓第一個線性表達(dá)式對權(quán)重參數(shù)求偏導(dǎo),然后用這個結(jié)果乘上下一個函數(shù)(也就是激活函數(shù))關(guān)于它前面函數(shù)輸出內(nèi)容的偏導(dǎo)數(shù),一直執(zhí)行這個操作,直到我們乘上損失函數(shù)關(guān)于最后一個激活函數(shù)的偏導(dǎo)數(shù)。那如果我們想要計算對第二層的權(quán)重參數(shù)求的導(dǎo)數(shù)呢?我們必須做同樣的過程,但是這次我們從第二個線性組合函數(shù)對權(quán)重參數(shù)求導(dǎo)數(shù)開始,然后,我們要乘的其他項在計算第一層權(quán)重的導(dǎo)數(shù)時也出現(xiàn)了。所以,與其一遍又一遍地計算這些術(shù)語,我們將從后向前計算,因此得名為反向傳播算法。

我們將首先計算出損失函數(shù)關(guān)于神經(jīng)網(wǎng)絡(luò)輸出層的偏導(dǎo)數(shù),然后通過保持導(dǎo)數(shù)的運(yùn)行乘積將這些導(dǎo)數(shù)反向傳播到第一層。需要注意的是,我們有兩種導(dǎo)數(shù):一種是函數(shù)關(guān)于它輸入內(nèi)容的導(dǎo)數(shù)。我們把它們乘以導(dǎo)數(shù)的乘積,目的是跟蹤神經(jīng)網(wǎng)絡(luò)從輸出層到當(dāng)前層神經(jīng)元節(jié)點(diǎn)的誤差。第二類導(dǎo)數(shù)是關(guān)于參數(shù)的,這類導(dǎo)數(shù)是我們用來優(yōu)化參數(shù)的。我們不把它與其它導(dǎo)數(shù)的乘積相乘,相反,我們將它們存儲為梯度的一部分,稍后我們將使用它來更新參數(shù)。

所以,在反向傳播時,當(dāng)我們遇到?jīng)]有可學(xué)習(xí)參數(shù)的函數(shù)時(比如激活函數(shù)),我們只取第一種的導(dǎo)數(shù),只是為了反向傳播誤差。但是,當(dāng)我們遇到的函數(shù)有可學(xué)的參數(shù)(如線性組合,有權(quán)重和偏差),那么我們?nèi)∵@兩種導(dǎo)數(shù):第一種是用誤差傳播的輸入,第二種是加權(quán)和偏差,并將它們作為梯度的一部分來存儲。整個過程,我們從損失函數(shù)開始,直到我們到達(dá)第一層,在這一層我們沒有任何想要添加到梯度中的可學(xué)習(xí)參數(shù)。這就是反向傳播算法。

Softmax激活和交叉熵?fù)p失函數(shù)

分類任務(wù)中,最后一層常用的激活函數(shù)是softmax函數(shù)。

softmax函數(shù)將其輸入向量轉(zhuǎn)換為概率分布。從上圖中可以看到softmax的輸出的向量元素都是正的,它們的和是1。當(dāng)我們使用softmax激活時,我們在神經(jīng)網(wǎng)絡(luò)最后一層創(chuàng)建與數(shù)據(jù)集中類數(shù)量相等的節(jié)點(diǎn),并且softmax激活函數(shù)將給出在可能的類上的概率分布。因此,神經(jīng)網(wǎng)絡(luò)的輸出將會把輸入向量屬于每一個可能類的概率輸出給我們,我們選擇概率最高的類作為神經(jīng)網(wǎng)絡(luò)的預(yù)測。

當(dāng)把softmax函數(shù)作為輸出層的激活函數(shù)時,通常使用交叉熵?fù)p失作為損失函數(shù)。交叉熵?fù)p失衡量兩個概率分布的相似程度。我們可以將輸入值x的真實(shí)標(biāo)簽表示為一個概率分布:其中真實(shí)類標(biāo)簽的概率為1,其他類標(biāo)簽的概率為0。標(biāo)簽的這種表示也被稱為一個熱編碼。然后我們用交叉熵來衡量網(wǎng)絡(luò)的預(yù)測概率分布與真實(shí)概率分布的接近程度。

其中y是真標(biāo)簽的一個熱編碼,y hat是預(yù)測的概率分布,yi,yi hat是這些向量的元素。

如果預(yù)測的概率分布接近真實(shí)標(biāo)簽的一個熱編碼,那么損失函數(shù)的值將接近于0。否則如果它們相差很大,損失函數(shù)的值可能會無限大。

均方誤差損失函數(shù)

softmax激活和交叉熵?fù)p失主要用于分類任務(wù),而神經(jīng)網(wǎng)絡(luò)只需在最后一層使用適當(dāng)?shù)膿p失函數(shù)和激活函數(shù)就可以很容易地適應(yīng)回歸任務(wù)。例如,如果我們沒有類標(biāo)簽作為依據(jù),我們有一個我們想要近似的數(shù)字列表,我們可以使用均方誤差(簡稱MSE)損失函數(shù)。通常,當(dāng)我們使用MSE損失函數(shù)時,我們在最后一層使用身份激活(即f(x)=x)。

綜上所述,神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)過程只不過是一個優(yōu)化問題:我們要找到使損失函數(shù)最小化的參數(shù)。但這不是一件容易的事,有很多關(guān)于優(yōu)化技術(shù)的書。而且,除了優(yōu)化之外,對于給定的任務(wù)選擇哪種神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)也會出現(xiàn)問題。

我希望這篇文章對你有幫助,并十分感謝你的閱讀。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
[DL學(xué)習(xí)筆記]從人工神經(jīng)網(wǎng)絡(luò)到卷積神經(jīng)網(wǎng)絡(luò)
邏輯回歸數(shù)學(xué)原理推導(dǎo)
比較全面的L1和L2正則化的解釋
訓(xùn)練神經(jīng)網(wǎng)絡(luò)的五大算法
優(yōu)化背后的數(shù)學(xué)基礎(chǔ)
從梯度下降到擬牛頓法:詳解訓(xùn)練神經(jīng)網(wǎng)絡(luò)的五大學(xué)習(xí)算法
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服