为什么多层网络就能实现复杂图形的分类(非线性)

72 阅读3分钟

image.png

如图中的所有点,想要通过一条线,将所有的点都包起来,那么一条直线显然不行,那么需要多次变换,变为一条复杂的曲线,才能实现。

但在实际应用(比如神经网络)中,常见的是“把第一个函数的值作为参数传给第二个函数”,比如:

h = f1(w1 * x + b1)
y = f2(w2 * h + b2)

如果 f1f2非线性函数(如 sigmoid、ReLU),那么整个组合就不再是简单的直线了,而是非线性函数。这是神经网络能表达复杂关系的关键。

总结:

  • 如果所有函数都是线性的,组合后还是线性表达式(直线)。
  • 如果有任意一个是非线性函数,组合后就可能变成非线性关系(不是直线)。

所以,只有引入非线性函数(激活函数),这个结构才有能力拟合复杂的曲线和模式。

如果所有函数都是线性的(例如 y = w2 * h + b2),那么无论嵌套多少层,整体依然是直线关系。但如果某一层用了非线性函数(如 sigmoid、ReLU),整体就会变成非

1、y = f(wx + b) 是一条直线,只能区分直线两侧分类,如果数据点不是线性的,则不能区分,

因为 wx + b 本身是一个线性运算(它定义了一个超平面)。激活函数 f 只是将这个线性运算的结果“扭曲”一下(比如压缩到0-1之间),但并没有改变这个运算的根本性质——它仍然是将输入空间直接映射到输出空间。

2、想象我们要区分下图中的红点和蓝点。它们不是被一条直线分开的,而是被一个圆圈分开的。(其实在真实的训练数据,也是这样的,根本不是线性的,都是散点数据)

3、再嵌套一层时

h = f1(w1 * x + b1)

y = f2(w2 * h + b2)

f1 和 f2 都是非线性激活函数

**组合之后,就可以形成任意复杂的曲线,比如圆形,可以包裹住任意数量的点,进行分类。

**

  1. 第一层产生非线性特征

    • 第一层计算 h = f1(w1 * x + b1)。由于 f1 是非线性的(比如 ReLU),h 不再是 x 的线性函数。这意味着 h 是一个非线性变换后的特征向量,它可能捕获了输入数据中的一些复杂模式(如曲线、拐点等)。
    • 例如,如果 f1 是 ReLU 函数,h = max(0, w1 * x + b1),这会产生“折线”效果,而不是直线。
  2. 第二层对非线性特征进行组合

    • 第二层计算 y = f2(w2 * h + b2)。这里,w2 * h + b2 本身是一个线性变换,但它的输入 h 是非线性的。因此,这个线性变换实际上是在非线性特征 h 上进行的,而不是直接在原始输入 x 上。
    • 最终,f2 (另一个非线性函数) applied 到这个结果上,进一步引入了非线性。
    • 所以,整个函数 y(x) 是多个非线性函数的复合(composition),最终形成一个复杂的非线性映射