Loading [MathJax]/jax/element/mml/optable/BasicLatin.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >图解AI数学基础 | 线性代数与矩阵论

图解AI数学基础 | 线性代数与矩阵论

原创
作者头像
ShowMeAI
修改于 2022-02-25 02:21:19
修改于 2022-02-25 02:21:19
1.6K00
代码可运行
举报
文章被收录于专栏:ShowMeAI研究中心ShowMeAI研究中心
运行总次数:0
代码可运行

作者:韩信子@ShowMeAI

教程地址http://www.showmeai.tech/tutorials/83

本文地址http://www.showmeai.tech/article-detail/162

声明:版权所有,转载请联系平台与作者并注明出处


1.标量(Scalar)

一个标量就是一个单独的数。只具有数值大小,没有方向(部分有正负之分),运算遵循一般的代数法则。

标量 Scalar
标量 Scalar
  • 一般用小写的变量名称表示。
  • 质量、速率、时间、电阻 等物理量,都是数据标量。

2.向量(Vector)

向量指具有大小和方向的量,形态上看就是一列数。

向量 Vector
向量 Vector
  • 通常赋予向量粗体小写的名称;手写体则在字母上加一个向右的箭头。
  • 向量中的元素是有序排列的,通过索引可以确定每个元素。
  • 以下两种方式,可以明确表示向量中的元素时(注意用方括号)。
  • 可以把向量看作空间中的有向线段,向量的每个组成元素,对应向量在不同的坐标轴上的投影长度。

AI中的应用:在机器学习中,单条数据样本的表征都是以向量化的形式来完成的。向量化的方式可以帮助AI算法在迭代与计算过程中,以更高效的方式完成。

3.矩阵(Matrix)

矩阵是二维数组,其中的每一个元素被两个索引确定。矩阵在机器学习中至关重要,无处不在。

矩阵 Matrix
矩阵 Matrix
  • 通常会赋予矩阵粗体大写的变量名称。

AI中的应用:样本以矩阵形态表示:条数据/样本,个特征的数据集,就是一个的矩阵。

4.张量(Tensor)

几何代数中定义的张量,是基于向量和矩阵的推广。

  • 标量,可以视为零阶张量
  • 向量,可以视为一阶张量
  • 矩阵,可以视为二阶张量
张量 Tensor
张量 Tensor
张量 Tensor
张量 Tensor
  • 图片以矩阵形态表示:将一张彩色图片表示成一个的三阶张量,其中是高,是宽,通常取3,表示彩色图3个颜色通道。
  • 在这个例子的基础上,将这一定义继续扩展,即:用四阶张量(样本,高度,宽度,通道)表示一个包含多张图片的数据集,其中,样本表示图片在数据集中的编号。
  • 用五阶张量(样本,帧速,高度,宽度,通道)表示视频。

AI中的应用:张量是深度学习中一个非常重要的概念,大部分的数据和权重都是以张量的形态存储的,后续的所有运算和优化算法也都是基于张量进行的。

5.范数(Norm)

范数是一种强化了的距离概念;简单来说,可以把『范数』理解为『距离』。

在数学上,范数包括『向量范数』和『矩阵范数』:

  • 向量范数(Vector Norm),表征向量空间中向量的大小。向量空间中的向量都是有大小的,这个大小就是用范数来度量。不同的范数都可以来度量这个大小,就好比米和尺都可以来度量远近一样。
  • 矩阵范数(Matrix Norm),表征矩阵引起变化的大小。比如,通过运算,可以将向量变化为,矩阵范数就可以度量这个变化的大小。
向量范数 Vector Norm
向量范数 Vector Norm

向量范数的计算

对于范数,如果,那么向量范数就是

L1范数

  • 时,就是L1范数,是向量各个元素的绝对值之和。
  • L1范数有很多的名字,例如我们熟悉的曼哈顿距离、最小绝对误差等。

L2范数

  • 时,就是L2范数,是向量各个元素平方和的开方。
  • L2范数是我们最常用的范数,欧氏距离就是一种L2范数。

AI中的应用:在机器学习中,L1范数和L2范数很常见,比如『评估准则的计算』、『损失函数中用于限制模型复杂度的正则化项』等。

6.特征分解(Eigen-decomposition)

将数学对象分解成多个组成部分,可以找到他们的一些属性,或者能更高地理解他们。例如,整数可以分解为质因数,通过可以得到『12的倍数可以被3整除,或者12不能被5整除』。

同样,我们可以将『矩阵』分解为一组『特征向量』和『特征值』,来发现矩阵表示为数组元素时不明显的函数性质。特征分解(Eigen-decomposition)是广泛使用的矩阵分解方式之一。

特征分解 Eigendecomposition
特征分解 Eigendecomposition
  • 特征向量:方阵的特征向量,是指与相乘后相当于对该向量进行缩放的非零向量,即
  • 特征值:标量λ被称为这个特征向量对应的特征值。

使用特征分解去分析矩阵A时,得到特征向量ν构成的矩阵Q和特征值构成的向量Λ,我们可以重新将A写作:A=QΛQ1

7.奇异值分解(Singular Value Decomposition,SVD)

矩阵的特征分解是有前提条件的。只有可对角化的矩阵,才可以进行特征分解。实际很多矩阵不满足这一条件,这时候怎么办呢?

将矩阵的『特征分解』进行推广,得到一种被称为『矩阵的奇异值分解』的方法,即将一个普通矩阵分解为『奇异向量』和『奇异值』。通过奇异值分解,我们会得到一些类似于特征分解的信息。

奇异值分解 Singular Value Decomposition, SVD
奇异值分解 Singular Value Decomposition, SVD

将矩阵A分解成三个矩阵的乘积A=UDV1

  • 假设A是一个mn矩阵,那么U是一个mm矩阵,D是一个mn矩阵,V是一个nn矩阵。
  • UVD这几个矩阵都拥有特殊的结构:
    • UV都是正交矩阵,矩阵U的列向量被称为左奇异向量,矩阵V 的列向量被称右奇异向量。
  • D是对角矩阵(注意,D不一定是方阵)。对角矩阵D对角线上的元素被称为矩阵A的奇异值。

AI中的应用:SVD最有用的一个性质可能是拓展矩阵求逆到非方矩阵上。而且大家在推荐系统中也会见到基于SVD的算法应用。

8.Moore-Penrose广义逆/伪逆(Moore-Penrose Pseudoinverse)

假设在下面问题中,我们想通过矩阵A的左逆B来求解线性方程:Ax=y,等式两边同时左乘左逆B后,得到:x=By。是否存在唯一的映射将A映射到B,取决于问题的形式:

  • 如果矩阵A的行数大于列数,那么上述方程可能没有解;
  • 如果矩阵A的行数小于列数,那么上述方程可能有多个解。

Moore-Penrose伪逆使我们能够解决这种情况,矩阵A的伪逆定义为:

广义逆/伪逆 Moore-Penrose Pseudoinverse
广义逆/伪逆 Moore-Penrose Pseudoinverse

但是计算伪逆的实际算法没有基于这个式子,而是使用下面的公式:

  • 矩阵是矩阵奇异值分解后得到的矩阵;
  • 对角矩阵的伪逆是其非零元素取倒之后再转置得到的。

9.常用的距离度量

在机器学习里,大部分运算都是基于向量的,一份数据集包含n个特征字段,那每一条样本就可以表示为n维的向量,通过计算两个样本对应向量之间的距离值大小,有些场景下能反映出这两个样本的相似程度。还有一些算法,像KNN和K-means,非常依赖距离度量。

设有两个维变量:

一些常用的距离公式定义如下

距离度量 Distance
距离度量 Distance

1)曼哈顿距离(Manhattan Distance)

曼哈顿距离 Manhattan Distance
曼哈顿距离 Manhattan Distance

曼哈顿距离也称为城市街区距离,数学定义如下:

曼哈顿距离的Python实现

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
import numpy as np
vector1 = np.array([1,2,3])
vector2 = np.array([4,5,6])

manhaton_dist = np.sum(np.abs(vector1-vector2))
print("曼哈顿距离为", manhaton_dist)

前往我们的在线编程环境运行代码:http://blog.showmeai.tech/python3-compiler/#/

2)欧氏距离(Euclidean Distance)

欧氏距离 Euclidean Distance
欧氏距离 Euclidean Distance

欧氏距离其实就是L2范数,数学定义如下:

欧氏距离的Python实现

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
import numpy as np
vector1 = np.array([1,2,3])
vector2 = np.array([4,5,6])

eud_dist = np.sqrt(np.sum((vector1-vector2)**2))
print("欧式距离为", eud_dist)

前往我们的在线编程环境运行代码:http://blog.showmeai.tech/python3-compiler/#/

3)闵氏距离(Minkowski Distance)

闵氏距离 Minkowski Distance
闵氏距离 Minkowski Distance

从严格意义上讲,闵可夫斯基距离不是一种距离,而是一组距离的定义:

d{12} = \sqrtp{\sum{k=1}^{n}{( x{1k} -x{2k} ) ^{p} } }

实际上,当 时,就是曼哈顿距离;当 时,就是欧式距离。

前往我们的在线编程环境运行代码:http://blog.showmeai.tech/python3-compiler/#/

4)切比雪夫距离(Chebyshev Distance)

切比雪夫距离 Chebyshev Distance
切比雪夫距离 Chebyshev Distance

切比雪夫距离就是无穷范数,数学表达式如下:

切比雪夫距离的Python实现如下

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
import numpy as np
vector1 = np.array([1,2,3])
vector2 = np.array([4,5,6])

cb_dist = np.max(np.abs(vector1-vector2))
print("切比雪夫距离为", cb_dist)

前往我们的在线编程环境运行代码:http://blog.showmeai.tech/python3-compiler/#/

5)余弦相似度(Cosine Similarity)

余弦相似度的取值范围为-1,1,可以用来衡量两个向量方向的差异:

  • 夹角余弦越大,表示两个向量的夹角越小;
  • 当两个向量的方向重合时,夹角余弦取最大值1;
  • 当两个向量的方向完全相反时,夹角余弦取最小值-1。
余弦相似度 Cosine Similarity
余弦相似度 Cosine Similarity

机器学习中用这一概念来衡量样本向量之间的差异,其数学表达式如下:

夹角余弦的Python实现

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
import numpy as np
vector1 = np.array([1,2,3])
vector2 = np.array([4,5,6])

cos_sim = np.dot(vector1, vector2)/(np.linalg.norm(vector1)*np.linalg.norm(vector2))
print("余弦相似度为", cos_sim)

前往我们的在线编程环境运行代码:http://blog.showmeai.tech/python3-compiler/#/

6)汉明距离(Hamming Distance)

汉明距离 Hamming Distance
汉明距离 Hamming Distance

汉明距离定义的是两个字符串中不相同位数的数目。例如,字符串‘1111’与‘1001’之间的汉明距离为2。信息编码中一般应使得编码间的汉明距离尽可能的小。

汉明距离的Python实现

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
import numpy as np
a=np.array([1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0])
b=np.array([1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1])
hanm_dis = np.count_nonzero(a!=b)
print("汉明距离为", hanm_dis)

前往我们的在线编程环境运行代码:http://blog.showmeai.tech/python3-compiler/#/

7)杰卡德系数(Jaccard Index)

杰卡德系数 Jaccard Index
杰卡德系数 Jaccard Index

两个集合$A$和$B$的交集元素在$A$和$B$的并集中所占的比例称为两个集合的杰卡德系数,用符号$J(A,B)$表示,数学表达式为:

杰卡德相似系数是衡量两个集合的相似度的一种指标。一般可以将其用在衡量样本的相似度上。

前往我们的在线编程环境运行代码:http://blog.showmeai.tech/python3-compiler/#/

8)杰卡德距离(Jaccard Distance)

杰卡德距离 Jaccard Distance
杰卡德距离 Jaccard Distance

与杰卡德系数相反的概念是杰卡德距离,其定义式为:

杰卡德距离的Python实现

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
import numpy as np
vec1 = np.random.random(10)>0.5
vec2 = np.random.random(10)>0.5

vec1 = np.asarray(vec1, np.int32)
vec2 = np.asarray(vec2, np.int32)

up=np.double(np.bitwise_and((vec1 != vec2),np.bitwise_or(vec1 != 0, vec2 != 0)).sum())
down=np.double(np.bitwise_or(vec1 != 0, vec2 != 0).sum())
jaccard_dis =1-(up/down)
print("杰卡德距离为", jaccard_dis)

前往我们的在线编程环境运行代码:http://blog.showmeai.tech/python3-compiler/#/

ShowMeAI相关文章推荐

ShowMeAI系列教程推荐

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
高数学习笔记之范数与距离度量(python实现)
汉明距离的定义:两个等长字符串s1与s2之间的汉明距离定义为将其中一个变为另外一个所需要的最小替换次数。例如字符串“1111”与“1001”之间的汉明距离为2。 应用:信息编码(为了增强容错性,应使得编码间的最小汉明距离尽可能大)。
Jetpropelledsnake21
2021/03/03
5860
机器学习的数学基础
我们知道,机器学习的特点就是:以计算机为工具和平台,以数据为研究对象,以学习方法为中心;是概率论、线性代数、数值计算、信息论、最优化理论和计算机科学等多个领域的交叉学科。所以本文就先介绍一下机器学习涉及到的一些最常用的的数学知识。
Ai学习的老章
2019/04/24
9370
机器学习的数学基础
用Python实现常见的“距离”
7.杰卡德相似系数(Jaccard similarity coefficient)
云深无际
2021/04/14
1.6K0
用Python实现常见的“距离”
python 各类距离公式实现
两个n维变量A(x11,x12,…,x1n)与 B(x21,x22,…,x2n)间的闵可夫斯基距离定义为:
周小董
2019/03/25
7.9K0
python 各类距离公式实现
深度学习中的数学(二)——线性代数
线性可分的定义:线性可分就是说可以用一个线性函数把两类样本分开,比如二维空间中的直线、三维空间中的平面以及高维空间中的超平面。(所谓可分指可以没有误差地分开;线性不可分指有部分样本用线性分类面划分时会产生分类误差的情况。)
润森
2022/09/22
9790
深度学习中的数学(二)——线性代数
ML中相似性度量和距离的计算&Python实现
由于某些不可抗拒的原因,LaTeX公式无法正常显示. 点击这里查看PDF版本 Github: https://github.com/yingzk/MyML 博 客: https://www.yingjoy.cn/ 前言 在机器学习中,经常需要使用距离和相似性计算的公式,在做分类时,常常需要计算不同样本之间的相似性度量(Similarity Measurement),计算这个度量,我们通常采用的方法是计算样本之间的“距离(Distance)”。比如利用k-means进行聚类时,判断个体所属的类别,就需要使用
YingJoy_
2018/03/21
3.1K0
解读文本嵌入:语义表达的练习
【引子】近来在探索并优化AIPC的软件架构,AI产品经理关于语义搜索的讨论给了自己较多的触动,于是重新梳理嵌入与语义的关系,遂成此文。
半吊子全栈工匠
2024/11/07
1680
解读文本嵌入:语义表达的练习
OpenCV - 矩阵操作 Part 2
当应用于矩阵时,src的每个元素都与upperb和lowerb中的对应元素进行校验。如果src中的元素在由upperb和lowerb给出的值之间,则dst的相应元素设置为255;否则设置为0。
为为为什么
2022/08/09
2.4K0
OpenCV - 矩阵操作 Part 2
机器学习数学基础--线性代数
换种表达方式,线性无关是说:其中任意一个向量都不在其他向量张成空间中,也就是对所有的
Ai学习的老章
2019/05/10
1.2K0
机器学习数学基础--线性代数
课程ENGR108 | 从数学到应用,斯坦福这门课把线性代数彻底讲明白了(附下载)
《Introduction to Applied Linear Algebra – Vectors, Matrices, and Least Squares》,你可以译作“应用线性代数简介——向量、矩阵和最小二乘法”,400多页,讲解线性代数。
ShowMeAI
2021/10/17
1.3K0
课程ENGR108 | 从数学到应用,斯坦福这门课把线性代数彻底讲明白了(附下载)
【深度学习基础】预备知识 | 线性代数
深度学习 (DL, Deep Learning) 特指基于深层神经网络模型和方法的机器学习。它是在统计机器学习、人工神经网络等算法模型基础,结合当代大数据和大算力的发展而发展出来的。深度学习最重要的技术特征是具有自动提取特征的能力。神经网络算法、算力和数据是开展深度学习的三要素。深度学习在计算机视觉、自然语言处理、多模态数据分析、科学探索等领域都取得了很多成果。本专栏介绍基于PyTorch的深度学习算法实现。 【GitCode】专栏资源保存在我的GitCode仓库:https://gitcode.com/Morse_Chen/PyTorch_deep_learning。
Francek Chen
2025/01/22
3040
【深度学习基础】预备知识 | 线性代数
【机器学习】在向量的流光中,揽数理星河为衣,以线性代数为钥,轻启机器学习黎明的瑰丽诗章
在正式踏入机器学习的实战领域前,我们需要为自己筑起一座坚实的数学地基。 对于零基础的学习者而言,数学听起来也许陌生甚至有点“吓人”。然而,不必惧怕:本篇文章将带你从最直观的概念出发,帮助你理解和掌握线性代数这门支撑机器学习大厦的重要支柱。
半截诗
2025/01/09
2420
机器学习中“距离与相似度”计算汇总
涵盖了常用到的距离与相似度计算方式,其中包括欧几里得距离、标准化欧几里得距离、曼哈顿距离、汉明距离、切比雪夫距离、马氏距离、兰氏距离、闵科夫斯基距离、编辑距离、余弦相似度、杰卡德相似度、Dice系数。
Coggle数据科学
2020/12/16
3.5K0
机器学习中“距离与相似度”计算汇总
斯坦福NLP课程 | 第2讲 - 词向量进阶
教程地址:http://www.showmeai.tech/tutorials/36
ShowMeAI
2022/05/01
6850
斯坦福NLP课程 | 第2讲 - 词向量进阶
线性代数在数据科学中的十个强大应用(一)
线性代数与数据科学的关系就像罗宾与蝙蝠侠。这位数据科学忠实的伙伴经常会被大家所忽视,但实际上,它是数据科学主要领域--包括计算机视觉(CV)与自然语言处理(NLP)等热门领域的强力支撑。
磐创AI
2019/08/06
1.4K0
线性代数在数据科学中的十个强大应用(一)
【机器学习数学基础】线性代数基础
线性代数 一、基本知识 本书中所有的向量都是列向量的形式: \[\mathbf{\vec x}=(x_1,x_2,\cdots,x_n)^T=\begin{bmatrix}x_1\\x_2\\ \vdots \\x_n\end{bmatrix}\] 本书中所有的矩 \(\mathbf X\in \mathbb R^{m\times n}\) 都表示为: \[\mathbf X = \begin{bmatrix} x_{1,1}&x_{1,2}&\cdots&x_{1,n}\\ x_{2,1}&x_{2
10JQKA
2018/12/11
6630
【机器学习数学基础】线性代数基础
线性代数在数据科学中的十个强大应用(一)
本篇主要介绍了机器学习与数据科学背后的数学技术十大应用之基础机器学习部分与降维部分。
石晓文
2019/10/10
1.8K0
线性代数在数据科学中的十个强大应用(一)
《deep learning》学习笔记(2)——线性代数
http://blog.csdn.net/u011239443/article/details/77942575
小爷毛毛_卓寿杰
2019/02/13
5520
《deep learning》学习笔记(2)——线性代数
线性代数整理(三)行列式特征值和特征向量
比方说在二维平面中,这里有三组二维向量,每组都有两个向量,那么每组向量的面积就可以表示它们的不同。当然这里说面积是针对二维平面来说的,在三维空间中,就是体积;在更高维度中,可能就是一个体,但这个体比较抽象
算法之名
2021/03/04
2.8K0
ML中相似性度量和距离的计算&Python实现
在机器学习中,经常需要使用距离和相似性计算的公式,在做分类时,常常需要计算不同样本之间的相似性度量(Similarity Measurement),计算这个度量,我们通常采用的方法是计算样本之间的“距离(Distance)”。比如利用k-means进行聚类时,判断个体所属的类别,就需要使用距离计算公式得到样本距离簇心的距离,利用kNN进行分类时,也是计算个体与已知类别之间的相似性,从而判断个体的所属类别。
YingJoy_
2018/03/02
6.9K0
ML中相似性度量和距离的计算&Python实现
推荐阅读
相关推荐
高数学习笔记之范数与距离度量(python实现)
更多 >
交个朋友
加入[腾讯云] DeepSeek开发者交流群
前沿技术深度讨论 发展开发者人脉圈
加入腾讯云技术交流站
洞悉AI新动向 Get大咖技术交流群
加入AICoding云开发技术交流群
智能编码实践分享 聚焦AI+云开发
加入讨论
的问答专区 >
技术总监架构部总经理擅长3个领域
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档