日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > pytorch >内容正文

pytorch

【强推】李宏毅老师2021深度学习课程学习笔记(持续更新中)

發布時間:2023/12/8 pytorch 56 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【强推】李宏毅老师2021深度学习课程学习笔记(持续更新中) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

機器學習可以理解為是讓機器自動尋找函數的一個過程。

根據函數功能的不同,可以將機器學習進行以下分類。

Alpha Go做的事情也是一個分類問題:將當前棋盤上白子黑子的位置作為輸入,輸出是19*19個calsses中的一個。

如果知道了李宏毅老師Youtube過去三年每一天的播放量數據,去預測明天的播放量數據,可以假定一個包含了兩個參數w和b的線性模型,輸入x1為前一天的數據(如2.25),y為預測的當前一天的數據(如2.26)

損失函數是一個關于模型參數的函數,用來評價模型及模型參數選擇的優劣,此處我們可以通過平均絕對誤差進行評價。將第一天的數據代入模型函數得到第二天的預測值,與真實值相差的絕對值為e1,類似的將第二天數據代入預測第三天,與第三天真實值之差的絕對值為e2,最后得到en,并把這些相加取平均,這就是平均絕對誤差(MAE)。除此之外,還有MSE(均方誤差)以及RMSE(均方根誤差)等。



我們可以嘗試不同的參數w和b,都去計算loss的值,并繪制出等高線圖,其中越偏紅色系表示loss越大,越偏藍色系表示loss越小,最好的參數應該在w=1,b=250附近。更精確的尋找的話,可以通過梯度下降的方法。如下圖中我們就是將b確定,L關于w參數變化的誤差曲線,梯度下降每次前進的距離既與當前點導數相關,也與我們自己設置的參數學習率有關,像這樣w和b由機器自己學習得到的參數就是模型的參數,我們可以設置的學習率等參數就稱為超參數(hyperparameters),當權值迭代到wt時,此時梯度變為0,權值就不會再更新,容易看出,梯度下降是容易陷入局部最小的,但是在實際的應用中,反而往往不會陷入局部最小,這也不是我們在做例如神經網絡的訓練時所關注的問題。

學習的參數有兩個時也是類似的做法,如下:


梯度為負時,需要朝著梯度為0的方向增大,梯度為正時,則需要向著梯度為0的方向減小,所以會帶有負號。

這時我們就完成了模型的訓練,此處我們選擇線性model在訓練集上實現的最低的loss是0.48k,之后預測未來2021.1.1到2021.2.14的數據,得到的與真實值的差的絕對值的平均值為0.58k.

上圖給出了1.1到2.14預測值與真實值的比較,可以看出除了第一天之外,其余每一天的數據都像是把前一天的數據直接向右平移,這是不難理解的,因為每一天預測值的點都是前一天的真實值乘以0.97再加上100,所以差別不會很大。但是我們這個時候會發現其實真實值呈現的是由一定的周期性的:一般以7為一個周期,具體解釋可能就是周末兩天大家會出去玩,那么我們在發現這個規律之后,還用前一天去預測下一天就不太合適了,而應該去用前七天的數據預測下一天的。

在第二行中,列出了此時的model,wj表示的是j天前,從最后訓練得到的權值來看,前一天的權重對應為0.79,對下一天的預測的影響是最大的,最后得到的訓練集和測試集上的loss分別是0.38k和0.49k,之后我們再嘗試使用前更多天的數據,兩個loss就不會降太多了。此時我們使用的都是liner model,可見這種簡單的model的性能到這里可能就不會提升了。

緊接著我們引入了分段線性函數,如下面的紅色曲線,他可以由若干個藍色曲線進行疊加再加上常量得到,對于一個一般的曲線,我們可以用很多個點將他分開,再依次用直線將這些點連接起來,這樣我們就得到了一個比較復雜的分段線性函數,這一函數也可以通過下面的方式進行疊加,只不過可能藍色的曲線會用到很多。

在明白任意的曲線都可以通過這種方式進行逼近后,我們需要知道藍色曲線的函數是怎么樣的,如下它就是由sigmoid函數變化而來,而由于轉向比較犀利,被稱為Hard Sigmoid。

其中的參數w、b、c對sigmoid圖像的影響如下:


如上,我們將線性模型擴展成通過若干個sigmoid函數疊加外加常數項逼近的任意的曲線,將考慮前j天的線性模型擴展成最終的考慮多天的任意曲線的模型。

上圖做的事情是:模型采用下圖中的紅色分段線性函數,然后特征選擇前三天的播放量,以此來預測下一天的播放量。這樣我們就繪制出了上圖中的網絡的拓撲結構。

之后我們把x到r表示成矩陣乘法的關系。

最終的網絡結構如下:

表示成線性代數中向量矩陣相乘的形式即為下圖下方的式子。

在得到這樣一個稍微復雜些的model之后,我們發現其中需要確定的參數很多,包括了標量b、向量c的轉置、向量b、矩陣W,我們將所有元素都放在一個一維的行向量或列向量中,每個元素以seita標注,以方便后續利用梯度下降求解最優參數,下圖一即為定義此模型下的loss函數,下圖二和三即為通過梯度下降尋找參數最優解的一個過程,迭代到梯度為0或者次數過多我們不想做為止。



通常由于數據集比較大,我們會將數據集分成若干個batch,分批去進行參數尋優,每一個batch中的一次參數尋優稱作一次update或者iteration,所有的batch都進行完一次之后,稱作一個epoch。例如:一個數據集包含了1000個樣本,我們把它分成100組,每一組中有10個樣本,那么每一組中每一次的參數迭代就稱作一次update,所有的batch都完成這一次參數迭代后就稱作一個epoch,所以此時一個epoch實際包含了1000次update。

到此為止,我們可以處理的超參數包括了學習率、sigmoid函數的個數(即神經元節點數)、組的個數(batch size),這些都是我們可以自己調節的參數。

在上面進行曲線擬合的過程中,我們除了使用sigmoid函數外,還可以使用ReLU函數(Rectified Linear Unit,整流線性單元函數)進行函數曲線的擬合。


上圖中要注意的地方是ReLU函數的累加符號下邊是2i,這是因為兩個ReLU函數才可以疊加成一個hard sigmoid函數,而后者是使用sigmoid進行函數擬合的基本單元。

這就是兩種最常見的激活函數,我們通過這些激活函數輸出的疊加來擬合模型中的函數曲線。

使用ReLU函數作為激活函數后,通過選擇不同的神經元個數,得到的訓練集和測試集上損失函數的值如下:

進一步,我們可以通過增加神經網絡的層數來實現更低的Loss。

結果如下,其中每一層都包含了100個激活函數為ReLU的神經元,輸入的特征是前56天的播放量數據(在線性模型中,采用56時得到了盡可能低的loss)。

測試集中真實值與預測值的對比如下。


當再增加層數時,雖然在測試集上表現更加優異了,但是訓練集上結果反而變差,這就出現了過擬合,網絡此時就陷入了自我小世界。

總結

以上是生活随笔為你收集整理的【强推】李宏毅老师2021深度学习课程学习笔记(持续更新中)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。