神经网络的神经元是否建模线性关系?

人工智能 神经网络 激活函数 神经元
2021-11-13 04:50:42

我确信这是一个非常幼稚的问题,但我刚刚开始更深入地研究神经网络,过去只使用过决策树方法。另外,我的正规数学训练是 30 多年前的事了,所以请善待。:)

当我阅读 François Chollet 的关于Python 深度学习的书时,我很惊讶我们似乎有效地将权重(内核和偏差)视为标准线性方程中的项(y=mx+b)。在本书的第 72 页,作者写道

output = dot(W, input) + b
output = (output < 0 ? 0 : output)

我是不是读得太多了,或者这是正确的(我不应该问这个问题如此重要)?

4个回答

在神经网络 (NN) 中,神经元可以充当线性算子,但通常充当非线性算子。神经元的一般方程i在层lNN 是

oil=σ(xilwil+bil),

在哪里σ是所谓的激活函数,通常是非线性的,但也可以是恒等函数xilwil是分别包含神经元的输入和权重的向量i在层l, 和bilR是一种偏见类似地,前馈神经网络 (FFNN) 的一层的输出计算为

ol=σ(XlWl+bl).

在您的具体示例中,您将新权重设置为0, 如果线性组合的输出小于0,否则你使用线性组合的输出。这是ReLU激活函数的定义,它是一个非线性函数。

几乎从不。线性函数之和是另一个线性函数,所以如果神经元只是线性变换,那么每层有多个神经元基本上没有意义。相反,每个神经元都将某种非线性函数应用于其输入。有很多不同的变化,但最终将每一层的非线性激活函数与将每一层的输出连接到下一层的输入的线性矩阵乘法相结合,创造了一些具有更复杂行为的东西,同时仍然是计算效率相当高。

对nbro答案的评论中提出问题。


看到我们当前如何训练网络和定义一条线的经典函数之间的明确关系,我错了吗?

你是对的。这是理解神经网络的直观方式。您可以通过在所有层中使用线性激活函数来创建仅执行简单线性回归的神经网络,例如神经网络(模型)输出是输入的线性组合。而且,这似乎是向学生介绍神经网络的好方法。

但是,还必须看到神经网络提供了对多种非线性关系建模的灵活性这一事实。


激活函数列表

您的解释是完全正确的,但我将分两部分回答,以避免与激活函数相关的混淆。

第 1 部分。(TLDR:神经元权重是将输入空间分成两部分的超平面的法线向量。神经元的预激活与输入点到平面的距离成正比。)每个人工神经元学习其之间的线性关系输入。最容易回忆的直线方程是y=mx+b,但这实际上是一种非常特殊的形式,它允许我们遍历该行的 X 值并查看它对应的 Y 值。最一般的形式是0=ny+mx+b. 这告诉我们这条线是由点 (X,Y) 形成的,这些点的值使该系列的计算为零。我们可以探索 (X,Y) 的不同值,并看到它们中的大多数给出非零值,并且它们在线的一侧给出正值,在另一侧给出负值。只有当你降落在线上时,它才会给你一个零。这是一个非常重要的解释,因为它允许神经元找到输入空间的划分(分为正面和负面)。当然它可能不会是二维空间,所以它会是超平面而不是直线,但我希望你明白这一点。

第 2 部分。但是,如果我们只使用线性变换,我们将无法学习非线性函数。在这里,激活函数发挥了非常重要的作用:它以非线性方式(使其成为非线性函数)扭曲了神经元的预激活值(线性)。激活函数有很多花里胡哨的东西,在这里写得太多了,但是您可以开始将它们视为应用于输入点到神经元超平面的距离的扭曲。你看到的那个叫做 ReLU,它基本上会截断负值,因此只关注超平面的正面(它可以解释为测量点穿过边界的距离)。