猫史档案馆


今天我们拓展学到G10的训练师们所了解的激活函数,喵了解!

用户:星空牧场星空牧场查看:102 回复:21 评论:8 创建时间:2020-06-22T19:12:49


我们知道,一次函数y=kx+b是进行线性分类的,可是在大多数情况下,分类器所面临的是交错混杂的两组数据,无法直接进行一次函数的线性化分。于是,一代又一代的计算机科学家、数学家们发明了激活函数。这份教程,我们来聊一聊激活函数。

(本教程内部图片文件知识产权归编程猫所有,本人只是对此进行进一步的加深而已)

center_image

所谓激活函数(Activation Function),就是在人工神经网络的神经元上运行的函数,负责将神经元的输入映射到输出端。

激活函数的主要作用是提供网络的非线性建模能力。如果没有激活函数,那么该网络仅能够表达线性映射,此时即便有再多的隐藏层,其整个网络跟单层神经网络也是等价的。因此也可以认为,只有加入了激活函数之后,深度神经网络才具备了分层的非线性映射学习能力。 那么激活函数应该具有什么样的性质呢?

可喵: 当优化方法是基于梯度的时候,这个性质是必须的。 
单调性: 当激活函数是单调的时候,单层网络能够保证是凸函数。 
输出值的范围: 当激活函数输出值是 有限 的时候,基于梯度的优化方喵更加 稳定,因为特征的表示受有限权值的影响更显著;当激活函数的输出是 无限 的时候,模型的训练会更加高效,不过在这种情况小,一般需要更小的learning rate.

以训练师们课上学习到的sigmoid函数为例(进行拓展展开的讲解):

sigmoid 函数是使用范围最广的一类激活函数,具有指数函数形状,它在物理意义上最为接近生物神经元。此外,(0, 1) 的输出还可以被表示作概率,或用于输入的归一化,代表性的如Sigmoid交叉熵损失函数。

可以看出,sigmoid函数连续,光滑,严格单调,以(0,0.5)中心对称,是一个非常良好的阈值函数。

当x趋近负无穷时,y趋近于0;趋近于正无穷时,y趋近于1;x=0时,y=0.5。当然,在x超出[-6,6]的范围后,函数值基本上没有变化,值非常接近,在应用中一般不考虑。

Sigmoid函数的值域范围限制在(0,1)之间,我们知道[0,1]与概率值的范围是相对应的,这样sigmoid函数就能与一个概率分布联系起来了。

Sigmoid函数的导数是其本身的函数,即f′(x)=f(x)(1−f(x))f′(x)=f(x)(1−f(x)),计算非常方便,也非常节省计算时间。

然而,sigmoid也有其自身的缺陷,最明显的就是饱和性。从上图可以看到,其两侧导数逐渐趋近于0 

课上提及到的ReLU函数,这里再进行展开讲解:

ReLU的全称是Rectified Linear Units,是一种后来才出现的激活函数。 可以看到,当x<0时,ReLU硬饱和,而当x>0时,则不存在饱和问题。所以,ReLU 能够在x>0时保持梯度不衰减,从而缓解梯度消失问题。这让我们能够直接以监督的方式训练深度神经网络,而无需依赖无监督的逐层预训练。

本次的激活函数教程就先分享到这里,学到了的话,点赞加关注!

emotion_编程猫_加油


回复

上一页第 1 页 / 共 1 页下一页
星空牧场星空牧场

觉得so easy回复666

觉得okk回复okk

觉得有难度回复333

觉得疯了回复OMG

点赞0


评论

幸亏我简单的学过一点微积分,极限,要不然真是一脸懵逼啊

理解这个也只需要一点微积分。做卷积时,哪个积分核好用多半是凭经验。


xzyawaxzyawa

OMG

点赞0


评论


星空牧场星空牧场

看来嚣章鱼是为图形化大佬emotion_编程猫_厉害了

点赞0


评论


印泽恩Tim印泽恩Tim

G2的小白躲在角落瑟瑟发抖……

点赞0


评论


星空牧场星空牧场

@印度大象,进了工作室的就不是小白啊

点赞0


评论


没有人doge没有人doge

( ⊙o⊙ )哇 大佬

点赞0


评论


星空牧场星空牧场

只不过Python搞数据的多

点赞1


评论


盒子的box盒子的box

max(0,x)

等于

(|x|+x)/2

点赞0


评论


盒子的box盒子的box

事实上,除了Ce^x的导数是其本身,其他的都不是,Sigmoid也不是

点赞0


评论


盒子的box盒子的box

444有错不过能发这样的帖子很好

点赞0


评论


星空牧场星空牧场

@盒子box,多谢指正。教程量大,有些不足,希望大家多多指教,我们不断更新优化emotion_编程猫_厉害了

点赞0


评论


急_开_锁_办_证810864急_开_锁_办_证810864

我个人不喜欢把线性分类器写成y = kx + b,因为y = kx+b中的x和一般情形下的wx +b = 0中的x含义完全不一样。很多参考资料谈到2维平面点集的分类问题时(特别是只由4个点构造的非线性可分集的例子),总是把初中数学的一次函数y = kx + b搬出来说事,不知道为什么。当特征为2维变量时,要寻找的分类器明显已变为一个二元一次函数z = f(x1, x2) = w1x1 + w2x2 + b = w1x + w2y + b,根本不是再什么一元一次函数z = kx + b,寻找的是分类面而不是分界线。不留意的话,很容易混淆。

点赞0


评论


星空牧场星空牧场

@铐xxx,一次函数是在二维平面中的线性分类器,是对于线性以及非线性分类器的简易模拟环境。你说的表达是在将权重分别成上去再加上偏置,用到的是dot。你说提及的是三维分类,但也并不意味着在神经元当中并不寻找分界线。我们结合图例看:

center_image

这是分类器的一种情况(而且时常出现)

你说的是三维立体中用一个平面分成两部分。 所以本质上都是相同的,y=kx+b或者说成wx+b,

而拓展起来就是dot出来实现你所说的三维分类器。

点赞0


评论

呃,你这个已经都不是函数了。1每组自变量要有1个唯一的y对应才是函数。你画的图就是二维的点集分类问题,不能用一元函数弄,你的每个点都有2个特征坐标,另外还有1个标记它属于哪一类的预测值(你的第三个维度是用颜色差异表示的)。我知道你的意思,但是你这种说法是不准确的。

给定一个n个特征描述的样本 X = [x1, x2, x3, …, xn], 其中xi 是X的第i个属性上的值。线性模型试图学的一个通过属性的线性组合来进行预测的函数。如果只有一个特征值。那么预测函数就是 f = w1*x +b ,也就是我们十分熟悉的老朋友 – 一次函数。

我们可以调整w1(斜率),b(偏置),来调整一次函数对数据的拟合程度,尽可能的让点都在一条直线上。线性模型也具有易建模性。当然你的说法我完全能够理解的。


蒟蒻OIer1048576蒟蒻OIer1048576

okk

点赞0


评论


星空之忆星空之忆

PyTorch框架了解一下

点赞0


评论

但是Pytorch不能取代书中的公式和证明。

我是说如果要进行深度学习就用PyTorch

对的,基于面向对象式编程设计出来的自定义类结合forward测试与backward的loss衡量,很便捷地实现w以及b的调整,从而实现深度学习。


可靠的狼王蛛PZ5j可靠的狼王蛛PZ5j

啊,太好啦,可以预习了,不过我才学到G6课程,不过我不是六年级啊!

点赞0


评论


March_12thMarch_12th

我五年级,才学到G6呢

点赞0


评论


爵士OIer爵士OIer

飞了

我居然没有看见解析式

点赞0


评论


爵士OIer爵士OIer

和正切的反函数是真的像

点赞0


评论


爵士OIer爵士OIer

还有双曲正切

太像了

点赞0


评论


爵士OIer爵士OIer

?等等,第一列第二个不就是双曲正切吗

点赞0


评论