深度学习基础(一):sigmoid/softmax/cross Entropy

简介: 深度学习基础(一):sigmoid/softmax/cross Entropy

在分类中,首先对于Logistic回归:

8.png

从上图可以看出,

9.png

很明显,其输出f(x;wb)主要是一些连续的实数,可以用于线性回归,但是对于分类问题无法进行直接进行分类预测,这里需要引入非线性的决策函数g(.)—这里我认为就是激活函数,使其输出从连续的实数转换到一些离散的标签。

对于激活函数,可分为一下:

10.png


其中tanh、relu、以及leaky relu激活函数相比sigmoid和softmax不适用与分类,其主要的作用以及差别见链接--------待

这里主要来介绍sigmoid和softmax激活函数,而sigmoid主要用于二分类,softmax激活函数主要用于多分类。

11.png

可以看出其把从实数区间的值挤压到了(0,1)概率之间,这样可以认为:

12.png

这里选取0.5作为阈值可以用于二分类。

13.png如:上图就是判断一张图片是否是猫,答案为:1猫 、0不是猫。

14.png



对于最后的输出经过softmax函数得到的值其和是为1的。

(三)针对上面的激活函数,选择损失函数:

15.png

注:y帽 是预测的值。

这里只列取了两个,对于分类,主要利用第二个—交叉熵损失函数,因为对于第一个平方和损失函数,会导致L是非凸的函数,会有多个极限值。

1)sigmoid激活函数对应的交叉熵损失函数

if y=1,L(y帽,y) = -log(y帽),为了使L较小,希望y帽较大

if y=0,L(y帽,y) = log(1-(y帽)),同理为了使L较小,希望y帽较小.

可以看出对于不同的真值1/0,其y帽对应变大和变小,符合我们的要求。

对于所有样本,即对所有的m个样本进行L平均求和即可。

分析其公式的由来:

因为我们在前面设置了预测的y帽的概率即下面的公式:

16.png


然后,对应我们认为y帽是真值y=1的概率,而1-y帽是真值y=0的概率,然后从下面的推导中(合并p(y|x),取log对数等),可以得出L为上面的公式。

17.png

注:这部分对于上面的p(y=1|x)=sigmoid(x)的由来不是太清楚,可能就是这样定义的吧,然后后面都以此为基础,然后推导出来的。

参考:https://www.bilibili.com/video/BV1w741147Ac?p=9

2)softmax激活函数的交叉熵损失函数

引:其实对于多分类(C>2个类别)问题可以转换为二分类问题

第一种将其转换为1对其余的方式,需要c个判别函数

第二种将其转换为1对1的方式,需要c(c-1)/2的判别函数

第三种,argmax方式,是1对其余的改进方式,不是明确的一对其余,而是比较了其大小。

上面几种或多或少存在些问题,可以自己查一查,并且不常用吧!!

第四种:softmax激活函数。

主要见下面的softmax的交叉熵损失函数:


18.png

其输出有c个值,不像二分类只有一个值,这c个值分别代表每个类别的预测概率,所以可以看到softmax最后的风险函数只有一个分支。最后的loss损失函数:

19.png



分析:

其公式本质应该是(对于一个样本):

20.png

但是,因为其利用了one-hot编码方式,在相乘的时候,只有真实标签对应的logs才会保留,所以可以简化为:

21.png

为什么这种方式符合咱们的条件,可以看下面的例子:

假设一个5分类问题,然后一个样本I的标签y=[0,0,0,1,0],

也就是说样本I的真实标签是4,假设模型预测的结果概率(softmax的输出)p=[0.1,0.15,0.05,0.6,0.1],可以看出这个预测是对的,那么对应的损失L=-log(0.6),也就是当这个样本经过这样的网络参数产生这样的预测p时,它的损失是-log(0.6)。那么假设p=[0.15,0.2,0.4,0.1,0.15],这个预测结果就很离谱了,因为真实标签是4,而你觉得这个样本是4的概率只有0.1(远不如其他概率高,如果是在测试阶段,那么模型就会预测该样本属于类别3),对应损失L=-log(0.1)。那么假设p=[0.05,0.15,0.4,0.3,0.1],这个预测结果虽然也错了,但是没有前面那个那么离谱,对应的损失L=-log(0.3)。我们知道log函数在输入小于1的时候是个负数,而且log函数是递增函数,所以-log(0.6) < -log(0.3) < -log(0.1)。简单讲就是你预测错比预测对的损失要大,预测错得离谱比预测错得轻微的损失要大。

例子参考:https://blog.csdn.net/u014380165/article/details/77284921


总结比较:

22.png

附:

对于交叉熵以及熵 的各个概念的理解,可以参考下面的图片:

23.png


24.png


目前我的理解能力有限,从其本质出发比较吃力,有能力的同学可以看一下,如果有自己的理解,可以给我讲讲。

宋wz
+关注
目录
打赏
0
0
0
0
4
分享
相关文章
深度学习笔记(三):神经网络之九种激活函数Sigmoid、tanh、ReLU、ReLU6、Leaky Relu、ELU、Swish、Mish、Softmax详解
本文介绍了九种常用的神经网络激活函数:Sigmoid、tanh、ReLU、ReLU6、Leaky ReLU、ELU、Swish、Mish和Softmax,包括它们的定义、图像、优缺点以及在深度学习中的应用和代码实现。
366 0
深度学习笔记(三):神经网络之九种激活函数Sigmoid、tanh、ReLU、ReLU6、Leaky Relu、ELU、Swish、Mish、Softmax详解
现代深度学习框架构建问题之Sigmoid类实现Function接口如何解决
现代深度学习框架构建问题之Sigmoid类实现Function接口如何解决
46 4
深度学习基础入门篇[四]:激活函数介绍:tanh、sigmoid、ReLU、PReLU、ELU、softplus、softmax、swish等
深度学习基础入门篇[四]:激活函数介绍:tanh、sigmoid、ReLU、PReLU、ELU、softplus、softmax、swish等
深度学习基础入门篇[四]:激活函数介绍:tanh、sigmoid、ReLU、PReLU、ELU、softplus、softmax、swish等
# 【深度学习】:《PyTorch入门到项目实战》第五天:从0到1实现Softmax回归
softmax回归模型是logistic回归模型在多分类问题上的推广,在多分类问题中,类标签y可以取两个以上的值。本文基于MNIST手写数字数据集来演示如何使用Pytorch实现softmax回归
# 【深度学习】:《PyTorch入门到项目实战》第五天:从0到1实现Softmax回归
深度学习入门基础CNN系列——池化(Pooling)和Sigmoid、ReLU激活函数
池化是使用某一位置的相邻输出的总体统计特征代替网络在该位置的输出,其好处是当输入数据做出少量平移时,经过池化函数后的大多数输出还能保持不变。比如:当识别一张图像是否是人脸时,我们需要知道人脸左边有一只眼睛,右边也有一只眼睛,而不需要知道眼睛的精确位置,这时候通过池化某一片区域的像素点来得到总体统计特征会显得很有用。由于池化之后特征图会变得更小,如果后面连接的是全连接层,能有效的减小神经元的个数,节省存储空间并提高计算效率。
525 1
深度学习入门基础CNN系列——池化(Pooling)和Sigmoid、ReLU激活函数
深入探索:深度学习在时间序列预测中的强大应用与实现
时间序列分析是数据科学和机器学习中一个重要的研究领域,广泛应用于金融市场、天气预报、能源管理、交通预测、健康监控等多个领域。时间序列数据具有顺序相关性,通常展示出时间上较强的依赖性,因此简单的传统回归模型往往不能捕捉其中复杂的动态特征。深度学习通过其非线性建模能力和层次结构的特征提取能力,能够有效地捕捉复杂的时间相关性和非线性动态变化模式,从而在时间序列分析中展现出极大的潜力。
深度学习在资源利用率优化中的应用:让服务器更聪明
深度学习在资源利用率优化中的应用:让服务器更聪明
17 6