嘿~瞎话一下,为啥要用Sigmoid?!

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第11天,点击查看活动详情

前言

嘿~ 失踪人口回归,在长达十天的时间里,我终于还是留在了学校!从今天起开始暑期学习计划。

在开始今天的内容之前,不知道大家有没有相关sigmod为什么是这个样子的: 在这里插入图片描述

为什么我们可以直接套用这个函数来做非线性变化咧? 这里我主要是想要简单地参数我自己的看法,如有不足,多多指教!

概率

首先,从概率的角度出发,我们其实可以发现很多事情的联系之间都是有一定的概率联系的,我们一开始学习神经网络(至少我是)是从最简单的BP神经网络(具备反向传播的网络)开始的,而一开始我所作的事情就是做拟合,在已有的数据的基础上,期望找出一个特殊的关系可以使用线性层和非线性层进行描述,之后输入未知参数,输入一个不在训练集的数据,然后期望得出一个结果。本质上我们是在做预测,做拟合,就像是使用最小二乘法那样,希望找出一个优雅的直线来描述数据的关系,只不过我们实际上要复杂的多。

而这一切其实都离不开概率,实际上我们所作的预测都是指在当前的条件概率下(数据集中特殊的关系下)判断一件事情未来会发生的概率(输入新的数据,得到可信度合适的输出值)用专业一点的话来说就是至:模型的泛化能力

而且这一点在强化学习上体现的淋漓尽致。所以,我们从概率的角度去出发,为啥这个Sigmod 长这样? 或者说,为什么要有激活函数,激活函数做到哪些东西,为什么可以更好的去表达一个模型?

Sigmoid

运用场景

在进一步参数之前,我们还需要知道sigmoid函数运用在那些地方,首先是作为激活函数运用在神经网络的隐藏层,之后是使用逻辑回归时通过sigmoid进行分类。

特殊性质

并且我们还能够知道sigmoid具备一下性质: 函数的取值在0-1之间,且在0.5处为中心对称,并且越靠近x=0的取值斜率越大。

此外它的导数长这样: 在这里插入图片描述 在这里插入图片描述 然后你发现高斯分布长这样: 在这里插入图片描述

所以在这里简单地猜测一下,我们是否可以使用sigmoid 来近似求取高斯分布的概率分布? 在这里插入图片描述

所以当我有了概率分布函数之后我可以做什么?这里有一个点就是,我们很多时候,其实都是默认了,我们当前的样本说服从高斯分布的(正态分布 = 高斯分布 = 钟形曲线)

联系

简单描述

现在我们已经简单地去联系了sigmoid和高斯分布的相似点,我们发现我们使用sigmoid其实可以近似地去拟合高斯分布,这就意味着,我们可以减少运算。

而且我们还知道,我们的神经网络,其实是在做一种“拟合”。并且是基于某种概率来的,在这里我们是假设为样本服从高斯分布。换一句话,说我们最终得到的神经网络模型,类似于一个概率模型,输入一个x,希望得到一个y,而这个y是通过预测得到的,在预测时还有一个置信度,这个置信度类似于一个概率,当这个y大于这个设定的阈值时输出结果。(这里可以参考yolo,这里的描述其实有点像yolo论文中的置信度的意思)

于是我们可以把神经网络抽象为这个东西:

在这里插入图片描述 x 是输入的未知参数,C1是相当于一个y ,而函数P 则是相当于预测置信度的函数。并且通过一个特殊的方式:输入x得到C,然后想办法让P的值变大。而这个x是如何得到C的?通过线性层!之后通过梯度下降/上升方法进行修正”特殊的方式“让P的值变大,因为你其实也发现了w权重其实是由线性层产生的。 当然这个只是其中一种解释,因为在神经网络里面运用sigmoid的原因其实很多,有时候,你甚至直接用sigmoid压缩输出范围都可以。

分类问题

ok,我们从sigmoid的应用场景出发,看看我们的假设可不可以? 首先是分类我问题,我们按照逻辑回归来看看。 我们套用最大熵解释该解释是说:在我们给定了某些假设之后,我们希望在给定假设前提下,分布尽可能的均匀。对于Logistic Regression,我们假设了对于{X,Y},我们预测的目标是Y|X ,Y|X,并假设认为Y,XY,X服从伯努利分布,所以我们只需要知道P(Y|X)P(Y|X);其次我们需要一个线性模型,所以P(Y|X)=f(wx)P(Y|X)=f(wx)。接下来我们就只需要知道f是什么就行了。而我们可以通过最大熵原则推出的这个f,就是sigmoid。为什么是sigmoid这里可以理解为,我们把sigmoid假似为正态分布的概率分布函数。(正态分布是 很大的二项,即扔好多好多次硬币,且硬币是完全相同的 伯努利分布是关于布尔变量 的概率分布,其连续参数 表示变量 的概率。)

于是我们做个简单推理:

假设c1,c2

然后,我们做分类的目的就是为了得到x,在某一个C(class)下的概率 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

之后,我们的目的是要得到P(x,C)

在这里插入图片描述 而这一部分可以通过样本得到,不过这部分很复杂。

最终可以知道的是,套用了正态分布方程求解,得到的函数很复杂,很难积分,求导。

所以这个时候我们使用sigmoid 代替了那么复杂的运算。

神经网络运用

增强非线性

首先这个是从sigmoid的函数图像可以看出来,用这玩意可以实现非线性变换,如果从拟合的角度来看,就是sigmoid(f(x)) 其中f(x) 为线性层。效果有点像是做多项式拟合,傅里叶拟合等等。因为N个线性层的表达其实和一个没有什么太大区别。

范围压缩

这个函数的输出范围在0-1内,可以很好地控制网络的输出。

概率角度

对于一个分类问题,或者说是预测问题,我们是需要一个概率表达的,这个sigmoid可以充当这个高斯分布的分布函数,并且可以简化运算。

瞎话一下

最后在扯一下,就是我们整个神经网络,深度学习,其实做的还真是基于一种概率分布去做预测,也就是通过数据集表现处来的概率模型,去猜测他们之间的关系,之后做出预测。那么问题来了,概率不一定保持一致或者满足高斯分布,再或者我们输入的数据和数据集训练的数据概率分布是不一样的,那么这个模型不就没那么可靠了嘛,那么是否意味着,我们永远无法得到”超脑“。

猜你喜欢

转载自juejin.im/post/7110455052346589198