詳細解讀,8000字線性代數知識點長文,帶你入門深度學習/機器學習

2021-01-14 AI職通車

作者:Saniya Parveez, Roberto Iriondo

來源:AI研習社

譯者:季一帆


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



引言機器學習和深度學習建立在數學原理和概念之上,因此AI學習者需要了解基本數學原理。在模型構建過程中,我們經常設計各種概念,例如維數災難、正則化、二進位、多分類、有序回歸等。神經元是深度學習的基本單位,該結構完全基於數學概念,即輸入和權重的乘積和。至於Sigmoid,ReLU等等激活函數也依賴於數學原理。正確理解機器學習和深度學習的概念,掌握以下這些數學領域至關重要:


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


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


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


矩陣乘法‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍


矩陣乘法是行和列的點積,其中一個矩陣的行與另一個矩陣列相乘並求和。通過多種特徵可以預測房屋價格。下表展示了不同房屋的特徵及其價格。


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


逆矩陣


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


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


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


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

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

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

# Transpose of xtranspose_x = x.transpose()transpose_x

multi_transpose_x_to_x = np.dot(transpose_x, x)

inverse_of_multi_transpose_x_to_x = np.linalg.inv(multi_transpose_x_to_x)

multiplication_transposed_x_y = np.dot(transpose_x, y)

theta = np.dot(inverse_of_multi_transpose_x_to_x, multiplication_transposed_x_y)


線性方程線性方程是線性代數的核心,通過它可以解決許多問題,下圖是一條直線方程。
線性回歸中的線性方程回歸就是給出線性方程的過程,該過程試圖找到滿足特定數據集的最優曲線,即:其中,a是Y軸截距,決定直線與Y軸相交的點;b是斜率,決定直線傾斜的方向和程度。

import pandas as pddf = 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範數
L2範數/Euclidean範數
機器學習中的正則化正則化是指通過修改損失函數以懲罰學習權重的過程,是避免過擬合的有效方式。
L1正則化(Lasso)L2正則化(Ridge)
特徵提取和特徵選擇特徵提取和特徵選擇的主要目的是選擇一組最佳的低維特徵以提高分類效率,以避免維數災難。在實踐中,通過矩陣操作實現特徵選擇和特徵提取。特徵提取在特徵提取中,我們通過映射函數從現有特徵中找到一組新特徵,即:特徵選擇主要特徵抽取方法包括主成分分析PCA和線性判別分析LDA。其中,PCA是一種典型的特徵提取方法,了解協方差矩、特徵值或特徵向量對於理解PCA至關重要。
協方差矩陣
在PCA推導過程中,協方差矩陣起到至關重要的作用。以下兩個概念是計算協方差矩陣的基礎:方差
協方差
協方差矩陣協方差矩陣是方陣,其中每個元素表示兩個隨機矢量之間的協方差。
特徵值與特徵向量特徵值:令m為n*n矩陣,如果存在非零向量x∈R^n,使得mx =λx,則標量λ為矩陣m的特徵值。
特徵值與特徵向量的計算若n階矩陣m有特徵值λ和相應特徵向量x,有mx =λx,則mx —λx= 0,得到下式:因此,矩陣m有兩個特徵值2和-1。每個特徵值對應多個特徵向量。
正交性正交集如果某一集合中的所有向量相互正交,且均為單位長度,稱為規範正交集合。其張成的子空間稱為規範正交集。
擴張空間令V為向量空間,元素v1,v2,…..,vn∈V。將這些元素與標量相乘加和,所有的線性組合集稱為擴張空間。Span (v1, v2, v3) = av1 + bv2 + cv3
向量空間的基是一組向量,通過基向量的線性可以組成向量空間中任意一個元素。主成分分析PCA通過PCA能夠對數據進行降維,以處理儘可能多的數據。其原理是:找到方差最大的方向,在該方向上進行投影以減小數據維度。設有一個N*1向量,其值為x1,x2,…..,xm。
python實現主成分分析

import numpy as npimport pylab as plimport pandas as pdfrom sklearn import datasetsimport matplotlib.pyplot as pltfrom sklearn.preprocessing import StandardScaler
load_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

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

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

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_namesy = 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()


矩陣分解矩陣分解在機器學習中也至關重要,該過程本質上是將矩陣分解為矩陣的乘積。常用的矩陣分解技術有LU分解,奇異值分解(SVD)等。令M為矩陣,其可以分解為三個矩陣的乘積,即正交矩陣(U),對角矩陣(S)和正交矩陣(V)的轉置。
結論機器學習和深度學習是建立在數學概念之上的,掌握理解數學知識對於算法構建和數據處理有極大幫助。線性代數的研究包括向量及其操作。在機器學習中,各處可見線性代數的背影,如線性回歸,獨熱編碼,主成分分析PCA,推薦系統中的矩陣分解。深度學習更甚,其完全基於線性代數和微積分。梯度下降,隨機梯度下降等優化方法也建立在此之上。矩陣是線性代數中的重要概念,通過矩陣可以緊湊地表示線性方程組、線性映射等。同樣,向量也是重要的概念,將不同向量與標量乘積進行加和可以組成不同的向量空間。歡迎在評論區回覆你的看法,我會虛心接受並進行改進。免責聲明:本文中表達的觀點僅為作者個人觀點,不(直接或間接)代表卡耐基梅隆大學或與作者相關的其他組織。我知道,本文不盡完善,僅是本人當前的一些看法與思考,希望對讀者有所幫助。資源:

Google colab implementation:

https://colab.research.google.com/drive/1WhzsrEQ-JatDbaaJ81Wh8aYY9jqGWdsw?usp=sharing


Github repository:

https://github.com/towardsai/tutorials/tree/master/linear-algebra-for-ml-and-deep-learning

參考:

[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學術青年和開發者社區,為大家提供一個頂會資訊、論文解讀、數據競賽、求職內推等的技術交流陣地,歡迎登陸www.yanxishe.com加入我們吧~


投稿、轉載、媒介合作聯繫微信號 | bajiaojiao-sz

商務合作聯繫微信號 | LJ18825253481

相關焦點

  • 深度學習和機器學習的線性代數入門
    機器學習和深度學習建立在數學原理和概念之上,因此AI學習者需要了解基本數學原理。正確理解機器學習和深度學習的概念,掌握以下這些數學領域至關重要:機器學習和深度學習中的線性代數在機器學習中,很多情況下需要向量化處理,為此,掌握線性代數的知識至關重要。
  • 資源|用Python和NumPy學習《深度學習》中的線性代數基礎
    本文系巴黎高等師範學院在讀博士 Hadrien Jean 的一篇基礎學習博客,其目的是幫助初學者/高級初學者基於深度學習和機器學習來掌握線性代數的概念。掌握這些技能可以提高你理解和應用各種數據科學算法的能力。
  • 想入門機器學習?機器之心為你準備了一份中文資源合集
    機器學習主要需要的數學基礎就是微積分、線性代數、概率論,我們感覺只需要掌握大學中常見的高數、線性代數、概率論與數理統計三門課程,基本上概念的理解就沒什麼問題了。如果再學一點數值計算和最優化等,我們基本上就能理解機器學習的學習過程推導。機器學習方法建議(面向初學者)特徵工程開始機器學習的第一步是理解如何評估和改進數據集的質量。
  • 最熱門的深度學習框架TensorFlow入門必備書籍
    但進入機器學習和人工智慧領域並不是一件簡單的事情,目前市場上有許多大量的學習資源,許多開發者和想要進入的愛好者往往很難找到適合自己的發展路徑。其實,早在 2015 年底,谷歌就開源了內部使用的深度學習框架 TensorFlow 。眾多研究表明,Tensorflow 是研究深度學習的首選平臺。
  • 文科生如何入門機器學習:先看看這篇零基礎教程,再多算幾遍吧
    他寫的博客跳過了專業的部分,用儘量通俗幽默的方法來展現機器學習的入門知識。知識是「算」出來的學習AI之前,首先就要摒棄原來文科的學習方法。在博客開頭,David就告誡初學者,學習數學、計算機知識不像看小說,不要指望一次就能理解,可能需要反覆閱讀和推演5次才能看懂。
  • 文科生如何入門機器學習:先看看這篇零基礎教程,再多算幾遍
    他寫的博客跳過了專業的部分,用儘量通俗幽默的方法來展現機器學習的入門知識。 知識是「算」出來的學習AI之前,首先就要摒棄原來文科的學習方法。在博客開頭,David就告誡初學者,學習數學、計算機知識不像看小說,不要指望一次就能理解,可能需要反覆閱讀和推演5次才能看懂。
  • 線性代數與數據學習:MIT教授Gilbert Strang幫你打下堅實的數學...
    這一本書為機器學習提供了很多數學基礎,它同時也提供了深度學習一些基本概念。可以說藉助這本書,我們能從數學的角度來理解流行的模型。書籍主頁:http://math.mit.edu/~gs/learningfromdata/這本書的目的是解釋數據科學和機器學習所依賴的數學:線性代數、最優化、概率論和統計學。
  • 資料| 1800頁33章數學方法精要筆記 —深入數學建模, 機器學習和...
    相信有許多所有對數學建模,機器學習和深度學習深感興趣的小夥伴,有一定的基礎卻常常被繁雜的定理和錯綜的模型所困 —— 那麼這本書就是一部可供隨時查閱,幫助大家融會貫通的寶典。本書有以下幾大亮點:a. 全書乾貨多覆蓋範圍廣, 包含~100 個核心算法, 約 300 個示意圖。例子豐富,且絕大部分定理都有證明。b.
  • 85歲MIT教授上線全新「線性代數」公開課:大牛幫你重新梳理知識點
    不錯,就是現在清華在用的那本英文線性代數教材的原作者。課程內容,依然是線性代數教學。這一次,老爺子分享了他關於線性代數教學、學習路徑的一些建議和想法。以大牛視角,帶你重新梳理線性代數。視頻、PPT均可免費下載。
  • 入門機器學習,照這個課程清單按順序學就對了
    機器之心整理參與:張倩、杜偉入門機器學習是一個循序漸進的過程,優質的學習資源和科學的學習路線缺一不可。在本文中,來自英偉達人工智慧應用團隊的計算機科學家 Chip Huyen 不僅列出了十大優質的免費機器學習課程資源,還將其串成了一條高效的學習路線。
  • 乾貨| 請收下這份2018學習清單:150個最好的機器學習,NLP和Python...
    由於這方面學習材料太豐富了,本文並未涵括所有內容。機器學習1、機器學習就是這麼好玩!深度學習教程 (Quoc V.(rishy.github.io)http://rishy.github.io/ml/2017/01/05/how-to-train-your-dnn/12、長短期記憶(LSTM) 老司機帶你簡易入門長短期神經網絡(machinelearningmastery.com)http://machinelearningmastery.com
  • ...請收下這份2018學習清單:150個最好的機器學習,NLP和Python教程
    我的目標是要找到最好的有關機器學習子方向和NLP的教程。我引用了能簡潔介紹概念的基礎內容。我已經迴避包含一些大部頭書的章節,和對理解概念沒有幫助的科研論文。那為什麼不買一本書呢? 因為教程能更好地幫助你學一技之長或者打開新視野。
  • 關於機器學習,這可能是目前最全面最無痛的入門路徑和資源!
    在本文結尾的地方,我會分享給大家:) 下面內容,會從四個方面展開: 1、機器學習第一語言Python 2、機器學習中數學基礎 3、機器學習算法基礎 4、深度學習框架基礎 再次強調,我本文中提及所有知識點和資源,僅僅是讓你入門機器學習,如果想要走更遠,那肯定是遠遠不夠的,我們還是要繼續努力才可以呢!
  • 乾貨 | 請收下這份2018學習清單:150個最好的機器學習,NLP和Python教程
    深度學習教程 (Quoc V.(machinelearningmastery.com)http://machinelearningmastery.com/what-is-deep-learning/ 什麼是人工智慧,機器學習,深度學習之間的區別?
  • 86歲還在錄網課:MIT教授Gilbert Strang最新「線性代數」課程上線
    無論你是在學校、油管、B 站還是其他地方學《線性代數》,相信你對 MIT 的 Gilbert Strang 老爺子都不會陌生。去年,清華將「線性代數」課本改成英文教材引發熱議,用的就是 Gilbert Strang 寫的《Introduction to Linear Algebra》。
  • 線性代數入門——矩陣乘法的定義及其意義
    系列簡介:這個系列文章講解線性代數的基礎內容,注重學習方法的培養。
  • 【技術必備】解讀 2016 年十大機器學習算法及其應用
    【新智元導讀】 機器學習領域都有哪些常用算法?本文帶來盤點。 毫無疑問,過去兩年中,機器學習和人工智慧的普及度得到了大幅提升。 如果你想學習機器算法,要從何下手呢?以我為例,我是在哥本哈根留學期間,學習AI課程入門的。我們用的教科書是一本AI經典:《Peter Norvig’s Artificial Intelligence — A Modern Approach》。最近我在繼續學習這些,包括在舊金山聽了幾個關於深度學習的技術演講,參加機器學習大會上。
  • 選機器學習課程怕踩雷?有人幫你選出了top 5優質課
    這對於很多人來說有些怪異,但對於新手而言,Octave 是學習機器學習基礎的簡單方式。整體來看,這門課程的材料翔實,直接由吳恩達授課,詳細解釋了每個算法必需的所有數學知識,還涉及了一些微積分知識和線性代數知識。這門課程基本上是獨立的,不過提前了解一些線性代數知識會很有幫助。
  • 線性代數入門——計算方陣乘冪的基礎方法及典型例題
    系列簡介:這個系列文章講解線性代數的基礎內容,注重學習方法的培養。
  • 機器學習入門必讀:6種簡單實用算法及學習曲線、思維導圖
    作者 | 盧譽聲來源 | 大數據DT(ID:hzdashuju)大部分的機器學習算法主要用來解決兩類問題——分類問題和回歸問題。在本文當中,我們介紹一些簡單但經典實用的傳統機器學習算法,讓大家對機器學習算法有一個基本的感性認識。有的人說機器學習入門並不難,有的人會覺得機器學習難以理解。那麼該如何去學習機器學習這種技術與方法呢?