如图中的所有点,想要通过一条线,将所有的点都包起来,那么一条直线显然不行,那么需要多次变换,变为一条复杂的曲线,才能实现。
但在实际应用(比如神经网络)中,常见的是“把第一个函数的值作为参数传给第二个函数”,比如:
h = f1(w1 * x + b1)
y = f2(w2 * h + b2)
如果 f1 或 f2 是非线性函数(如 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 都是非线性激活函数
**组合之后,就可以形成任意复杂的曲线,比如圆形,可以包裹住任意数量的点,进行分类。
**
-
第一层产生非线性特征:
- 第一层计算
h = f1(w1 * x + b1)。由于f1是非线性的(比如 ReLU),h不再是x的线性函数。这意味着h是一个非线性变换后的特征向量,它可能捕获了输入数据中的一些复杂模式(如曲线、拐点等)。 - 例如,如果
f1是 ReLU 函数,h = max(0, w1 * x + b1),这会产生“折线”效果,而不是直线。
- 第一层计算
-
第二层对非线性特征进行组合:
- 第二层计算
y = f2(w2 * h + b2)。这里,w2 * h + b2本身是一个线性变换,但它的输入h是非线性的。因此,这个线性变换实际上是在非线性特征h上进行的,而不是直接在原始输入x上。 - 最终,
f2(另一个非线性函数) applied 到这个结果上,进一步引入了非线性。 - 所以,整个函数
y(x)是多个非线性函数的复合(composition),最终形成一个复杂的非线性映射
- 第二层计算