什么是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

算法实践

已知

  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

小马奔腾

loss function的更多相关文章

  1. Derivative of the softmax loss function

    Back-propagation in a nerual network with a Softmax classifier, which uses the Softmax function: \[\ ...

  2. loss function与cost function

    实际上,代价函数(cost function)和损失函数(loss function 亦称为 error function)是同义的.它们都是事先定义一个假设函数(hypothesis),通过训练集由 ...

  3. 损失函数(Loss Function) -1

    http://www.ics.uci.edu/~dramanan/teaching/ics273a_winter08/lectures/lecture14.pdf Loss Function 损失函数 ...

  4. 【caffe】loss function、cost function和error

    @tags: caffe 机器学习 在机器学习(暂时限定有监督学习)中,常见的算法大都可以划分为两个部分来理解它 一个是它的Hypothesis function,也就是你用一个函数f,来拟合任意一个 ...

  5. 惩罚因子(penalty term)与损失函数(loss function)

    penalty term 和 loss function 看起来很相似,但其实二者完全不同. 惩罚因子: penalty term的作用是把受限优化问题转化为非受限优化问题. 比如我们要优化: min ...

  6. 论文笔记之: Person Re-Identification by Multi-Channel Parts-Based CNN with Improved Triplet Loss Function

    Person Re-Identification by Multi-Channel Parts-Based CNN with Improved Triplet Loss Function CVPR 2 ...

  7. [machine learning] Loss Function view

    [machine learning] Loss Function view 有关Loss Function(LF),只想说,终于写了 一.Loss Function 什么是Loss Function? ...

  8. [基础] Loss function (二)

    Loss function = Loss term(误差项) + Regularization term(正则项),上次写的是误差项,这次正则项. 正则项的解释没那么直观,需要知道不适定问题,在经典的 ...

  9. [基础] Loss function(一)

    Loss function = Loss term(误差项) + Regularization term(正则项),我们先来研究误差项:首先,所谓误差项,当然是误差的越少越好,由于不存在负误差,所以为 ...

随机推荐

  1. AccountName LoginName 变更

    当AD中把AccountName改掉后,网站集不会自动同步LoginName,需要使用命令行Move-SPUser domain/A->domian/B /*2013 Claim 认证  必须加 ...

  2. 手机游戏渠道SDK接入工具项目分享(三)拨开云雾是个坑

    一直在纠结是先写框架设计还是先写掉过的坑,最后本这娱乐大众的态度先写掉过的坑让大家乐呵下. 项目开发过程中遇问题无数,回顾下8个大坑照成了项目一定程度上延期甚至返工. 项目一开始几个人把现有3家主流的 ...

  3. 【转】你所不知道的HTML <head/> 头标签

    HTML的头部内容特别多,有针对SEO的头部信息,也有针对移动设备的头部信息.而且各个浏览器内核以及各个国内浏览器厂商都有些自己的标签元素,有很多差异性.移动端的工作已经越来越成为前端工作的重要内容, ...

  4. putty提供的两个文件传输工具PSCP、PSFTP详细介绍

    用 SSH 来传输文件 PuTTY 提供了两个文件传输工具 PSCP (PuTTY Secure Copy client) PSFTP (PuTTY SFTP client) PSCP 通过 SSH ...

  5. 浅谈Linux内存管理机制

    经常遇到一些刚接触Linux的新手会问内存占用怎么那么多?在Linux中经常发现空闲内存很少,似乎所有的内存都被系统占用了,表面感觉是内存不够用了,其实不然.这是Linux内存管理的一个优秀特性,在这 ...

  6. AD域撤销域用户管理员权限方案

    一.简介 公司大部分主机加入域已有一段时间了,由于某软件没管理员权限不能执行,所以管理员权限一直没撤销,不能完全实现域的管理效果.但起码实现了域用户脱离不了域的控制:http://www.cnblog ...

  7. uva 11059 maximum product(水题)——yhx

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAB1QAAAMcCAIAAABo0QCJAAAgAElEQVR4nOydW7msuhKF2wIasIAHJK

  8. 最短路径算法-Dijkstra

    Dijkstra是解决单源最短路径的一般方法,属于一种贪婪算法. 所谓单源最短路径是指在一个赋权有向图中,从某一点出发,到另一点的最短路径. 以python代码为例,实现Dijkstra算法 1.数据 ...

  9. VPN 部署方案

    VPN 对比: OpenVPN: 客户端连接太麻烦,放弃 PPTP VPN:版本较高的苹果手机没有 PPTP VPN 的连接方式,放弃 L2TP VPN:支持所有平台,客户端连接容易,最终选择部署 L ...

  10. Python的文件操作

    文件操作,顾名思义,就是对磁盘上已经存在的文件进行各种操作,文本文件就是读和写. 1. 文件的操作流程 (1)打开文件,得到文件句柄并赋值给一个变量 (2)通过句柄对文件进行操作 (3)关闭文件 现有 ...