在神经网络中,神经元通常计算线性函数, 在哪里是重量和是输入。
为什么不用更复杂的函数代替线性函数,比如?
它将为神经网络提供更多的多样性。
这个有名字吗?这个用过吗?
在神经网络中,神经元通常计算线性函数, 在哪里是重量和是输入。
为什么不用更复杂的函数代替线性函数,比如?
它将为神经网络提供更多的多样性。
这个有名字吗?这个用过吗?
毫无疑问,可以使神经元之间的链接使用更复杂的功能。如果这些函数是可微的,反向传播仍然有效,并且生成的复合函数可能能够学到一些有用的东西。这种东西的通用名称是计算图,大多数神经网络中使用的标准化结构是所有可能(并且可能有用)计算图的子集。
当将复杂的非线性函数添加到神经网络中时,这通常与使用权重的更简单的线性层交替使用。大多数神经网络中使用的单个神经元的广义函数如下所示:
在哪里索引神经元的所有输入,是输入值,与每个输入相关的权重,是一个偏置项并且是一个可微的非线性激活函数。训练过程学习和. 输出是神经元的激活值,可以作为神经网络的输出,或者作为下一个神经元的一个输入其他神经元.
使用这种基本神经元函数的简单前馈网络,至少有一个具有非线性激活函数的隐藏层,已经可以学习到任何给定函数的近似值——通用近似定理证明了这一结果。
通用逼近定理的实际结果是,除了增加多样性之外,您还需要动机才能使神经网络功能更加复杂。如果您正在考虑更改其中一个乘法,并替换为更复杂的可学习函数,您可以通过添加另一个输出的神经元来有效地实现相同的目标用作- 或者只是在大多数神经网络库中添加一个层。
在某些情况下,可能有充分的理由进行较低级别的更改:
如果你知道你正在学习的函数与具有特定数学形式的理论模型相关,你可以故意设置函数来反映具有可学习参数的函数。通常这是作为输入的转换完成的,但如果需要,也可以是更复杂的计算图的一部分。
在神经网络架构中,您可以考虑诸如LSTM 单元中的门组合或跳过残差网络中的连接作为示例,其中故意使函数变得更复杂以实现特定目标——在这两种情况下,都是为了提高深层结构中的反向传播。