关系代数表达式_详细解读,8000字线性代数知识点长文,带你入门深度学习/机器学习...

bddc335b23db105c7459ae3d8c821624.png

作者:Saniya Parveez, Roberto Iriondo

来源:AI研习社

译者:季一帆

本文完整代码见Github或直接在Google Colab运行测试。

本文目录:

  • 引言
  • 机器学习ML和深度学习NN中的线性代数
  • 矩阵
  • 向量
  • 矩阵乘法
  • 转置矩阵
  • 逆矩阵
  • 正交矩阵
  • 对角矩阵
  • 正规方程的转置矩阵和逆矩阵
  • 线性方程
  • 向量范数
  • L1范数/Manhattan范数
  • L2范数/Euclidean范数
  • ML中的正则化
  • Lasso
  • 特征选择与抽取
  • 协方差矩阵
  • 特征值与特征向量
  • 正交性
  • 正交集
  • 扩张空间
  • 主成分分析(PCA)
  • 矩阵分解
  • 总结

引言

机器学习和深度学习建立在数学原理和概念之上,因此AI学习者需要了解基本数学原理。在模型构建过程中,我们经常设计各种概念,例如维数灾难、正则化、二进制、多分类、有序回归等。 神经元是深度学习的基本单位,该结构完全基于数学概念,即输入和权重的乘积和。至于Sigmoid,ReLU等等激活函数也依赖于数学原理。 正确理解机器学习和深度学习的概念,掌握以下这些数学领域至关重要:
  • 线性代数
  • 微积分
  • 矩阵分解
  • 概率论
  • 解析几何

机器学习和深度学习中的线性代数

在机器学习中,很多情况下需要向量化处理,为此,掌握线性代数的知识至关重要。对于机器学习中典型的分类或回归问题,通过最小化实际值与预测值差异进行处理,该过程就用到线性代数。通过线性代数可以处理大量数据,可以这么说,“线性代数是数据科学的基本数学。” 在机器学习和深度学习中,我们涉及到线性代数的这些知识:
  • 向量与矩阵
  • 线性方程组
  • 向量空间
  • 偏差
通过线性代数,我们可以实现以下机器学习或深度学习方法:
  • 推导回归方程
  • 通过线性方程预测目标值
  • 支持向量机SVM
  • 降维
  • 均方差或损失函数
  • 正则化
  • 协方差矩阵
  • 卷积
79f02980a436331d48246c719f24553b.png 矢量积

矩阵

矩阵是线性代数的重要概念。一个m*n矩阵包含mn个元素,可用于线性方程组或线性映射的计算,也可将其视为一个由m*n个实值元素组成的元组。 8d86f42cd70115c50b4b45a71069a4f2.png 矩阵表示

向量

在线性代数中,向量是大小为n*1的矩阵,即只有一列。 89a608efd5a1e49e1db99369a4bfa783.png 矩阵表示

矩阵乘法‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍

矩阵乘法是行和列的点积,其中一个矩阵的行与另一个矩阵列相乘并求和。 d078f94937088ccdc8fbbc9cce4dc3b3.png 矩阵乘法 矩阵乘法在线性回归中的应用 通过多种特征可以预测房屋价格。下表展示了不同房屋的特征及其价格。 f471fa41d593cea3666411e42a3e92ec.png 不同房屋的特征及其价格 047ef4cfe7844d63bca095d4a347d0a1.png 特征变量与目标变量 令: 5ac2692da1939aa4617c7cfb3bc548c5.png 特征及其系数 b341c9e82fc863b9fbde832e21530b94.png 房价预测函数

‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍转置矩阵‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍

对于矩阵A∈R^m*n,有矩阵B∈R^n*m满足b_ij = a_ij,称为A的转置,即B=A^T。 04c90b0a44ccdbf1f2ccb9d7abc3e403.png A的转置

逆矩阵

对n阶矩阵A,有矩阵B∈R^n*n满足AB =I_n(单位矩阵)= BA的性质,称B为A的逆,表示为A^-1。

224fc5464c45752087281f22b80b843a.png 矩阵A和B 62632135738083346d068bdd76919356.png A和B相乘 871f751333859eabcc79e55dbcdcce0f.png A、B互为逆矩阵(得到单位矩阵)

正交矩阵

当且仅当矩阵列向量组是单位正交向量组时,n阶矩阵A∈R^n*n是正交矩阵,有: a7366a0c85653e00ae645cb348a0522c.png 正交矩阵 511d64809fd1eddffa872673c452b32f.png 矩阵A及其转置 c1805d3ebf4cb191c862f7d33bfe54bd.png 矩阵A及其转置的乘积 

对角矩阵‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍

在n阶矩阵A∈R^n*n中,除主对角线上的元素,其他所有元素均为零,称其为对角矩阵,即: Aij =0,i != j   ef73a02e361a78ee6fa8bc65399be4a1.png 对角矩阵

正规方程的转置矩阵和逆矩阵

正规方程通过计算theta j的导数,将其设为零来最小化J。无需Gradient Descent就可直接得到θ的值,θ见下图。 5f17551605c567a56d35fc117cb1c0cd.png 最小化误差 通过上式实现前文“房价预测”。 790c4f1d75bc535f0cbd737818486b35.png 以矩阵形式表示特征x和目标值y 创建特征x和目标y的矩阵:
import numpy as np Featuresx = 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
7ce421833df419ec26466039e7c2c992.png 特征x矩阵的转置 转置矩阵与原矩阵x的乘积:
multi_transpose_x_to_x = np.dot(transpose_x, x)
cad22801de11dbd6db713f3755b8e67c.png 转置矩阵与原矩阵x的乘积  转置矩阵与原始矩阵乘积的逆:
inverse_of_multi_transpose_x_to_x = np.linalg.inv(multi_transpose_x_to_x)
36143bc8d93fa288e36a45aa6f6e888e.png 逆矩阵 x的转置与y的乘积:
multiplication_transposed_x_y = np.dot(transpose_x, y)
9f838d925074bc16c75127ebe3173698.png x的转置与y的乘积  theta值计算:
theta = np.dot(inverse_of_multi_transpose_x_to_x, multiplication_transposed_x_y)
a61e18686087cf8c3dc1ed35762be61a.png theta

线性方程

线性方程是线性代数的核心,通过它可以解决许多问题,下图是一条直线方程。 acaa974ed1380ad255daa1ef61bebda6.png 0e487ae895c7273ef1778ca195edf59a.png 线性方程y=4x-5及其图示 当x=2时: b670718178d4717f094947207ddaa3ea.png 由上述线性方程式得出的y

线性回归中的线性方程

回归就是给出线性方程的过程,该过程试图找到满足特定数据集的最优曲线,即:
Y = bX + a
其中,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)']
 以上级线性回归方法:
linear_regression(df)
003600433018d991de850a60c890e22b.png 预测价格 线性回归中的线性方程: 2926c1a15e906076c99965b053d17af4.png

向量范数

向量范数可用于衡量向量的大小,也就是说,范数|| x ||表示变量x的大小,范数|| x-y ||表示两个向量x和y之间的距离。 向量范数计算公式: fcdff260ef64bfd344a8f012ab846b19.png 常用的向量范数为一阶和二阶:
  • 一阶范数也叫Manhattan范数
  • 二阶范数也叫Euclidean范数 
在正则化中会用到一阶和二阶范数。

一阶范数/Manhattan范数

x∈R^n的L1范数定义为: 133832a67b8f5d8e655ea2c0cbc1c724.png b2a135404e36319701e8dd44e2dc2bfb.png 一阶范数示意图

L2范数/Euclidean范数

x∈R^n的L2范数定义为: 06c7883a8ac86aebb7b907b8d3649b4e.png e2b2040284980643b8db3e0851c314aa.png 二阶范数示意图

机器学习中的正则化

正则化是指通过修改损失函数以惩罚学习权重的过程,是避免过拟合的有效方式。 正则化在机器学习中的作用:
  • 解决共线性问题
  • 除去噪声数据
  • 避免过拟合
  • 提升模型表现
标准正则化技术包括:
  • L1正则化(Lasso)
  • L2正则化(Ridge)

L1正则化(Lasso)

Lasso正则化应用广泛,其形式为: 133832a67b8f5d8e655ea2c0cbc1c724.png

L2正则化(Ridge)

Ridge正则化表达式: b29b73654b553bb3244d1bdd13d403ff.png 其中,通过λ调整惩罚项的权重进行控制。

特征提取和特征选择

特征提取和特征选择的主要目的是选择一组最佳的低维特征以提高分类效率,以避免维数灾难。在实践中,通过矩阵操作实现特征选择和特征提取。

特征提取

在特征提取中,我们通过映射函数从现有特征中找到一组新特征,即: 54f26f6a8fffa2dbebc6228c3c8ebe7d.png

特征选择

特征选择是指从原始特征中选择部分特征。 0adbd3b415d42a697192a6ab19823a7a.png 主要特征抽取方法包括主成分分析PCA和线性判别分析LDA。其中,PCA是一种典型的特征提取方法,了解协方差矩、特征值或特征向量对于理解PCA至关重要。

协方差矩阵

在PCA推导过程中,协方差矩阵起到至关重要的作用。以下两个概念是计算协方差矩阵的基础:
  • 方差
  • 协方差

方差

833a50d8228231e971d107177b9e0e89.png fa200afcb845b6cf1a8811ff4af03397.png 方差的局限性在于,无法表示变量之间的关系。

协方差

协方差用于衡量两个变量之间的关系: 2615789d7591826d9f67b6c034cb369e.png

协方差矩阵

协方差矩阵是方阵,其中每个元素表示两个随机矢量之间的协方差。 8e7f9a75d2622cc6b28d0b48de77e94c.png 协方差矩阵的计算公式: 20f5fb4ada8595381d04410d4c8d6618.png

特征值与特征向量

特征值:令m为n*n矩阵,如果存在非零向量x∈R^n,使得mx =λx,则标量λ为矩阵m的特征值。 特征向量:上式中向量x称为特征值λ的特征向量。

特征值与特征向量的计算

若n阶矩阵m有特征值λ和相应特征向量x,有mx =λx,则mx —λx= 0,得到下式: 9da3a2dcf70dfd24afae5685bdf4a127.png 求解方程的λ可得到m的所有特征值 示例: 计算一下矩阵的特征值和特征向量。 067f1c196bdb1d2aa9672dce807dcedb.png 解: 1b77ce2938e857f4a799d2e2a20eecef.png 5d9ff109d4518f3779020777a3492216.png e5a9392a204a4470163722ff89fe9512.png 88ca298320aaebd483eb2405f66b6a5a.png 4af879e5a586ebae7ecaa59db414e9b5.png 8b43db0abc67c59a7c919f6f78b1b0e5.png 因此,矩阵m有两个特征值2和-1。每个特征值对应多个特征向量。

正交性

如果向量v和w的点积为零,称两向量正交。
v.w = 0
例如: bdf5a482ca3bbcad9083f2aa8c9c8335.png

正交集

如果某一集合中的所有向量相互正交,且均为单位长度,称为规范正交集合。其张成的子空间称为规范正交集。

扩张空间

令V为向量空间,元素v1,v2,…..,vn∈V。 将这些元素与标量相乘加和,所有的线性组合集称为扩张空间。 966cde65f07c89836c54b633b8d85689.png 示例: ab9f72da4e32e7c7e45ad4977bd47bf5.png
Span (v1, v2, v3) = av1 + bv2 + cv3
9b37721457ec22dcdd75aa393b914a4a.png

向量空间的基是一组向量,通过基向量的线性可以组成向量空间中任意一个元素。 示例: 假设向量空间的一组基为: 8553094037697fd7e157645b3e6ce778.png 基向量元素是相互独立的,如: 182c8aacb7d58d4b23cf27f007118186.png c0cb295a1619f6ae87b77f6490201da4.png

主成分分析PCA

通过PCA能够对数据进行降维,以处理尽可能多的数据。其原理是:找到方差最大的方向,在该方向上进行投影以减小数据维度。 PCA的计算方法: 设有一个N*1向量,其值为x1,x2,…..,xm。 1.计算样本均值 83bb70a6cc98f158d3f97ebcb83f6254.png 2.向量元素减均值 325e1fe711e661b9cd0b6c4a8db87832.png 3.计算样本协方差矩阵 f7d3ce4d781ed6e73970706d2f9c7364.png 4.计算协方差矩阵的特征值和特征向量 0ea3d01073cafa7b53205bd4ce7141bd.png 5.降维:选择前k个特征向量近似x(k

python实现主成分分析

为实现PCA,需要实现以下功能:
  • 获取协方差矩阵
  • 计算特征值和特征向量
  • 通过PCA了解降维
Iris数据导入
import numpy as npimport pylab as plimport pandas as pdfrom sklearn import datasetsimport 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()
3118789aa7ae8f8fef50ade0edc86f00.png 标准化 标准化数据使得所有特征数据处于同一量级区间,有利于分析特征。
standardized_x = StandardScaler().fit_transform(load_iris.data)standardized_x[:2]
f87160685c094347ebec1134e6f60e01.png 计算协方差矩阵
covariance_matrix_x = np.cov(standardized_x.T)covariance_matrix_x
6a2afafdb08fe8419e12b3e715f294d9.png 计算协方差矩阵得特征值和特征向量
eigenvalues, eigenvectors = np.linalg.eig(covariance_matrix_x)eigenvalues
a6869ef7f412adea097ab5e290bc4f3d.png
eigenvectors
afc539219c1a8cf311800ac0123c0316.png 特征值的方差
total_of_eigenvalues = sum(eigenvalues)varariance = [(i / total_of_eigenvalues)*100 for i in sorted(eigenvalues, reverse=True)]varariance
7037ea4fdcc398de73f6dcf45633762c.png 上图中的方差值分别表示:
  • 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
8c0e3e0e67be3682fd97fee04f2b2ad5.png 计算Eigenparis的矩阵权重
matrix_weighing = np.hstack((eigenpairs[0][1].reshape(4,1),eigenpairs[1][1].reshape(4,1)))matrix_weighing
79c5b6f2ae10ab09df8950e29c02fa71.png 将标准化矩阵乘以矩阵权重 ce52161aaaddbd5d6f54091f55ce129f.png 绘图
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()
c58439d5640c07a0a5d844a5c90c9c25.png Iris数据的主成分分析示意图

矩阵分解

矩阵分解在机器学习中也至关重要,该过程本质上是将矩阵分解为矩阵的乘积。 常用的矩阵分解技术有LU分解,奇异值分解(SVD)等。 奇异值分解(SVD) SVD可用于减小数据维度,奇异值分解如下: 令M为矩阵,其可以分解为三个矩阵的乘积,即正交矩阵(U),对角矩阵(S)和正交矩阵(V)的转置。 dfb029a36122229bd4cc523ab7f47f51.png

结论

机器学习和深度学习是建立在数学概念之上的,掌握理解数学知识对于算法构建和数据处理有极大帮助。 线性代数的研究包括向量及其操作。在机器学习中,各处可见线性代数的背影,如线性回归,独热编码,主成分分析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


c752cc2f7d234ac0a747e17a0f0832f7.png

只要一张图片,秒变迪士尼角色!编程教学详解,你也能生成专属于你的迪士尼脸

2020-11-01

fea582ceb5a5feb1ca2571fcbed6f4b2.png

资源 | 《30天吃掉Tensorflow》开放下载

2020-10-23

c91765ac6e876f0c8ced8bc133714cd8.png

资料 | 1800页33章数学方法精要笔记 —深入数学建模, 机器学习和深度学习的数学基础

2020-10-12

4caf320663775747a0bb4812fafef773.png

048c720758bfae34de0c1421d24cf159.png

35baf3ff56438e1f51301f0c1ee2bafa.gif

AI研习社是AI学术青年和开发者社区,为大家提供一个顶会资讯、论文解读、数据竞赛、求职内推等的技术交流阵地,欢迎登陆www.yanxishe.com加入我们吧~

投稿、转载、媒介合作联系微信号 | bajiaojiao-sz

商务合作联系微信号 | LJ18825253481

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值