百科问答小站 logo
百科问答小站 font logo



神经网络激活函数的作用和原理?有没有形象解释? 第1页

  

user avatar   lee-philip 网友的相关建议: 
      

翻译为激活函数(activation function)会更好。

激活函数是用来加入非线性因素的,因为线性模型的表达能力不够。

以下,同种颜色为同类数据。

某些数据是线性可分的,意思是,可以用一条直线将数据分开。比如下图:



这时候你需要通过一定的机器学习的方法,比如感知机算法(perceptron learning algorithm) 找到一个合适的线性方程。

但是有些数据不是线性可分的。比如如下数据:


第二组数据你就没有办法画出一条直线来将数据区分开。

这时候有两个办法,第一个办法,是做线性变换(linear transformation),比如讲x,y变成x^2,y^2,这样可以画出圆形。如图所示:

如果将坐标轴从x,y变为以x^2,y^2为标准,你会发现数据经过变换后是线性可分的了。大致示意图如下:

另外一种方法是引入非线性函数。我们来看异或问题(xor problem)。以下是xor真值表


这个真值表不是线性可分的,所以不能使用线性模型,如图所示

我们可以设计一种神经网络,通过激活函数来使得这组数据线性可分。

激活函数我们选择阀值函数(threshold function),也就是大于某个值输出1(被激活了),小于等于则输出0(没有激活)。这个函数是非线性函数。

神经网络示意图如下:


其中直线上的数字为权重。圆圈中的数字为阀值。第二层,如果输入大于1.5则输出1,否则0;第三层,如果输入大于0.5,则输出1,否则0.

我们来一步步算。

第一层到第二层(阀值1.5)


第二层到第三层(阀值0.5)

可以看到第三层输出就是我们所要的xor的答案。

经过变换后的数据是线性可分的(n维,比如本例中可以用平面),如图所示:


总而言之,激活函数可以引入非线性因素,解决线性模型所不能解决的问题。


user avatar   yinfupai 网友的相关建议: 
       @lee philip

写得非常好,学习。

不过好像还是写得比较专业了,理解起来还是有点难度,所以补充几点可以更清晰,纯粹个人理解,如果有错请指出来,因为在下也是正在学习中。


Activation function 翻译成激活函数,不要误解是指这个函数去激活什么,而是指如何把“激活的神经元的特征”通过函数把特征保留并映射出来,这是神经网络能解决非线性问题关键。


激活函数众所周知有tanh,sigmoid,ReLU等。

tanh   双切正切函数,取值范围[-1,1]

sigmoid  采用S形函数,取值范围[0,1]

ReLU 简单而粗暴,大于0的留下,否则一律为0。


因为神经网络的数学基础是处处可微的,所以选取的激活函数要能保证数据输入与输出也是可微的。


神经网络中,运算特征是不断进行循环计算,所以在每代循环过程中,每个神经元的值也是在不断变化的。


这就导致了tanh特征相差明显时的效果会很好,在循环过程中会不断扩大特征效果显示出来。

但有时候,特征相差比较复杂或是相差不是特别大时,需要更细微的分类判断的时候,sigmoid效果就好了。


所以sigmoid相比用得更多,但近年发现数据有一个很有意思的特征。


也就是稀疏性,数据有很多的冗余,而近似程度的最大保留数据特征,可以用大多数元素为0的稀疏矩阵来实现。


而Relu,它就是取的max(0,x),因为神经网络是不断反复计算,实际上变成了它在尝试不断试探如何用一个大多数为0的矩阵来尝试表达数据特征,结果因为稀疏特性的存在,反而这种方法变得运算得又快效果又好了。


所以,据说,目前大多在用max(0,x)来代替sigmod函数了。




  

相关话题

  禅定、冥想、清醒梦、催眠之间什么区别、联系和渊源? 
  请问人工神经网络中的activation function的作用具体是什么?为什么ReLu要好过于tanh和sigmoid function? 
  如何简单形象又有趣地讲解神经网络是什么? 
  如果脑功能存在空间臃肿和性能浪费,能否通过“切除多余部分、让感知器联结更多简化脑”构成生物并行计算机? 
  包鞘是什么的别名? 
  为什么不同生物其他器官进化成不同形态,大脑却是大同小异? 
  人类的渴觉中枢在哪里?如果是在丘脑或者大脑,那么为何一喝水立马就不渴了? 
  如何简单形象又有趣地讲解神经网络是什么? 
  resnet(残差网络)的F(x)究竟长什么样子? 
  人的颅内有杀菌功能或者自洁能力吗? 

前一个讨论
你在生活中遇到过哪些「扫地僧」式的人物?
下一个讨论
既然程序员一到deadline干活效率超高 ,那为什么不把距离deadline时间定的很短?





© 2025-03-04 - tinynew.org. All Rights Reserved.
© 2025-03-04 - tinynew.org. 保留所有权利