【深度学习】神经网络中几个常用的求导公式
??
親愛的朋友們,多多有一段時間沒有更新啦,主要是我在學習transformers突然開始思考幾個神經網絡相關的基本問題(模型結構越寫越復雜,調包效果越來越好,是否還記得為什么而出發呢?),讀者朋友也可以看看是否可以自如回答:
?什么是鏈式法則?
什么是Jacobin矩陣?
Jacobin有什么用處?
梯度的定義是什么?
方向導數和梯度的關系是什么?
神經網絡中張量反向傳播有什么特點?
哪些特性保證了神經網絡中高效的梯度計算?
我將我的總結神經網絡中的數學基礎寫到了一起放到了github,做成了一個網站,當然網站中也會逐漸加入之前寫的transformer推送內容:
https://erenup.github.io/deeplearningbasics/
還會持續更新,歡迎大家star或者提交issue/request~謝謝。
本來想一篇推送更新完,但考慮到大家時間有限,沒法一次看完,于是個人覺得把最常用的章節挑出來更新一下,本文公式較多,排版盡可能簡單化啦。
完整內容請查閱網站~
1. 矩陣乘以列向量求
可以看作函數將輸入 經過變換得到輸出,那么Jacobian矩陣
那么
由于 if else 0, 所以有
2. ?
3. ?向量等于自身,求
因為 所以
所以,將其放在鏈式法則中進行矩陣乘法時候不會改變其他矩陣。
4. 對向量中每個元素進行變換, 求
由于所以
所以是一個diagonal matrix 且
矩陣乘以一個diagonal矩陣也就是每個元素進行幅度變換,因此鏈式法則中的矩陣乘以相當于和做elementwise 乘法。
5. ,求
我們開始引入更復雜的情況,因為神經網絡中往往包含多次鏈式法則的引用,這里我們假設已經知道,直接求。
假設神經網絡的損失函數是標量,我們想計算的是損失函數對參數的梯度。我們可以想象神經網絡這個函數輸入是一個形狀的參數,輸出是一個標量,結合上一章節Jacobian知識我們可以知道形狀和一樣,所以在神經網絡訓練的時候可以將參數減輕去參數的梯度乘以學習率。
根據鏈式法則,我們需要求出。這個三維的張量不方便表示且十分復雜,因此我們先只看對求導。
所以只有時候非零
所以
所以得到
6.
7.
假設神經網絡到達softmax之前的輸出為,為分類數量,那么
所以
結語
本來對于矩陣求導還有些發怵的我,在熟練以上幾個公式之后發現神經網絡反向傳播的求導也不是那么遙不可觸。希望能對大家有幫助。
覺得不錯幫點個贊、轉發、在看吧。謝謝
往期精彩回顧適合初學者入門人工智能的路線及資料下載機器學習及深度學習筆記等資料打印機器學習在線手冊深度學習筆記專輯《統計學習方法》的代碼復現專輯 AI基礎下載機器學習的數學基礎專輯溫州大學《機器學習課程》視頻 本站qq群851320808,加入微信群請掃碼:總結
以上是生活随笔為你收集整理的【深度学习】神经网络中几个常用的求导公式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深度技术win11 32位全新专业版系统
- 下一篇: 【机器学习】基于LDA主题模型的人脸识别