美文网首页深度学习
解析损失函数之categorical_crossentropy

解析损失函数之categorical_crossentropy

作者: LiBiscuit | 来源:发表于2018-12-21 10:40 被阅读797次

    冒泡~那天伙伴说,看我的简书是动力,就突然发现很久没有更了。最近实验是遇到了瓶颈,死活卡在了最后的Merge上...值得做的事情都不容易鸭。今天就再记录一下。

    损失函数

    在之前写期望风险的时候其实已经提过这个概念了,再补充一下

    损失函数
    定义:损失函数就一个具体的样本而言,模型预测的值与真实值之间的差距。
    对于一个样本(xi,yi)其中yi为真实值,而f(xi)为我们的预测值。使用损失函数L(f(xi),yi)来表示真实值和预测值之间的差距。两者差距越小越好,最理想的情况是预测值刚好等于真实值。

    进入正题~

    categorical_crossentropy loss(交叉熵损失函数)

    讲交叉熵损失函数,我想先从均方差损失函数讲起

    均方差损失函数
    简单来说,均方误差(MSE)的含义是求一个batch中n个样本的n个输出与期望输出的差的平方的平均值。比如对于一个神经元(单输入单输出,sigmoid函数),定义其代价函数为
    (其中y是我们期望的输出,a为神经元的实际输出【 a=σ(z), where z=wx+b 】。):


    在训练神经网络过程中,我们通过梯度下降算法来更新w和b,因此需要计算损失函数对w和b的导数:
    然后更新w、b:
    w <—— w - η* ∂C/∂w = w - η * a σ′(z)
    b <—— b - η
    ∂C/∂b = b - η * a * σ′(z)
    因为sigmoid函数的性质,导致σ′(z)在z取大部分值时会很小,这样会使得w和b更新非常慢(因为η * a * σ′(z)这一项接近于0)。

    为了克服这个不足,引入了categorical_crossentropy(交叉熵损失函数)

    categorical_crossentropy(交叉熵损失函数)
    交叉熵是用来评估当前训练得到的概率分布与真实分布的差异情况。
    公式如下:(其中y为期望的输出,a为神经元实际输出【a=σ(z), where z=∑Wj * Xj+b】)


    同样进行求导:

    从上图可以看到,导数中没有σ′(z)这一项,权重的更新是受σ(z)−y这一项影响,即受误差的影响,所以当误差大的时候,权重更新就快,当误差小的时候,权重的更新就慢。这是一个很好的性质。
    性质
    a.非负性。(所以我们的目标就是最小化代价函数)
    b.当真实输出a与期望输出y接近的时候,代价函数接近于0.(比如y=0,a~0;y=1,a~1时,代价函数都接近0)。
    可参考(https://blog.csdn.net/wtq1993/article/details/51741471
    https://yq.aliyun.com/ziliao/505288)--详细公式推导

    Hinge loss

    在网上也有人把hinge loss称为铰链损失函数,它可用于“最大间隔(max-margin)”分类,其最著名的应用是作为SVM的损失函数。


    二分类情况下

    多分类
    扩展到多分类问题上就需要多加一个边界值,然后叠加起来。公式如下:

    举例:
    栗子① △为1
    假设有3个类cat、car、frog: image.png 第一列表示样本真实类别为cat,分类器判断样本为cat的分数为3.2,判断为car的分数为5.1,判断为frog的分数为 -1.7。
    hinge loss:

    栗子②△取10

    可参考(http://www.cnblogs.com/xiaojianliu/articles/10014598.html#_label1
    https://blog.csdn.net/fendegao/article/details/79968994

    Ending~明天是冬至啦!提前的冬至快乐!
    还是要干巴爹鸭!
    emmm....考研的朋友加油!你会考上的鸭!

    相关文章

      网友评论

        本文标题:解析损失函数之categorical_crossentropy

        本文链接:https://www.haomeiwen.com/subject/pmgpkqtx.html