深度学习基础理论探索(二): cross-entropy损失函数的前世今生
来源:互联网 发布:网络封包助手 编辑:程序博客网 时间:2024/06/16 02:26
前面我们讲到,克服梯度消失有两个方向,1.用rule激活函数。2.改进损失函数用cross_entropy。
ok,首先我们先看为什么代价损失函数可以用Cross_entropy.
以前使用的二次代价函数很好理解:
即:计算值与真实值的残差。
它有两个特点:
1.损失函数永远大于0.
2.计算值与真实值越接近,损失函数越小。两者差距越大,损失函数越大。
我们现在假设这是损失函数的基本要求。
那cross-entropy损失函数满足这些要求吗?
首先,可以证明该函数是大于0的
其次,当y=0时(即真实值为0)若a=0(计算值为0),c = 0*ln0 + 1*ln1 等于0(前项等于0,后项也等于0)。
当y=1时,若a=0, c = ln0 + 0*ln1等于无穷大。
即:计算值与真实值差距越大,损失函数越大。反之亦然。
所以cross-entropy满足我们对损失函数的定义。所以他是个合格的损失函数
这里我们其实会发现 当y=0,a=1这样的极端情况出现时,损失函数无穷大。程序会出问题,我们可以对cross-entropy做一个修改:y*ln((a+0.05)/1.05))+(1-y)*ln((1.05-a)/1.05)
ok,下一个话题。为什么cross-entroy可以抑制梯度消失。
根据上个话题我们知道了激活函数为sigmoid、损失 函数为二次代价函数时,w、b的跟新速度与激活函数的导数相关。
那么损失函数换成cross-entropy会怎样呢
再来一波公式:
由以上推导可得w、b对损失函数的偏导,即w、b的更新速度只与(a-y)有关,也就是只与预测值与真实值的差距有关。不同于二次代价函数的更新速度和激活函数的导数成正比(上篇提到)。
这样就会有一个比较好的性质:
计算值与实际值差距越大,w、b的更新速度越快
具体推导过程,可参见
http://neuralnetworksanddeeplearning.com/chap3.html
- 深度学习基础理论探索(二): cross-entropy损失函数的前世今生
- 深度学习--手写数字识别<二>--交叉熵损失函数(cross entropy cost function)
- 深度学习笔记:交叉熵(cross-entropy)损失函数解决二次型带来的学习速率下降问题
- 深度学习的前世今生
- 机器学习损失函数、L1-L2正则化的前世今生
- 机器学习损失函数、L1-L2正则化的前世今生
- 神经网络与深度学习的“前世今生”
- 张志华:深度学习的今生前世
- 【联系】二项分布的对数似然函数与交叉熵(cross entropy)损失函数
- caffe Sigmoid cross entropy loss 交叉熵损失函数
- 交叉熵损失函数(cross entropy loss)快速理解
- caffe Sigmoid cross entropy loss 交叉熵损失函数
- 深度学习基础理论探索(一):激活函数、梯度消失
- AI理论学习笔记(一):深度学习的前世今生
- 人工智能在深度学习领域的前世今生
- 这六段代码隐藏着深度学习的前世今生!
- 这六段代码隐藏着深度学习的前世今生!
- 【深度学习】Inception的前世今生(三)--Inception V3
- Pandas 处理 dummy variable
- 【python】Windows下使用pip安装python模块时遇到的问题解决
- 八大排序算法之(三)插入排序 折半插入排序
- 花括号展开(Brace Expansion)
- IO流
- 深度学习基础理论探索(二): cross-entropy损失函数的前世今生
- 如何处理不平衡数据
- 用通俗易懂的大白话讲解Map/Reduce原理
- 波浪号展开(Tilde Expansion)
- Hadoop安装
- Latex-条目、编号、描述
- 丑数
- ALV Data_Changed事件应用一例
- 命令替换(Command Substitution)