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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人工智能 > pytorch >内容正文

pytorch

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

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

    • 一、基礎(chǔ)知識(shí)
    • 二、神經(jīng)網(wǎng)絡(luò)
      • 2.1 神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu):
      • 2.2 為什么神經(jīng)網(wǎng)絡(luò)在分類問題中的效果比較好:
      • 2.3 BP算法

一、基礎(chǔ)知識(shí)

線性分類器:

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

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

兩種理解方式:

1. 空間劃分

可以把w看成三個(gè)行向量,因?yàn)槊總€(gè)行都控制著不同類別的得分,三行w分別對(duì)應(yīng)不同的直線。當(dāng)我們確定了w和b之后,會(huì)確定一條直線,相當(dāng)于對(duì)平面進(jìn)行了一個(gè)劃分。

不同的w和b對(duì)應(yīng)空間中不同的超平面,對(duì)平面做區(qū)域劃分,在不同區(qū)域內(nèi),屬于不同的類。

2. 模板匹配

將每一行w看成每個(gè)類別的模板,

對(duì)同一個(gè)輸入x,用不同的模板去匹配它,看哪個(gè)模板的匹配度最高。

損失函數(shù):

損失函數(shù)是衡量預(yù)測和真實(shí)值的差別的,隨機(jī)初始化一組w之后,會(huì)根據(jù)最小化損失函數(shù)的方法來優(yōu)化w,使得損失函數(shù)最小。

不同的損失函數(shù),對(duì)應(yīng)不同的評(píng)估手段,不同的手段都能體現(xiàn)模型的學(xué)習(xí)能力,比如hingeloss,或softmax。

  • Hinge 損失

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

  • 交叉熵?fù)p失

為什么可以用交叉熵?fù)p失函數(shù)來衡量網(wǎng)絡(luò)?

熵的本質(zhì)是信息量的期望值,H(p)=pi×H(pi)H(p)=∑pi×H(pi),現(xiàn)在有關(guān)于樣本集的兩個(gè)分布p和q,其中p為真實(shí)分布,q為預(yù)測分布,比如深度學(xué)習(xí)的手寫體識(shí)別,預(yù)測得到的屬于每類的概率為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是真實(shí)的分布。最后肯定會(huì)選擇概率最大的3作為輸出,而真實(shí)分布為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散度(相對(duì)熵)來衡量兩個(gè)分布間的距離,且是非對(duì)稱的,也就是D(P||Q)D(Q||P)D(P||Q)≠D(Q||P),信息論中,也用D(P||Q)D(P||Q)來衡量利用概率分布Q來擬合真實(shí)分布P的時(shí)候,產(chǎn)生的信息損耗。當(dāng)KL散度的值越大,表示兩個(gè)概率分布的差距越大,KL散度和交叉熵的關(guān)系如下:

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)是一個(gè)真實(shí)分布的期望,因此與訓(xùn)練無關(guān),是一個(gè)常數(shù)項(xiàng),所以將原本的最小化相對(duì)熵,轉(zhuǎn)化為最小化交叉熵,

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

softmax:某個(gè)類別的得分的指數(shù)值,和所有得分的指數(shù)值的比值

為什么用指數(shù),因?yàn)橹笖?shù)可以避免負(fù)值的出現(xiàn)。

Si=eVijeVjSi=eVi∑jeVj

softmax可以將不同的得分函數(shù)轉(zhuǎn)化為屬于該類的概率值,轉(zhuǎn)化之后,概率之和為1。

eVieVi表示某個(gè)類別的線性得分函數(shù),SiSi表示屬于該類的概率輸出,由于log變換不會(huì)影響函數(shù)的單調(diào)性,故對(duì)SiSi進(jìn)行l(wèi)og變換,我們希望SiSi越大越好,即對(duì)應(yīng)正確類別的相對(duì)概率越大越好,所以對(duì)SiSi前面加一個(gè)負(fù)號(hào),來表示損失函數(shù),這就稱為交叉熵?fù)p失函數(shù)。

交叉熵?fù)p失函數(shù):

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

對(duì)上式進(jìn)行進(jìn)一步處理,約掉指數(shù):

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

假設(shè)線性輸出為:

計(jì)算損失函數(shù):

損失函數(shù)越小越好

二、神經(jīng)網(wǎng)絡(luò)

2.1 神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu):

由輸入+隱層+輸出來構(gòu)成

從邏輯回歸到神經(jīng)元感知器:

已最簡單的結(jié)構(gòu)來剖析神經(jīng)網(wǎng)絡(luò):感知器

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

經(jīng)過sigmoid映射到0~1的范圍內(nèi)的概率:

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

添加少量的隱藏層:

2.2 為什么神經(jīng)網(wǎng)絡(luò)在分類問題中的效果比較好:

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

對(duì)于非線性可以的情況:

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

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

神經(jīng)網(wǎng)絡(luò)如果劃分線性不可分的數(shù)據(jù):

左圖兩類樣本點(diǎn)的分割,線性分類器實(shí)現(xiàn)不了,右圖是利用兩條直線,將空間區(qū)分成了兩部分,求兩個(gè)直線的交集即可。

神經(jīng)元完成邏輯與:

  • 如果X1=0,X2=0,經(jīng)過sigmoid之后,輸出p->0;

  • 如果X1=0,X2=1,那么-10經(jīng)過sigmoid之后,p結(jié)果仍然接近于0

  • 如果X1=1,X2=0,那么-10經(jīng)過sigmoid之后,p結(jié)果仍然接近于0

  • 如果X1=1,X2=1,那么10經(jīng)過sigmoid之后,p結(jié)果接近于1

所以,感知器可以完成and的操作,當(dāng)兩個(gè)輸入都為1的時(shí)候,輸出才為1

神經(jīng)元完成邏輯或:

只要有1出現(xiàn),那么輸出都為1

神經(jīng)網(wǎng)絡(luò)如何完成非線性的分類:

構(gòu)建多個(gè)線性分類器,利用and操作來截出一個(gè)多邊形區(qū)域。找到三個(gè)綠色的區(qū)域,對(duì)綠色區(qū)域進(jìn)行一個(gè)or操作,就可以得到所有的綠色區(qū)域。

利用神經(jīng)網(wǎng)絡(luò)可以做任意的劃分

多加一個(gè)神經(jīng)元,可以多一條線,多加一層,可以多加一個(gè)or操作,多層可以實(shí)現(xiàn)異或問題。

神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu):

如果不添加非線性的激活函數(shù)的話,相當(dāng)于線性變換的堆疊,還是沒有逼近任何非線性信號(hào)的能力。

沒有必要去深扣每個(gè)神經(jīng)元到底在提取什么信號(hào)

2.3 BP算法

正向傳播:求損失

反向傳播:回傳誤差,根據(jù)誤差信號(hào)修正每層的權(quán)重

前面的所有層都要對(duì)最后的預(yù)測負(fù)責(zé),所以要將誤差一層一層的往前傳,更新每個(gè)神經(jīng)元的參數(shù)。

以3層感知器為例:

標(biāo)準(zhǔn)答案是[d1,d2,…,dL](回歸利用L2損失)

求函數(shù)的最小值,一般用一階的方式來求解,二階的Hessian矩陣存儲(chǔ)所需內(nèi)存很大,難以實(shí)現(xiàn)。

SGD最小化誤差函數(shù):

復(fù)合函數(shù)f(g(h(x)))f(g(h(x)))的導(dǎo)數(shù),是鏈?zhǔn)椒▌t,也就是h(x)?g(h(x))?f(g(h(x)))h′(x)?g(h(x))?f′(g(h(x))),需要一步步往前推導(dǎo),得到f對(duì)x的偏導(dǎo)。

BP算法的示例:

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

前向傳播計(jì)算誤差:

反向傳播計(jì)算梯度:

  • 前向傳播計(jì)算損失

  • 計(jì)算對(duì)w5的更新

  • 計(jì)算對(duì)w1的更新

    w1對(duì)Etotal都會(huì)起作用,也就是Etotal=Etotal1+Etotal2,是一個(gè)求和的過程。

  • 反向傳播是將誤差對(duì)該權(quán)值的梯度回傳,利用該梯度進(jìn)行權(quán)重的更新。

    總結(jié)

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

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。