深度學習和機器學習的線性代數入門

2020-11-28 雷鋒網

譯者:AI研習社(季一帆

雙語原文連結:https://www.yanxishe.com/TextTranslation/2965


本文完整代碼見Github或直接在Google Colab運行測試。

本文目錄

  1. 引言

  2. 機器學習ML和深度學習NN中的線性代數

  3. 矩陣

  4. 向量

  5. 矩陣乘法

  6. 轉置矩陣

  7. 逆矩陣

  8. 正交矩陣

  9. 對角矩陣

  10. 正規方程的轉置矩陣和逆矩陣

  11. 線性方程

  12. 向量範數

  13. L1範數/Manhattan範數

  14. L2範數/Euclidean範數

  15. ML中的正則化

  16. Lasso

  17. 特徵選擇與抽取

  18. 協方差矩陣

  19. 特徵值與特徵向量

  20. 正交性

  21. 正交集

  22. 擴張空間

  23. 主成分分析(PCA)

  24. 矩陣分解

  25. 總結

引言

機器學習和深度學習建立在數學原理和概念之上,因此AI學習者需要了解基本數學原理。在模型構建過程中,我們經常設計各種概念,例如維數災難、正則化、二進位、多分類、有序回歸等。

神經元是深度學習的基本單位,該結構完全基於數學概念,即輸入和權重的乘積和。至於Sigmoid,ReLU等等激活函數也依賴於數學原理。

正確理解機器學習和深度學習的概念,掌握以下這些數學領域至關重要:

機器學習和深度學習中的線性代數

在機器學習中,很多情況下需要向量化處理,為此,掌握線性代數的知識至關重要。對於機器學習中典型的分類或回歸問題,通過最小化實際值與預測值差異進行處理,該過程就用到線性代數。通過線性代數可以處理大量數據,可以這麼說,「線性代數是數據科學的基本數學。」

在機器學習和深度學習中,我們涉及到線性代數的這些知識:

通過線性代數,我們可以實現以下機器學習或深度學習方法:

  • 推導回歸方程

  • 通過線性方程預測目標值

  • 支持向量機SVM

  • 降維

  • 均方差或損失函數

  • 正則化

  • 協方差矩陣

  • 卷積


矢量積

矩陣

矩陣是線性代數的重要概念。一個m*n矩陣包含mn個元素,可用於線性方程組或線性映射的計算,也可將其視為一個由m*n個實值元素組成的元組。


矩陣表示

向量

在線性代數中,向量是大小為n*1的矩陣,即只有一列。


矩陣表示

矩陣乘法

矩陣乘法是行和列的點積,其中一個矩陣的行與另一個矩陣列相乘並求和。


矩陣乘法

矩陣乘法在線性回歸中的應用

通過多種特徵可以預測房屋價格。下表展示了不同房屋的特徵及其價格。


不同房屋的特徵及其價格


特徵變量與目標變量

令:


特徵及其係數


房價預測函數

轉置矩陣

對於矩陣A∈R^m*n,有矩陣B∈R^n*m滿足b_ij = a_ij,稱為A的轉置,即B=A^T。


A的轉置

逆矩陣

對n階矩陣A,有矩陣B∈R^n*n滿足AB =I_n(單位矩陣)= BA的性質,稱B為A的逆,表示為A^-1。


矩陣A和B


A和B相乘


A、B互為逆矩陣(得到單位矩陣)

正交矩陣

若且唯若矩陣列向量組是單位正交向量組時,n階矩陣A∈R^n*n是正交矩陣,有:


正交矩陣


矩陣A及其轉置


矩陣A及其轉置的乘積 

對角矩陣

在n階矩陣A∈R^n*n中,除主對角線上的元素,其他所有元素均為零,稱其為對角矩陣,即:

Aij =0,i != j  


對角矩陣

正規方程的轉置矩陣和逆矩陣

正規方程通過計算theta j的導數,將其設為零來最小化J。無需Gradient Descent就可直接得到θ的值,θ見下圖。


最小化誤差

通過上式實現前文「房價預測」。


以矩陣形式表示特徵x和目標值y

創建特徵x和目標y的矩陣:

import numpy as np Features
x = np.array([[2, 1834, 1],[3, 1534, 2],[2, 962, 3]])# Target or Pricey = [8500, 9600, 258800]

計算x的轉置:

# Transpose of xtranspose_x = x.transpose()transpose_x



特徵x矩陣的轉置

轉置矩陣與原矩陣x的乘積:

multi_transpose_x_to_x = np.dot(transpose_x, x)


轉置矩陣與原矩陣x的乘積 

轉置矩陣與原始矩陣乘積的逆:

inverse_of_multi_transpose_x_to_x = np.linalg.inv(multi_transpose_x_to_x)


逆矩陣

x的轉置與y的乘積:

multiplication_transposed_x_y = np.dot(transpose_x, y)


x的轉置與y的乘積 

theta值計算:

theta = np.dot(inverse_of_multi_transpose_x_to_x, multiplication_transposed_x_y)


theta

線性方程

線性方程是線性代數的核心,通過它可以解決許多問題,下圖是一條直線方程。



線性方程y=4x-5及其圖示

當x=2時:


由上述線性方程式得出的y

線性回歸中的線性方程

回歸就是給出線性方程的過程,該過程試圖找到滿足特定數據集的最優曲線,即:

Y = bX + a

其中,a是Y軸截距,決定直線與Y軸相交的點;b是斜率,決定直線傾斜的方向和程度。

示例

通過線性回歸預測平方英尺和房屋價格的關係。

數據讀取:

import pandas as pd
df = pd.read_csv('house_price.csv')
df.head()


房價表

計算均值:

def get_mean(value):
    total = sum(value)
    length = len(value)
    mean = total/length
    return mean

計算方差:

def get_variance(value):
    mean = get_mean(value)
    mean_difference_square = [pow((item - mean), 2) for item in value]
    variance = sum(mean_difference_square)/float(len(value)-1)
    return variance

計算協方差:

def get_covariance(value1, value2):
    value1_mean = get_mean(value1)
    value2_mean = get_mean(value2)
    values_size = len(value1)
    covariance = 0.0    for i in range(0, values_size):
        covariance += (value1[i] - value1_mean) * (value2[i] - value2_mean)
    return covariance / float(values_size - 1)

線性回歸過程:

def linear_regression(df):
   X = df['square_feet']
   Y = df['price']
   m = len(X)
   square_feet_mean = get_mean(X)
   price_mean = get_mean(Y)
   
   #variance of X
   square_feet_variance = get_variance(X)
   price_variance = get_variance(Y)
   
   covariance_of_price_and_square_feet = get_covariance(X, Y)
   w1 = covariance_of_price_and_square_feet / float(square_feet_variance)    w0 = price_mean - w1 * square_feet_mean
   
   # prediction --> Linear Equation
   prediction = w0 + w1 * X
   
   df['price (prediction)'] = prediction
   return df['price (prediction)']

 以上級線性回歸方法:


預測價格

線性回歸中的線性方程:


向量範數

向量範數可用于衡量向量的大小,也就是說,範數|| x ||表示變量x的大小,範數|| x-y ||表示兩個向量x和y之間的距離。

向量範數計算公式:


常用的向量範數為一階和二階:

  • 一階範數也叫Manhattan範數

  • 二階範數也叫Euclidean範數 

在正則化中會用到一階和二階範數。

一階範數/Manhattan範數

x∈R^n的L1範數定義為:



一階範數示意圖

L2範數/Euclidean範數

x∈R^n的L2範數定義為:



二階範數示意圖

機器學習中的正則化

正則化是指通過修改損失函數以懲罰學習權重的過程,是避免過擬合的有效方式。

正則化在機器學習中的作用:

標準正則化技術包括:

L1正則化(Lasso)

Lasso正則化應用廣泛,其形式為:


L2正則化(Ridge)

Ridge正則化表達式:


其中,通過λ調整懲罰項的權重進行控制。

特徵提取和特徵選擇

特徵提取和特徵選擇的主要目的是選擇一組最佳的低維特徵以提高分類效率,以避免維數災難。在實踐中,通過矩陣操作實現特徵選擇和特徵提取。

特徵提取

在特徵提取中,我們通過映射函數從現有特徵中找到一組新特徵,即:


特徵選擇

特徵選擇是指從原始特徵中選擇部分特徵。


主要特徵抽取方法包括主成分分析PCA和線性判別分析LDA。其中,PCA是一種典型的特徵提取方法,了解協方差矩、特徵值或特徵向量對於理解PCA至關重要。

協方差矩陣

在PCA推導過程中,協方差矩陣起到至關重要的作用。以下兩個概念是計算協方差矩陣的基礎:

方差



方差的局限性在於,無法表示變量之間的關係。

協方差

協方差用于衡量兩個變量之間的關係:


協方差矩陣

協方差矩陣是方陣,其中每個元素表示兩個隨機矢量之間的協方差。


協方差矩陣的計算公式:


特徵值與特徵向量

特徵值:令m為n*n矩陣,如果存在非零向量x∈R^n,使得mx =λx,則標量λ為矩陣m的特徵值。

特徵向量:上式中向量x稱為特徵值λ的特徵向量。

特徵值與特徵向量的計算

若n階矩陣m有特徵值λ和相應特徵向量x,有mx =λx,則mx —λx= 0,得到下式:


求解方程的λ可得到m的所有特徵值

示例:

計算一下矩陣的特徵值和特徵向量。


解:







因此,矩陣m有兩個特徵值2和-1。每個特徵值對應多個特徵向量。

正交性

如果向量v和w的點積為零,稱兩向量正交。

v.w = 0

例如:



正交集

如果某一集合中的所有向量相互正交,且均為單位長度,稱為規範正交集合。其張成的子空間稱為規範正交集。

擴張空間

令V為向量空間,元素v1,v2,…..,vn∈V。

將這些元素與標量相乘加和,所有的線性組合集稱為擴張空間。


示例:


Span (v1, v2, v3) = av1 + bv2 + cv3


向量空間的基是一組向量,通過基向量的線性可以組成向量空間中任意一個元素。

示例:

假設向量空間的一組基為:


基向量元素是相互獨立的,如:



主成分分析PCA

通過PCA能夠對數據進行降維,以處理儘可能多的數據。其原理是:找到方差最大的方向,在該方向上進行投影以減小數據維度。

PCA的計算方法:

設有一個N*1向量,其值為x1,x2,…..,xm。

1.計算樣本均值


2.向量元素減均值


3.計算樣本協方差矩陣


4.計算協方差矩陣的特徵值和特徵向量


5.降維:選擇前k個特徵向量近似x(k <N)

python實現主成分分析

為實現PCA,需要實現以下功能:

  • 獲取協方差矩陣

  • 計算特徵值和特徵向量

  • 通過PCA了解降維

Iris數據導入

import numpy as np
import pylab as pl
import pandas as pd
from sklearn import datasets
import matplotlib.pyplot as pltfrom sklearn.preprocessing import StandardScalerload_iris = datasets.load_iris()iris_df = pd.DataFrame(load_iris.data, columns=[load_iris.feature_names])iris_df.head()


標準化

標準化數據使得所有特徵數據處於同一量級區間,有利於分析特徵。

standardized_x = StandardScaler().fit_transform(load_iris.data)
standardized_x[:2]


計算協方差矩陣

covariance_matrix_x = np.cov(standardized_x.T)
covariance_matrix_x


計算協方差矩陣得特徵值和特徵向量

eigenvalues, eigenvectors = np.linalg.eig(covariance_matrix_x)

eigenvalues



特徵值的方差

total_of_eigenvalues = sum(eigenvalues)
varariance = [(i / total_of_eigenvalues)*100 for i in sorted(eigenvalues, reverse=True)]
varariance


上圖中的方差值分別表示:

  • 1st 成分 = 72.96%

  • 2nd  成分  = 22.85%

  • 3rd  成分  = 3.5%

  • 4th  成分  = 0.5%

可以看到,第三和第四成分具有很小的方差,可以忽略不記,這些組分不會對最終結果產生太大影響。

保留佔比大的第一、第二成分,並進行以下操作:

eigenpairs = [(np.abs(eigenvalues[i]), eigenvectors[:,i]) for i in range(len(eigenvalues))]
# Sorting from Higher values to lower valueeigenpairs.sort(key=lambda x: x[0], reverse=True)eigenpairs


計算Eigenparis的矩陣權重

matrix_weighing = np.hstack((eigenpairs[0][1].reshape(4,1),eigenpairs[1][1].reshape(4,1)))
matrix_weighing


將標準化矩陣乘以矩陣權重


繪圖

plt.figure()target_names = load_iris.target_names
y = load_iris.targetfor c, i, target_name in zip("rgb", [0, 1, 2], target_names):
   plt.scatter(Y[y==i,0], Y[y==i,1], c=c, label=target_name)plt.xlabel('PCA 1')
plt.ylabel('PCA 2')
plt.legend()
plt.title('PCA')
plt.show()


Iris數據的主成分分析示意圖

矩陣分解

矩陣分解在機器學習中也至關重要,該過程本質上是將矩陣分解為矩陣的乘積。

常用的矩陣分解技術有LU分解,奇異值分解(SVD)等。

奇異值分解(SVD)

SVD可用於減小數據維度,奇異值分解如下:

令M為矩陣,其可以分解為三個矩陣的乘積,即正交矩陣(U),對角矩陣(S)和正交矩陣(V)的轉置。


結論

機器學習和深度學習是建立在數學概念之上的,掌握理解數學知識對於算法構建和數據處理有極大幫助。

線性代數的研究包括向量及其操作。在機器學習中,各處可見線性代數的背影,如線性回歸,獨熱編碼,主成分分析PCA,推薦系統中的矩陣分解。

深度學習更甚,其完全基於線性代數和微積分。梯度下降,隨機梯度下降等優化方法也建立在此之上。

矩陣是線性代數中的重要概念,通過矩陣可以緊湊地表示線性方程組、線性映射等。同樣,向量也是重要的概念,將不同向量與標量乘積進行加和可以組成不同的向量空間。

歡迎在評論區回覆你的看法,我會虛心接受並進行改進。

免責聲明:本文中表達的觀點僅為作者個人觀點,不(直接或間接)代表卡耐基梅隆大學或與作者相關的其他組織。我知道,本文不盡完善,僅是本人當前的一些看法與思考,希望對讀者有所幫助。

資源

Google colab implementation.

Github repository

參考

[1] Linear Algebra, Wikipedia, https://en.wikipedia.org/wiki/Linear_algebra

[2] Euclidean Space, Wikipedia, https://en.wikipedia.org/wiki/Euclidean_space

[3] High-dimensional Simplexes for Supermetric Search, Richard Connor, Lucia Vadicamo, Fausto Rabitti, ResearchGate, https://www.researchgate.net/publication/318720793_High-Dimensional_Simplexes_for_Supermetric_Search

[4] ML | Normal Equation in Linear Regression, GeeksforGeeks, https://www.geeksforgeeks.org/ml-normal-equation-in-linear-regression/

[5] Vector Norms by Roger Crawfis, CSE541 — Department of Computer Science, Stony Brook University, https://www.slideserve.com/jaimie/vector-norms

[6] Variance Estimation Simulation, Online Stat Book by Rice University, http://onlinestatbook.com/2/summarizing_distributions/variance_est.html

[7] Lecture 17: Orthogonality, Oliver Knill, Harvard University, http://people.math.harvard.edu/~knill/teaching/math19b_2011/handouts/math19b_2011.pdf

[8] Orthonormality, Wikipedia, https://en.wikipedia.org/wiki/Orthonormality

[9] Linear Algebra/Basis, Wikibooks, https://en.wikibooks.org/wiki/Linear_Algebra/Basis

[10] Linear Algebra, LibreTexts, https://math.libretexts.org/Bookshelves/Linear_Algebra


AI研習社是AI學術青年和AI開發者技術交流的在線社區。我們與高校、學術機構和產業界合作,通過提供學習、實戰和求職服務,為AI學術青年和開發者的交流互助和職業發展打造一站式平臺,致力成為中國最大的科技創新人才聚集地。

如果,你也是位熱愛分享的AI愛好者。歡迎與譯站一起,學習新知,分享成長。

雷鋒網版權文章,未經授權禁止轉載。詳情見轉載須知。

相關焦點

  • 詳細解讀,8000字線性代數知識點長文,帶你入門深度學習/機器學習
    本文目錄:引言機器學習和深度學習建立在數學原理和概念之上,因此AI學習者需要了解基本數學原理。在模型構建過程中,我們經常設計各種概念,例如維數災難、正則化、二進位、多分類、有序回歸等。神經元是深度學習的基本單位,該結構完全基於數學概念,即輸入和權重的乘積和。至於Sigmoid,ReLU等等激活函數也依賴於數學原理。
  • 資源|用Python和NumPy學習《深度學習》中的線性代數基礎
    本文系巴黎高等師範學院在讀博士 Hadrien Jean 的一篇基礎學習博客,其目的是幫助初學者/高級初學者基於深度學習和機器學習來掌握線性代數的概念。掌握這些技能可以提高你理解和應用各種數據科學算法的能力。
  • 入門機器學習,照這個課程清單按順序學就對了
    機器之心整理參與:張倩、杜偉入門機器學習是一個循序漸進的過程,優質的學習資源和科學的學習路線缺一不可。在本文中,來自英偉達人工智慧應用團隊的計算機科學家 Chip Huyen 不僅列出了十大優質的免費機器學習課程資源,還將其串成了一條高效的學習路線。
  • 乾貨| 請收下這份2018學習清單:150個最好的機器學習,NLP和Python...
    在今年秋季開始準備博士項目的時候,我已經精選了一些有關機器學習和NLP的優質網絡資源。一般我會找一個有意思的教程或者視頻,再由此找到三四個,甚至更多的教程或者視頻。猛回頭,發現標收藏夾又多了20個資源待我學習(推薦提升效率工具Tab Bundler)。
  • ...請收下這份2018學習清單:150個最好的機器學習,NLP和Python教程
    在今年秋季開始準備博士項目的時候,我已經精選了一些有關機器學習和NLP的優質網絡資源。一般我會找一個有意思的教程或者視頻,再由此找到三四個,甚至更多的教程或者視頻。猛回頭,發現標收藏夾又多了20個資源待我學習(推薦提升效率工具Tab Bundler)。
  • 線性代數與數據學習:MIT教授Gilbert Strang幫你打下堅實的數學...
    這一本書為機器學習提供了很多數學基礎,它同時也提供了深度學習一些基本概念。可以說藉助這本書,我們能從數學的角度來理解流行的模型。書籍主頁:http://math.mit.edu/~gs/learningfromdata/這本書的目的是解釋數據科學和機器學習所依賴的數學:線性代數、最優化、概率論和統計學。
  • 乾貨 | 請收下這份2018學習清單:150個最好的機器學習,NLP和Python教程
    在今年秋季開始準備博士項目的時候,我已經精選了一些有關機器學習和NLP的優質網絡資源。一般我會找一個有意思的教程或者視頻,再由此找到三四個,甚至更多的教程或者視頻。猛回頭,發現標收藏夾又多了20個資源待我學習(推薦提升效率工具Tab Bundler)。
  • 文科生如何入門機器學習:先看看這篇零基礎教程,再多算幾遍
    他們在普遍缺乏大學數學知識的情況下,就不能入門機器學習了嗎?最近有位Reddit網友David Code,他也是一名文科生,曾經在脫口秀節目《周六夜現場》工作過。後來他經過兩年「地獄式」的自學,十幾次的挫敗,最終掌握了機器學習的知識,並把他的經驗寫成了一個長篇博客。
  • 文科生如何入門機器學習:先看看這篇零基礎教程,再多算幾遍吧
    他們在普遍缺乏大學數學知識的情況下,就不能入門機器學習了嗎?最近有位Reddit網友David Code,他也是一名文科生,曾經在脫口秀節目《周六夜現場》工作過。後來他經過兩年「地獄式」的自學,十幾次的挫敗,最終掌握了機器學習的知識,並把他的經驗寫成了一個長篇博客。他說,長期以來編寫AI書籍和在線課程的都是專家,而這些人因為專業而會忽視初學者的能力。
  • 想入門機器學習?機器之心為你準備了一份中文資源合集
    初學者最好先學習下列內容:概率論離散型和連續型隨機變量主要分布(伯努利分布、二項式分布、正態分布、 指數分布、 泊松分布、Beta 和 Gamma 分布)矩估計和最大似然估計貝葉斯統計相關性係數和協方差(Correlation and Covariance)線性代數向量和矩陣
  • 最熱門的深度學習框架TensorFlow入門必備書籍
    但進入機器學習和人工智慧領域並不是一件簡單的事情,目前市場上有許多大量的學習資源,許多開發者和想要進入的愛好者往往很難找到適合自己的發展路徑。其實,早在 2015 年底,谷歌就開源了內部使用的深度學習框架 TensorFlow 。眾多研究表明,Tensorflow 是研究深度學習的首選平臺。
  • 資料| 機器學習中的數學
    以下書籍介紹來自豆瓣內容簡介 · · · · · ·《機器學習中的數學》是一本系統介紹機器學習中涉及的數學知識的入門圖書,本書從機器學習中的數學入門開始,以展示數學的友好性為原則,講述了機器學習中的一些常見的數學知識
  • 機器學習入門必讀:6種簡單實用算法及學習曲線、思維導圖
    作者 | 盧譽聲來源 | 大數據DT(ID:hzdashuju)大部分的機器學習算法主要用來解決兩類問題——分類問題和回歸問題。在本文當中,我們介紹一些簡單但經典實用的傳統機器學習算法,讓大家對機器學習算法有一個基本的感性認識。有的人說機器學習入門並不難,有的人會覺得機器學習難以理解。那麼該如何去學習機器學習這種技術與方法呢?
  • 觀點| 我們該如何學習機器學習中的數學
    相比內在能力,學生的思維模式才是決定一個人學習數學能力的關鍵。不過要想達到這種狀態需要付出大量時間和努力,但是這並不會讓你感到無聊。下文將幫助大家確定你所需要的數學水平,以及學習策略。機器學習中的數學作為軟體工程的開發者,我們一般有基礎的線性代數與矩陣微分學知識,也有一些概率論和編程的基礎。因此以它們為基礎,我們只需要根據不同的方向與領域調整知識結構就行。
  • 線性代數入門——矩陣乘法的定義及其意義
    系列簡介:這個系列文章講解線性代數的基礎內容,注重學習方法的培養。
  • 如何區分人工智慧、機器學習和深度學習?
    在深度學習網絡中,每一個節點層在前一層輸出的基礎上學習識別一組特定的特徵。隨著神經網絡深度增加,節點所能識別的特徵也就越來越複雜,因為每一層會整合併重組前一層的特徵。而機器學習可以分成下面幾種類別:監督學習從給定的訓練數據集中學習出一個函數,當新的數據到來時,可以根據這個函數預測結果。監督學習的訓練集要求是包括輸入和輸出,也可以說是特徵和目標。訓練數據中的目標是由人標註的。常見的監督學習算法包括回歸分析和統計分類。無監督學習與監督學習相比,訓練集沒有人為標註的結果。常見的無監督學習算法有聚類。
  • 機器學習和深度學習最佳作品
    來源:CPDA數據分析師網 機器學習算法的超參數優化:理論與實踐 機器學習算法已廣泛應用於各種應用程式和領域,為了使機器學習模型適應不同的問題,必須調整其超參數,為機器學習模型選擇最佳的超參數配置會直接影響模型的性能,它通常需要對機器學習算法和適當的超參數優化技術有深入的了解
  • MIT大牛Gilbert Strang新書:《線性代數與從數據中學習》搶先看
    這本新書名叫Linear Algebra and Learning from Data(《線性代數與從數據中學習》),面向有一定基礎、想進階線性代數技能的同學。此次教授親自出馬再推新書,號召力非常強大。微博科技博主@愛可可-愛生活推薦後短短幾個小時,已經有200多人轉發。
  • 線性代數入門——矩陣乘積和乘冪在實際問題中的應用舉例
    系列簡介:這個系列文章講解線性代數的基礎內容,注重學習方法的培養。
  • 一文弄清深度學習、TensorFlow和張量之間的關係
    我們今天所用的許多深度學習系統都是基於張量代數的,比如谷歌的TensorFlow,但是張量代數與深度學習的關係到底如何?本文作者是Ted Dunning,MapR Technologies的首席應用架構師,機器人圈將文章編譯如下: 張量(Tensors)和諸如TensorFlow這樣的機器學習新工具都是當代的熱門話題,特別是在那些尋求深度學習方法的人之中,這都是非常受歡迎的。