深度學習中的線性代數知識

2021-02-08 廣告機制設計與實現

掌握好線性導數對於理解和從事機器學習算法相關工作是很有必要的,尤其是對於深度學習算法而言。本文將會介紹機器學習中最常用到的線性代數知識

標量、向量、矩陣和張量標量:一個標量就是一個單獨的數,通常用斜體表示,並被賦予小寫的變量名稱
向量:一個向量是一列數。這些數是有序排列的。通過次序中的索引,可以確定每個單獨的數。通常賦予向量粗體的小寫變量名稱,比如**$x$**矩陣:矩陣時一個二維數組,其中每一個元素都由兩個索引所確定張量:在某些情況下,我們會討論超過兩維的數組。一般的,一個數組中的元素分布在若干維坐標的規則網絡中,稱之為張量

轉置是矩陣的重要操作之一。矩陣的轉置是以對角線為軸的鏡像,這條從左上角到右下角的對角線被稱之為主對角線。矩陣A的轉置通常被記為

向量可以看作只有一列的矩陣。對應地,向量的轉置可以看作只有一行的矩陣。標量可以看作只有一個元素的矩陣,標量的轉置等於它本身

只要矩陣的形狀一樣,介意把兩個矩陣相加。兩個矩陣相加是指對應位置的元素相加

標量和矩陣相乘,或者和矩陣相加時,只需將其與矩陣的每個元素相乘或相加,比如

在深度學習中,有時候會使用一些不那麼常規的符號。比如,允許矩陣和向量相加,產生另一個矩陣:廣播

矩陣和向量相乘

兩個矩陣A和B的矩陣乘積是第三個矩陣C。為了使乘法可被定義,矩陣A的列數必須和矩陣B的行數相等。如果矩陣的形狀是

矩陣乘積服從分配律:

服從結合律:

但不滿足交換律,即下式並非總是滿足:

矩陣乘積的轉置:

單位矩陣和逆矩陣

任意向量和單位矩陣相乘,都不會改變,通常記為

矩陣A的逆矩陣記作

現在,可以通過以下步驟來求解方程:

線性相關和生成子空間

可以將方程A的列向量看作從原點出發的不同方向,確定有多少種方法可以到達向量b。在這個觀點下,向量x中的每個元素表示應該沿著這些方向走多遠,即

一般而言,這種操作稱為線性組合

一組向量的生成子空間是原始向量線性組合後所能達到的點的集合

確定列空間或者A的值域

為了使向量

不等式線性相關。如果一組向量中任意一個向量都不能表示成其它向量的線性組合,那麼這組向量稱為線性無關

要想矩陣可逆,還需要保證對於每一個b值至多有一個解。為此,需要確保該矩陣至多有m個列向量;否則,該方程會有不止一個解。也就是說,該矩陣必須是一個方陣,即m=n,並且所有列向量都是線性無關的。一個列向量線性相關的方陣被稱為是奇異的

範數

在機器學習中,經常使用範數的函數來衡量向量大小。形式上,

其中,

直觀上來說,向量

當p=2時,歐幾裡得範數。它表示從原點出發到向量

平方

另外一個在機器學習中出現的範數是最大範數。這個範數表示向量中具有最大幅值的元素的絕對值:

在深度學習中,經常使用Frobenius範數,類似於向量的

兩個向量的點擊可以用範數來表示:

其中,

特殊類型的矩陣和向量

對角矩陣只在主對角線上含有非零元素,其它位置都是零。對角矩陣受到關注的部分原因是對角矩陣的乘法計算很高效。計算乘法

對稱矩陣是轉置和自己相等的矩陣,即:

單位向量是具有單位範數的向量,即:

如果標準正交

正交矩陣指行向量和列向量分別是標準正交的方陣,即

正交矩陣收到關注是因為求逆計算代價非常小

特徵分解

特徵分解是使用最廣的矩陣分解之一,即將矩陣分解成一組特徵向量和特徵值。方陣A的特徵向量是指與A相乘後相當於對該向量進行縮放的非零向量

其中標量特徵值。如果

假設矩陣

不是每一個矩陣都可以分解成特徵值和特徵向量。在某些情況下,特徵分解存在,但是會涉及複數而非實數。具體來講,每個實對稱矩陣都可以分解成實特徵向量和實特徵值:

其中,

雖然任意一個實對稱矩陣

矩陣是奇異的,若且唯若含有零特徵值

所有特徵值都是正數的矩陣稱為正定;所有特徵值都是非負數的矩陣稱為半正定。同樣地,所有特徵值都是負數的矩陣稱為負定;所有特徵值都是非正數的矩陣稱為半負定。半正定矩陣受到關注是因為它們保證

奇異值分解

還有另一種分解矩陣的方法,叫做奇異值分解,是將矩陣分解為奇異向量奇異值。每個實數矩陣都有一個奇異值分解,但不一定都有特徵分解。例如,非方陣的矩陣沒有特徵分解,這是只能用奇異值分解

奇異值分解和特徵分解類似,將矩陣

假設

對角矩陣左奇異向量,矩陣右奇異向量。可以用與A相關的特徵分解來解釋A的奇異值分解。A的左奇異向量是

Moore-Penrose偽逆

對於非方陣而言,其逆矩陣是沒有定義的。但可以計算偽逆

其中,矩陣

當矩陣A的列數多餘行數時,使用偽逆求解線性方程式眾多可能解法中的一種。特別地,當

跡運算

跡運算返回的是矩陣對角元素的和

多個矩陣相乘得到的方陣的跡,和將這些矩陣中的最後一個挪到最前面之後相乘的跡是相同的:

即使循環置換後矩陣乘積得到的矩陣形狀變了,跡運算的結果依然不變

行列式

行列式,記作

行列式計算方法:主對角線元素乘積與副對角線元素乘積的差

相關焦點

  • 深度學習和機器學習的線性代數入門
    本文目錄引言機器學習ML和深度學習NN中的線性代數矩陣向量矩陣乘法轉置矩陣逆矩陣正交矩陣對角矩陣正確理解機器學習和深度學習的概念,掌握以下這些數學領域至關重要:機器學習和深度學習中的線性代數在機器學習中,很多情況下需要向量化處理,為此,掌握線性代數的知識至關重要。
  • 資源|用Python和NumPy學習《深度學習》中的線性代數基礎
    本文系巴黎高等師範學院在讀博士 Hadrien Jean 的一篇基礎學習博客,其目的是幫助初學者/高級初學者基於深度學習和機器學習來掌握線性代數的概念。掌握這些技能可以提高你理解和應用各種數據科學算法的能力。
  • 同濟版《線性代數》引發激烈爭議:深度學習基礎很重要
    如今已經畢業多年,沒想到最近在知乎上看到一篇文章《《線性代數》(同濟版)——教科書中的恥辱柱》,點讚量快突破五千。對於這篇文章,大家有時間可以讀一下,看看是不是同意作者的觀點。線性代數真的很重要,這是很多工程技術人員走上工作崗位的最大感受。好多算法都用到線性代數的知識,就比如現在非常熱門的深度學習,它的底層實現方式用到好多線性代數方面的知識。
  • 強化學習中的線性代數知識
    線性代數的基本原理如何用於深度強化學習?答案是解決了馬爾可夫決策過程時的迭代更新。強化學習(RL)是一系列用於迭代性學習任務的智能方法。由於計算機科學是一個計算領域,這種學習發生在狀態向量、動作等以及轉移矩陣上。狀態和向量可以採用不同的形式。
  • 深度學習線性代數簡明教程
    深度學習(Deep Learning)是機器學習的子領域。而線性代數(linear algebra)是有關連續值的數學。許多計算機科學家在此方面經驗不足(傳統上計算機科學更偏重離散數學)。想要理解和使用許多機器學習算法,特別是深度學習算法,對線性代數的良好理解是不可或缺的。
  • 詳細解讀,8000字線性代數知識點長文,帶你入門深度學習/機器學習
    本文目錄:引言機器學習和深度學習建立在數學原理和概念之上,因此AI學習者需要了解基本數學原理。在模型構建過程中,我們經常設計各種概念,例如維數災難、正則化、二進位、多分類、有序回歸等。神經元是深度學習的基本單位,該結構完全基於數學概念,即輸入和權重的乘積和。至於Sigmoid,ReLU等等激活函數也依賴於數學原理。
  • MIT大牛Gilbert Strang新書:《線性代數與從數據中學習》搶先看
    銅靈 發自 凹非寺量子位 出品 | 公眾號 QbitAI經典教材《Introduction to Linear Algebra》(《線性代數導論》)的作者Gilbert Strang教授又要出新書了。這本新書名叫Linear Algebra and Learning from Data(《線性代數與從數據中學習》),面向有一定基礎、想進階線性代數技能的同學。此次教授親自出馬再推新書,號召力非常強大。微博科技博主@愛可可-愛生活推薦後短短幾個小時,已經有200多人轉發。
  • 【乾貨】理解深度學習中的矩陣運算
    我們知道,深度學習是基於線性代數和微積分的,反向傳播也離不開求導和矩陣運算。因此了解深度學習內部的數學原理也至關重要,本文從簡單函數求導,到多元函數求偏導,再到矩陣的微積分運算,逐層深入,引導我們探索深度學習背後的學習規則和數學基礎。
  • 【入門】機器學習中的線性代數
    閱讀這篇文章後,你將會了解到:如何在處理數據時使用線性代數結構,如表格數據集和圖像。數據準備過程中用到的線性代數概念,例如 one-hot 編碼和降維。深度學習、自然語言處理和推薦系統等子領域中線性代數符號和方法的深入使用。讓我們開始吧。
  • 人工智慧中的線性代數:如何理解並更好地應用它
    當然,學習線性代數道阻且長。數學,尤其是線性代數常與枯燥、複雜和毫無意義的事物聯繫起來。不過你還可以另闢蹊徑。閱讀完本文後,你將了解到:線性代數的本質;線性代數的真實應用場景;線性代數可用於 AI、ML 和數據科學的原因;學習線性代數最有效的方法。
  • 深度學習中的Python - NumPy基礎
    一個常用的線性代數函數是 norm() ,一個用來計算向量長度的函數,也稱為向量範數或向量大小。在機器學習和深度學習應用中,向量範數作為一種規範化技術被用來解決過度填充問題。NumPy 的 linalg 子模塊具有計算向量範數的 norm()函數。
  • Python深度學習入門級知識詳解
    您需要有很強的線性代數和微積分背景,良好的Python編程技能,並紮實掌握數據科學、機器學習和數據工程。即便如此,在你開始將深度學習應用於現實世界的問題,並有可能找到一份深度學習工程師的工作之前,你可能需要一年多的學習和實踐。然而,知道從哪裡開始,對軟化學習曲線有很大幫助。如果我必須重新學習Python的深度學習,我會從Andrew Trask寫的Grokking deep learning開始。
  • 淺談線性代數的複習
    線性代數在考研中分值佔比不大,但是線性代數的知識相較於高數和概率論而言比較瑣碎和抽象,需要記憶和理解的東西也不少。許多同學在複習線性代數常常會感到很苦惱,那就是非常容易忘,造成這點的原因就是線性代數的知識既抽象又瑣碎,同學無法將線代知識有機地串聯起來。
  • 機器學習中的線性代數:關於常用操作的新手指南
    大數據文摘作品,轉載要求見文末編譯 | 沈愛群,徐凌霄,Aileen在學習深度學習的課程時,數學知識十分重要,而如果要挑選其中最相關的部分,「線性代數」首當其衝。如果你也跟本文作者一樣,正在探索深度學習又困於相關數學概念,那麼一定要讀下去,這是一篇介紹深度學習中最常用線性代數操作的新手指南。
  • 線性代數與數據學習:MIT教授Gilbert Strang幫你打下堅實的數學...
    這一本書為機器學習提供了很多數學基礎,它同時也提供了深度學習一些基本概念。可以說藉助這本書,我們能從數學的角度來理解流行的模型。因為在機器學習中,學習函數中的權重會以矩陣形式表示,這些權重通過隨機梯度下降優化,而「隨機」一詞提示訓練收斂是概率性的。此外,概率論中的大數定律被擴展到了大函數定律:如果架構設計良好並且參數計算良好,則有很高的概率能成功收斂。請注意這不是一本關於計算或編碼或軟體的書。
  • 線性代數在數據科學中的十大強大應用(二)
    本篇為機器學習與數據科學背後的線性代數知識系列的第二篇,本篇主要介紹自然語言處理(NLP)中的線性代數與計算機視覺(CV)中的線性代數。涵蓋主成分分析(PCA)與奇異值分解(SVD)背後的線性代數知識。相信這也是各位數據科學愛好者常用的各項技術,希望可以幫大家理清思路和對這些算法有更進一步的認識。
  • 線性代數與數據學習:MIT教授Gilbert Strang幫你打下堅實的數學基礎
    這一本書為機器學習提供了很多數學基礎,它同時也提供了深度學習一些基本概念。可以說藉助這本書,我們能從數學的角度來理解流行的模型。書籍主頁:http://math.mit.edu/~gs/learningfromdata/這本書的目的是解釋數據科學和機器學習所依賴的數學:線性代數、最優化、概率論和統計學。
  • 線性代數很重要,選對教材更重要:同濟版《線性代數》引發激烈爭議
    如今已經畢業多年,沒想到最近在知乎上看到一篇文章《《線性代數》(同濟版)——教科書中的恥辱柱》,點讚量快突破五千。對於這篇文章,大家有時間可以讀一下,看看是不是同意作者的觀點。線性代數真的很重要,這是很多工程技術人員走上工作崗位的最大感受。好多算法都用到線性代數的知識,就比如現在非常熱門的深度學習,它的底層實現方式用到好多線性代數方面的知識。
  • 一文讀懂深度學習中的矩陣微積分
    雖然網絡上已經有不少關於多元微積分和線性代數的在線資料,但它們通常都被視作兩門獨立的課程,資料相對孤立,也相對晦澀。不過,先別打退堂鼓,來自舊金山大學的Terence Parr教授說:矩陣微積分真的沒有那麼難。這位ANTLR之父和fast.ai創始人Jeremy Howard一起推出了一篇免費教程,旨在幫你快速入門深度學習中的矩陣微積分。
  • 高中數學太簡單,該不該把高數上和線性代數放進高中學習?
    這是一個問題就知識本身而言,其實並不難,多數同學是可以理解的,當然,這裡說的理解是非常淺顯的。然而,高考屬於選拔性考試,數學題目就可以考得非常難,以至於不同學生考出不同的分數,高分者認為數學簡單,低分者認為數學難。數學分數高低的根本原因在於學生對知識的理解深度不一、應用能力不一、熟悉程度不一。