首页 全部 玄幻奇幻 都市白领 武侠仙侠 言情说爱 军事历史 游戏竞技 排行 专题 用户中心 原创专区
悠悠小说网 > 都市白领 > 职场小聪明 > 第606章 用故事解释softmax函数的溢出问题

用故事解释Softmax函数的溢出问题

故事背景:龙族宴会上的金碗

在一座神秘的龙族王国,龙族每年都会举行一次盛大的宴会,宴会上有一个传统:每条龙要把自己的财富(金币数量)放进一个金碗,然后让智慧长老计算每条龙的“财富占比”,来决定谁是这一年的财富之王。

宴会当天,四条龙分别报出了自己的金币数量:

? 火龙:100万金币

? 冰龙:200万金币

? 雷龙:300万金币

? 风龙:10亿金币

智慧长老准备使用一个古老的计算方法——Softmax规则,将这些财富转换成概率来比较。但他很快发现了一个严重的问题:

金碗炸了!

为什么?因为按照Softmax的计算方法,他需要计算每个金币数量的指数值:

但这些数值实在是太大了,远远超出了王国的计算能力,直接导致金碗崩溃(计算溢出)。

智慧长老陷入了困境,他需要找到一个方法来避免计算崩溃。于是他想到一个聪明的技巧:

“我们不直接放金币,我们可以先让大家的金币数减去最大的金币数!”

于是,他重新计算:

? 火龙的金币数变为 100万 - 10亿 = -9.99亿

? 冰龙的金币数变为 200万 - 10亿 = -9.98亿

? 雷龙的金币数变为 300万 - 10亿 = -9.97亿

? 风龙的金币数变为 10亿 - 10亿 = 0

然后,他计算:

现在,所有的指数值都变得很小,不会再溢出,金碗终于能正常计算了!

最终,风龙的财富占比几乎是 100%,其他三条龙的财富占比接近 0,宴会得出了正确的结论。

这个方法被称为 Softmax的数值稳定性技巧,即 在计算前减去最大值,防止指数运算导致溢出。

用比喻解释Softmax的溢出问题

比喻1:水池溢出

想象你有一个大水池,你往里面倒水:

? 第一桶水是 100升

? 第二桶水是 200升

? 第三桶水是 300升

? 第四桶水是 10亿升

显然,水池无法承受10亿升的水,直接溢出了!

解决方案?

? 你先抽掉10亿升的水(相当于减去最大值),这样所有的水量都变成一个较小的数字,水池就不会溢出了。

比喻2:计算机的“溢出”锅

假设你在做饭,想同时煮四个锅的水,每个锅的温度分别是:

? 100°C

? 200°C

? 300°C

? 10亿°C

你的炉子最高只能加热到 500°C,但第四个锅的温度远超这个上限,直接导致炉子爆炸(计算机溢出)!

怎么办?

你可以先把所有锅的温度减去一个基准值(比如减去10亿°C),让温度变成:

? -9.99亿°C

? -9.98亿°C

? -9.97亿°C

? 0°C

现在,最高的温度也只是 0°C,不会再超出炉子的承受范围。

总结

? Softmax的溢出问题 是因为指数运算会导致数值过大,超过计算机的上限。

? 解决方案 是在计算Softmax之前,先减去最大值,这样所有的数值都会变小,防止指数爆炸。

? 就像往水池倒水、往锅里加热,数值太大就会溢出,我们需要先做调整,确保计算不超出范围!

喜欢职场小聪明请大家收藏:()职场小聪明全本小说网更新速度全网最快。

目录
设置
设置
阅读主题
字体风格
雅黑 宋体 楷书 卡通
字体风格
适中 偏大 超大
保存设置
恢复默认
手机
手机阅读
扫码获取链接,使用浏览器打开
书架同步,随时随地,手机阅读
收藏
换源
听书
听书
发声
男声 女生 逍遥 软萌
语速
适中 超快
音量
适中
开始播放
推荐
反馈
章节报错
当前章节
报错内容
提交