【强推】李宏毅老师2021深度学习课程学习笔记(持续更新中)
機(jī)器學(xué)習(xí)可以理解為是讓機(jī)器自動(dòng)尋找函數(shù)的一個(gè)過(guò)程。
根據(jù)函數(shù)功能的不同,可以將機(jī)器學(xué)習(xí)進(jìn)行以下分類。
Alpha Go做的事情也是一個(gè)分類問(wèn)題:將當(dāng)前棋盤上白子黑子的位置作為輸入,輸出是19*19個(gè)calsses中的一個(gè)。
如果知道了李宏毅老師Youtube過(guò)去三年每一天的播放量數(shù)據(jù),去預(yù)測(cè)明天的播放量數(shù)據(jù),可以假定一個(gè)包含了兩個(gè)參數(shù)w和b的線性模型,輸入x1為前一天的數(shù)據(jù)(如2.25),y為預(yù)測(cè)的當(dāng)前一天的數(shù)據(jù)(如2.26)
損失函數(shù)是一個(gè)關(guān)于模型參數(shù)的函數(shù),用來(lái)評(píng)價(jià)模型及模型參數(shù)選擇的優(yōu)劣,此處我們可以通過(guò)平均絕對(duì)誤差進(jìn)行評(píng)價(jià)。將第一天的數(shù)據(jù)代入模型函數(shù)得到第二天的預(yù)測(cè)值,與真實(shí)值相差的絕對(duì)值為e1,類似的將第二天數(shù)據(jù)代入預(yù)測(cè)第三天,與第三天真實(shí)值之差的絕對(duì)值為e2,最后得到en,并把這些相加取平均,這就是平均絕對(duì)誤差(MAE)。除此之外,還有MSE(均方誤差)以及RMSE(均方根誤差)等。
我們可以嘗試不同的參數(shù)w和b,都去計(jì)算loss的值,并繪制出等高線圖,其中越偏紅色系表示loss越大,越偏藍(lán)色系表示loss越小,最好的參數(shù)應(yīng)該在w=1,b=250附近。更精確的尋找的話,可以通過(guò)梯度下降的方法。如下圖中我們就是將b確定,L關(guān)于w參數(shù)變化的誤差曲線,梯度下降每次前進(jìn)的距離既與當(dāng)前點(diǎn)導(dǎo)數(shù)相關(guān),也與我們自己設(shè)置的參數(shù)學(xué)習(xí)率有關(guān),像這樣w和b由機(jī)器自己學(xué)習(xí)得到的參數(shù)就是模型的參數(shù),我們可以設(shè)置的學(xué)習(xí)率等參數(shù)就稱為超參數(shù)(hyperparameters),當(dāng)權(quán)值迭代到wt時(shí),此時(shí)梯度變?yōu)?,權(quán)值就不會(huì)再更新,容易看出,梯度下降是容易陷入局部最小的,但是在實(shí)際的應(yīng)用中,反而往往不會(huì)陷入局部最小,這也不是我們?cè)谧隼缟窠?jīng)網(wǎng)絡(luò)的訓(xùn)練時(shí)所關(guān)注的問(wèn)題。
學(xué)習(xí)的參數(shù)有兩個(gè)時(shí)也是類似的做法,如下:
梯度為負(fù)時(shí),需要朝著梯度為0的方向增大,梯度為正時(shí),則需要向著梯度為0的方向減小,所以會(huì)帶有負(fù)號(hào)。
這時(shí)我們就完成了模型的訓(xùn)練,此處我們選擇線性model在訓(xùn)練集上實(shí)現(xiàn)的最低的loss是0.48k,之后預(yù)測(cè)未來(lái)2021.1.1到2021.2.14的數(shù)據(jù),得到的與真實(shí)值的差的絕對(duì)值的平均值為0.58k.
上圖給出了1.1到2.14預(yù)測(cè)值與真實(shí)值的比較,可以看出除了第一天之外,其余每一天的數(shù)據(jù)都像是把前一天的數(shù)據(jù)直接向右平移,這是不難理解的,因?yàn)槊恳惶祛A(yù)測(cè)值的點(diǎn)都是前一天的真實(shí)值乘以0.97再加上100,所以差別不會(huì)很大。但是我們這個(gè)時(shí)候會(huì)發(fā)現(xiàn)其實(shí)真實(shí)值呈現(xiàn)的是由一定的周期性的:一般以7為一個(gè)周期,具體解釋可能就是周末兩天大家會(huì)出去玩,那么我們?cè)诎l(fā)現(xiàn)這個(gè)規(guī)律之后,還用前一天去預(yù)測(cè)下一天就不太合適了,而應(yīng)該去用前七天的數(shù)據(jù)預(yù)測(cè)下一天的。
在第二行中,列出了此時(shí)的model,wj表示的是j天前,從最后訓(xùn)練得到的權(quán)值來(lái)看,前一天的權(quán)重對(duì)應(yīng)為0.79,對(duì)下一天的預(yù)測(cè)的影響是最大的,最后得到的訓(xùn)練集和測(cè)試集上的loss分別是0.38k和0.49k,之后我們?cè)賴L試使用前更多天的數(shù)據(jù),兩個(gè)loss就不會(huì)降太多了。此時(shí)我們使用的都是liner model,可見(jiàn)這種簡(jiǎn)單的model的性能到這里可能就不會(huì)提升了。
緊接著我們引入了分段線性函數(shù),如下面的紅色曲線,他可以由若干個(gè)藍(lán)色曲線進(jìn)行疊加再加上常量得到,對(duì)于一個(gè)一般的曲線,我們可以用很多個(gè)點(diǎn)將他分開(kāi),再依次用直線將這些點(diǎn)連接起來(lái),這樣我們就得到了一個(gè)比較復(fù)雜的分段線性函數(shù),這一函數(shù)也可以通過(guò)下面的方式進(jìn)行疊加,只不過(guò)可能藍(lán)色的曲線會(huì)用到很多。
在明白任意的曲線都可以通過(guò)這種方式進(jìn)行逼近后,我們需要知道藍(lán)色曲線的函數(shù)是怎么樣的,如下它就是由sigmoid函數(shù)變化而來(lái),而由于轉(zhuǎn)向比較犀利,被稱為Hard Sigmoid。
其中的參數(shù)w、b、c對(duì)sigmoid圖像的影響如下:
如上,我們將線性模型擴(kuò)展成通過(guò)若干個(gè)sigmoid函數(shù)疊加外加常數(shù)項(xiàng)逼近的任意的曲線,將考慮前j天的線性模型擴(kuò)展成最終的考慮多天的任意曲線的模型。
上圖做的事情是:模型采用下圖中的紅色分段線性函數(shù),然后特征選擇前三天的播放量,以此來(lái)預(yù)測(cè)下一天的播放量。這樣我們就繪制出了上圖中的網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)。
之后我們把x到r表示成矩陣乘法的關(guān)系。
最終的網(wǎng)絡(luò)結(jié)構(gòu)如下:
表示成線性代數(shù)中向量矩陣相乘的形式即為下圖下方的式子。
在得到這樣一個(gè)稍微復(fù)雜些的model之后,我們發(fā)現(xiàn)其中需要確定的參數(shù)很多,包括了標(biāo)量b、向量c的轉(zhuǎn)置、向量b、矩陣W,我們將所有元素都放在一個(gè)一維的行向量或列向量中,每個(gè)元素以seita標(biāo)注,以方便后續(xù)利用梯度下降求解最優(yōu)參數(shù),下圖一即為定義此模型下的loss函數(shù),下圖二和三即為通過(guò)梯度下降尋找參數(shù)最優(yōu)解的一個(gè)過(guò)程,迭代到梯度為0或者次數(shù)過(guò)多我們不想做為止。
通常由于數(shù)據(jù)集比較大,我們會(huì)將數(shù)據(jù)集分成若干個(gè)batch,分批去進(jìn)行參數(shù)尋優(yōu),每一個(gè)batch中的一次參數(shù)尋優(yōu)稱作一次update或者iteration,所有的batch都進(jìn)行完一次之后,稱作一個(gè)epoch。例如:一個(gè)數(shù)據(jù)集包含了1000個(gè)樣本,我們把它分成100組,每一組中有10個(gè)樣本,那么每一組中每一次的參數(shù)迭代就稱作一次update,所有的batch都完成這一次參數(shù)迭代后就稱作一個(gè)epoch,所以此時(shí)一個(gè)epoch實(shí)際包含了1000次update。
到此為止,我們可以處理的超參數(shù)包括了學(xué)習(xí)率、sigmoid函數(shù)的個(gè)數(shù)(即神經(jīng)元節(jié)點(diǎn)數(shù))、組的個(gè)數(shù)(batch size),這些都是我們可以自己調(diào)節(jié)的參數(shù)。
在上面進(jìn)行曲線擬合的過(guò)程中,我們除了使用sigmoid函數(shù)外,還可以使用ReLU函數(shù)(Rectified Linear Unit,整流線性單元函數(shù))進(jìn)行函數(shù)曲線的擬合。
上圖中要注意的地方是ReLU函數(shù)的累加符號(hào)下邊是2i,這是因?yàn)閮蓚€(gè)ReLU函數(shù)才可以疊加成一個(gè)hard sigmoid函數(shù),而后者是使用sigmoid進(jìn)行函數(shù)擬合的基本單元。
這就是兩種最常見(jiàn)的激活函數(shù),我們通過(guò)這些激活函數(shù)輸出的疊加來(lái)擬合模型中的函數(shù)曲線。
使用ReLU函數(shù)作為激活函數(shù)后,通過(guò)選擇不同的神經(jīng)元個(gè)數(shù),得到的訓(xùn)練集和測(cè)試集上損失函數(shù)的值如下:
進(jìn)一步,我們可以通過(guò)增加神經(jīng)網(wǎng)絡(luò)的層數(shù)來(lái)實(shí)現(xiàn)更低的Loss。
結(jié)果如下,其中每一層都包含了100個(gè)激活函數(shù)為ReLU的神經(jīng)元,輸入的特征是前56天的播放量數(shù)據(jù)(在線性模型中,采用56時(shí)得到了盡可能低的loss)。
測(cè)試集中真實(shí)值與預(yù)測(cè)值的對(duì)比如下。
當(dāng)再增加層數(shù)時(shí),雖然在測(cè)試集上表現(xiàn)更加優(yōu)異了,但是訓(xùn)練集上結(jié)果反而變差,這就出現(xiàn)了過(guò)擬合,網(wǎng)絡(luò)此時(shí)就陷入了自我小世界。
總結(jié)
以上是生活随笔為你收集整理的【强推】李宏毅老师2021深度学习课程学习笔记(持续更新中)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 新海诚没有参与制作的作品_超豪华的制作团
- 下一篇: Transfer Learning To