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

歡迎訪問 生活随笔!

生活随笔

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

pytorch

一、深度学习背景与人工神经网络

發布時間:2023/12/15 pytorch 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一、深度学习背景与人工神经网络 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

    • 一、基礎知識
    • 二、神經網絡
      • 2.1 神經網絡的結構:
      • 2.2 為什么神經網絡在分類問題中的效果比較好:
      • 2.3 BP算法

一、基礎知識

線性分類器:

工業界有很多算法完成分類的問題,比如線性分類器,輸入一張32x32x3的矩陣,利用f(wx+b)得到屬于不同類別的得分向量,

方便演示,x列向量只選了4個值,w為3x4的矩陣,偏置項是為了讓分類線可以上下平移,更好的分類,我們希望正確類別的得分比較高。

兩種理解方式:

1. 空間劃分

可以把w看成三個行向量,因為每個行都控制著不同類別的得分,三行w分別對應不同的直線。當我們確定了w和b之后,會確定一條直線,相當于對平面進行了一個劃分。

不同的w和b對應空間中不同的超平面,對平面做區域劃分,在不同區域內,屬于不同的類。

2. 模板匹配

將每一行w看成每個類別的模板,

對同一個輸入x,用不同的模板去匹配它,看哪個模板的匹配度最高。

損失函數:

損失函數是衡量預測和真實值的差別的,隨機初始化一組w之后,會根據最小化損失函數的方法來優化w,使得損失函數最小。

不同的損失函數,對應不同的評估手段,不同的手段都能體現模型的學習能力,比如hingeloss,或softmax。

  • Hinge 損失

    正確的得分比錯誤的得分大于delta的時候,不做懲罰,如果兩者的差小于delta,則利用兩者的差+delta作為損失值。

  • 交叉熵損失

為什么可以用交叉熵損失函數來衡量網絡?

熵的本質是信息量的期望值,H(p)=pi×H(pi)H(p)=∑pi×H(pi),現在有關于樣本集的兩個分布p和q,其中p為真實分布,q為預測分布,比如深度學習的手寫體識別,預測得到的屬于每類的概率為q(0)=0.0,q(1)=0.1,q(2)=0.1,q(3)=0.8,q(4)=0,q(0)=0.0,q(1)=0.1,q(2)=0.1,q(3)=0.8,q(4)=0,…,q是真實的分布。最后肯定會選擇概率最大的3作為輸出,而真實分布為p(0)=0,p(1)=0,p(2)=0,p(3)=1,p(4)=0...p(0)=0,p(1)=0,p(2)=0,p(3)=1,p(4)=0...,于是,我們想做的就是讓p和q的分布盡可能一樣。

概率論或信息論中,利用KL散度(相對熵)來衡量兩個分布間的距離,且是非對稱的,也就是D(P||Q)D(Q||P)D(P||Q)≠D(Q||P),信息論中,也用D(P||Q)D(P||Q)來衡量利用概率分布Q來擬合真實分布P的時候,產生的信息損耗。當KL散度的值越大,表示兩個概率分布的差距越大,KL散度和交叉熵的關系如下:

KL散度:

DKL=pilogpiqiDKL=∑pilogpiqi

交叉熵(CH):

CH(pi,qi)=?pilogqi=pilogpi?pilogqi?pilogpiCH(pi,qi)=?∑pilogqi=∑pilogpi?∑pilogqi?∑pilogpi CH(pi,qi)=H(pi)+pilogpiqi∴CH(pi,qi)=H(pi)+∑pilogpiqi

交叉熵=熵+KL散度

H(pi)H(pi)是一個真實分布的期望,因此與訓練無關,是一個常數項,所以將原本的最小化相對熵,轉化為最小化交叉熵,

一般情況,我們希望將得分函數轉化為分為某一類的概率,多分類情況下利用softmax來完成。

softmax:某個類別的得分的指數值,和所有得分的指數值的比值

為什么用指數,因為指數可以避免負值的出現。

Si=eVijeVjSi=eVi∑jeVj

softmax可以將不同的得分函數轉化為屬于該類的概率值,轉化之后,概率之和為1。

eVieVi表示某個類別的線性得分函數,SiSi表示屬于該類的概率輸出,由于log變換不會影響函數的單調性,故對SiSi進行log變換,我們希望SiSi越大越好,即對應正確類別的相對概率越大越好,所以對SiSi前面加一個負號,來表示損失函數,這就稱為交叉熵損失函數。

交叉熵損失函數:

Li=?log(eVieVj)Li=?log(eVi∑eVj)

對上式進行進一步處理,約掉指數:

Li=?logeVi?logjeVj=?Vj+logjeVjLi=?logeVi?log∑jeVj=?Vj+log∑jeVj

假設線性輸出為:

計算損失函數:

損失函數越小越好

二、神經網絡

2.1 神經網絡的結構:

由輸入+隱層+輸出來構成

從邏輯回歸到神經元感知器:

已最簡單的結構來剖析神經網絡:感知器

線性輸出:
z=θ0+θ1+θ2z=θ0+θ1+θ2

經過sigmoid映射到0~1的范圍內的概率:

a=g(z)=11+e?za=g(z)=11+e?z
利用閾值0.5作為判定是正類還是負類

添加少量的隱藏層:

2.2 為什么神經網絡在分類問題中的效果比較好:

LR或SVM是線性分類器,是利用一條決策邊界,去將正負樣本區分開

對于非線性可以的情況:

SVM會用核函數來升維,但是做不了可視化,無法看到升維之后的樣本是什么樣子的,維度很高,無法判斷哪些特征有用,不可控性高。

如何用線性分類器做非線性分類——GBDT或kernel SVM,但是這些方法對劃分的準確率卻沒有那么高。

神經網絡如果劃分線性不可分的數據:

左圖兩類樣本點的分割,線性分類器實現不了,右圖是利用兩條直線,將空間區分成了兩部分,求兩個直線的交集即可。

神經元完成邏輯與:

  • 如果X1=0,X2=0,經過sigmoid之后,輸出p->0;

  • 如果X1=0,X2=1,那么-10經過sigmoid之后,p結果仍然接近于0

  • 如果X1=1,X2=0,那么-10經過sigmoid之后,p結果仍然接近于0

  • 如果X1=1,X2=1,那么10經過sigmoid之后,p結果接近于1

所以,感知器可以完成and的操作,當兩個輸入都為1的時候,輸出才為1

神經元完成邏輯或:

只要有1出現,那么輸出都為1

神經網絡如何完成非線性的分類:

構建多個線性分類器,利用and操作來截出一個多邊形區域。找到三個綠色的區域,對綠色區域進行一個or操作,就可以得到所有的綠色區域。

利用神經網絡可以做任意的劃分

多加一個神經元,可以多一條線,多加一層,可以多加一個or操作,多層可以實現異或問題。

神經網絡的結構:

如果不添加非線性的激活函數的話,相當于線性變換的堆疊,還是沒有逼近任何非線性信號的能力。

沒有必要去深扣每個神經元到底在提取什么信號

2.3 BP算法

正向傳播:求損失

反向傳播:回傳誤差,根據誤差信號修正每層的權重

前面的所有層都要對最后的預測負責,所以要將誤差一層一層的往前傳,更新每個神經元的參數。

以3層感知器為例:

標準答案是[d1,d2,…,dL](回歸利用L2損失)

求函數的最小值,一般用一階的方式來求解,二階的Hessian矩陣存儲所需內存很大,難以實現。

SGD最小化誤差函數:

復合函數f(g(h(x)))f(g(h(x)))的導數,是鏈式法則,也就是h(x)?g(h(x))?f(g(h(x)))h′(x)?g(h(x))?f′(g(h(x))),需要一步步往前推導,得到f對x的偏導。

BP算法的示例:

希望找到合適的w和b,使得結果為0.01和0.99。

前向傳播計算誤差:

反向傳播計算梯度:

  • 前向傳播計算損失

  • 計算對w5的更新

  • 計算對w1的更新

    w1對Etotal都會起作用,也就是Etotal=Etotal1+Etotal2,是一個求和的過程。

  • 反向傳播是將誤差對該權值的梯度回傳,利用該梯度進行權重的更新。

    總結

    以上是生活随笔為你收集整理的一、深度学习背景与人工神经网络的全部內容,希望文章能夠幫你解決所遇到的問題。

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