我在空闲时间使用神经网络.
我开发了一个简单的XOR-Operation与神经网络.
但我不知道何时应该使用正确的激活功能.
有诀窍还是只是数学逻辑?
最佳答案 何时使用特定激活功能而不是另一个激活功能的主题是正在进行的学术研究的主题.您可以通过在学术数据库中搜索与“神经网络激活功能”相关的期刊文章,或通过Google学术搜索来找到与之相关的文章,例如:
通常,使用哪种功能主要取决于您要做的事情.激活功能就像一个镜头.您将输入放入网络中,并通过激活功能以某种方式更改或集中.您的输入应如何更改取决于您要实现的目标.您需要考虑您的问题,然后找出哪些函数可以帮助您将信号调整为您尝试近似的结果.
问问自己,您尝试建模的数据的形状是什么?如果它是线性的或大约是线性的,那么线性激活函数就足够了.如果它更像是“阶梯形”,你会想要使用像Sigmoid或Tanh这样的东西(Tanh函数实际上只是一个缩放的Sigmoid),因为它们的图形呈现出类似的形状.在你的XOR问题的情况下,我们知道其中任何一个 – 通过将输出推近[-1,1]范围来工作 – 将会很好地工作.如果你需要的东西不会像那两个那样从零开始变平,那么ReLU功能可能是一个不错的选择(实际上ReLU可能是目前最流行的激活功能,并且应该得到比这个答案更严肃的研究提供).
您应该分析每个函数的图形,并考虑每个函数对数据的影响.您知道要放入的数据.当该数据通过该功能时,会出现什么?该特定功能是否可以帮助您获得所需的输出?如果是这样,这是一个不错的选择.
此外,如果您的某些数据的图形具有与您知道的其他功能相对应的非常有趣的形状,请随意使用该数据,看看它是如何工作的!一些ANN设计是关于理解的,但其他部分(至少目前)是直觉.