说个好办的,log 就是那个让你认定“哎,这个数如何如此小啊”要么“这变忒快了”的数学大神。它全称是“对数”,听起来就挺高大上,实际上说白了就是算术里的等比数列。 咱们说个最好办的例子,比如 2 的负 3 次方是多少?算出来的 1/8。

这时候你心里可能有算式 3/2 次方的概念,也就是 1.5 的平方,这跟 1/8 没啥关系。但要是你看了对数表,看到 log2(1/8),那瞬间就能明白,出于 2 的 -3 次方正好等于 1/8,故此 log2(1/8) 就是 -3。 这种对数关系在计算机图形和物理里特别好用。

比如画 3D 图的时候,要是 Z 轴高度是 8,但屏幕只能显示 0 到 1 的一像素范围,那直接把 Z 坐标丢给屏幕肯定看不清,反而直接除以 8 变成 1,再除以 255,就能铺满整个屏幕了。

这时候用的就是 log2 要么 log10 这种底数转换。 在工业电池测试里,C 标就是 C 对数。

这个逻辑是:实际电量按指数增长,但充电工夫看起来却是线性的。

比如买辆电动车,满电跑 200 公里。

要是你把它分成 8 段充电,每段 25 公里。你只充了 3 段,也就是跑了 75 公里,这时候它仿佛只用了 1/3 的工夫?不对,是用了 1/8 的工夫。

为啥?出于电量是指数增长的,你每充一次电,剩下的那局部电量就变多了。 这就涉及到对数函数的核心性质:底数变了,对数值就变了。2 的负 3 次方是 1/8,而 8 的负 3 次方就是 1/512。

为啥?出于 8 比 2 大四倍,故此 8 的 3 次方是 512,反过来 1/512 就是 2 的负 3 次方。

这说明白对数的本质就是“去找底数”,把指数里的数字变成系数。 在统计学里,这也挺常用。

比如测一个信号,原始数据是 1, 2, 3, 4, 5。

要是你做直方图,你会发现分布挺怪,中间密集两边稀疏。

要是你做对数直方图,把每个值都除以 2,变成 0.5, 1, 1.5, 2, 2.5,这时候分布就均匀了。

这种对数变换在处理微分、信号处理、就连做 PCA 降维的时候,时常会被偷偷用到。 并且对数函数还有一个挺特别的性质:加法变成了乘法,乘法变成了加法。

这是它在物理和工程里最了得的地方。比方说电阻,两个电阻串联,总电阻等于单个电阻相加。但要是是电流,串联起来总电流就是单个电流相加;电压则是相乘。但在电路分析里,咱们一般用电压除以电阻来算电流,这时候对数就出来了。 比如你有两个元件,电阻分别为 2 欧姆和 4 欧姆。串联起来总电阻是 6 欧姆。

要是你先把它们都换成电流,那就是 0.5A 和 0.25A,加起来就是 0.75A。

这时候总电阻就是 6,而 1/0.75 等于 1.333...,仿佛对不上。但要是你用的是对数变换,把电阻换成 log10 算出来的数值,2log10(2)+4log10(2) 实际上等于 6log10(2)。

这时候对数关系就完美了。 再想想神经网络里的激活函数,比如 Sigmoid 函数,公式是 1/(1+e^-x)。你有时候会认定这个公式挺难懂,但要是你用对数变换,把它变成 e^x/(1+e^x) 的形式,那后续的计算就好办多了,出于分子分母都用指数函数表示,相互抵消掉,变成纯加法运算。

不过这个对数变换有个坑,就是那个庞大的正负号,有时候用的时候反而好办让人头大。 在科学计算里,有时候数据本来挺大,比如天文距离,用一般/平平的浮点数存肯定没难题,但要是你要做大量次的矩阵乘法,出于数字忒大害得精度丢失,这时候就需求大范围的对数变换来分治。

比如把矩阵放大 10 倍,再做对数,处理和正数差不多的数运算,然后再还原回来。 还有一种常见的场景,就是处理贼大要么贼小的数,比如指数级增长或衰减。

比如人口增长,一启动是 10,慢慢变成 20、30、40... 这个过程要是用一般/平平指数函数画图,中间那一段曲线特别陡峭,一眼就能看出是加速增长的。

这时候用对数刻度画出来,那种曲线就是直的,要么接近直线,这样就能一眼看出增长是不是匀速的。 实际上对数函数在咱们生活中也是无处不在,只是你没注意到。

比如你在超市买东西,标价有时候是按对数增长的。

比如买 1 个鸡蛋 1 块钱,买 2 个 1 块 5,买 3 个 1 块 7。

要是你看的是乘法关系,那就是 1, 1.5, 1.42... 是对的。但要是你看的是加法关系,那就是 1, 2, 3... 这就怪了,为啥鸡蛋越多,单价反而越低?这时候就要用到对数模型来解释,要么用分段函数来处理,出于到了某个数量级,增长模式就会突然转变。 当你看到那些复杂的公式,比如微积分里的导数定义,要么机器学习里的损失函数,有时候你会认定头皮发麻。但大量核心都是对数变换。

比如最小二乘法里,为了让直线更准,会把 Y 轴换成 log10(Y),这样误差分布就正常了。 最终说说在自然语言处理里的对数。

比如 TF-IDF 词频计算,当词出现次数超过 10 的时候,直接砍掉,保留原始数值;不到 10 的,用对数放大,用 10 做底。

这样高频词的几个点权重就高,低频词的几个点权重低,整个句子权重就平衡了,不会出于一个生僻词挤占了几个常用词的权重。 总而言之,对数那个东西,它就像个万能转换器,把指数世界里的乘法规则变成了对数世界里的加法规则。

不管是工程、物理、统计还是计算机,只要涉及到数量级的变化要么复杂的计算,它往往是那个隐藏的、却能搞定一切的神器。