Task01&Task02. 動手學深度學習——從線性回歸出發(fā)

最近正在參加一個公益AI課程,學習深度學習,打卡監(jiān)督自己。由于剛開始學習pytorch和深度學習,進度比較慢,沒有時間仔細寫筆記,因此先簡單列出提綱,以后再進行補充。本文目錄如下:

Task01

  • 1.線性回歸
  • 2.logistic回歸
  • 3.softmax分類模型
  • 4.多層感知機

Task02

  • 1.文本預處理
    1. 語言模型
    1. 循環(huán)神經網絡基礎

1. 線性回歸

1.1 線性回歸的形式

y=W^TX+b

1.2 平方損失函數

如何衡量線性回歸模型擬合得怎么樣?一個直觀的想法就是預測值和真實值的相差越小越好,但是由于正負會相互抵消,因此不直接進行求和,而是取平方和。
\sum_{i=1}^{n}(\hat{y_i}-y_i)^2

1.3 如何估計系數?

模型中的待估系數包括Wb,應該如何估計這兩個系數呢?
我們的目標是最小化損失函數,也就是
argmin\sum_{i=1}^{n}(\hat{y_i}-y_i)^2
那么就有兩種思路,一種是求解析解,另一種是求數值解。

  • 解析解即最小化一階導數,解出Wb的表達式。
  • 很多情況下,最小化損失函數無法得到解析解,因此就需要求數值解,這里可以用梯度下降的方法求數值解。

1.4 補充知識點:梯度下降法

2. logistic回歸

2.1 sigmoid函數

線性回歸可以對y的值是連續(xù)值時建模,但我們想象一下,當我們的y值的值域是{0,1}時,用線性回歸模型顯然不合適,因為等式右邊的范圍時負無窮到正無窮。

但是,如果我們依然想利用線性回歸模型怎么辦呢?有一個方法就是想辦法將負無窮到正無窮映射到0到1區(qū)間。那么怎么映射呢?——sigmoid函數就是一個方法。
\text{sigmoid}(x) = \frac{1}{1 + \exp(-x)}.

2.2 logistic回歸的損失函數——交叉熵損失函數

對于樣本i,我們構造向量\boldsymbol{y}^{(i)}\in \mathbb{R}^{q} ,使其第y^{(i)}(樣本i類別的離散數值)個元素為1,其余為0。這樣我們的訓練目標可以設為使預測概率分布\boldsymbol{\hat y}^{(i)}盡可能接近真實的標簽概率分布\boldsymbol{y}^{(i)}。

  • 平方損失估計

\begin{aligned}Loss = |\boldsymbol{\hat y}^{(i)}-\boldsymbol{y}^{(i)}|^2/2\end{aligned}

然而,想要預測分類結果正確,我們其實并不需要預測概率完全等于標簽概率。例如,在圖像分類的例子里,如果y^{(i)}=3,那么我們只需要\hat{y}^{(i)}_3比其他兩個預測值\hat{y}^{(i)}_1\hat{y}^{(i)}_2大就行了。即使\hat{y}^{(i)}_3值為0.6,不管其他兩個預測值為多少,類別預測均正確。而平方損失則過于嚴格,例如\hat y^{(i)}_1=\hat y^{(i)}_2=0.2\hat y^{(i)}_1=0, \hat y^{(i)}_2=0.4的損失要小很多,雖然兩者都有同樣正確的分類預測結果。

改善上述問題的一個方法是使用更適合衡量兩個概率分布差異的測量函數。其中,交叉熵(cross entropy)是一個常用的衡量方法:

H\left(\boldsymbol y^{(i)}, \boldsymbol {\hat y}^{(i)}\right ) = -\sum_{j=1}^q y_j^{(i)} \log \hat y_j^{(i)},

其中帶下標的y_j^{(i)}是向量\boldsymbol y^{(i)}中非0即1的元素,需要注意將它與樣本i類別的離散數值,即不帶下標的y^{(i)}區(qū)分。在上式中,我們知道向量\boldsymbol y^{(i)}中只有第y^{(i)}個元素y^{(i)}{y^{(i)}}為1,其余全為0,于是H(\boldsymbol y^{(i)}, \boldsymbol {\hat y}^{(i)}) = -\log \hat y{y^{(i)}}^{(i)}。也就是說,交叉熵只關心對正確類別的預測概率,因為只要其值足夠大,就可以確保分類結果正確。當然,遇到一個樣本有多個標簽時,例如圖像里含有不止一個物體時,我們并不能做這一步簡化。但即便對于這種情況,交叉熵同樣只關心對圖像中出現的物體類別的預測概率。

假設訓練數據集的樣本數為n,交叉熵損失函數定義為
\ell(\boldsymbol{\Theta}) = \frac{1}{n} \sum_{i=1}^n H\left(\boldsymbol y^{(i)}, \boldsymbol {\hat y}^{(i)}\right ),

其中\boldsymbol{\Theta}代表模型參數。同樣地,如果每個樣本只有一個標簽,那么交叉熵損失可以簡寫成\ell(\boldsymbol{\Theta}) = -(1/n) \sum_{i=1}^n \log \hat y_{y^{(i)}}^{(i)}。從另一個角度來看,我們知道最小化\ell(\boldsymbol{\Theta})等價于最大化\exp(-n\ell(\boldsymbol{\Theta}))=\prod_{i=1}^n \hat y_{y^{(i)}}^{(i)},即最小化交叉熵損失函數等價于最大化訓練數據集所有標簽類別的聯(lián)合預測概率。

2.3 估計系數

這里依然使用梯度下降法

2.4 反向傳播

3. 多層感知機

3.1 softmax

logistic回歸能解決二分類問題,但是當y的取值是多個的情況下,就需要用到softmax進行分類。
softmax運算符(softmax operator)解決了以上兩個問題。它通過下式將輸出值變換成值為正且和為1的概率分布:

\hat{y}_1, \hat{y}_2, \hat{y}_3 = \text{softmax}(o_1, o_2, o_3)

其中

\hat{y}1 = \frac{ \exp(o_1)}{\sum_{i=1}^3 \exp(o_i)},\quad \hat{y}2 = \frac{ \exp(o_2)}{\sum_{i=1}^3 \exp(o_i)},\quad \hat{y}3 = \frac{ \exp(o_3)}{\sum_{i=1}^3 \exp(o_i)}.

容易看出\hat{y}_1 + \hat{y}_2 + \hat{y}_3 = 10 \leq \hat{y}_1, \hat{y}_2, \hat{y}_3 \leq 1,因此\hat{y}_1, \hat{y}_2, \hat{y}_3是一個合法的概率分布。這時候,如果\hat{y}_2=0.8,不管\hat{y}_1\hat{y}_3的值是多少,我們都知道圖像類別為貓的概率是80%。此外,我們注意到

\underset{i}{\arg\max} o_i = \underset{i}{\arg\max} \hat{y}_i

因此softmax運算不改變預測類別輸出。

4.多層感知機

其實logistic函數就是一個一層的神經網絡模型,但如果想要使網絡更加復雜,就可以在其中增加隱藏層。

4.1 不同的激活函數

  • sigmoid
  • tanh
  • ReLu

4.2 反向傳播

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容