神经网络中log加替代直接乘的原因探索

这里尝试基于网络资料,探索神经网络里为什么常用log加,不直接乘的原因。

简单概括就是把乘法变加法,既好算、又稳定、还能求梯度。

1 对数把乘法变成加法

在模型里经常要算一堆概率连乘:

直接乘会有两个致命问题:数值下爆和溢出。

概率都在0~1之间,连乘几十次、上百次后,结果会小到 float 存不下,直接变成 0。

变成 0 后,没法求梯度、没法优化,后续模型训练就不再有效。

1.1 取log缓解下爆和溢出

取 log 后:

概率连乘变成了加法,数值稳定得多,不容易溢出。

1.2 计算梯度更简单

神经网络靠反向传播更新参数,需要导数。

1)对乘积求导,链式法则套很多层,容易出错,而且计算误差容易累积放大。

2)对和求导,由于是直接逐项求导,简单稳定,而且计算误差不容易累积放大。

所以损失函数、似然函数几乎都写成log 形式:

模型设计经常会用到最大化似然,最大化似然,给定条件下等价于最大化 log 似然。

这两者最优解完全一样,而且最大化 log 似然相比最大化似然容易计算。

2 常见转换场景示例

最大化乘积等价于最大化 log 和,而且变log加后代码简单,数值稳定不会下溢成 0,方便求导。

这里尝试给出多个这种 log 加转化场景的示例。

2.1 交叉熵损失

分类任务一般会采用如下损失函数:

其本质就是把概率乘积转成 log 求和。

2.2 极大似然估计

diffusion模型中会用到极大似然估计。

其实际代码实现则是

核心原因还是最大化 log 似然在最优解一致的情况下,更好计算,而且计算数值特征更稳定。

2.3 NLP困惑度

困惑度也采用类似思路,公式示例如下

整个计算过程全程在log空间,最后再exp转化回原始空间。

不经计算过程数值特征更稳定,减少溢出问题,而且计算方便快捷。

3 python代码示例

下面是可直接运行的 Python代码,对比了两种计算大数乘积的方法。

一种是直接相乘,另一种是利用对数性质(ln(a×b)=lna+lnb)来计算。

复制代码
import math

# 两个较大的数
a, b = 1e200, 1e200

# 方法 1:直接相乘 (会导致溢出,变成无穷大)
direct = a * b

# 方法 2:先取对数相加 (保持数值在可控范围内)
log_sum = math.log(a) + math.log(b)

print(f"直接相乘结果: {direct}")      # 输出: inf (溢出)
print(f"对数相加结果: {log_sum}")     # 输出: 921.034... (精确值)

运行结果如下所示

直接相乘结果: inf

对数相加结果: 921.0340371976183

inf在python中表示无穷,也就是实际不存在的数,此时一定发生了溢出。

直接乘a×b,结果inf (无穷大) ,发生数值溢出,导致计算失效。

采用Log加,即 ln(a)+ln(b),结果为921.03,相比原始巨大数数值的乘法,计算可控数值稳定。

也就是说,使用对数加法能避免精度丢失和溢出,是处理极小概率(连乘趋近于0)或极大数值(连乘趋近于无穷)的标准做法。⁡

reference


Log-sum-exp数值溢出如何避免?

https://ask.csdn.net/questions/9144558

相关推荐
jimmyleeee1 分钟前
Agent安全之四:Agentic Supply Chain Vulnerabilities(ASI04)---当 Agent 信任了不该信任的运行时依赖
人工智能·安全
胖头鱼的鱼缸(尹海文)2 分钟前
胖头鱼的技术专栏-482 Oracle AI DB 23.26.4新特性一览(20261027)
数据库·人工智能·oracle
QXWZ_IA7 分钟前
油气行业如何实现AI智能巡检?无人机+机器人+视觉AI全栈方案
人工智能·机器人·无人机
霸道流氓气质12 分钟前
AI 图片管理平台:Spring AI 原生多模态、Milvus 向量语义检索与 MinIO 预签名安全管控的 React + 全栈生产级实战
人工智能·spring·milvus
康实训13 分钟前
智慧运动康养实训室助力老年运动康复教学落地
大数据·人工智能
linfen152014 分钟前
X 语言设计全景:原生性能、资源安全、AI 协作与未来软件的无限想象
人工智能·安全
niucloud-admin16 分钟前
NIUCLOUD PHP SAAS上门家政使用文档:客户报表
前端·人工智能·ai编程
QXWZ_IA17 分钟前
AI智能巡检方案和传统巡检有什么区别?效率提升对比分析
人工智能
2601_9679873718 分钟前
Python迁移学习实战:图像识别、文本分类与音频识别的端到端应用指南
深度学习·迁移学习·文本分类·图像识别·音频识别
全栈探索者19 分钟前
一枚 162MB 的挂件,改写一只猫的画风:LoRA 实战——风格定制与人脸保持
人工智能·macos·lora·aigc·stablediffusion·comfyui