8

人工神经网络的驱动者:激活函数是什么?

 3 years ago
source link: http://ai.51cto.com/art/202101/639969.htm
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

本文转载自公众号“读芯术”(ID:AI_Discovery)。

激活函数是人工神经网络的驱动因素,其位于神经元之上,并管理着神经元行为,比如是否需要处理某个输入数据,若需要,又以何种程度处理等等。从技术上来讲,某个节点的激活函数将其在神经网络中前一个节点的数据输入,并输出一个确定值,这个值继而指导后续节点如何发动来响应特定输入信号。

rEfMnuA.jpg!mobile

本文剖析由激活函数组成的神经网络,以及神经网络的生物类似物,并简要介绍几种常用的激活函数。

神经网络的结构

EbaQreI.jpg!mobile

作为一名数据科学爱好者,你一定见过上面的这张图片或者与之相似的图片。这张图片是对双层神经网络工作流程的经典描述。如图,该网络对猫或狗的图片进行分类,其中有两个隐藏层,每一层包含一行神经元,一行有16个。我们把图片局部放大,放大第二层的第一个神经元。

uAzme2m.jpg!mobile

局部放大之后大致如此。注意,此神经元接受前16个神经元传递的信号。神经元将连接权值与信号相乘,并在乘积上加上一个偏差项,最后得到计算结果,并将其命名为v。此v可视为这个神经元对所输入图像的认知。

在识别到输入信号之后,神经元可产生相应的反应,在此激活函数发挥其作用。激活函数被命名为f(),作为由识别到反应的映射,产生值a,并将其传递到下一层神经元,作为前一层特定神经元对信号做出反应的标志。

生物学类比

假如将手放在逐渐升温的钢锅上,一旦温度超过某个阈值,你就会急切地要拿开手。把手移开时并不需要知道锅的确切温度,而是根据实际参数做出选择。这是神经元在放电,当神经元放电时,指令传递到外围(本例中的手)。

这就是激活函数的来源或者至少与之相似。在这里实际数据是冗余的,神经元只需判断其是否超过阈值。

就目前所知,生物神经元和人工神经元之间的一个显著差异是,前者要么被激活,要么不被激活,只有两种结果,而后者的激活程度是在一定范围内。

激活函数的种类

激活函数多种多样。让我们按照函数所解决问题的顺序,大致学习其中的几种:

问题1:学习问题

早期,神经网络的目标是学习自身,线性函数的处理效果相当好。之所以称为线性函数,是因为v = wa + b的近似值与直线方程y = mx + c极为相似。

问题2:非线性问题

jAveIfa.jpg!mobile

虽然线性函数非常接近于右侧数据,但是左侧数据却效果不佳。由于非线性分布数据集主导着机器学习领域,而且激活函数是将非线性注入到网络中的唯一适用方法,所以函数就不能是线性的。能够解决这个问题的常见函数有:

Sigmoid函数:在函数内输入一个值,输出值的范围为(0,1)。输入的值越小,输出值越接近于0,输入的值越大,输出值则越接近于1,但都不会达到任一个极限值。

6NVfeia.jpg!mobile

tanh函数:也称双曲正切函数。tanh函数与sigmoid函数非常相似,只是输出值范围为(-1,1)。右侧为sigmoid函数图像,左侧为tanh函数图像。

y2e6Vfj.jpg!mobile

问题3:梯度消失问题

再次观察图表,sigmoid函数曲线越接近于极限值越平缓,也就是说,当输入绝对值非常大的值的时候,输出值的变化不明显。这大大降低了学习率。这就是所谓的梯度消失问题,随着进程推进,梯度(比如,学习)消失。ReLU函数解决了这个问题,实际上它也是现代神经网络的默认激活函数。

ReLU函数:ReLU函数是线性整流函数(Rectified Linear Unit)的简称,它可能是最有趣、最反直觉的函数。它几乎就是一个直线函数,只不过在原点处有个拐角,所以它是一个分段函数。

VVve6vZ.jpg!mobile
Ir2URz.jpg!mobile

人们经常会问,一个近似线性的函数是如何解决这个问题的。从图中可以明显看出,它几乎可以完全避免梯度消失问题。单个ReLU函数会显得比较单调乏味,但是多个在一些就会变得无懈可击。

3IJNnqU.jpg!mobile

线性函数完全无法近似,而tanh函数试图画出平滑的类圆曲线,所以最终出现了六角形边状的ReLU函数。你可能会认为,这是两个直线的一端接在一起,如同钟表指针那样。

现在,假设有一百万条这样的直线,那么你可以用这种排列方法模拟任何非线性形状。ReLU的精妙之处就在于,它既近似线性,多个组在一起时又能通过改变拐角的角度模拟出几乎所有形状。

这引出了最后一个要解决的问题。

问题4:概率和问题

无论隐藏层的工作内容如何,最终的目标都是生成某种预测,而在这里,就是输出一个概率向量,其中包含输入对象为已标记对象概率表。比如,第一张图片中神经网络的结果可能是:

[dog, cow, cat, goat, lamb] = [0. 2, 0.05, 0.7,0.03, 0.01] 

结果最有可能是猫,因为是猫的概率为0.7,概率最高。

为了将全连接层的最终输出值转换为正规化概率向量,需要一个函数接受一个向量,然后输出另一个向量,而且输出向量所有元素的和为1。毕竟,这才是概率向量。

Sigmoid函数非常接近于概率函数,因为它的输出值范围为0到1,但是不满足和等于1的情况。Softmax函数可以满足这一点。

Softmax函数:函数接受一个向量,并使用下列函数计算输出向量中每个元素的相应概率。

eem2Ef2.jpg!mobile

函数中分母为所有可能分子的和,避免输出值超过1。

关于激活函数,你了解了嘛?

V7ZNzy.jpg!mobile

【责任编辑:赵宁宁 TEL:(010)68476606】


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK