Content:

  1. 为什么需要激活函数;
  2. 一个神经元在做什么;
  3. 激活函数
  • Sigmoid
  • Softmax

4. 交叉熵损失函数

  • Binary cross-entropy
  • Categorican cross-entropy

为什么需要激活函数:

Ans: 为了引入非线性变换。

如下图所示的红线和蓝线,在这个二维空间中,我们不能用一条线完整的将这两个区域分割开。但如果我们将这个二维空间扭曲变换,那么在高维空间中,就可以用一条线完整的分割出红色和蓝色区域。(这也就是打破线性变换的局限性,通过非线性变换在高维空间解决分类问题,也是神经网络要做的事情)

Fig 1. A neural network can distort the input space to make the classes of data (blue and red regions) linearly separable [1].

Fig.2. The hidden layer learns a representation so that the data is linearly separable [1]

一个基本的神经元在做什么:

y:神经元的输出;

W*x: 就像我之前说的,神经网络目的就是将低维空间映射到高维空间从而实现线性可分。所以这一项的目的就是空间变换实现升维或者降维, 空间的放大或者缩小, 旋转)的目的;

b: bias, 实现空间平移的目的;

a: 空间的弯曲;

基本神经元各个部分的解释

激活函数:

sigmoid, softmax主要用于神经网络输出层的输出。

总结:激活函数给神经元引入了非线性因素,使得神经网络可以任意逼近任何非线性函数,这样神经网络就可以应用到众多的非线性模型中。

1. Sigmoid

Sigmoid 将一个实数映射到 (0,1) 的区间,可以用来做二分类。Sigmoid 在特征相差比较复杂或是相差不是特别大时效果比较好。Sigmoid不适合用在神经网络的中间层,因为对于深层网络,sigmoid 函数反向传播时,很容易就会出现梯度消失的情况(在 sigmoid 接近饱和区时,变换太缓慢,导数趋于 0,这种情况会造成信息丢失),从而无法完成深层网络的训练。所以Sigmoid主要用于对神经网络输出层的激活

2. Softmax

可以看作是Sigmoid的一般情况,用于多分类问题。

Softmax函数将K维的实数向量压缩(映射)成另一个K维的实数向量,其中向量中的每个元素取值都介于 (0,1) 之间。常用于多分类问题。

交叉熵损失函数:

交叉熵可在神经网络(机器学习)中作为损失函数。 如下公式所示:y表示真实标记的分布,a则为训练后的模型的预测标记分布,交叉熵损失函数可以衡量y与a的相似性。交叉熵作为损失函数还有一个好处是使用sigmoid函数在梯度下降时能避免均方误差损失函数学习速率降低的问题,因为学习速率可以被输出的误差所控制。

  1. Binary Cross Entropy

常用于二分类问题,当然也可以用于多分类问题,通常需要在网络的最后一层添加sigmoid进行配合使用,其期望输出值(target)需要进行one hot编码,另外BCELoss还可以用于多分类问题Multi-label classification.

定义:
For brevity, let x = output, z = target. The binary cross entropy loss is
loss(x, z) = - sum_i (x[i] * log(z[i]) + (1 - x[i]) * log(1 - z[i]))

对应的代码为:

def binary_crossentropy(t,o):return -(t*tf.log(o+eps) + (1.0-t)*tf.log(1.0-o+eps))

2. Categorical cross-entropy

p are the predictions, t are the targets, i denotes the data point and j denotes the class.

适用于多分类问题,并使用softmax作为输出层的激活函数的情况。

This is the loss function of choice for multi-class classification problems and softmax output units. For hard targets, i.e., targets that assign all of the probability to a single class per data point, providing a vector of int for the targets is usually slightly more efficient than providing a matrix with a single 1.0 per row.

References:

[1] Neural Networks, Manifolds, and Topology

链接:https://www.zhihu.com/question/36307214/answer/364963552


贴几个不错的链接:

用sigmoid作为激活函数,为什么往往损失函数选用binary_crossentropy 而不用mse

各大损失函数的定义:MSE,MAE,MAPE,hinge,squad_hinge,binary_crossentropy等

【机器学习】 - 关于合适用均方误差(MSE)何时用交叉熵(cross-entropy)

https://www.cnblogs.com/lijie-blog/p/10166002.html


sigmoid和softmax是神经网络输出层使用的激活函数,分别用于两类判别和多类判别。

binary cross-entropy和categorical cross-entropy是相对应的损失函数。

对应的激活函数和损失函数相匹配,可以使得error propagation的时候,每个输出神经元的“误差”(损失函数对输入的导数)恰等于其输出与ground truth之差。
(详见Pattern Recognition and Machine Learning一书5.3章)

链接:https://www.zhihu.com/question/36307214/answer/66899792

【机器学习】 - 激活函数与交叉熵Sigmoid, Softmax, binary_crossentropy, categorican_crossentropy区别相关推荐

  1. 【机器学习】 二次损失函数的不足及交叉熵损失softmax详解

    二次代价函数的不足: 以sigmoid激活函数为例,由于初始化是随机的,假设目标值为0,第一次随机初始化使得输入为0.82,那么还可以,多次迭代之后可以收敛到0.09,但如果第一次随机初始化到0.98 ...

  2. 机器学习中的各种损失函数(Hinge loss,交叉熵,softmax)

    机器学习中的各种损失函数 SVM multiclass loss(Hinge loss) 这是一个合页函数,也叫Hinge function,loss 函数反映的是我们对于当前分类结果的不满意程度.在 ...

  3. (Tensorflow之四)激活函数、交叉熵及优化器

    一.激活函数 激活函数的主要作用是提供网络的非线性建模能力.如果没有激活函数,那么该网络仅能够表达线性映射,此时即便有再多的隐藏层,其整个网络跟单层神经网络也是等价的.因此也可以认为,只有加入了激活函 ...

  4. 熵,交叉熵与softmax

    经常说交叉熵+softmax(或者交叉熵损失函数),应该是对多分类下,softmax作为最后一层输出,交叉熵再判断这softmax的概率和真实值之间的差异(感觉不对,应该是用softmax的公式去求交 ...

  5. 一文了解机器学习中的交叉熵

    https://www.toutiao.com/a6654435108105224712/ 2019-02-05 16:46:49 熵 在介绍交叉熵之前首先介绍熵(entropy)的概念.熵是信息论中 ...

  6. 交叉熵 和 softmax 公式及 python 实现

    交叉熵损失函数:实际输出(概率)与期望输出(概率)的距离,也就是交叉熵的值越小,两个概率分布就越接近. Python 实现: def cross_entropy(a, y):return np.sum ...

  7. 关于交叉熵(Cross Entropy)与Softmax

    目录 写在前面 KL散度 交叉熵 Softmax 交叉熵与Softmax的关系 交叉熵损失 Softmax的求导 堆叠+向量化 其他关于Softmax函数的问题 赠品 写在前面 Softmax.交叉熵 ...

  8. 神经网络学习中的SoftMax与交叉熵

    简 介: 对于在深度学习中的两个常见的函数SoftMax,交叉熵进行的探讨.在利用paddle平台中的反向求微分进行验证的过程中,发现结果 与数学定义有差别.具体原因还需要之后进行查找. 关键词: 交 ...

  9. Keras【Deep Learning With Python】逻辑回归·softmax多分类与交叉熵

    文章目录 1 逻辑回归 1.2 Sigmod函数 1.2 逻辑回归损失函数 2 交叉熵 3 softmax分类 1 逻辑回归 回答0或1 1.2 Sigmod函数 0.9是好人 0.1是坏人 二分类 ...

最新文章

  1. 企业级监控软件Zabbix搭建部署之使用mutt+msmtp配置Zabbix邮件报警
  2. 用 Flask 来写个轻博客 (17) — MV(C)_应用蓝图来重构项目
  3. 如何在UIAlertView中显示进度条
  4. C代码开发遇到的问题 变量初始化和结构体指针移动
  5. python3多进程写时拷贝_Python实现多进程的详解(附示例)
  6. 洛谷P7515:矩阵游戏(差分约束)
  7. 点击回车事件(登录)
  8. html5中的行高元素,详解HTML元素的height、offsetHeight、clientHeight、scrollTop等梳理
  9. 午睡还要被骂?新东方旗下公司被曝禁止午休引热议 CEO回应...
  10. android申请多个运行时权限,Android 6.0(API 23) 运行时权限(二)之权限申请
  11. 电脑磁盘空间不足怎么办_Mac磁盘总是提示空间不足?学会这几招,瞬间腾出几个G...
  12. 洛谷 1429 平面最近点对(加强版) 快排 非点分治或kdtree
  13. 软考程序员-C专题(2)
  14. 基于三菱PLC的全自动洗衣机控制系统设计
  15. python有趣小程序代码-一个可以套路别人的python小程序实例代码
  16. word2019标题序号显示为黑色小方块-解决办法
  17. 同质化游戏做出不同点在于背景音乐
  18. 触摸操作(单手旋转双手缩放)
  19. 学习视频、高清影视下载
  20. ExcelVba_调用jQuery计算Md5和CRC32

热门文章

  1. jQuery图表插件 JS Charts
  2. 【IE大叔的嘴歪眼斜】之—— 由hasLayout引发的临床CSS Bug表
  3. linux 视频学习
  4. DipperRiver.Net通信协议设计
  5. A. Arithmetic Array Codeforces Round #726 (Div. 2)
  6. linux系统时间函数,Linux时间时区详解与常用时间函数
  7. Linux I2C核心、总线与设备驱动(二)
  8. python程序怎么修改_python文件如何修改
  9. angular4输入有效性_Angular 2 用户输入
  10. 【转】c#数字图像处理(一)Bitmap类、 Bitmapdata类和 Graphics类