loss function

什么是loss?

??loss: loss是我們用來對模型滿意程度的指標。loss設計的原則是:模型越好loss越低,模型越差loss越高,但也有過擬合的情況。  
??loss function: 在分類問題中,輸入樣本經過含權重矩陣θ的模型后會得出關于各個類別的分值,如何通過分值與樣本的標簽來得到我們對模型的滿意程度就是Loss function的主要工作了。訓練過程中通過調整參數矩陣θ來降低loss,使用模型更優。多分類問題中常用Softmax分類器與多類SVM分類器。 

Softmax分類器

Softmax與logistict回歸

??Softmax分類器將類別分值用負對數轉換為概率來表示,相對于multiclass-SVM的輸出更為直觀。
??Softmax分類器的損失函數為交叉熵損失 (cross-entropy loss),即通常所說的Softmax loss。logistic回歸是用來解決二分類問題的,其損失函數與Softmax與有很相似的形式。

??Softmax的損失函數:  //1表示指示函數,即真值返回1,否則返回0

     \begin{align} J(\theta) = - \frac{1}{m} \left[ \sum_{i=1}^{m} \sum_{j=1}^{k} 1\left\{y^{(i)} = j\right\} \log \frac{e^{\theta_j^T x^{(i)}}}{\sum_{l=1}^k e^{ \theta_l^T x^{(i)} }}\right] \end{align}

??logistic回歸的損失函數:  

      
\begin{align}
J(\theta) =
-\frac{1}{m} \left[ \sum_{i=1}^m y^{(i)} \log h_\theta(x^{(i)}) + (1-y^{(i)}) \log (1-h_\theta(x^{(i)})) \right]
\end{align}

??可以看出,將(1)式中k=2即可得到(2)式

??Softmax對樣本x的分類結果(假設函數):

\begin{align}
h_\theta(x^{(i)}) =
\begin{bmatrix}
p(y^{(i)} = 1 | x^{(i)}; \theta) \
p(y^{(i)} = 2 | x^{(i)}; \theta) \
\vdots \
p(y^{(i)} = k | x^{(i)}; \theta)
\end{bmatrix}
=
\frac{1}{ \sum_{j=1}^{k}{e^{ \theta_j^T x^{(i)} }} }
\begin{bmatrix}
e^{ \theta_1^T x^{(i)} } \
e^{ \theta_2^T x^{(i)} } \
\vdots \
e^{ \theta_k^T x^{(i)} } \
\end{bmatrix}
\end{align}
  

??logistic回歸的分類結果(假設函數):

      \begin{align}
h_\theta(x) = \frac{1}{1+\exp(-\theta^Tx)},
\end{align}   

??但(3)式與(4)式有什么關系呢?

??原來Softmax預測出每個類別的概率具有“參數冗余”的特性。“參數冗余”是指:若矩陣θ為代價函數的極小值點,那么θ-Ψ也為代價函數的極小值點。(ψ為向量,并且矩陣-向量=矩陣每個列向量-向量)

          
\begin{align}
p(y^{(i)} = j | x^{(i)} ; \theta)
&= \frac{e^{(\theta_j-\psi)^T x^{(i)}}}{\sum_{l=1}^k e^{ (\theta_l-\psi)^T x^{(i)}}} \
&= \frac{e^{\theta_j^T x^{(i)}} e^{-\psi^Tx^{(i)}}}{\sum_{l=1}^k e^{\theta_l^T x^{(i)}} e^{-\psi^Tx^{(i)}}} \
&= \frac{e^{\theta_j^T x^{(i)}}}{\sum_{l=1}^k e^{ \theta_l^T x^{(i)}}}.
\end{align}

???這時,令ψ=θ1、k=2,可得到(3) 等價于(4)的結論

???所以,Softmax其實是logistic regression將二分類問題推廣到多分類問題的一般形式。

但是Softmax分類器與k個logistic回歸分類器還是有區別的:

?? 通常,當k個類別之間互斥時使用k=k的Softmax分類器,當k個類別之間與交集時使用k個logistic回歸分類器。 

Softmax分類器為什么要正則化損失項?

??求解loss最小值時往往不是簡單利用“參數冗余”將θ1=0,而是加入權重衰減(正則化損失)來懲罰過大的參數值。加入正則化損失后的代價函數為:
   

\begin{align}\notag J(\theta) = - \frac{1}{m} \left[ \sum_{i=1}^{m} \sum_{j=1}^{k} 1\left\{y^{(i)} = j\right\} \log \frac{e^{\theta_j^T x^{(i)}}}{\sum_{l=1}^k e^{ \theta_l^T x^{(i)} }} \right] + \frac{\lambda}{2} \sum_{i=1}^k \sum_{j=0}^n \theta_{ij}^2 \end{align}

??其中,第二項為正則化損失薦,加入該項的加一個好處是將代價函數變為一個凸函數。

簡單實例

??在一個三類別模型預測的過程中,假設輸出的分值向量為[1, -2, 0]

??則分類計算過過程: [1,-2, 0] => [e1, e-2, e0]=[2.71, 0.14, 1]//熵值化 => [0.7, 0.04, 0.26] //歸一化為概率

算法實踐

??后續補充

Multiclass SVM

??基本思想:正常確類別的分值比錯誤類別的分值高出一個間距(margin)
??Multiclass SVM分類器的損失函數為hinge loss,也稱為SVM loss。

hinge loss

@hinge loss | center

算法實踐

已知

  1. 在一個三類別模型預測的過程中,假設輸出的分值向量為[13, -7, 11]
  2. 我們知道標簽為1,即第一個類別為正確類別
  3. \(\Delta=10\)

計算過程

因為\(y_{i}\)=1, 所以\(j只能=2、3\)
\[L_{2}=max(0,-7-13+10)=0\]
\[L_{3}=max(0,11-13+10)=8\]
所以,
\[L_{i}=0+8=8\]
從上面的計算過程可以看出SVM的損失函數想要正確分類類別\(y_{i}\)的分數比不正確類別分數高,而且至少要高\(\Delta\)。如果不滿足這點,就開始計算損失值。

正則化損失

提高模型泛化能力,避免過擬合。
從公式上來看:

  • 若兩個等比例的權重,權重的范數越小越好
  • 若兩個權重范數相等,權重的系數大小分布越分均等越好
    直觀來看:
    從直觀上來看,這是因為w_2的權重值更小且更分散。既然L2懲罰傾向于更小更分散的權重向量,這就會鼓勵分類器最終將所有維度上的特征都用起來,而不是強烈依賴其中少數幾個維度。

MutiSVM VS SVM

未完待續

補充實驗

reference:

cs231n

cs231n

softmax

小馬奔騰

轉載于:https://www.cnblogs.com/fariver/p/6204261.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/373219.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/373219.shtml
英文地址,請注明出處:http://en.pswp.cn/news/373219.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

復雜的(事件)世界

這篇博客文章試圖總結CEP領域中的技術,并探討它們的主要功能和不足。 有時似乎過度使用了CEP一詞(就像ESB一樣),下面的文章反映了我們對它的理解和理解。 ESPER( http://esper.codehaus.org/ )是流行的開源…

oracle查詢表的id,oracle 查看所有用戶及密碼 實現Oracle查詢用戶所有表

1、oracle 查看所有用戶及密碼SQL> select username from dba_users;2、 實現Oracle查詢用戶所有表下面為您介紹的語句用于實現Oracle查詢用戶所有表,如果您對oracle查詢方面感興趣的話,不妨一看。select * from all_tab_comments-- 查詢所有用戶的表…

php 字符串加密與解密

/** * param $data 需要加密的字符串 * param $key 加密的密碼 * return string 加密后的字符串 */function _encrypt($data, $key){ $key md5($key); $x 0; $len strlen($data); $l strlen($key); $char; $str; for ($i …

java如何從方法返回多個值

本文介紹三個方法,使java方法返回多個值。 方法1:使用集合類方法2:使用封裝對象方法3:使用引用傳遞示例代碼如下: import java.util.HashMap; import java.util.Map;public class Test {/*** 方法1:使用集合…

FindBugs和JSR-305

假設那組開發人員在大型項目的各個部分上并行工作–一些開發人員在進行服務實現,而其他開發人員在使用該服務的代碼。 考慮到API的假設,兩個小組都同意服務API,并開始單獨工作。 您認為這個故事會有幸福的結局嗎? 好吧&#xff0c…

java使用org.apache.poi讀取與保存EXCEL文件

一、讀EXCEL文件 1 package com.ruijie.wis.cloud.utils;2 3 import java.io.FileInputStream;4 import java.io.FileNotFoundException;5 import java.io.IOException;6 import java.io.InputStream;7 import java.text.DecimalFormat;8 import java.util.ArrayList;9 import …

oracle 指定格式化,Oracle中的格式化函數

格式化函數提供一套有效的工具用于把各種數據類型(日期/時間,int,float,numeric)轉換成格式化的字符串以及反過來從格式化的字符串轉換成原始的數據類型。表 5-6. 格式化函數函數返回描述例子to_char(datetime, text)text把datetime 轉換成 s…

彈性數組

看這個結構體的定義:typedef struct st_type{ int nCnt; int item[0];}type_a;(有些編譯器會報錯無法編譯可以改成:)typedef struct st_type{ int nCnt; int item[];}type_a; 這樣我們就可以定義一個可變長的結…

什么是Akka?

在深入研究什么是Akka之前,讓我們退后一步來了解并發編程的概念在應用程序開發世界中是如何演變的。 應用程序已經從大型的整體程序演變為面向對象的模型。 隨著Java EE和Spring框架的出現,應用程序設計演變為更多的基于流程或任務的設計模型。 EJB或Poj…

apache2服務器搭建心得

網站的配置文件在/etc/apache2/sites-avalible中,每個文件對應一個虛擬站點,但需要在/etc/apache2/sites-enabled中創建軟鏈接到sites-avalible中對應的文件。 起初我在sites-avalible中創建了兩個站點,一個netaddi.com,一個test.…

has_a php,PHP has encountered a Stack overflow問題解決方法

昨晚將一個disucz論壇進行轉移后,發現打開的頁面上回多一個PHP has encountered a Stack overflow 這個提示錯誤,進過翻譯為“PHP遇到堆棧溢出”。我就感覺奇怪了,新站沒人訪問的,怎么可能會溢出。 好吧去discuz官方論壇找找解決方…

解決ueditor jquery javascript 取值問題

代碼如下: var content UE.getEditor(myEditor).getContent();myEditor是ueditor 的名稱name。代碼如下: <textarea name"myEditor" id"myEditor"></textarea><script type"text/javascript">var editor new UE.ui.Editor()…

異常處理準則和最佳實踐

讓我們回顧一些從對象設計總結的基本異常設計準則&#xff1a;角色&#xff0c;職責和協作&#xff08;Rebecca Wirfs-Brock和Alan McKean&#xff0c;Addison-Wesley&#xff0c;2003年&#xff09;。 不要嘗試處理編碼錯誤。 除非在錯誤情況下要求您的軟件采取特殊措施&…

HDU 5225 枚舉

題目鏈接&#xff1a; hdu:http://acm.hdu.edu.cn/showproblem.php?pid5225 bc(中文):http://bestcoder.hdu.edu.cn/contests/contest_chineseproblem.php?cid580&pid1002 題解&#xff1a; 數組a保存輸入 考慮當前位i&#xff0c;對于1<j<i&#xff0c;使得x[j]a[…

河南上oracle客戶,解決Oracle監聽服務報錯

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓如果只是本機的訪問 sqlplus system/manager這樣是沒有問題的。但是如果使用 sqlplus system/managerorcl的時候卻會報ora-12514的錯誤。解決方法&#xff1a;1. 打開D:\oracle\product\10.2.0\db_1/network/admin/listener.ora文件…

【BZOJ2073】[POI2004]PRZ 狀壓DP

【BZOJ2073】[POI2004]PRZ Description 一只隊伍在爬山時碰到了雪崩,他們在逃跑時遇到了一座橋,他們要盡快的過橋. 橋已經很舊了, 所以它不能承受太重的東西. 任何時候隊伍在橋上的人都不能超過一定的限制. 所以這只隊伍過橋時只能分批過,當一組全部過去時,下一組才能接著過. 隊…

運行時vs編譯時類路徑

這確實應該是一個簡單的區別&#xff0c;但是我一直在回答有關Stackoverflow的許多類似問題&#xff0c;并且經常有人誤解此事。 那么&#xff0c;什么是類路徑&#xff1f; 應用程序所需的一組所有類&#xff08;以及帶有類的jar&#xff09;的集合。 但是有兩個或實際上三個不…

Unity3d 實現頂點動畫

在今年GDC上發現一個非常有趣的演講&#xff0c;叫做Animating With Math&#xff0c;遂實現之&#xff0c;是講述頂點shader動畫的&#xff0c;舉了幾個經典的例子&#xff0c;但是講者并沒有給代碼&#xff0c;而是像虛幻引擎那樣的節點&#xff0c;這樣更加清楚明了之前博主…

php codeigniter ext,php – 私有服務器上CodeIgniter不正確的系統路徑

上傳到服務器的codeigniter項目給我以下錯誤.Your system folder path does not appear to be set correctly. Pleaseopen the following file and correct this: index.php它在當地運作良好在000webhost.com托管.When uploaded to private server of parallels it gives the a…

對于表單的一些想法

表單 <form id"" name"" method"get/post" action""> 其中get提交長度有限制&#xff0c;并且編碼后內容在地址欄可見&#xff0c;post與其相反。 </form> 文本輸入 文本框<input type"text" id""…