书迷看

书迷看>职场小聪明心得体会 > 第606章 用故事解释softmax函数的溢出问题(第1页)

第606章 用故事解释softmax函数的溢出问题(第1页)

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

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

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

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

?

火龙:100万金币

?

冰龙:200万金币

?

雷龙:300万金币

?

风龙:10亿金币

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

金碗炸了!

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

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

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

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

于是,他重新计算:

?

火龙的金币数变为

100万

-

10亿

=

-9.99亿

?

冰龙的金币数变为

200万

-

10亿

=

-9.98亿

?

雷龙的金币数变为

300万

-

10亿

=

-9.97亿

?

风龙的金币数变为

10亿

-

10亿

=

然后,他计算:

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

最终,风龙的财富占比几乎是

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之前,先减去最大值,这样所有的数值都会变小,防止指数爆炸。

?

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

请勿开启浏览器阅读模式,否则将导致章节内容缺失及无法阅读下一章。

相邻推荐:穿越兽世:兽夫宠妻日常  爱是灵魂契约  憨憨小师妹,行走的储物袋  开局迎娶鬼新娘,749局找上门  遇在高中  好孕!怀崽后才知禁欲教授是爹系  红楼之皇权枯骨  某霍格沃茨的密教教主  毛团听我话后卷疯了,我负责可爱  综影视之作精在线崩剧情  怎么都在觊觎万人嫌反派?!  开局被授予国士回到学校当新生  至死靡他  洪荒:小龙能掠夺天赋特质  带着乾坤壶,重返饥荒年  三国之从购买并州牧开始  末世修仙生存指南  我是正经勇者,不正经的是她们!  顶级万人迷光环  不是派出所吗怎么去刑侦了  

已完结热门小说推荐

最新标签