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.mzph.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""…