天天看點

動手學深度學習Pytorch版本學習筆記 Task 011.深度學習基礎模型

1.深度學習基礎模型

1.1線性回歸模型

動手學深度學習Pytorch版本學習筆記 Task 011.深度學習基礎模型

公式中xi表示第i個樣本的資料,當我們輸入X為矩陣[NXD]時,W大小為[DX1],b的大小為[Nx1],這樣公式計算出的結果為[NX1],參數W被稱為權重(weights)。b被稱為偏差向量(bias vector),這是因為它影響輸出數值,但是并不和原始資料産生關聯。在實際情況中,人們常常混用權重和參數這兩個術語。

下面是在學習Pytorch中遇到的的一些庫的使用了解

pytorch中資料讀取torch.utils.data.DataLoader的使用了解

pytorch中 nn.init 中實作的初始化函數

pytorch中nn.Sequential類

1.2softmax分類模型

Softmax的輸出(歸一化的分類機率)更加直覺,并且從機率上可以解釋,在Softmax分類器中,函數映射保持不變,但将這些評分值視為每個分類的未歸一化的對數機率,損失函數為交叉熵損失(cross-entropy loss)。

softmax 函數如下:

動手學深度學習Pytorch版本學習筆記 Task 011.深度學習基礎模型

交叉熵損失函數公式如下:

動手學深度學習Pytorch版本學習筆記 Task 011.深度學習基礎模型

解決softmax運算的上溢和下溢問題

1.3多層感覺機

如果全是線性變換的全連接配接層,則實際上跟單層網絡差別不大,中間需要添加非線性變換函數進行處理。

1.3.1權重初始化問題

1.權重要采用小随機數初始化始話的方式,因為如果網絡中的每個神經元權重都一樣的話,那麼計算出的都是同樣的輸出,然後它們就會在反向傳播中計算出同樣的梯度,進而進行同樣的參數更新。換句話說,如果權重被初始化為同樣的值,神經元之間就失去了不對稱性的源頭。

警告。并不是小數值一定會得到好的結果。例如,一個神經網絡的層中的權重值很小,那麼在反向傳播的時候就會計算出非常小的梯度(因為梯度與權重值是成比例的)。這就會很大程度上減小反向傳播中的“梯度信号”,在深度網絡中,就會出現問題。

2.使用1/sqrt(n)校準方差。上面做法存在一個問題,随着輸入資料量的增長,随機初始化的神經元的輸出資料的分布中的方差也在增大。我們可以除以輸入資料量的平方根來調整其數值範圍,這樣神經元輸出的方差就歸一化到1了。也就是說,建議将神經元的權重向量初始化為:w = np.random.randn(n) / sqrt(n)。其中n是輸入資料的數量。這樣就保證了網絡中所有神經元起始時有近似同樣的輸出分布。實踐經驗證明,這樣做可以提高收斂的速度。

3.批量歸一化(Batch Normalization)其做法是讓激活資料在訓練開始前通過一個網絡,網絡處理資料使其服從标準高斯分布。因為歸一化是一個簡單可求導的操作,是以上述思路是可行的。在實作層面,應用這個技巧通常意味着全連接配接層(或者是卷積層,後續會講)與激活函數之間添加一個BatchNorm層。在神經網絡中使用批量歸一化已經變得非常常見。在實踐中,使用了批量歸一化的網絡對于不好的初始值有更強的魯棒性。

4.Xavier, He initialization初始化

繼續閱讀