一句话定义:把每个数值 x 换成 log(x) 的预处理操作。它不改变大小顺序,只把“相差几倍”变成“相差多少”,让被极端值压得看不清的数据重新可读、可建模。
先看收入。 假设五个人月薪分别是 5 千、6 千、8 千、1.2 万、5 万。画成柱状图,前四根几乎看不见,5 万那根占了九成高度。取 log10 后变成 3.7、3.8、3.9、4.1、4.7,五根都能看清;并且“收入翻一倍”从 5 千到 1 万、从 2.5 万到 5 万,在对数刻度上都只加约 0.3,距离相等。这就是地震震级、声音分贝、pH 值都用对数刻度的原因:它们关心倍数,不关心绝对差。
token 数同理。 词表里“的”“the”这类词的频次可能是罕见词的几万倍,直接统计,长尾词全被压成 0;取对数后,长尾之间的差异才显形。语言频次近似服从齐普夫定律(Zipf's law),在双对数坐标下接近一条直线——这正是幂律(power law)的典型特征。
训练过程也常用对数坐标。损失曲线常画在对数纵轴上:从 2.0 降到 1.0 和从 1.0 降到 0.5,相对变化是同一回事,但在线性轴上后一段显得“没进展”。模型规模、数据量、算力与损失之间的经验规律(scaling law)也常在双对数坐标下观察是否接近直线;判断“还要不要继续投入算力”,看斜率比看绝对差值可靠。
| 操作 | 做什么 | 典型场景 |
|---|---|---|
| 对数变换 | 非线性压缩,把倍数差变成加减差 | 数据跨多个数量级、右偏重尾 |
| 标准化/归一化 | 线性平移缩放,分布形状不变 | 特征量纲不一,想统一尺度 |
| 差分 | 后一项减前一项,消除趋势 | 看变化量、做平稳化 |
| 对数差分 | 近似增长率 | 关心“涨了百分之几” |
要点是:标准化不改变形状,对数会改变形状(把右偏拉正);差分消趋势,对数消尺度,二者常配合使用。
几个必须知道的注意点:
- log(0) 无定义,实际常用 log(1+x) 或加一个小常数;
- 零点无物理意义的量别取对数(比如摄氏温度);
- 取对数后,模型系数的含义变成“倍数/百分比变化”,不是“加多少”;
- 底数 ln、log2、log10 之间只差一个常数倍,不改变排序和相关性,选哪个看习惯:信息论用 2 得比特,微积分用 e 更顺手。
实际意义: 看到一张图,先问一句“线性轴还是对数轴”,能避免被“最后一段还在猛降”误导,因为在对数轴上“看起来匀速下降”,对应的绝对降幅其实越来越小。做数据的,遇到跨数量级的量——收入、用户数、token 数(token)、参数量、请求延迟——默认先想一下要不要取 log,往往比换模型更能救活一次分析。
