1. 程式人生 > >【深度學習CV】SVM, Softmax損失函式

【深度學習CV】SVM, Softmax損失函式

Deep learning在計算機視覺方面具有廣泛的應用,包括影象分類、目標識別、語義分隔、生成影象描述等各個方面。本系列部落格將分享自己在這些方面的學習和認識,如有問題,歡迎交流。

在使用卷積神經網路進行分類任務時,往往使用以下幾類損失函式:

  • 平方誤差損失
  • SVM損失
  • softmax損失

其中,平方誤差損失在分類問題中效果不佳,一般用於迴歸問題。softmax損失函式和SVM(多分類)損失函式在實際應用中非常廣泛。本文將對這兩種損失函式做簡單介紹,包括損失函式的計算、梯度的求解以及python中使用Numpy庫函式進行實現。

SVM多分類

1. 損失函式

L

i=jyimax(0,fjfyi+Δ)

在實際使用中,Δ 的值一般取1,代表間隔。

在神經網路中,由於我們的評分函式是:
f=Wx
因此,可以將損失函式改寫如下:
Li=jyimax(0,WTjxiWTyixi+Δ)

如果考慮整個訓練集合上的平均損失,包括正則項,則公式如下:
L=1Nijyi[max(0,f(xi;W)jf(xi;W)yi+Δ)]+λklW2k,l

直觀理解:
多類SVM“想要”正確類別的分類分數比其他不正確分類類別的分數要高,而且至少高出delta的邊界值。如果其他分類分數進入了紅色的區域,甚至更高,那麼就開始計算損失。如果沒有這些情況,損失值為0。我們的目標是找到一些權重,它們既能夠讓訓練集中的資料樣例滿足這些限制,也能讓總的損失值儘可能地低。


這裡寫圖片描述



舉一個具體的例子:

例子來源於 斯坦福CS231n 課件。第一張圖片是貓,神經網路計算得出其三個類別的分值分別為 3.2, 5.1 和 -1.7。很明顯,理想情況下貓的分值應該高與其他兩種類別,但根據計算結果,car的分值最高,因此在當前的權值設定下,該 network 會把這張圖片分類為 car。此時我們可以根據公式計算損失

損失計算如下:(S代表Score,即分值)
Li=max(0,ScarScat+Δ)+max(0,SfrogScat+Δ)=2.9+0

這裡寫圖片描述

2. 梯度公式推導

設定以下變數:
- 矩陣 W 代表權值,維度是 DC,其中 D 代表特徵的維度,C

代表類別數目。
- 矩陣 X 代表樣本集合,維度是 ND, 其中 N 代表樣本個數。
- 分值計算公式為 f=XW,其維度為 NC, 每行代表一個樣本的不同類別的分值。

對於第 i 個樣本的損失函式計算如下:

Li=jyimax(0,WT:,jxi,:WT:,yixi,:+Δ)

偏導數計算如下:

LiW:,yi=(jyi1(wT:,jxi,:wT:,yixi,:+Δ>0))xi,:
LiW:,j=1(

相關推薦

深度學習CVSVM, Softmax損失函式

Deep learning在計算機視覺方面具有廣泛的應用,包括影象分類、目標識別、語義分隔、生成影象描述等各個方面。本系列部落格將分享自己在這些方面的學習和認識,如有問題,歡迎交流。 在使用卷積神經網路進行分類任務時,往往使用以下幾類損失函式: 平

深度學習原理交叉熵損失函式的實現

交叉熵損失函式 一般我們學習交叉熵損失函式是在二元分類情況下: L = −

深度學習系列用PaddlePaddle和Tensorflow實現經典CNN網絡GoogLeNet

mage eat oba card fin filter mod 一個 lec   前面講了LeNet、AlexNet和Vgg,這周來講講GoogLeNet。GoogLeNet是由google的Christian Szegedy等人在2014年的論文《Going Deepe

深度學習系列用PaddlePaddle和Tensorflow實現GoogLeNet InceptionV2/V3/V4

targe 所有 conn ride 出了 prev 縮減 tro 例如   上一篇文章我們引出了GoogLeNet InceptionV1的網絡結構,這篇文章中我們會詳細講到Inception V2/V3/V4的發展歷程以及它們的網絡結構和亮點。 GoogLeNet I

深度學習系列一起來參加百度 PaddlePaddle AI 大賽吧!

人工 領域 而且 標註數據 sea nload 類型 指定路徑 ear   寫這個系列寫了兩個月了,對paddlepaddle的使用越來越熟悉,不過一直沒找到合適的應用場景。最近百度搞了個AI大賽,據說有四個賽題,現在是第一個----綜藝節目精彩片段預測 ,大家可以去檢測一

深度學習--神經網絡中的調優

flow 初始 clas 根據 叠代 pan 容易 組合 語音 一、前述 調優對於模型訓練速度,準確率方面至關重要,所以本文對神經網絡中的調優做一個總結。 二、神經網絡超參數調優 1、適當調整隱藏層數對於許多問題,你可以開始只用一個隱藏層,就可以獲得不錯的結果,比如對於復雜

吳恩達深度學習工程師 04.卷積神經網絡 第三周目標檢測 (1)基本的對象檢測算法

元素 需要 有關 卷積 訓練 特定 步長 來看 選擇 該筆記介紹的是《卷積神經網絡》系列第三周:目標檢測(1)基本的對象檢測算法 主要內容有: 1.目標定位 2.特征點檢測 3.目標檢測 目標定位 使用算法判斷圖片中是不是目標物體,如果是還要再圖片中標出其位置並

深度學習--Windows 64下tensorflow-gpu安裝到應用

archive dev upgrade eight ins 自己的 技術 tro tar 一、前述 一直以為自己的筆記本不支持tensflow-gpu的運行,結果每次運行模型都要好久。偶然間一個想法,想試試自己的筆記本,結果竟然神奇的發現能用GPU。於是分享一下安裝步驟.

深度學習---CNN和RNN結合與對比,實例講解

開頭 問答 16px 結合 觀察 反向 -c style 圖像 一、前述 CNN和RNN幾乎占據著深度學習的半壁江山,所以本文將著重講解CNN+RNN的各種組合方式,以及CNN和RNN的對比。 二、CNN與RNN對比 1、CNN卷積神經網絡與RNN遞歸神經網絡直觀圖

深度學習基礎深度學習》李巨集毅

重要知識點: 激勵函式(activation function) softmax layer Lecture 1: Introduction of Deep Learning 1. 深度學習的步驟 機器學習的步驟: Step 1: 定義一個函式集合(define

機器學習SVM

機器學習中一般用的比較多的是整合學習演算法如bagging和boosting,以及SVM。這2個演算法的效果好。且對資料的分佈沒有啥要求。今天要講的是SVM即支援向量機。 SVM的定義 支援向量機(Support Vecor Machine, SVM)本身是一個二元分類演算法,是 對感知器演

深度學習系列CNN模型的視覺化

模型視覺化   因為我沒有搜到用paddlepaddle在imagenet 1000分類的資料集上預訓練好的googLeNet inception v3,所以用了keras做實驗,以下圖作為輸入: 輸入圖片  北汽紳寶D50:

深度學習筆記優化演算法( Optimization Algorithm)

本文依舊是吳恩達《深度學習工程師》課程的筆記整理與拓展。 一、優化演算法的目的與挑戰     優化演算法主要是用來加快神經網路的訓練速度,使得目標函式快速收斂。     優化問題面臨的挑戰有病態解、鞍點、梯度爆炸與梯度消失……具體可見參考文獻【1】241頁到249頁。

影象分割綜述深度學習方法

CNN影象語義分割基本上是這個套路: 下采樣+上取樣:Convlution + Deconvlution/Resize 多尺度特徵融合:特徵逐點相加/特徵channel維度拼接 獲得畫素級別的segement map:對每一個畫素點進行判斷類別 即使是更復雜的DeepL

深度學習筆記關於卷積層、池化層、全連線層簡單的比較

卷積層 池化層 全連線層 功能 提取特徵 壓縮特徵圖,提取主要特徵 將學到的“分散式特徵表示”對映到樣本標記空間 操作 可看這個的動態圖,可惜是二維的。對於三維資料比如RGB影象(3通道),卷積核的深度必須

深度學習系列卷積神經網路CNN原理詳解(一)——基本原理

轉自:https://www.cnblogs.com/charlotte77/p/7759802.html 上篇文章我們給出了用paddlepaddle來做手寫數字識別的示例,並對網路結構進行到了調整,提高了識別的精度。有的同學表示不是很理解原理,為什麼傳統的機

吳恩達深度學習工程師學習筆記(二)

吳恩達【深度學習工程師】專項課程包含以下五門課程: 1、神經網路和深度學習; 2、改善深層神經網路:超引數除錯、正則化以及優化; 3、結構化機器學習專案; 4、卷積神經網路; 5、序列模型。 今天介紹《神經網路與深度學習》系列第二講:神經網

深度學習SSD——深刻解讀SSD tensorflow及原始碼詳解

<code class="language-python"># Copyright 2016 Paul Balanca. All Rights Reserved.   #   # Licensed under the Apache License, Version 2.0 (the "Lice

深度學習基礎張量的描述與深度學習常見張量

一些概念 深度學習中的所有資料張量的第一個軸都是樣本軸,也稱之為樣本維度。另外,深度學習模型不會同時處理整個資料集,而是將資料拆分成小批量,比如前面的案例就是每次取128個數據作為一個批量。 batch = train_images[:128] # next batch = tr

深度學習-CNNCNN中的引數與計算量

一個卷積神經網路的基本構成一般有卷積層(convolutional layer)、池化層(pooling layer)、全連線層(fully connection layer)。本文以caffe中的LeNet-5為例,分析卷積層和全連線層的引數數量和計算量情況。 卷積層的基