损失函数 订阅
损失函数(loss function)或代价函数(cost function)是将随机事件或其有关随机变量的取值映射为非负实数以表示该随机事件的“风险”或“损失”的函数。在应用中,损失函数通常作为学习准则与优化问题相联系,即通过最小化损失函数求解和评估模型。例如在统计学和机器学习中被用于模型的参数估计(parameteric estimation) [1]  ,在宏观经济学中被用于风险管理(risk mangement)和决策 [2]  ,在控制理论中被应用于最优控制理论(optimal control theory) [3]  。 展开全文
损失函数(loss function)或代价函数(cost function)是将随机事件或其有关随机变量的取值映射为非负实数以表示该随机事件的“风险”或“损失”的函数。在应用中,损失函数通常作为学习准则与优化问题相联系,即通过最小化损失函数求解和评估模型。例如在统计学和机器学习中被用于模型的参数估计(parameteric estimation) [1]  ,在宏观经济学中被用于风险管理(risk mangement)和决策 [2]  ,在控制理论中被应用于最优控制理论(optimal control theory) [3]  。
信息
外文名
loss function
类    型
函数
应用学科
统计学
中文名
损失函数
应用领域
机器学习,经济学,控制理论
损失函数函数定义
在样本空间 内有可测状态 和随机变量 根据法则 所做的决策 ,此时若在乘积空间 上有函数 满足: ,即对任意的 , 是非负可测函数,则 被称为损失函数,表示状态 下采取决策 所对应的损失或风险 [4]  。机器学习中,给定独立同分布(independent and identically distributed,iid)的学习样本 ,和模型 ,损失函数是模型输出和观测结果间概率分布差异的量化 [1]  : 式中 表示模型参数,上式右侧具体的量化方法视问题和模型而定,但要求满足损失函数的一般定义,即样本空间的非负可测函数。
收起全文
精华内容
下载资源
问答
  • 交叉熵损失函数原理详解

    万次阅读 多人点赞 2019-08-30 10:28:42
    之前在代码中经常看见交叉熵损失函数(CrossEntropy Loss),只知道它是分类问题中经常使用的一种损失函数,对于其内部的原理总是模模糊糊,而且一般使用交叉熵作为损失函数时,在模型的输出层总会接一个softmax函数,...

    交叉熵损失函数原理详解

    之前在代码中经常看见交叉熵损失函数(CrossEntropy Loss),只知道它是分类问题中经常使用的一种损失函数,对于其内部的原理总是模模糊糊,而且一般使用交叉熵作为损失函数时,在模型的输出层总会接一个softmax函数,至于为什么要怎么做也是不懂,所以专门花了一些时间打算从原理入手,搞懂它,故在此写一篇博客进行总结,以便以后翻阅。


    交叉熵简介

    交叉熵是信息论中的一个重要概念,主要用于度量两个概率分布间的差异性,要理解交叉熵,需要先了解下面几个概念。


    信息量

    信息奠基人香农(Shannon)认为“信息是用来消除随机不确定性的东西”,也就是说衡量信息量的大小就是看这个信息消除不确定性的程度。

    “太阳从东边升起”,这条信息并没有减少不确定性,因为太阳肯定是从东边升起的,这是一句废话,信息量为0。

    ”2018年中国队成功进入世界杯“,从直觉上来看,这句话具有很大的信息量。因为中国队进入世界杯的不确定性因素很大,而这句话消除了进入世界杯的不确定性,所以按照定义,这句话的信息量很大。

    根据上述可总结如下:信息量的大小与信息发生的概率成反比。概率越大,信息量越小。概率越小,信息量越大。

    设某一事件发生的概率为P(x),其信息量表示为:
    I(x)=log(P(x)) I\left ( x \right ) = -\log\left ( P\left ( x \right ) \right )
    其中I(x)I\left ( x \right )表示信息量,这里log\log表示以e为底的自然对数。


    信息熵

    信息熵也被称为熵,用来表示所有信息量的期望。

    期望是试验中每次可能结果的概率乘以其结果的总和。

    所以信息量的熵可表示为:(这里的XX是一个离散型随机变量)
    H(X)=i=1nP(xi)log(P(xi)))(X=x1,x2,x3...,xn) H\left ( \mathbf{X} \right ) = -\sum \limits_{i=1}^n P(x_{i}) \log \left ( P \left ( x_{i} \right ))) \qquad ( \mathbf{X}= x_{1},x_{2},x_{3}...,x_{n} \right)
    使用明天的天气概率来计算其信息熵:

    序号 事件 概率P 信息量
    1 明天是晴天 0.5 log(0.5)-\log \left ( 0.5 \right )
    2 明天出雨天 0.2 log(0.2)-\log \left ( 0.2 \right )
    3 多云 0.3 log(0.3)-\log \left ( 0.3 \right )

    H(X)=(0.5log(0.5)+0.2log(0.2)+0.3log(0.3)) H\left ( \mathbf{X} \right ) = -\left ( 0.5 * \log \left ( 0.5 \right ) + 0.2 * \log \left ( 0.2 \right ) + 0.3 * \log \left ( 0.3 \right ) \right)

    对于0-1分布的问题,由于其结果只用两种情况,是或不是,设某一件事情发生的概率为P(x)P\left ( x \right ),则另一件事情发生的概率为1P(x)1-P\left ( x \right ),所以对于0-1分布的问题,计算熵的公式可以简化如下:
    H(X)=n=1nP(xilog(P(xi)))=[P(x)log(P(x))+(1P(x))log(1P(x))]=P(x)log(P(x))(1P(x))log(1P(x)) H\left ( \mathbf{X} \right ) = -\sum \limits_{n=1}^n P(x_{i}\log \left ( P \left ( x_{i} \right )) \right) \\ = -\left [ P\left ( x \right) \log \left ( P\left ( x \right ) \right ) + \left ( 1 - P\left ( x \right ) \right) \log \left ( 1-P\left ( x \right ) \right ) \right] \\ = -P\left ( x \right) \log \left ( P\left ( x \right ) \right ) - \left ( 1 - P\left ( x \right ) \right) \log \left ( 1-P\left ( x \right ) \right)


    相对熵(KL散度)

    如果对于同一个随机变量XX有两个单独的概率分布P(x)P\left(x\right)Q(x)Q\left(x\right),则我们可以使用KL散度来衡量这两个概率分布之间的差异

    下面直接列出公式,再举例子加以说明。
    DKL(pq)=i=1np(xi)log(p(xi)q(xi)) D_{KL}\left ( p || q \right) = \sum \limits_{i=1}^n p\left ( x_{i}\right ) \log \left ( \frac{p\left ( x_{i} \right )}{q\left ( x_{i} \right )} \right )
    在机器学习中,常常使用P(x)P\left(x\right)来表示样本的真实分布,Q(x)Q \left(x\right)来表示模型所预测的分布,比如在一个三分类任务中(例如,猫狗马分类器),x1,x2,x3x_{1}, x_{2}, x_{3}分别代表猫,狗,马,例如一张猫的图片真实分布P(X)=[1,0,0]P\left(X\right) = [1, 0, 0], 预测分布Q(X)=[0.7,0.2,0.1]Q\left(X\right) = [0.7, 0.2, 0.1],计算KL散度:
    DKL(pq)=i=1np(xi)log(p(xi)q(xi))=p(x1)log(p(x1)q(x1))+p(x2)log(p(x2)q(x2))+p(x3)log(p(x3)q(x3))=1log(10.7)=0.36 D_{KL}\left ( p || q \right) = \sum \limits_{i=1}^n p\left ( x_{i}\right ) \log \left ( \frac{p\left ( x_{i} \right )}{q\left ( x_{i} \right )} \right ) \\ = p\left ( x_{1}\right ) \log \left ( \frac{p\left ( x_{1} \right )}{q\left ( x_{1} \right )} \right ) + p\left ( x_{2}\right ) \log \left ( \frac{p\left ( x_{2} \right )}{q\left ( x_{2} \right )} \right ) + p\left ( x_{3}\right ) \log \left ( \frac{p\left ( x_{3} \right )}{q\left ( x_{3} \right )} \right ) \\ = 1 * \log \left ( \frac{1}{0.7} \right ) = 0.36
    KL散度越小,表示P(x)P\left(x\right)Q(x)Q\left(x\right)的分布更加接近,可以通过反复训练Q(x)Q\left(x \right)来使Q(x)Q\left(x \right)的分布逼近P(x)P\left(x \right)


    交叉熵

    首先将KL散度公式拆开:
    DKL(pq)=i=1np(xi)log(p(xi)q(xi))=i=1np(xi)log(p(xi))i=1np(xi)log(q(xi))=H(p(x))+[i=1np(xi)log(q(xi))] D_{KL}\left ( p || q \right) = \sum \limits_{i=1}^n p\left ( x_{i}\right ) \log \left ( \frac{p\left ( x_{i} \right )}{q\left ( x_{i} \right )} \right ) \\ = \sum \limits_{i=1}^n p \left (x_{i}\right) log \left(p \left (x_{i}\right)\right) - \sum \limits_{i=1}^n p \left (x_{i}\right) log \left(q \left (x_{i}\right)\right) \\ = -H \left (p \left(x \right) \right) + \left [-\sum \limits_{i=1}^n p \left (x_{i}\right) log \left(q \left (x_{i}\right)\right) \right]
    前者H(p(x))H \left (p \left (x \right)\right)表示信息熵,后者即为交叉熵,KL散度 = 交叉熵 - 信息熵

    交叉熵公式表示为:
    H(p,q)=i=1np(xi)log(q(xi)) H \left (p, q\right) = -\sum \limits_{i=1}^n p \left (x_{i}\right) log \left(q \left (x_{i}\right)\right)
    在机器学习训练网络时,输入数据与标签常常已经确定,那么真实概率分布P(x)P\left(x \right)也就确定下来了,所以信息熵在这里就是一个常量。由于KL散度的值表示真实概率分布P(x)P\left(x\right)与预测概率分布Q(x)Q \left(x\right)之间的差异,值越小表示预测的结果越好,所以需要最小化KL散度,而交叉熵等于KL散度加上一个常量(信息熵),且公式相比KL散度更加容易计算,所以在机器学习中常常使用交叉熵损失函数来计算loss就行了。


    交叉熵在单分类问题中的应用

    在线性回归问题中,常常使用MSE(Mean Squared Error)作为loss函数,而在分类问题中常常使用交叉熵作为loss函数。

    下面通过一个例子来说明如何计算交叉熵损失值。

    假设我们输入一张狗的图片,标签与预测值如下:

    *
    Label 0 1 0
    Pred 0.2 0.7 0.1

    那么loss
    loss=(0log(0.2)+1log(0.7)+0log(0.1))=0.36 loss = -\left ( 0 * \log \left ( 0.2 \right ) + 1 * \log \left ( 0.7 \right ) + 0 * \log \left ( 0.1 \right )\right) = 0.36
    一个batch的loss为
    loss=1mi=1mj=1np(xij)log(q(xij)) loss = -\frac{1}{m}\sum \limits_{i=1}^m \sum \limits_{j=1}^n p \left (x_{ij}\right) log \left(q \left (x_{ij}\right)\right)
    其中m表示样本个数。


    总结:

    • 交叉熵能够衡量同一个随机变量中的两个不同概率分布的差异程度,在机器学习中就表示为真实概率分布与预测概率分布之间的差异。交叉熵的值越小,模型预测效果就越好。

    • 交叉熵在分类问题中常常与softmax是标配,softmax将输出的结果进行处理,使其多个分类的预测值和为1,再通过交叉熵来计算损失。


    参考:

    https://blog.csdn.net/tsyccnh/article/details/79163834


    THE END

    展开全文
  • 损失函数

    2021-02-04 12:39:54
    针对离散型变量(即分类问题分析),常用0-1损失函数和指数损失函数;针对连续型变量(即回归问题分析),常用L1范数损失函数和L2范数损失函数损失函数越小,代表模型拟合效果越好。损失函数如下: 风险函数可以...

    如何衡量实际值与预测值的接近程度?
    数学上,通过两者差值的平方和(又称为残差平方和)来衡量。
    机器学习领域,残差平方和又称为回归模型的损失函数。针对离散型变量(即分类问题分析),常用0-1损失函数和指数损失函数;针对连续型变量(即回归问题分析),常用L1范数损失函数和L2范数损失函数。损失函数越小,代表模型拟合效果越好。损失函数如下:
    在这里损失函数插入图片描述
    风险函数可以认为是平均意义下的损失,又称为期望损失。

    N为样本总数,yi为样本i的实际值,f为i的预测值。
    但损失函数也并非越小越好,若损失函数过小,容易出现过拟合。为了避免这个问题,可以在损失函数中加入正则化项或惩罚向,公式如下:在这里插入图片描述
    在这里插入图片描述

    展开全文
  • 交叉熵损失函数 交叉熵损失函数的求导 前言 说明:本文只讨论Logistic回归的交叉熵,对Softmax回归的交叉熵类似。 首先,我们二话不说,先放出交叉熵的公式: J(θ)=−1m∑i=1my(i)log(hθ(x(i)))+(1−y(i))...

    目录

    1. 前言
    2. 交叉熵损失函数
    3. 交叉熵损失函数的求导
    

    前言

    说明:本文只讨论Logistic回归的交叉熵,对Softmax回归的交叉熵类似(Logistic回归和Softmax回归两者本质是一样的,后面我会专门有一篇文章说明两者关系,先在这里挖个坑)。
    首先,我们二话不说,先放出交叉熵的公式:
    J(θ)=1mi=1my(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i))), J(\theta)=-\frac{1}{m}\sum_{i=1}^{m}y^{(i)}\log(h_\theta(x^{(i)}))+(1-y^{(i)})\log(1-h_\theta(x^{(i)})),

    以及J(θ)J(\theta)对参数θ\theta的偏导数(用于诸如梯度下降法等优化算法的参数更新),如下:

    θjJ(θ)=1mi=1m(hθ(x(i))y(i))xj(i) \frac{\partial}{\partial\theta_{j}}J(\theta) =\frac{1}{m}\sum_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})x_j^{(i)}

    但是在大多论文或数教程中,也就是直接给出了上面两个公式,而未给出推导过程,而且这一过程并不是一两步就可以得到的,这就给初学者造成了一定的困惑,所以我特意在此详细介绍了它的推导过程,跟大家分享。因水平有限,如有错误,欢迎指正。

    交叉熵损失函数(Logistic Regression代价函数)

    我们一共有mm组已知样本(Batchsize=mBatch size = m),(x(i),y(i))(x^{(i)},y^{(i)})表示第 ii 组数据及其对应的类别标记。其中x(i)=(1,x1(i),x2(i),...,xp(i))Tx^{(i)}=(1,x^{(i)}_1,x^{(i)}_2,...,x^{(i)}_p)^Tp+1p+1维向量(考虑偏置项),y(i)y^{(i)}则为表示类别的一个数:

    • logistic回归(是非问题)中,y(i)y^{(i)}取0或者1;
    • softmax回归 (多分类问题)中,y(i)y^{(i)}取1,2…k中的一个表示类别标号的一个数(假设共有k类)。

    这里,只讨论logistic回归,输入样本数据x(i)=(1,x1(i),x2(i),...,xp(i))Tx^{(i)}=(1,x^{(i)}_1,x^{(i)}_2,...,x^{(i)}_p)^T,模型的参数为θ=(θ0,θ1,θ2,...,θp)T\theta=(\theta_0,\theta_1,\theta_2,...,\theta_p)^T,因此有

    θTx(i):=θ0+θ1x1(i)++θpxp(i). \theta^T x^{(i)}:=\theta_0+\theta_1 x^{(i)}_1+\dots+\theta_p x^{(i)}_p.

    假设函数(hypothesis function)定义为:

    hθ(x(i))=11+eθTx(i). h_\theta(x^{(i)})=\frac{1}{1+e^{-\theta^T x^{(i)}} }.

    因为Logistic回归问题就是0/1的二分类问题,可以有

    P(y^(i)=1x(i);θ)=hθ(x(i))P(y^(i)=0x(i);θ)=1hθ(x(i)) P({\hat{y}}^{(i)}=1|x^{(i)};\theta)=h_\theta(x^{(i)}) \\ P({\hat{y}}^{(i)}=0|x^{(i)};\theta)=1-h_\theta(x^{(i)})

    现在,我们不考虑“熵”的概念,根据下面的说明,从简单直观角度理解,就可以得到我们想要的损失函数:我们将概率取对数,其单调性不变,有

    logP(y^(i)=1x(i);θ)=loghθ(x(i))=log11+eθTx(i)logP(y^(i)=0x(i);θ)=log(1hθ(x(i)))=logeθTx(i)1+eθTx(i) \log P({\hat{y}}^{(i)}=1|x^{(i)};\theta)=\log h_\theta(x^{(i)})=\log\frac{1}{1+e^{-\theta^T x^{(i)}} } \\ \log P({\hat{y}}^{(i)}=0|x^{(i)};\theta)=\log (1-h_\theta(x^{(i)}))=\log\frac{e^{-\theta^T x^{(i)}}}{1+e^{-\theta^T x^{(i)}} }

    那么对于第ii组样本,假设函数表征正确的组合对数概率为:

    I{y(i)=1}logP(y^(i)=1x(i);θ)+I{y(i)=0}logP(y^(i)=0x(i);θ)=y(i)logP(y^(i)=1x(i);θ)+(1y(i))logP(y^(i)=0x(i);θ)=y(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i))) I\{y^{(i)}=1\}\log P({\hat{y}}^{(i)}=1|x^{(i)};\theta)+I\{y^{(i)}=0\}\log P({\hat{y}}^{(i)}=0|x^{(i)};\theta)\\ =y^{(i)}\log P({\hat{y}}^{(i)}=1|x^{(i)};\theta)+(1-y^{(i)})\log P({\hat{y}}^{(i)}=0|x^{(i)};\theta)\\ =y^{(i)}\log(h_\theta(x^{(i)}))+(1-y^{(i)})\log(1-h_\theta(x^{(i)}))

    其中,I{y(i)=1}I\{y^{(i)}=1\}I{y(i)=0}I\{y^{(i)}=0\}为示性函数(indicative function),简单理解为{ }内条件成立时,取1,否则取0,这里不赘言。
    那么对于一共mm组样本,我们就可以得到模型对于整体训练样本的表现能力:

    i=1my(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i))) \sum_{i=1}^{m}y^{(i)}\log(h_\theta(x^{(i)}))+(1-y^{(i)})\log(1-h_\theta(x^{(i)}))

    由以上表征正确的概率含义可知,我们希望其值越大,模型对数据的表达能力越好。而我们在参数更新或衡量模型优劣时是需要一个能充分反映模型表现误差的损失函数(Loss function)或者代价函数(Cost function)的,而且我们希望损失函数越小越好。由这两个矛盾,那么我们不妨领代价函数为上述组合对数概率的相反数:

    J(θ)=1mi=1my(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i))) J(\theta)=-\frac{1}{m}\sum_{i=1}^{m}y^{(i)}\log(h_\theta(x^{(i)}))+(1-y^{(i)})\log(1-h_\theta(x^{(i)}))

    上式即为大名鼎鼎的交叉熵损失函数。(说明:如果熟悉“信息熵"的概念E[logpi]=i=1mpilogpiE[-\log p_i]=-\sum_{i=1}^mp_i\log p_i,那么可以有助理解叉熵损失函数,先挖个坑,后面我会专门写一篇讲信息熵的白话文)

    交叉熵损失函数的求导

    这步需要用到一些简单的对数运算公式,这里先以编号形式给出,下面推导过程中使用特意说明时都会在该步骤下脚标标出相应的公式编号,以保证推导的连贯性。

    logab=logalogb\log \frac{a}{b}=\log a-\log b

    loga+logb=log(ab)\log a+\log b=\log (ab)

    a=logeaa=\log e^a (为了方便这里log\logloge\log_e,即ln\ln,其他底数如2,10等,只是前置常数系数不同,对结论毫无影响)

    另外,值得一提的是在这里涉及的求导均为矩阵、向量的导数(矩阵微商),这里有一篇教程总结得精简又全面,非常棒,推荐给需要的同学。

    下面开始推导:

    交叉熵损失函数为:

    J(θ)=1mi=1my(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i)))(1) J(\theta)=-\frac{1}{m}\sum_{i=1}^{m}y^{(i)}\log(h_\theta(x^{(i)}))+(1-y^{(i)})\log(1-h_\theta(x^{(i)}))\tag{1}

    其中,

    loghθ(x(i))=log11+eθTx(i)=log(1+eθTx(i)) ,log(1hθ(x(i)))=log(111+eθTx(i))=log(eθTx(i)1+eθTx(i))=log(eθTx(i))log(1+eθTx(i))=θTx(i)log(1+eθTx(i)) . \log h_\theta(x^{(i)})=\log\frac{1}{1+e^{-\theta^T x^{(i)}} }=-\log ( 1+e^{-\theta^T x^{(i)}} )\ ,\\ \log(1- h_\theta(x^{(i)}))=\log(1-\frac{1}{1+e^{-\theta^T x^{(i)}} })=\log(\frac{e^{-\theta^T x^{(i)}}}{1+e^{-\theta^T x^{(i)}} })\\=\log (e^{-\theta^T x^{(i)}} )-\log ( 1+e^{-\theta^T x^{(i)}} )=-\theta^T x^{(i)}-\log ( 1+e^{-\theta^T x^{(i)}} ) _{①③}\ .

    由此,得到

    J(θ)=1mi=1m[y(i)(log(1+eθTx(i)))+(1y(i))(θTx(i)log(1+eθTx(i)))]=1mi=1m[y(i)θTx(i)θTx(i)log(1+eθTx(i))]=1mi=1m[y(i)θTx(i)logeθTx(i)log(1+eθTx(i))]=1mi=1m[y(i)θTx(i)(logeθTx(i)+log(1+eθTx(i)))]=1mi=1m[y(i)θTx(i)log(1+eθTx(i))] J(\theta) =-\frac{1}{m}\sum_{i=1}^m \left[-y^{(i)}(\log ( 1+e^{-\theta^T x^{(i)}})) + (1-y^{(i)})(-\theta^T x^{(i)}-\log ( 1+e^{-\theta^T x^{(i)}} ))\right]\\ =-\frac{1}{m}\sum_{i=1}^m \left[y^{(i)}\theta^T x^{(i)}-\theta^T x^{(i)}-\log(1+e^{-\theta^T x^{(i)}})\right]\\ =-\frac{1}{m}\sum_{i=1}^m \left[y^{(i)}\theta^T x^{(i)}-\log e^{\theta^T x^{(i)}}-\log(1+e^{-\theta^T x^{(i)}})\right]_{③}\\ =-\frac{1}{m}\sum_{i=1}^m \left[y^{(i)}\theta^T x^{(i)}-\left(\log e^{\theta^T x^{(i)}}+\log(1+e^{-\theta^T x^{(i)}})\right)\right] _②\\ =-\frac{1}{m}\sum_{i=1}^m \left[y^{(i)}\theta^T x^{(i)}-\log(1+e^{\theta^T x^{(i)}})\right]

    这次再计算J(θ)J(\theta)对第jj个参数分量θj\theta_j求偏导:

    θjJ(θ)=θj(1mi=1m[log(1+eθTx(i))y(i)θTx(i)])=1mi=1m[θjlog(1+eθTx(i))θj(y(i)θTx(i))]=1mi=1m(xj(i)eθTx(i)1+eθTx(i)y(i)xj(i))=1mi=1m(hθ(x(i))y(i))xj(i) \frac{\partial}{\partial\theta_{j}}J(\theta) =\frac{\partial}{\partial\theta_{j}}\left(\frac{1}{m}\sum_{i=1}^m \left[\log(1+e^{\theta^T x^{(i)}})-y^{(i)}\theta^T x^{(i)}\right]\right)\\ =\frac{1}{m}\sum_{i=1}^m \left[\frac{\partial}{\partial\theta_{j}}\log(1+e^{\theta^T x^{(i)}})-\frac{\partial}{\partial\theta_{j}}\left(y^{(i)}\theta^T x^{(i)}\right)\right]\\ =\frac{1}{m}\sum_{i=1}^m \left(\frac{x^{(i)}_je^{\theta^T x^{(i)}}}{1+e^{\theta^T x^{(i)}}}-y^{(i)}x^{(i)}_j\right)\\ =\frac{1}{m}\sum_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})x_j^{(i)}

    这就是交叉熵对参数的导数:

    θjJ(θ)=1mi=1m(hθ(x(i))y(i))xj(i) \frac{\partial}{\partial\theta_{j}}J(\theta) =\frac{1}{m}\sum_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})x_j^{(i)}

    向量形式

    前面都是元素表示的形式,只是写法不同,过程基本都是一样的,不过写成向量形式会更清晰,这样就会把ii 和求和符号\sum省略掉了。我们不妨忽略前面的固定系数项1/m1/m,交叉墒的损失函数(1)则可以写成下式:
    J(θ)=[yTloghθ(x)+(1yT)log(1hθ(x))](2) J(\theta) = -\left[ y^T \log h_\theta(x)+(1-y^T)\log(1-h_\theta(x))\right]\tag{2}

    hθ(x)=11+eθTxh_\theta(x)=\frac{1}{1+e^{-\theta^T x} }带入,得到:

    J(θ)=[yTlog11+eθTx+(1yT)logeθTx1+eθTx]=[yTlog(1+eθTx)+(1yT)logeθTx(1yT)log(1+eθTx)]=[(1yT)logeθTxlog(1+eθTx)]=[(1yT)(θTx)log(1+eθTx)] J(\theta) = -\left[ y^T \log \frac{1}{1+e^{-\theta^T x} }+(1-y^T)\log\frac{e^{-\theta^T x}}{1+e^{-\theta^T x} }\right] \\ = -\left[ -y^T \log (1+e^{-\theta^T x}) + (1-y^T) \log e^{-\theta^T x} - (1-y^T)\log (1+e^{-\theta^T x})\right] \\ = -\left[(1-y^T) \log e^{-\theta^T x} - \log (1+e^{-\theta^T x}) \right]\\ = -\left[(1-y^T ) (-\theta^Tx) - \log (1+e^{-\theta^T x}) \right]

    再对θ\theta求导,前面的负号直接削掉了,

    θjJ(θ)=θj[(1yT)(θTx)log(1+eθTx)]=(1yT)xeθT1+eθTxx=(11+eθTxyT)x=(hθ(x)yT)x \frac{\partial}{\partial\theta_{j}}J(\theta) = -\frac{\partial}{\partial\theta_{j}}\left[(1-y^T ) (-\theta^Tx) - \log (1+e^{-\theta^T x}) \right] \\ = (1-y^T)x- \frac{e^{-\theta^T }}{1+e^{-\theta^T x} }x \\ = (\frac{1}{1+e^{-\theta^T x} } - y^T)x \\ = \left(h_\theta(x)-y^T \right)x

    转载请注明:赵子健的博客 » 机器学习系列 » 交叉熵损失函数的求导 [zijian-zhao.com/2020/04/crossEntropyLossGrident/]

    由于本人不常登陆CSDN,大家的留言很难及时回复,因此知乎专栏同步该文,如有疑问欢迎在知乎讨论:人工+智能

    展开全文
  • 平方损失函数与交叉熵损失函数

    万次阅读 2018-05-07 15:21:43
    对于机器学习中常见的损失函数有:平方损失函数与交叉熵损失函数。在本文中将讲述两者含义与响应的运用区别。 2. 平方损失函数 平方损失函数较为容易理解,它直接测量机器学习模型的输出与实际结果之间的距离。...

    1. 前言

    在机器学习中学习模型的参数是通过不断损失函数的值来实现的。对于机器学习中常见的损失函数有:平方损失函数与交叉熵损失函数。在本文中将讲述两者含义与响应的运用区别。

    2. 平方损失函数

    平方损失函数较为容易理解,它直接测量机器学习模型的输出与实际结果之间的距离。这里可以定义机器学习模型的输出为yiy_i,实际的结果为tit_i,那么平方损失函数可以被定义为:
    L(x)=1Ni=1N(yiti)2L(x)=\frac{1}{N}\sum_{i=1}^{N}{(y_i-t_i)^2}
    对于这样的定义简单直接,能够很清楚的解释损失函数的含义,但是对于交叉熵损失函数其含义就不是那么好理解了,接下来的内容将具体讲解。

    3. 交叉熵损失函数

    3.1 交叉熵损失函数定义

    交叉熵(Cross Entry)是用来评估当前训练得到的概率分布与真实分布的差异情况,减少交叉熵损失就是在提高模型的预测准确率。其离散函数形式
    H(p,q)=xp(x)log(q(x))H(p,q)=-\sum_x{p(x)log(q(x))}
    参数解释:p(x)p(x)是真实分布的概率,q(x)q(x)是模型通过数据计算出来的概率估计。
    例如在二分类问题中,对于yiy_i的取值无非是1或是0,表示为yi{1,0}y_i\in{\{1, 0\}}
    yi=1y_i=1时:
    P(yi=1xi)=1,P(y+i=0xi)=0P(y_i=1|x_i)=1, P(y+i=0|x_i)=0
    反之当yi=0y_i=0时:
    P(yi=1xi)=0,P(y+i=0xi)=1P(y_i=1|x_i)=0, P(y+i=0|x_i)=1
    对于模型的估计概率,可以表示为:
    P(yi=1xi)=yi,,P(y+i=0xi)=1yi,P(y_i=1|x_i)=y_{i}^{,}, P(y+i=0|x_i)=1-y_i^,
    因而,对于该二分类模型其交叉熵损失函数可以定义为:
    H(p,q)=1Ni=0Nyilogyi,(1yi)log(1yi,)H(p,q)=\frac{1}{N}\sum_{i=0}^{N}-y_ilogy_i^,-(1-y_i)log(1-y_i^,)

    3.2 交叉熵损失函数信息论角度理解

    信息熵是在结果出来之前对可能产生的信息量的期望。相对熵表示两个概率分布的差异,即KL散度。当两个分布相同时,相对熵的值为00,其余情况下都大于00
    D(pq)=xp(x)logp(x)q(x)=xp(x)logq(x)dx(xp(x)logp(x)dx)D(p||q)=\int_xp(x)log\frac{p(x)}{q(x)}=−\int_xp(x)logq(x)dx−(−\int_xp(x)logp(x)dx)
    前者是交叉熵,而后者是真实分布的信息熵。由于真实分布是固定的,所以信息熵的值是固定的。当交叉熵越小,相对熵则越小,估计的概率分布q(x)q(x)越接近真实的分布p(x)p(x)

    3.3 训练与测试集正样本比例不同的影响

    交叉熵最小化等价于似然函数最大化。假设我们对每个标签为正例的样本都预测一个固定的概率,根据似然函数最大化,得到
    yi,=y_i^,=\frac{正样本数量}{全部样本数量}
    如果测试集的正例的比例也接近这个值,那么在该假设情况下我们得到的损失函数最小。
    但是,如果训练集和测试集的正例比例不同,那么模型越复杂,越接近临界值的样本(越难判断结果的样本)就越容易受到训练集中正例比例的影响而偏离真实分布。

    3.4 正样本比例不同的解决办法

    为了解决训练集与测试集中正样本比例不一致的问题,常用到的解决办法就是抽样,假设正样本以α\alpha的比例进行抽样,而负样本以β\beta的比例进行抽样,则最后的交叉熵损失函数可以表示为:
    H(p,q)=1Ni=0Nαyilogyi,β(1yi)log(1yi,)H(p,q)=\frac{1}{N}\sum_{i=0}^{N}-\alpha y_ilogy_i^,-\beta(1-y_i)log(1-y_i^,)

    4. 两种损失函数的区别

    平方损失函数与交叉熵损失函数都可以用作为机器学习模型的目标函数,但是在何种场景下使用何种损失函数才是较为合理的选择呢?一般来讲,如果学习模型致力于解决的问题是回归问题的连续变量,那么使用平方损失函数较为合适;若是对于分类问题的离散Ont-Hot向量,那么交叉熵损失函数较为合适

    4.1 直观理解

    从平方损失函数运用到多分类场景下,可知平方损失函数对每一个输出结果都十分看重,而交叉熵损失函数只对正确分类的结果看重。例如,对于一个多分类模型其模型结果输出为(a,b,c)(a,b,c),而实际真实结果为(1,0,0)(1, 0, 0)。则根据两种损失函数的定义其损失函数可以描述为:
    LS=(a1)2+(b0)2+(c0)2=(a1)2+b2+c2L_S=(a-1)^2+(b-0)_2+(c-0)_2=(a-1)^2+b^2+c^2
    LC=1loga0logb0logc=logaL_C=-1*loga-0*logb-0*logc=-loga
    从上述的结果中可以看出,交叉熵损失函数只和分类正确的预测结果有关。而平方损失函数还和错误的分类有关,该损失函数除了让正确分类尽量变大,还会让错误分类都变得更加平均,但实际中后面的这个调整使没必要的。但是对于回归问题这样的考虑就显得重要了,因而回归问题上使用交叉熵并不适合。

    4.2 理论角度分析

    平方数损失函数假设最终结果都服从高斯分布,而高斯分布实际上是一个连续变量,并不是一个离散变量。如果假设结果变量服从均值uu,方差为σ\sigma,那么利用最大似然法就可以优化它的负对数似然,公式最终变为了:
    =maxiN[12log(2πσ2)(tiy)2σ2]=max\sum_i^N[-\frac{1}{2}log(2\pi\sigma^2)-\frac{(t_i-y)}{2\sigma^2}]
    出去与yy无关的项目,最后剩下的就是平方损失函数的形式。

    5. Reference

    1. Quora Question Pairs整理 - 理解交叉熵损失函数
    展开全文
  • L1 损失函数和 L2 损失函数

    千次阅读 2019-11-28 17:03:48
    L1 和 L2 是机器学习中的两个损失函数,用于最小化误差。 L1 损失函数代表最小绝对偏差,也称为 LAD L2 损失函数代表最小二乘误差,也称为 LS 文章目录一、L1 损失函数二、L2 损失函数三、如何确定L1 和 L2 损失函数...
  • 1、Hinge损失函数 2、SVM损失函数 1、Hinge损失函数 首先我们来看什么是合页损失函数(hinge loss function): 下标”+”表示以下取正值的函数,我们用z表示中括号中的部分: 也就是说,数据点如果...
  • 讲解平方损失函数与交叉熵损失函数 适用的情况以及 解释了原因。 特别是回归问题为什么不能使用 交叉熵损失函数。 博客链接:https://blog.csdn.net/m_buddy/article/details/80224409 平方损失函数与...
  • 阅读大概需要7分钟跟随小博主,每天进步一丢丢机器学习算法与自然语言处理出品@公众号原创专栏作者yyHaker单位 |哈工大SCIR实验室损失函数用来评价模型的预测值和真实值不一样的程度,损失函数越好,通常模型的性能...
  • 损失函数——交叉熵损失函数

    千次阅读 多人点赞 2019-05-06 09:38:50
    损失函数——交叉熵损失函数 摘录: https://zhuanlan.zhihu.com/p/35709485 http://jackon.me/posts/why-use-cross-entropy-error-for-loss-function/ 1.分类模型 与 Loss 函数的定义 监督学习的 2 大分支: ...
  • 损失函数定义及常用损失函数

    千次阅读 2018-10-10 11:06:19
    损失函数定义 损失函数(Loss function)是用来估量你模型的预测值 f(x)f(x) 与真实值 YY 的不一致程度,它是一个非负实值函数,通常用 L(Y,f(x))L(Y,f(x)) 来表示。损失函数越小,模型的鲁棒性就越好。损失函数是...
  • 一文吃掉tensorflow2.0损失函数损失函数的自定义
  • 机器学习中的目标函数、损失函数、代价函数有什么区别? 首先给出结论:损失函数和代价函数是同一个东西, 目标函数是一个与他们相关但更广的概念,对于目标函数来说在有约束条件下的最小化就是损失函数(loss ...
  • 1.损失函数损失函数(loss function)是用来评测模型的预测值f(x)与真实值Y的相似程度,损失函数越小,就代表模型的鲁棒性越好,损失函数指导模型学习。根据损失函数来做反向传播修改模型参数。机器学习的目的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 26,926
精华内容 10,770
关键字:

损失函数