激活功能如何工作?

问题描述

我对激活功能在神经网络中的工作方式还有些困惑(很困惑,无法用外行的术语来解释它们)。到目前为止,我有

隐藏层中的激活功能确定神经元是打开(将值传递到下一层)还是关闭(什么都没有传递到下一层)。这是通过将权重/偏差计算的结果输入到函数(例如Sigmoid)中来实现的,该函数输出为高(ON /通过值)或低(OFF /未通过值)。

什么让我感到困惑:

接下来会发生什么?如果神经元打开,则1)神经元和下一层之间的连接器是否具有传递给下一层的自己的w&b值? 2)激活功能的输入是否传递到下一层?还是3)sigmoid函数输出是否传递到了下一层?我认为答案是(1)。

有人能帮助我解决这方面的困惑吗?

解决方法

首先,我认为您应该忘记“ ON”或“ OFF”的概念,因为它并不是通常的工作方式:此类函数的结果不一定是二进制的。 存在阈值激活功能,但不是唯一的功能。 S形函数是从实数到集合[0,1 []的函数。将应用此函数,并且除非添加阈值,否则神经元总是输出某些东西,即使它很小或很大,也不会为0或1。 以线性激活函数为例:您甚至可以在所有实数之间输出。然后,开/关的想法就不相关了。

此类功能的目标是增加模型的复杂性,并使它非线性。如果您具有不具有这些功能的神经网络,则输出将只是输入加上偏差的线性加权总和,而这通常不足以解决问题(通常使用通过网络模拟异或门的示例,您会获得没有激活功能就不要这么做)。借助激活功能,您可以添加任何所需的东西,例如tanh,Sigmoid,ReLU ...

话虽如此,答案是1和3。

  • 如果在隐藏层中获取随机神经元n,则其输入是按权重加权的值的总和,以及偏差(也按通常称为w0的权重加权)的和,然后将其应用于激活功能。想象一下以前的神经元的加权值为0.5和0.2,而您的加权偏差为0.1。然后应用一个函数,让我们以S +表示,为0.5 + 0.2 + 0.1 = 0.8。大约是0.69。

  • 神经元的输出是功能的结果。下一层的每个神经元将对当前层的输出(包括神经元的输出)进行加权求和。请注意,下一层的每个神经元在上一层与自身之间具有自己的权重。然后,下一层的神经元将应用激活函数(不一定与当前层相同)来产生自己的输出。因此,非正式地,它会做类似activ_func(.. + .. + 0.69 * weight_n + ..)的事情。

这意味着,您可以说每一层都将应用到上一层神经元值的加权和和加权偏差的激活函数的结果作为值。如果您设法在没有窒息的情况下读取它,则可以递归地将这一定义应用于每个图层(当然,输入除外)。