博客專欄

        EEPW首頁 > 博客 > Softmax 函數和它的誤解

        Softmax 函數和它的誤解

        發布人:數據派THU 時間:2023-06-20 來源:工程師 發布文章

        :深度學習愛好者 CV技術指南

        [ 導讀 ]Softmax是個大家都熟悉的激活函數,然而,很多人只知道它的表達式,它在網絡中的位置,而對一些具體的原因和細節卻回答不上來。這篇文章給了相應的介紹。 

        Softmax 是一個數學函數,用于對 0 和 1 之間的值進行歸一化。
        在本文中,您將了解:

        • 什么是 Softmax 激活函數及其數學表達式?
        • 它是如何使用 argmax() 函數實現的?
        • 為什么 Softmax 只用在神經網絡的最后一層?
        • 對 Softmax 的誤解

        什么是 Softmax 激活函數及其數學表達式?


        在深度學習中,使用 Softmax 作為激活函數,對 0 到 1 之間的向量中每個值的輸出和尺度進行歸一化。Softmax 用于分類任務。在網絡的最后一層,會生成一個 N 維向量,分類任務中的每個類對應一個向量。
        圖片網絡輸出層中的 N 維向量
        Softmax 用于對 0 和 1 之間的那些加權和值進行歸一化,并且它們的和等于 1,這就是為什么大多數人認為這些值是類的概率,但這是一種誤解,我們將在本文中討論它。
        實現 Softmax 函數的公式:
        圖片
        使用這個數學表達式,我們計算每類數據的歸一化值。這里 θ(i) 是我們從展平層得到的輸入。
        計算每個類的歸一化值,分子是類的指數值,分母是所有類的指數值之和。使用 Softmax 函數,我們得到 0 到 1 之間的所有值,所有值的總和變為等于 1。因此人們將其視為概率,這是他們的誤解。
        它如何使用 argmax() 函數?


        在對每個類應用上述數學函數后,Softmax 會為每個類計算一個介于 0 和 1 之間的值。
        現在我們每個類都有幾個值,為了分類輸入屬于哪個類,Softmax 使用 argmax() 給出了應用 Softmax 后具有最大值的值的索引。
        圖片argmax 的可視化解釋
        為什么 Softmax 只用在神經網絡的最后一層?


        現在進入重要部分,Softmax 僅用于最后一層以對值進行歸一化,而其他激活函數(relu、leaky relu、sigmoid 和其他各種)用于內層
        如果我們看到其他激活函數,如 relu、leaky relu 和 sigmoid,它們都使用唯一的單個值來帶來非線性。他們看不到其他值是什么。
        但是在 Softmax 函數中,在分母中,它取所有指數值的總和來歸一化所有類的值。它考慮了范圍內所有類的值,這就是我們在最后一層使用它的原因。要通過分析所有的值來知道Input屬于哪個類。圖片最后一層的 Softmax 激活函數
        對 Softmax 的誤解
        關于 Softmax 的第一個也是最大的誤解是,它通過歸一化值的輸出是每個類的概率值,這完全錯誤。這種誤解是因為這些值的總和為 1,但它們只是歸一化值而不是類的概率。
        圖片
        在最后一層并不是單獨使用 Sotmax,我們更喜歡使用 Log Softmax,它只是對來自 Softmax 函數的歸一化值進行對數。
        Log Softmax 在數值穩定性、更便宜的模型訓練成本和 Penalizes Large error(誤差越大懲罰越大)方面優于 Softmax。
        這就是在神經網絡中用作激活函數的 Softmax 函數。相信讀完本文后你對它已經有了一個清楚的了解。
        原文鏈接:https://medium.com/artificialis/softmax-function-and-misconception-4248917e5a1c



        *博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。



        關鍵詞: AI

        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 呼玛县| 招远市| 饶阳县| 蓝山县| 梁平县| 曲阜市| 荥阳市| 女性| 江津市| 绍兴市| 红原县| 娄烦县| 修文县| 札达县| 伊金霍洛旗| 乌拉特中旗| 鹤峰县| 石屏县| 林芝县| 昌邑市| 额济纳旗| 连南| 绥江县| 武宁县| 阳曲县| 云阳县| 海宁市| 隆化县| 阳东县| 霞浦县| 澜沧| 高安市| 和硕县| 砀山县| 陇西县| 盐城市| 麻城市| 澄城县| 清水县| 左云县| 河曲县|