激活函数 - 神经网络

时间:2017-07-05 08:37:17

标签: neural-network activation-function

我在空闲时间使用神经网络。 我开发了一个简单的XOR-Operation与神经网络。 但我不知道何时应该使用正确的激活功能。

有诀窍还是只是数学逻辑?

3 个答案:

答案 0 :(得分:1)

激活功能有很多选项,例如identity,logistic,tanh,Relu等。 激活函数的选择可以基于梯度计算(反向传播)。例如。逻辑函数总是可微分的,但当输入值很大时,它会有点饱和,从而降低了优化速度。在这种情况下,Relu优先于物流。 以上只是激活功能选择的一个简单示例。这实际上取决于实际情况。 此外,我不认为XOR神经网络中使用的激活函数在更复杂的应用中具有代表性。

答案 1 :(得分:0)

你可以用sigmoid神经​​元解决你的问题,在这种情况下激活函数是:

https://chart.googleapis.com/chart?cht=tx&chl=%5Csigma%20%5Cleft%20(%20z%20%5Cright%20)%20%3D%20%5Cfrac%7B1%7D%7B1%2Be%5E%7B-z%7D%7D

其中:

https://chart.googleapis.com/chart?cht=tx&chl=z%20%3D%20%5Csum_%7Bj%7D%20(w_%7Bj%7Dx_%7Bj%7D%2Bb)

在这个公式中,每个输入都有权重,b是偏差,x是输入,最后你可以使用反向传播来计算成本函数。

答案 2 :(得分:0)

何时使用特定的激活功能而不是另一个使用激活功能的主题是正在进行的学术研究的主题。您可以通过在学术数据库中搜索与“神经网络激活功能”相关的期刊文章,或通过Google学术搜索搜索来找到与此相关的论文,例如:

https://scholar.google.com/scholar?hl=en&as_sdt=0%2C2&q=neural+network+activation+function&btnG=&oq=neural+network+ac

通常,要使用哪个功能主要取决于您要执行的操作。激活功能就像镜头一样。您将输入放到网络中,然后通过激活功能对其进行更改或集中处理。 您的输入应如何更改取决于您要实现的目标。您需要考虑自己的问题,然后弄清楚什么功能可以帮助您将信号塑造成您想要近似的结果。

问问自己,您要建模的数据的形状是什么?如果它是线性的或近似线性的,那么线性激活函数就足够了。如果它更呈“阶梯形”,则可能要使用Sigmoid或Tanh之类的东西(Tanh函数实际上只是缩放的Sigmoid),因为它们的图形显示相似的形状。对于您的XOR问题,我们知道,通过将输出推近[-1,1]范围而起作用的任何一种都将很好地工作。如果您需要的东西不能像这两个一样平稳地远离零,那么ReLU函数可能是一个不错的选择(实际上,ReLU可能是当今最流行的激活函数,值得比这个答案进行更认真的研究。提供)。

您应该分析每个函数的图形,并考虑每个函数对数据的影响。您知道将要放入的数据。当这些数据通过该函数时,将输出什么?该特定功能是否可以帮助您获得所需的输出?如果是这样,这是一个不错的选择。

此外,如果您拥有一些数据图形,它们的形状非常有趣,并且与您所知道的其他功能相对应,请随时使用该功能并查看其工作原理! ANN的某些设计是关于理解的,但是其他部分(至少目前是这样)是直觉的。