深度學習必備基礎知識

 線性分類器                                網絡

1.線性分類器得分函數函數

CIFAR-10:一共有10個類別,幾千張圖片的分類任務學習

給你一張圖片,而後得出每一個類別的分數是多少,結果是一個得分向量score-vector測試

咱們把[32,32,3]的圖片當作x,線性分類器就是給出權重W,獲得10個得分優化

簡單一點,咱們把32*32*3的矩陣拉成一個3072*1的向量,最後咱們想獲得10維的得分向量,那麼咱們的權重W就得是10*3072的矩陣,相乘後獲得10*1的向量編碼

  f是一個函數,它所作的事情很是簡單,就是就輸入矩陣映射成爲得分向量,決定這個得分函數的就是W,咱們但願獲得最合適的一組W。spa

  識別圖像---其實就是分類問題 .net

圖片識別是計算機視覺的核心任務
每一個圖片是由像素組成的
200*200*3=12000個像素值(特徵)3d

單通道:灰度值【0~255】
一個像素點只有一個值blog

三通道:RGB
一個像素點有三個值組成

  圖像數字化三要素:長度,寬度,通道數

  給你一張圖片,也就是一個矩陣,讓你完成一個任務,識別圖像中的內容找出分類,一共有10個類別幾千張圖片

  把你輸入的矩陣x,經過f,映射爲一個得分向量

  把圖像作一個reshape,將其拉成一個一維3072*1的向量。

 

  爲了獲得一個10*1的矩陣(向量),要配給W一個10*3072,因此10*3072 與 3072*1 相乘,獲得一個10*1的列向量,就認爲是一個10維的得分向量

  實例:

 

 

咱們輸入一個圖像,拉伸後成爲1維,爲了方便,簡單爲4*1的向量,得分向量爲3個分類,3*1,因而咱們的W就要是一個3*4的矩陣,線性分類器嘛,有偏置項b(wile增長靈活性),最後咱們獲得y=W*x+b的線性函數(得分函數,y就是得分向量)。

上面的W在dog類別中得分最高,這顯然不是咱們想要的,咱們想要的是在正確的類別上有較高的得分,在錯誤的類別得分較低,因此咱們要作的是修正這個W,使咱們輸入一張圖片後,在正確的類別上得分最高。

二、線性分類器的理解---空間劃分

  Wx+b是空間的點

 

上面的例子中,有3個類別,咱們能夠把W的第一行+b看作是決定第一個類別的最終得分,W的第二行+b決定第二個類別的分數,以此類推,咱們三個不一樣的W和b其實就是對於空間中進行了劃分,至關於三個直線(確切說是超平面,)而後咱們輸入不一樣的x,其實就是空間中的不一樣區域。

線性分類器的理解---模板匹配(模板指的是W中的某一行)

 

 

W的每一行能夠看作是其中一個類別的模板

每類得分,其實是像素點和模板匹配度

模板匹配的方式是內積運算

沒有b的狀況:

注意哈:有些寫成了y=wx,沒有偏置項b,多是這樣處理的---將偏置項的值裝到了W矩陣的最後一列,而後在x向量中增長一個1,也就是:

三、損失函數 LossFunction/CostFunction--衡量吻合程度

給定W,能夠由像素映射到類目得分

能夠調節參數(權重)W,使得映射的結果和實際類別吻合

損失函數是用來衡量吻合程度的。

損失函數1:hinge loss支持向量機SVM損失

給你一套試卷,要求你在正確題目的得分要比其餘任何錯誤題目的得分要高出來一個值Δ,你要是全部的都高出了Δ,好,不動,要是沒有高出,那就加一個懲罰值(你缺的多少就懲罰多少)

具體:

對於訓練集上第i張圖片數據xi

在W下會有一個得分結果向量f(xi,W)

第j類的得分爲f(xi,W)j

則在該樣本上損失咱們由下列公式計算獲得

如今咱們由三個類別,而得分函數計算某張圖片的得分爲f(xi,W)= [13,-7,11],而實際的結果是第一類yi=0,假設Δ=10(在正確的類別上的得分比錯誤上的類別高出至少10分),上面的公式把錯誤類別(j不等於yi)都遍歷一遍,求值加和:

 

 

  咱們看一下這種狀況:

f(x,w1)=1*1+1*0+1*0+1*0=1

f(x,w2)=1*0.25*4 = 1

咱們發現不一樣的權重結果居然相同,那麼這種狀況下咱們應該選擇哪一種參數呢?或者說哪一個參數更好呢?其實咱們能夠猜到,第二種效果更好,由於他考慮到了全部的x,第一種的話他只考慮到了第一個參數,這樣的話很容易出現過擬合的狀況,即訓練集上效果很是好,但測試集上效果卻很差。所以第二種更好,可是有沒有一種什麼方法讓咱們把第二種挑出來呢?固然是有的,那就是加入一個正則化懲罰項

  L(W1)的正則化懲罰 = 1^2+0^2 + 0+0=1

  L(w2)的正則化懲罰 = (1/4)^2 +  (1/4)^2 +  (1/4)^2  + (1/4)^2  = 1/4

  這樣w2的正則化懲罰就會更小,w1的懲罰會更大,咱們就會更承認w2,整體損失函數就會更小,咱們就會選擇w2了。

  最後除以N是由於要避免樣本個數對結果的影響,樣本個數對於模型的好壞是沒有影響的。

softMax(歸一化的分類機率)

損失函數2:cross-entropy(交叉熵)

作一個歸一化,在A、B、C、D四個選項中選擇他們的機率有多高,我本身有一份標準答案(機率向量),評估你獲得的機率和個人標準答案(機率)之間的距離

對於訓練集中的第i張圖片數據xi

在W下會有一個得分結果向量fyi

則損失函數記作:

 

   

其輸入值是一個向量,向量中元素爲任意實數的
評分值
輸出一個向量,其中每一個元素值在0到1之間,且
全部元素之和爲1

實際工程中計算的方法是

 

 

由於e的指數次方是得分,若是過高的話容易溢出

其實softmax損失就是將以前的得分換成了機率。

softmax實例

 

2種損失函數的對比

 

SVM的隨機函數有一個缺點,當錯誤類別和正確類別的得分很是接近時,好比說正好相差△,那麼損失函數結果爲0,但其實分類結果並很差,可是softmax的話對於每個分類結果都會對值進行e次冪,這樣差距就會放大不少,在通過softmax機率變換,就會獲得最優的結果。softmax分類器是一種永不知知足的分類器。

 

最優化

 

矩陣相乘W*x+b獲得了得分向量,而後咱們首先是hingeloss(SVM),就是算正確類別的得分要比錯誤類別的得分高出一個Δ,而後高了沒問題,沒高就補充缺乏的分數,交叉熵損失就是將得分向量轉化爲了機率(轉換公式),而後作一個歸一化,我本身有一個標準答案,而後評估你的機率和標準答案之間的距離。注意點,交叉熵損失要對目標值one-hot編碼。

4.最優化和梯度降低

當咱們經過分類器得到一個預測值,咱們會求得一組參數,那麼咱們怎麼知道這個參數時好是壞呢?這就引入了損失函數,損失函數越小說明預測值和真實值越接近。可是,咱們知道了如何評判參數的好壞,咱們應該如何獲得最優參數解呢?咱們知道,一次求解確定是不夠的,能獲得最優參數的機率微乎其微,因此咱們就要經過屢次迭代求得最優解。這使就引出了梯度降低,梯度降低是一種經過迭代屢次求解參數的方式。咱們能夠理解成計算機是一個蒙着眼睛的人,他要尋找山坡的最低點,而最低點就是最優解,使得損失函數最小的值。

 

  由於咱們的目標是獲得最優解,所以咱們要告訴計算機最優解是什麼樣子的,或者說告訴它你走那個方向是正確的。這個方向就是咱們對參數進行求導的結果,咱們知道導數的幾何意義就是某個函數在這個點的切線的斜率,所以,根據這個特性,咱們能夠知道梯度降低的方向,知道方向之後,還有一個問題,就是我應該走多快呢?或者說一步走多遠呢?咱們能夠想象,步子太大的話可能會越過最低點,到達另外一個山頭。所以,一般狀況下,咱們會選擇一個小的學習率,慢慢的尋找最優解。

  經過測試咱們也能夠知道,學習率對於結果有很大的影響。

反向傳播

 

 

 

 

 

 正向傳播鏈式法則

 

 

 

 神經網絡就是一系列反向傳播的過程。

 

關於softmax和cross entrop的詳細解讀,推薦這篇文章 http://www.javashuo.com/article/p-rrpkcppi-np.html

相關文章
相關標籤/搜索