你的位置: 首页 > 肯定网 > > 职场小聪明

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

? 就像往水池倒水、往锅里加热数值太大就会溢出我们需要先做调整确保计算不超出范围! 喜欢职场小聪明请大家收藏:()职场小聪明20小说网更新速度全网最快。

本文地址职场小聪明第606章 用故事解释softmax函数的溢出问题来源 http://www.kdadsl.com

最新推荐

编辑推荐

热门小说