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

歡迎訪問 生活随笔!

生活随笔

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

pytorch

深度学习入门笔记(十四):Softmax

發布時間:2023/12/14 pytorch 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 深度学习入门笔记(十四):Softmax 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

歡迎關注WX公眾號:【程序員管小亮】

專欄——深度學習入門筆記

聲明

1)該文章整理自網上的大牛和機器學習專家無私奉獻的資料,具體引用的資料請看參考文獻。
2)本文僅供學術交流,非商用。所以每一部分具體的參考資料并沒有詳細對應。如果某部分不小心侵犯了大家的利益,還望海涵,并聯系博主刪除。
3)博主才疏學淺,文中如有不當之處,請各位指出,共同進步,謝謝。
4)此屬于第一版本,若有錯誤,還需繼續修正與增刪。還望大家多多指點。大家都共享一點點,一起為祖國科研的推進添磚加瓦。

文章目錄

  • 歡迎關注WX公眾號:【程序員管小亮】
    • 專欄——深度學習入門筆記
    • 聲明
    • 深度學習入門筆記(十四):Softmax
      • 1、Softmax 回歸
      • 2、訓練一個 Softmax 分類器
    • 推薦閱讀
    • 參考文章

深度學習入門筆記(十四):Softmax

1、Softmax 回歸

  • 如果是二分分類的話,只有兩種可能的標記——0或1,如果是貓咪識別例子,答案就是:這是一只貓或者不是一只貓;
  • 如果有多種可能的類型的話呢?有一種 logistic 回歸的一般形式,叫做 Softmax 回歸,能在試圖識別某一分類時做出預測,或者說是多種分類中的一個,不只是識別兩個分類,一起看一下。

假設不單單需要識別貓,而是想識別貓,狗和小雞,其中把貓稱為類1,狗為類2,小雞是類3,如果不屬于以上任何一類,就分到“其它”或者說“以上均不符合”這一類,把它稱為類0。

這里顯示的圖片及其對應的分類就是一個例子,這幅圖片上是一只小雞,所以是類3,貓是類1,狗是類2,如果猜測是一只考拉,那就是類0,下一個小雞,類3,以此類推。假設用符號大寫的 CCC 來表示輸入會被分的類別總個數,那么在這個例子中,共有4種可能的類別,包括貓、狗、小雞,還有“其它”或“以上均不符合”這一類。當有這4個分類時,指示類別的數字就是從0到 C?1C-1C?1,換句話說就是0、1、2、3。

如果在這個例子中想要建立一個神經網絡,那么其輸出層需要有4個,或者說 CCC 個輸出單元,如圖:

我們想要輸出層單元通過數字的方式,告訴我們這4種類型中判別為每個類別的概率有多大,所以這里的:

  • 第一個節點輸出的應該是或者說希望它輸出“其它”類的概率;
  • 第二個節點輸出的應該是或者說希望它輸出貓的概率;
  • 第三個節點輸出的應該是或者說希望它輸出狗的概率;
  • 第四個節點輸出的應該是或者說希望它輸出小雞的概率;

因此這里的輸出 y^\hat yy^? 將是一個 4×14×14×1 維向量,它必須輸出四個數字,代表四種概率,并且輸出中的四個數字加起來應該等于1才對。如果想讓網絡做到這一點,那么需要用到的標準模型是 Softmax 層,以及輸出層來生成輸出。

在神經網絡的最后一層,z[l]z^{[l]}z[l] 是最后一層的 zzz 變量,計算方法是:

z[l]=W[l]a[L?1]+b[l]z^{[l]} = W^{[l]}a^{[L-1]} + b^{[l]}z[l]=W[l]a[L?1]+b[l]

算出了 zzz 之后就需要應用 Softmax 激活函數了,這個激活函數對于 Softmax 層而言是有些不同,它的作用是這樣的:

  • 首先,計算一個臨時變量 t=ez[l]t=e^{z^{[l]}}t=ez[l],這適用于每個元素,而這里的 z[l]z^{[l]}z[l],在我們的例子中,z[l]z^{[l]}z[l] 是4×1的,四維向量 t=ez[l]t=e^{z^{[l]}}t=ez[l],這是對所有元素求冪;
  • 然后計算輸出的 a[l]a^{[l]}a[l],基本上就是向量 ttt,但是要做歸一化,使和為1,計算公式 a[l]=ti∑j=14ti=ez[l]∑j=14tia^{[l]} = \frac{t_{i}}{\sum_{j =1}^{4}t_{i}} = \frac{e^{z^{[l]}}}{\sum_{j =1}^{4}t_{i}}a[l]=j=14?ti?ti??=j=14?ti?ez[l]?

你可能不是很懂這個意思,別擔心,來看一個例子,詳細解釋一下上面的公式。

假設算出了z[l]z^{[l]}z[l]z[l]=[52?13]z^{[l]} = \begin{bmatrix} 5 \\ 2 \\ - 1 \\ 3 \\ \end{bmatrix}z[l]=?????52?13??????,我們要做的就是用上面的方法來計算 ttt,所以 t=[e5e2e?1e3]t =\begin{bmatrix} e^{5} \\ e^{2} \\ e^{- 1} \\ e^{3} \\ \end{bmatrix}t=?????e5e2e?1e3??????,當然如果按一下計算器的話,就會得到以下值 t=[148.47.40.420.1]t = \begin{bmatrix} 148.4 \\ 7.4 \\ 0.4 \\ 20.1 \\ \end{bmatrix}t=?????148.47.40.420.1??????。對向量 ttt 歸一化就能得到向量 a[l]a^{[l]}a[l],方法是把 ttt 的元素都加起來,得到176.3,計算公式是 a[l]=t176.3a^{[l]} = \frac{t} {176.3}a[l]=176.3t?,即可得:

  • 第一個節點,輸出 e5176.3=0.842\frac{e^{5}}{176.3} =0.842176.3e5?=0.842,這意味著,這張圖片是類0的概率就是84.2%。
  • 第二個節點,輸出 e2176.3=0.042\frac{e^{2}}{176.3} =0.042176.3e2?=0.042,這意味著,這張圖片是類1的概率就是4.2%。
  • 第三個節點,輸出 e?1176.3=0.002\frac{e^{- 1}}{176.3} =0.002176.3e?1?=0.002,這意味著,這張圖片是類2的概率就是0.2%。
  • 最后一個節點,輸出 e3176.3=0.114\frac{e^{3}}{176.3} =0.114176.3e3?=0.114,也就是這張圖片是類3的概率就是11.4%,也就是小雞組,對吧?

這就是它屬于類0,類1,類2,類3的可能性。

神經網絡的輸出 a[l]a^{[l]}a[l],也就是 y^\hat yy^?,是一個4×1維向量,就是算出來的這四個數字([0.8420.0420.0020.114]\begin{bmatrix} 0.842 \\ 0.042 \\ 0.002 \\ 0.114 \\ \end{bmatrix}?????0.8420.0420.0020.114??????),所以這種算法通過向量z[l]z^{[l]}z[l]計算出總和為1的四個概率。

Softmax 分類器還可以代表其它的什么東西么?

舉幾個例子,假設有兩個輸入 x1x_{1}x1?x2x_{2}x2?,它們直接輸入到 Softmax 層,有三四個或者更多的輸出節點,輸出 y^\hat yy^?。如果是一個沒有隱藏層的神經網絡,就是計算 z[1]=W[1]x+b[1]z^{[1]} = W^{[1]}x + b^{[1]}z[1]=W[1]x+b[1],而輸出的 a[l]a^{[l]}a[l],或者說 y^\hat yy^?a[l]=y=g(z[1])a^{[l]} = y = g(z^{[1]})a[l]=y=g(z[1]),就是 z[1]z^{[1]}z[1]Softmax 激活函數。

這個例子中(左邊圖),原始輸入只有 x1x_{1}x1?x2x_{2}x2?,一個 C=3C=3C=3 個輸出分類的 Softmax 層能夠代表這種類型的決策邊界,請注意這是幾條線性決策邊界,但這使得它能夠將數據分到3個類別中。在這張圖表中,我們所做的是選擇這張圖中顯示的訓練集,用數據的3種輸出標簽來訓練 Softmax 分類器,圖中的顏色顯示了 Softmax 分類器的輸出閾值,輸入的著色是基于三種輸出中概率最高的那種。因此可以看到這是 logistic 回歸的一般形式,有類似線性的決策邊界,但有超過兩個分類,分類不只有0和1,而是可以是0,1或2。中間圖是另一個 Softmax 分類器可以代表的決策邊界的例子,用有三個分類的數據集來訓練,還有右邊圖也是。

但是直覺告訴我們,任何兩個分類之間的決策邊界都是線性的,這就是為什么可以看到,比如黃色和紅色分類之間的決策邊界是線性邊界,紫色和紅色之間的也是線性邊界,紫色和黃色之間的也是線性決策邊界,但它能用這些不同的線性函數來把空間分成三類。

我們來看一下更多分類的例子:

這個例子中(左邊圖)C=4C=4C=4,因此這個綠色分類和 Softmax 仍舊可以代表多種分類之間的這些類型的線性決策邊界。另一個例子(中間圖)是 C=5C=5C=5 類,最后一個例子(右邊圖)是 C=6C=6C=6,這顯示了 Softmax 分類器在沒有隱藏層的情況下能夠做到的事情,當然更深的神經網絡會有 xxx,然后是一些隱藏單元,以及更多隱藏單元等等,因此可以學習更復雜的非線性決策邊界,來區分多種不同分類。

2、訓練一個 Softmax 分類器

如何學習訓練一個使用了 Softmax 層的模型?

回憶之前舉的的例子,輸出層計算出的 z[l]z^{[l]}z[l] 如下,z[l]=[52?13]z^{[l]} = \begin{bmatrix} 5 \\ 2 \\ - 1 \\ 3 \\ \end{bmatrix}z[l]=?????52?13??????,輸出層的激活函數 g[L]()g^{[L]}()g[L]()Softmax 激活函數,那么輸出就會是這樣的:

簡單來說就是歸一化,使總和為1,注意到向量 zzz 中,最大的元素是5,而最大的概率也就是第一種概率,為啥會這樣?

這要從頭講起,Softmax 這個名稱的來源是與所謂 hardmax 對比,hardmax 會把向量 zzz 變成這個向量 [1000]\begin{bmatrix} 1 \\ 0 \\ 0 \\ 0 \\ \end{bmatrix}?????1000??????hardmax 函數會觀察 zzz 的元素,然后在 zzz 中最大元素的位置放上1,其它位置放上0。

與之相反,Softmax 所做的從 zzz 到這些概率的映射更為溫和,不知道這是不是一個好名字,但至少這就是 softmax 這一名稱背后所包含的想法,與 hardmax 正好相反。

有一點沒有細講,但之前已經提到過的,就是 Softmax 回歸或 Softmax 激活函數將 logistic 激活函數推廣到 CCC 類,而不僅僅是兩類,如果 C=2C=2C=2,那么 Softmax 變回了 logistic 回歸。

接下來看怎樣訓練帶有 Softmax 輸出層的神經網絡,具體而言,先定義訓練神經網絡使會用到的損失函數。舉個例子,看看訓練集中某個樣本的目標輸出,真實標簽是 [0100]\begin{bmatrix} 0 \\ 1 \\ 0 \\ 0 \\ \end{bmatrix}?????0100??????,這表示這是一張貓的圖片,因為它屬于類1,現在假設神經網絡輸出的是 y^\hat yy^?y^\hat yy^? 是一個包括總和為1的概率的向量,y=[0.30.20.10.4]y = \begin{bmatrix} 0.3 \\ 0.2 \\ 0.1 \\ 0.4 \\ \end{bmatrix}y=?????0.30.20.10.4??????,總和為1,這就是 a[l]a^{[l]}a[l]a[l]=y=[0.30.20.10.4]a^{[l]} = y = \begin{bmatrix} 0.3 \\ 0.2 \\ 0.1 \\ 0.4 \\ \end{bmatrix}a[l]=y=?????0.30.20.10.4??????。所以你可以明顯看到對這個樣本來說神經網絡的表現不佳,這實際上是一只貓,但是貓的概率卻只有20%。

那么用什么損失函數來訓練這個神經網絡?

Softmax 分類中,一般用到的損失函數是 L(y^,y)=?∑j=14yjlogy^jL(\hat y,y ) = - \sum_{j = 1}^{4}{y_{j}log\hat y_{j}}L(y^?,y)=?j=14?yj?logy^?j?,現在用上面的樣本來驗證一下,方便更好地理解整個過程。注意在這個樣本中 y1=y3=y4=0y_{1} =y_{3} = y_{4} = 0y1?=y3?=y4?=0,因為這些都是0,只有 y2=1y_{2} =1y2?=1,所以如果看這個求和,所有含有值為0的 yjy_{j}yj? 的項都等于0,最后只剩下 ?y2tlogy^2-y_{2}t{log}\hat y_{2}?y2?tlogy^?2?,因為當按照下標 jjj 全部加起來,所有的項都為0,除了 j=2j=2j=2 時,又因為 y2=1y_{2}=1y2?=1,所以它就等于 ?logy^2- \ log\hat y_{2}??logy^?2?。即:

L(y^,y)=?∑j=14yjlog?y^j=?y2logy^2=?logy^2L\left( \hat y,y \right) = - \sum_{j = 1}^{4}{y_{j}\log \hat y_{j}} = - y_{2}{\ log} \hat y_{2} = - {\ log} \hat y_{2}L(y^?,y)=?j=14?yj?logy^?j?=?y2??logy^?2?=??logy^?2?

這就意味著,如果學習算法試圖將損失函數變小,就是使 ?log?y^2-{\log}\hat y_{2}?logy^?2? 變小,要想做到這一點,就需要使 y^2\hat y_{2}y^?2? 盡可能大,logloglog 函數雖然是遞增的,但是 ?log-log?log 函數是遞減的,這就講得通了。又因為在這個例子中 xxx 是貓的圖片,就需要貓這項輸出的概率盡可能地大(y=[0.30.20.10.4]y= \begin{bmatrix} 0.3 \\ 0.2 \\ 0.1 \\ 0.4 \\ \end{bmatrix}y=?????0.30.20.10.4?????? 中第二個元素)。

概括一下,損失函數所做的就是找到訓練集中的真實類別,然后試圖使該類別相應的概率盡可能地高,如果你熟悉統計學中最大似然估計,這其實就是最大似然估計的一種形式。但如果你不知道那是什么意思,也不用擔心,用剛講過的算法思維也足夠理解了。

上面所講的,是單個訓練樣本的損失,那么整個訓練集的損失 JJJ 又如何呢?也就是設定參數的代價之類的,還有各種形式偏差的代價,還是和之前講過的一樣,你大致也能猜到,就是整個訓練集損失的總和,把訓練算法對所有訓練樣本的預測都加起來:

J(w[1],b[1],……)=1m∑i=1mL(y^(i),y(i))J( w^{[1]},b^{[1]},\ldots\ldots) = \frac{1}{m}\sum_{i = 1}^{m}{L( \hat y^{(i)},y^{(i)})}J(w[1],b[1],)=m1?i=1m?L(y^?(i),y(i))

因此用梯度下降法,使損失最小化。

最后還有一個實現細節,注意!因為 C=4C=4C=4yyy 是一個4×1向量,如果向量化,矩陣大寫 YYY 就是 [y(1)y(2)……y(m)]\lbrack y^{(1)}\text{}y^{(2)}\ldots\ldots\ y^{\left( m \right)}\rbrack[y(1)y(2)?y(m)],舉個例子,如果上面的樣本是第一個訓練樣本,那么矩陣 Y=[001…100…010…000…]Y =\begin{bmatrix} 0 & 0 & 1 & \ldots \\ 1 & 0 & 0 & \ldots \\ 0 & 1 & 0 & \ldots \\ 0 & 0 & 0 & \ldots \\ \end{bmatrix}Y=?????0100?0010?1000???????,那么這個矩陣 YYY 最終就是一個 4×m4×m4×m 維矩陣。

類似的,Y^=[y^(1)y^(2)……y^(m)]\hat{Y} = \lbrack{\hat{y}}^{(1)}{\hat{y}}^{(2)} \ldots \ldots\ {\hat{y}}^{(m)}\rbrackY^=[y^?(1)y^?(2)?y^?(m)],其實就是 y^(1){\hat{y}}^{(1)}y^?(1)a[l](1)=y(1)=[0.30.20.10.4]a^{[l](1)} = y^{(1)} = \begin{bmatrix} 0.3 \\ 0.2 \\ 0.1 \\ 0.4 \\ \end{bmatrix}a[l](1)=y(1)=?????0.30.20.10.4??????),那么 Y^=[0.3…0.2…0.1…0.4…]\hat{Y} = \begin{bmatrix} 0.3 & \ldots \\ 0.2 & \ldots \\ 0.1 & \ldots \\ 0.4 & \ldots \\ \end{bmatrix}Y^=?????0.30.20.10.4???????Y^\hat{Y}Y^ 本身也是一個 4×m4×m4×m 維矩陣。

最后還是來看一下,在有 Softmax 輸出層時,如何實現梯度下降法,這個輸出層會計算 z[l]z^{[l]}z[l],它是 C×1C×1C×1 維的,在上面的例子中是4×1,然后用 Softmax 激活函數來得到 a[l]a^{[l]}a[l] 或者說 yyy,然后又能由此計算出損失。具體操作還是和之前見過的反向傳播一樣,不懂或者忘記的同學可以去查閱一下前面的筆記。

關于具體如何實現這個函數,下次課會開始使用一種深度學習編程框架,對于這些編程框架,通常只需要專注于把前向傳播做對即可,編程框架它自己會弄明白怎樣反向傳播,這也是為什么很多人被稱為調包俠的原因,因為編程框架會幫你搞定導數計算。

給一個 Python 實現 softmax 的小例子,理解理解公式:

# softmax函數,將線性回歸值轉化為概率的激活函數。 # 輸入s要是行向量 def softmax(s):return np.exp(s) / np.sum(np.exp(s), axis=1)

推薦閱讀

  • 深度學習入門筆記(一):深度學習引言
  • 深度學習入門筆記(二):神經網絡基礎
  • 深度學習入門筆記(三):求導和計算圖
  • 深度學習入門筆記(四):向量化
  • 深度學習入門筆記(五):神經網絡的編程基礎
  • 深度學習入門筆記(六):淺層神經網絡
  • 深度學習入門筆記(七):深層神經網絡
  • 深度學習入門筆記(八):深層網絡的原理
  • 深度學習入門筆記(九):深度學習數據處理
  • 深度學習入門筆記(十):正則化
  • 深度學習入門筆記(十一):權重初始化
  • 深度學習入門筆記(十二):深度學習數據讀取
  • 深度學習入門筆記(十三):批歸一化(Batch Normalization)
  • 深度學習入門筆記(十四):Softmax
  • 深度學習入門筆記(十五):深度學習框架(TensorFlow和Pytorch之爭)
  • 深度學習入門筆記(十六):計算機視覺之邊緣檢測
  • 深度學習入門筆記(十七):深度學習的極限在哪?
  • 深度學習入門筆記(十八):卷積神經網絡(一)
  • 深度學習入門筆記(十九):卷積神經網絡(二)
  • 深度學習入門筆記(二十):經典神經網絡(LeNet-5、AlexNet和VGGNet)

參考文章

  • 吳恩達——《神經網絡和深度學習》視頻課程

總結

以上是生活随笔為你收集整理的深度学习入门笔记(十四):Softmax的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 国产成人无码精品久久二区三 | 黄色片免费观看视频 | 最近中文字幕在线中文高清版 | 日韩毛片 | 亚洲成熟丰满熟妇高潮xxxxx | 五月婷久久| 国产三级按摩推拿按摩 | 少妇太爽了 | 在线a视频 | 美女一区二区三区视频 | 久久综合五月 | a级无遮挡超级高清-在线观看 | 欧美激情精品久久久久久 | 亚洲最新av| 在线午夜 | 黄色h视频 | 免费看欧美黄色片 | 99久久这里只有精品 | 久草视频免费在线播放 | 黄色在线免费观看 | 亚洲视频大全 | 久久久18禁一区二区三区精品 | 韩国三级hd两男一女 | 超碰超碰在线 | 少妇被粗大猛进进出出s小说 | 一个人看的www视频在线观看 | 超碰caopeng| 国产一区二区三区高清视频 | 欧美一区二区在线视频观看 | 中文字幕一区av | 精品免费在线视频 | 久久久久久久久久免费 | 九九热这里只有精品6 | 国产精品无码久久久久一区二区 | 国产伦精品一区二区三区妓女下载 | 久久人精品 | 欧美激情精品久久久久 | 喷潮在线观看 | 色干综合 | 免费不卡毛片 | 91色交视频 | 日本亚洲欧洲色 | 欧美一级网址 | 波多野结衣视频网站 | 九色国产在线 | 亚洲欧美中文字幕5发布 | 五月婷婷免费视频 | 亚洲爆爽 | 日韩熟女精品一区二区三区 | 九九视频精品在线 | 天天操天天插天天干 | a级片日本 | 三级久久久 | 91小仙女jk白丝袜呻吟 | 精品人伦一区二区三电影 | 国产在线拍揄自揄拍无码视频 | 九九热这里只有精品6 | 一区二区三区视频 | 日日操影院 | 国产999精品视频 | 欧美劲爆第一页 | 丨国产丨调教丨91丨 | 日噜| 色xxxxxx| 欧美第一页在线 | 加勒比一区在线 | 国产精品国产三级国产aⅴ浪潮 | 国产成人午夜精品无码区久久 | 国产成人自拍视频在线 | 美女张开腿让人桶 | 国产精品亚洲一区二区三区在线观看 | 天天操天天干天天插 | 精品乱子伦一区二区三区 | 欧美日韩操 | 九月激情网 | 少妇又紧又深又湿又爽视频 | 日韩专区视频 | 欧美精品乱码 | www.97ai.com| 伦理片中文字幕 | 国产综合久久久 | 在线看免费 | 欧美日韩黄色片 | 国产精品毛片久久久久久久 | 播播激情网 | 天天干网 | 波多野结衣www | 日韩视频在线观看 | 色爱AV综合网国产精品 | 青草青草视频 | 黑人精品一区二区三区 | 爱爱视频网站免费 | 色哟哟无码精品一区二区三区 | 小明天天看 | 亚洲国产高清视频 | 亚洲a精品 | sm调教羞耻姿势图片 | 国产精品福利一区 | 成人午夜视频免费在线观看 |