看到 1024,不断试乘太慢:对数直接回答“2 要乘自己多少次”
第 16 章从轮数 x 算人数 2ˣ;现在通信社反过来看到 1024 人,想知道经历了多少轮。这就是 log₂1024=10。对数不是新魔法,而是指数问题的反向问法。
指数:知道轮数,求结果
底数 2 每轮翻倍,10 轮后得到 1024。
对数:知道结果,求轮数
答案 10 就是“2 需要自乘多少次才到 1024”。
它在机器学习里解决什么?
一个等式,三种角色:底数 a、真数 b、答案 c
反复乘谁。要求 a>0 且 a≠1。
最终得到谁。实数对数要求 b>0。
要乘多少“轮”;它可以是正、零或负。
整数答案
log₃81=4,因为 3⁴=81。
log₁₀0.01=−2,因为 10⁻²=0.01。
不一定是整数
log₂10≈3.322
因为 2³=8,2⁴=16,所以答案在 3 和 4 之间。
先让指数机器向前走,再让对数机器原路返回
对数把乘法搬到“指数世界”,所以连乘会变成相加
若 x=aᵐ、y=aⁿ,则 xy=aᵐ⁺ⁿ。
相同底数的指数相除,指数相减。
幂的指数 r 可以搬到对数前面。
对数图像是指数图像关于 y=x 的镜像
指数函数永远输出正数,所以它的逆函数只能接收正真数:logₐx 的定义域是 x>0。x 靠近 0 的右侧时,ln x 会快速下降;x=1 时所有合法底数的对数都为 0。
常用对数
通常指 log₁₀x,适合十进制数量级。
自然对数
指 logex。机器学习公式里常用;此时信息单位叫 nat。
二进制对数
信息论里常用;结果单位叫 bit。
每天都会发生的消息很普通;极少发生的消息更“有料”
如果校广播每天都说“今天正常上课”,你几乎不惊讶;若收到极罕见的天文观测信号,你会获得更多新信息。信息量用概率的负对数表示。
信息量看一次结果;信息熵看长期平均有多难猜
模型把真实答案说得越不可能,看到答案时就越“惊讶”
假设真实标签 y=1。模型给它 90% 概率,答案出现时不意外,损失 −ln(0.9) 很小;若只给真实答案 1% 概率,损失 −ln(0.01) 很大。训练就是让平均惊讶越来越小。
真实标签 y=1
L=−ln(p)
只看模型给正类的概率 p。
真实标签 y=0
L=−ln(1−p)
要看模型给真实负类的概率 1−p。
先选真实标签,再拖动模型给“正类”的概率 p
对数把概率世界变成更容易训练和比较的分数世界
二分类与多分类
二分类用二元交叉熵;多分类时,如果真实类别概率是 ptrue,单样本损失就是 −ln(ptrue)。
连乘变求和
许多样本独立概率要相乘;取 log 后变成相加。求和更好算,也更容易求导和优化。
避免数值下溢
很多很小概率相乘会小到计算机记成 0;对数空间用有限负数相加,保留更多精度。
把本章浓缩成四张卡片
选择后立即出答案,并指出没有掌握的知识点
模型越不相信真实答案,为什么损失越大?
左右两台机器面对同一个真实物体:相信它时只产生很小惊讶,不相信它时惊讶弹簧会突然升高。
读图顺序
损失首先关心模型分给正确答案多少信心。
真实答案获得高概率,结果符合预期,对数损失很小。
真实答案概率接近零时,负对数会快速升高。