注:记录的很乱,仅供自己阅读
他们不是常数,在代码实现中,它们被定义为 nn.Parameter,是需要通过反向传播(Backpropagation)不断更新的
第一种:输入空间的"归零"
想象一下,你有一堆身高数据,大部分人都在 170cm 左右。如果你直接去学"稀疏特征",模型会觉得"170"这个数字好大,很难变稀疏。
-
物理意义:
通常对应数据的均值(Mean)。
-
为什么要减: 我们想要的是"偏离均值的程度"。x - b_{\\text{pre}} 的意思是:"把坐标原点搬到人群中心去"。
-
如果不减而是加: 你的
就得学习一个"负的均值"。这不符合人类的直觉,而且在初始化时(比如你想用数据集的均值初始化),用减号可以直接填入均值,用加号你还得手动取反。
第二种: 特征空间的"门槛"
当数据经过 投影到了潜在空间(Latent Space)后,它变成了属性信号。
-
物理意义:
是神经元的偏置(Bias)。
-
为什么要加: 这是一个标准的线性变换
。它决定了在通过 ReLU 激活函数之前,信号的"底色"是多少。
-
它的角色: 它像是一道闸门。如果
是负值,它就会把较小的信号"拉低"到 0 以下,从而被 ReLU 过滤掉,实现稀疏性(Sparsity)。
更直白的解释:
在稀疏自编码器(SAE)的训练过程中,b_{\\text{enc}} 通常会变成一个"负数"。
让我们把这个过程拆解开,用最直观的逻辑看一遍:
1. 想象一个"水位"模型
假设 W_{\\text{enc}}(x - b_{\\text{pre}}) 计算出来的是一个信号的强度,我们把它想象成水位高度。
-
没有 b_{\\text{enc}} 时 :只要水位大于 0,ReLU 就会让它通过。这就意味着哪怕是极其微弱的噪音(水位 0.1),也会被激活。这显然不符合"稀疏性"的要求。
-
有了 b_{\\text{enc}}(且它是负数):
假设模型学到某个神经元的 b_{\\text{enc}} = -5。
现在公式变成了:\\text{ReLU}(\\text{水位} + (-5)),也就是 \\text{ReLU}(\\text{水位} - 5)。
2. 三种水位情况的对比
| 情况 | 原始水位强度 | 加上 benc (-5) 之后 | ReLU 的结果 | 神经元状态 |
|---|---|---|---|---|
| 强信号 (比如"笑") | 10 | 10 - 5 = 5 | 5 | 激活 (On) |
| 弱信号 (噪音) | 3 | 3 - 5 = -2 | 0 | 熄灭 (Off) |
| 无信号 | 0 | 0 - 5 = -5 | 0 | 熄灭 (Off) |
3. 为什么公式里要写"加"?
在数学公式里,我们习惯统一写成 y = Wx + b。
-
如果模型觉得这个神经元应该很容易被点亮,它会让 b 变成正数。
-
但在你的 SAE(稀疏自编码器) 中,为了实现解耦和稀疏,模型会被迫让大部分 b_{\\text{enc}} 变成负数。
这样一来,b_{\\text{enc}} 就变成了一个"负向的压力":它把所有信号都往下拽。只有那些强度足够大(大到能抵消这个负值)的信号,才能冲破 0 这一关卡,被 ReLU 捕捉到。
总结不看版:
1. 关于
:数据的"零位基准" (Zero-centering)
-
你的理解: 会变成 x 的均值(正值)。
-
学术表达: Correct.
学习的是输入特征空间的全局偏移量(Global Bias/Mean) 。通过执行
,模型实际上是在做去中心化(Decentering)。
-
目的: 让模型只关注那些"非比寻常"的特征(即相对于平均值的增量),而不是被基础的背景信号淹没。
2. 关于
:稀疏性的"负压门槛" (Sparsity Barrier)
-
你的理解: 会变成一个合适的负数阈值。
-
学术表达: Precisely. 在 SAE 中,我们将
视为一种诱导稀疏的偏置(Sparsity-inducing bias)。
-
逻辑: 正如我们之前讨论的,它通过学习一个负值,人为地在 ReLU 激活函数前制造了一个"死区"。只有当信号强度足够抵消这个负值时,神经元才会被"点亮"。
总结你的对比表
| 参数 | 物理意义 | 学习后的典型状态 | 你的"大白话"总结 |
|---|---|---|---|
| 数据中心化 | 趋近于输入 |
"去皮",把秤调回零点 | |
| 激活阈值控制 | 通常为负值,过滤弱信号 | "门票",没钱(信号不够强)不让进 |
转载:神经网络------bias 偏置项(bias term) 或者截距项(intercept term)-CSDN博客