33頁深度學習矩陣運算基礎教程(附全文下載)

2021-02-19 專知

【導讀】推薦一個Terence Parr和Jeremy Howard撰寫的深度學習的矩陣運算基礎教程。我們知道,深度學習是基於線性代數和微積分的,反向傳播也離不開求導和矩陣運算。因此了解深度學習內部的數學原理也至關重要,本文從簡單函數求導,到多元函數求偏導,再到矩陣的微積分運算,逐層深入,引導我們探索深度學習背後的學習規則和數學基礎。

還有網頁版教程:

https://explained.ai/matrix-calculus/index.html

其他更多詳情,下載全文查看:

請關注專知公眾號(掃一掃最下面專知二維碼,或者點擊上方藍色專知

專知開課啦!《深度學習: 算法到實戰》, 中科院博士為你講授!

深度學習是一個令人興奮的領域,具有巨大的現實世界影響力。 本文是Terence Parr和Jeremy Howard撰寫的基於'深度學習的矩陣運算'的筆記集合。

深度學習是基於線性代數的。它使用許多層的神經網絡來解決複雜的問題。模型輸入,多層神經元權重,激活函數等都可以定義為向量。操作/轉換很自然地需要使用神經網絡進行訓練,同時應用於所有輸入。矢量/矩陣表示和可用於它們的線性代數運算,非常適合神經網絡的流水線的數據流模型。當輸入、權重和函數被視為向量,值的流動可被視為矩陣上的運算時,數學形式變得非常簡單

深度學習也是基於差異化的!在訓練階段計算變化率對於優化損失函數至關重要。從任意一組網絡模型權重w開始,目標是得到一個「最優」權重集合,以使給定的損失函數最小。幾乎所有的神經網絡都使用反向傳播方法來找到這樣一組權重。這個過程涉及權重值的變化如何影響輸出。基於此,我們決定按比例增加或減少權重值。測量輸出如何隨著權重的變化而變化,與計算輸出w.r.t權重w的(部分)導數相同。對於所有的訓練樣例,對於所有層中的所有權重,重複該過程。

矩陣運算利用數學的兩個基本分支 - 線性代數和微積分。絕大多數人將線性代數和微積分分開學。這兩個學科在各自的領域本身就都很重要。沒有多少本科課程著重於矩陣運算。人們通常依靠直覺來彌補理解上的空白,同時還要考慮反向傳播等概念。大多數機器學習算法中的反向傳播步驟都是基於計算向量和矩陣中的導數來更新值。大多數機器學習框架本身做了大量的工作,我們永遠不會看到實際導數計算的過程。然而,理解框架本身的內部工作是必要的,如果你打算成為一個合格的從業者或想要從頭開發ML庫,這是非常重要的。

雖然該論文面向DL從業者和編程人員,但它本質上是數學的。注意通過符號來鞏固你的理解是非常重要的。特別注意諸如矢量的形狀(長或高),標量或矢量,矩陣的尺寸等。矢量用粗體字表示。沒有經驗的人可能不會注意到粗體f和斜體f字體之間的差異,但這在等式中有很大的差異。向量的形狀和方向也是一樣的。為了理解術語,我嘗試了很多方法才對這些有些理解,順便說一下我一開始理解的很多術語很多都有問題。

慶幸的是,函數的概念(以及計算它們的衍生物的方法)是從簡單到複雜的方式定義的。首先,我們從f(x)表示的簡單參數函數開始。函數和參數x是標量(用斜體表示),我們可以使用傳統的導數規則來計算f(x)的導數。其次,我們會看到的函數往往有很多變量與之相關聯,以f(x,y,z)的形式。為了計算這些函數的導數,我們使用針對特定參數計算的偏導數。處理這些函數要用到多變量微積分知識。

將輸入變量x, y, z統一用粗體x的向量描述,我們可以將輸入參數向量的標量函數表示為f(x)。該領域的運算是向量運算,其中f(x)的偏導數被表示為向量本身並且適合於各種向量操作。最後,深度學習最有用的是同時表示多個這樣的函數。我們使用f(x)來表示一組f(x)形式的函數。微積分領域最常見的是矩陣微積分(matrix calculus)。

回顧一下,f(x)是標量函數(使用簡單的導數規則),f(x)是向量變量x(使用向量運算規則)的標量函數,f(x)是許多向量標量值函數,每個函數依賴於輸入x的向量(使用矩陣微積分規則)。本文演示了如何計算簡單函數的導數,以及多元函數中的偏導數(∂/∂x),矢量演算中的梯度∇f函數和和矩陣演算中的雅可比矩陣J。差不多可以說,∇f(x)函數是矢量形式f的偏導數的集合。f(x)的雅可比矩陣每行基本上是單獨的∇f(x)。

在計算偏導數的過程中,本文做了一些假設。要記住計算輸出函數的偏導數(y = w.x +b)和損失函數是很重要的。第一個假設是向量x的基數等於f中的標量函數的個數。這提供了一個方形雅可比矩陣。如果你想知道為什麼他們需要相等,考慮這樣一個情況,每個神經元xi的輸入都與權重wi相關(這裡的標量函數類似於xi*wi),所以我們擁有和x一樣多的w。

另一個重要的假設是關於元素對角線性質。基本上,該屬性表明f(x)中的第i個標量函數是(僅)矢量x中第項的函數。想像常見的神經元模式你發現,這樣做更有意義。輸入xi的貢獻與單個參數wi成比例。假設元素對角線性質使雅可比行列式(由第一個假設製成的方形)變成對角矩陣,所有非對角線項都為零。

論文的接下來的幾節將解釋計算更複雜函數的導數的過程。函數可以從簡單到複雜有幾種方式。首先,考慮通過在兩個向量(當然具有相同大小)上應用基於元素的二元運算符得到的函數。這些函數的形式為f(x,y) = x + y或max(x, y)。請注意,在這種情況下,(x, y)是向量。接下來,有一些標量擴展函數是通過將矢量乘法/加入標量。該操作涉及將標量「擴展」到與矢量相同的維度,然後執行元素的乘法和加法操作。例如,y = x + b 被擴展到向量b ,並且被元素地添加到x。

第三,考慮將向量中的值轉化為單個值的函數。最常見的例子是計算神經網絡的損失,通常是形式y = sum(f(x))。這裡y是通過將向量 f(x)的元素相加得到的標量值。

本文計算了這三種情況下的衍生方法。有些函數可能很複雜,需要使用導數的鏈式規則。本文描述了簡單標量函數的鏈式規則,並逐漸將其擴展到所有向量的鏈式規則。

參考連結:

https://towardsdatascience.com/notes-on-matrix-calculus-for-deep-learning-b9899effa7cf

https://arxiv.org/abs/1802.01528

請加專知小助手微信(掃一掃如下二維碼添加),諮詢《深度學習:算法到實戰》參團限時優惠報名~

歡迎微信掃一掃加入專知人工智慧知識星球群,獲取專業知識教程視頻資料和與專家交流諮詢!

請PC登錄www.zhuanzhi.ai或者點擊閱讀原文,註冊登錄專知,獲取更多AI知識資料!

點擊「閱讀原文」,了解報名專知《深度學習:算法到實戰》課程

相關焦點

  • 【乾貨】理解深度學習中的矩陣運算
    【導讀】本文是作者Nikhil B撰寫的「Terence Parr和Jeremy Howard的深度學習的矩陣運算」筆記。
  • 教程| 基礎入門:深度學習矩陣運算的概念和代碼實現
    本文從向量的概念與運算擴展到矩陣運算的概念與代碼實現,對機器學習或者是深度學習的入門者提供最基礎,也是最實用的教程指導,為以後的機器學習模型開發打下基礎。在我們學習機器學習時,常常遇到需要使用矩陣提高計算效率的時候。如在使用批量梯度下降迭代求最優解時,正規方程會採用更簡潔的矩陣形式提供權重的解析解法。
  • 教程 | 基礎入門:深度學習矩陣運算的概念和代碼實現
    本文從向量的概念與運算擴展到矩陣運算的概念與代碼實現,對機器學習或者是深度學習的入門者提供最基礎,也是最實用的教程指導,為以後的機器學習模型開發打下基礎
  • 【深度學習】深度學習之Pytorch基礎教程!
    ,深度學習框架開始大量的出現。尤其是近兩年,Google、Facebook、Microsoft等巨頭都圍繞深度學習重點投資了一系列新興項目,他們也一直在支持一些開源的深度學習框架。目前研究人員正在使用的深度學習框架不盡相同,有 TensorFlow 、Pytorch、Caffe、Theano、Keras等。這其中,TensorFlow和Pytorch佔據了深度學習的半壁江山。
  • 深度學習之Pytorch基礎教程!
    ,深度學習框架開始大量的出現。尤其是近兩年,Google、Facebook、Microsoft等巨頭都圍繞深度學習重點投資了一系列新興項目,他們也一直在支持一些開源的深度學習框架。目前研究人員正在使用的深度學習框架不盡相同,有 TensorFlow 、Pytorch、Caffe、Theano、Keras等。這其中,TensorFlow和Pytorch佔據了深度學習的半壁江山。
  • 700頁《圖形深度學習》教程「PPT」,限時免費領取!
    Pandas是一個強大的分析結構化數據的工具集;它的使用基礎是Numpy(提供高性能的矩陣運算);用於數據挖掘和數據分析,同時也提供數據清洗功能。學習Pandas最好的方法就是看官方文檔:《10 Minutes to pandas》、《Pandas cookbook》、《Learn Pandas》英文版讀起來稍顯吃力,所以向大家推薦Pandas官方文檔中文版!書籍PDF電子書下載:《pandas官方文檔中文版》PDF已經打包好,可以通過下述步驟來獲取: 2.
  • 下載量過百萬的吳恩達機器學習和深度學習筆記更新了!(附PDF下載)
    今天,我把吳恩達機器學習和深度學習課程筆記都更新了,並提供下載,這兩本筆記非常適合機器學習和深度學習入門。
  • R與數學專題矩陣運算
    溫馨提示:每期乾貨不容錯過,點擊文章末尾「閱讀原文」查看上期內容~~這一周將接著給大家介紹 R在矩陣運算的相關計算。通過對本文的學習,你將會掌握矩陣的創建,矩陣的基本運算,矩陣的分解;行列式的相關運算。1.
  • R與數學專題 矩陣運算
    溫馨提示:每期乾貨不容錯過,點擊文章末尾「閱讀原文」查看上期內容~~這一周將接著給大家介紹 R在矩陣運算的相關計算。通過對本文的學習,你將會掌握矩陣的創建,矩陣的基本運算,矩陣的分解;行列式的相關運算。1.
  • 2019年度最佳書單:深度學習/機器學習/強化學習(附部分電子書下載)
    這本書最大的特點就是號稱高中生也能看懂的深度學習教材。在本書中,Andrew試圖繞開數學公式,來科普什麼是深度學習,以及如何創建一個神經網絡。圖書簡介Grokking Deep Learning教你從頭開始構建深度學習神經網絡!
  • matlab矩陣及其運算(五)
    二狗在MATLAB矩陣及其運算(三)篇章中,給大家留下關於自編行列式運算的小程序,本期二狗在此給大家解答一下自編行列式程序思路及代碼,再給大家講一下廣逆矩陣的概念,為深入學習廣逆矩陣做準備。啟下:廣逆矩陣概念在上期matlab矩陣連載中及其運算(四)中,在文末提到的廣逆矩陣概念,廣逆矩陣這個問題比較大,將會分幾期進行講解,本期給大家講講廣逆矩陣的概念。由克拉默法則知道當A∈Cnnxn時,方程組
  • 帶你一起秒懂深度學習 之 矩陣微積分 1
    導讀: 有沒有辦法讓你真正秒懂深度學習呢?答案是有的,但是在做到這一點之前,你需要省出一部分玩遊戲、看電影或者看其他公眾號的時間,來這裡學習一下由 fast.ai 創始人寫的矩陣微積分。對於深度學習,如果只是想應用一下,實際上並不難,哪怕對原理一知半解也可以做得很好。但是如果你想理解得深入一些,那還是需要鞏固一下本文即將介紹的相關數學知識。
  • 深度學習線性代數簡明教程
    深度學習(Deep Learning)是機器學習的子領域。而線性代數(linear algebra)是有關連續值的數學。許多計算機科學家在此方面經驗不足(傳統上計算機科學更偏重離散數學)。想要理解和使用許多機器學習算法,特別是深度學習算法,對線性代數的良好理解是不可或缺的。
  • 剖析QNNPACK的矩陣運算優化思路
    QNNPACK不但對傳統的卷積有較好的加速,對於新興的group convolution、depthwise convolution也有不錯的效果。儘管這是純軟體的工作,其中很多優化方式和思想很值得借鑑。傳統深度學習的算法,特別是面向圖像和視頻領域的模型,主要都是卷積操作,這個運算量是很大的。
  • 好書推薦|LaTeX2e完全學習手冊(附PDF下載)
    —文末附本書電子版下載地址
  • 【科研心得】基於MATLAB的矩陣運算與OD矩陣處理的簡易教程
    (編輯註:老凡爾賽了)至於很複雜的矩陣運算,其實筆者(擅自地)認為只要不是真心想在考研上下功夫提分或者本身就是數學專業人士(在此希望不要被我無意冒犯),站在十幾年後本人的角度去想,當時在大學中花費太多的精力去深入學習高數其實並沒有那麼地需要,可能會觸及很多高深的我們無法觸及的高數世界而受到打擊導致對高數世界的探尋感到望而卻步(那種求知慾被碾壓的感覺你懂的)。
  • 【乾貨】2020年中國在線青少兒英語教育市場報告(附全文下載)
    報告觀點認為:隨著家長以及學生對英語學習的重視度不斷提升,青少兒英語教育市場需求逐步釋放,是K12在線教育行業中潛力巨大的領域;在線青少兒英語教育行業梯隊分化明顯,行業用戶向頭部品牌集中;「英語學習觀」向能力與個性培養的方向轉變,家長對孩子英語學習的態度有所改觀,學習英語不單純是為了考試升學,而是為了讓孩子具備良好的綜合素質;隨著英語教育行業用戶的個性化
  • 1000+頁學習資料免費分享給大家,提供下載
    最近很多小夥伴找我要一些學習資料,於是我利用自己的業餘時間,將之前自己自學的一些資料、面試題、項目資料、數據備份方案及恢復等等,熬夜整理出來了,細數看了看應該有1000+頁之多,今天免費共享給大家!廢話不多說,直接上圖,上硬貨!!
  • Yann Lecun自監督學習指南(附114頁Slides全文下載)
    2018年11月08日,他來到加州大學聖巴巴拉分校,為在場師生作了一場關於自監督學習的前沿報告,近日他在twitter上公開了報告的全程錄像以及Slides全文,現為大家編譯如下。近年來,深度學習在計算機感知、自然語言處理和控制方面取得了重大進展。但幾乎所有這些成功都在很大程度上依賴於有監督學習,在監督學習中,機器被要求預測人類提供的標籤信息,或通過無模型的強化學習方法,不斷的嘗試各種行為空間的動作,以期達到收益(reward)最大化。這導致了監督學習需要大量的標記樣本,使得它只適用於特定的任務。而強化學習即使在簡單的學習任務中,也需要與環境進行大量的交互。
  • 線性代數入門——矩陣的轉置運算及對稱矩陣的概念
    系列簡介:這個系列文章講解線性代數的基礎內容,注重學習方法的培養。