机器学习与传统编程的一个重要区别在于机器学习比传统编程涉及了更多的数学知识。
不过,随着机器学习的飞速发展,各种框架应运而生,在数据分析等应用中使用机器学习时,使用现成的库和框架成为常态,似乎越来越不需要数学知识了。

其实,现成的库和框架只是帮助我们简化机器学习的开发任务,
如果想要对模型训练结果进行调整和优化,对训练数据进行变换和过滤的话,了解相关的基础数学必能让我们事倍功半。

机器学习的模型看似一堆天书般的符号和公式,其实本质并没有那么复杂,也许大部分人只是因为没有耐心去理解其中的数学符号而放弃。
我觉得对线性代数有最基本的了解就能看懂其中大部分的公式。

本文尽量用简单的方式介绍机器学习中两个最基本的结构(
向量

矩阵
),以及它们的基本运算规则。

1. 向量

1.1. 定义

机器学习面对的训练数据,几乎没有只有单一属性的(也就是数据只包含一个数值或者一个字符串),
而是每个数据都包含多种属性,比如气象数据(包含温度,湿度,风向等等),金融数据(开盘价,收盘价,交易量等等),销售数据(价格,库存量,卖出数量等等)。

为了表示这个多属性的数据,或者称为多维度的数据,
向量
最为合适。
向量
就是有几个数字横向或者纵向排列而成,每个数字代表一个属性。
向量
类似编程语言中的一维数组,
numpy
中也是这么保存的。

1.2. 转置

向量
可以用行或者列的形式表示,
比如:
\(\begin{bmatrix}1,2,3\end{bmatrix}\)
或者
\(\begin{bmatrix}
1 \\
2 \\
3
\end{bmatrix}\)


向量用

还是

来表示,主要取决于后续进行怎样的计算,本质区别不大。
向量的
转置
操作就是用来对
行向量

列向量
进行互相转换的。
image.png

1.3. 加和减

向量
之间进行加减操作时,
向量的长度
必须一样,并且必须同为
行向量
或同为
列向量

image.png
image.png
简单来说,
向量
之间的加减法就是
对应位置的元素
之间的加减法。

1.4. 积运算

向量有两种积运算,一种是向量和数值之间的积运算,也称为
标量积

另一种是向量和向量之间的积运算,也称为
内积

标量积
运算之后,向量还是向量,向量中的每个元素分别乘以标量。
image.png

内积
运算之后,向量变成一个数值(也就是标量):
image.png
计算规则就是向量对应位置的数值相乘,最后将每个位置的计算结果相加。

1.5. 模运算

向量还有一个
模运算

模运算
是一种对向量量化的方式,它把向量转换为一个数值,
从而可以方便的比较不同向量的大小。
image.png
模运算的运算符号是两个竖线:
\(||x||\)
,运算规则相当于是先计算向量与自己的内积,然后开平方。

2. 矩阵

2.1. 定义

矩阵
可以看作是相同长度的行向量或者列向量的集合。
它类似编程语言中的
二维数组

矩阵
的结构如下,其中的数据按照
矩形阵列
的结构排列,这也是
矩阵
这个名称的由来。
image.png
这是一个
3x4
的矩阵,也就是
3行4列
的矩阵。
注意,矩阵的行列数量不一定要一样,当行列数量一样时,矩阵也被称为
方阵

和向量类似,矩阵也可以转置,矩阵的转置也是行列互换:
image.png

2.2. 加和减


向量
类似,
矩阵
的加减法也是对应位置的元素进行加减运算,
这就要求参与加减运算的两个
矩阵
必须有相同的行数量和列数量。
image.png
矩阵减法运算类似。

image.png
行或列数量不一样的矩阵是无法进行加减运算的。

2.3. 积运算

矩阵的积运算也分为
标量积

内积

标量积
的计算与向量类似,矩阵的每个元素都乘以标量。
image.png

内积
运算略微复杂一些,对参与运算的矩阵也有要求,需要第一个矩阵的
列数量
等于第二个矩阵的
行数量

即:矩阵
\(A\)

\(B\)
能够进行内积运算的话,
\(A\)

\(B\)
分别为
\(M\times N\)

\(N\times K\)
的矩阵,
它们的内积是一个
\(M\times K\)
矩阵。比如:
image.png

2.4. 单位矩阵和逆矩阵

矩阵中有一种极其重要的特殊矩阵,被称为
单位矩阵

单位矩阵首先是一个方阵,并且除了对角线上的元素为
1
之外,其他元素都是
0
。比如:
image.png
单位矩阵
虽然简单,作用却不小,在矩阵分解和做高斯消元等运算时有重要的作用。

如果对于矩阵
\(A\)
,存在一个矩阵
\(B\)
,使得
\(AB=I\)
,其中
\(I\)
是单位矩阵。
那么,
\(B\)
就是
\(A\)

逆矩阵
,同时
\(A\)
也是
\(B\)

逆矩阵

\(B\)
一般表示为
\(A^{-1}\)

也就是:
\(AA^{-1}=A^{-1}A=I\)

3. 总结

向量

矩阵
是机器学习中使用最多的两种结构,比如:

  • 线性回归模型:
    \(f(x) = w_0+w_1x_1+w_2x_2+...+w_nx_n=w^Tx\)
  • 聚类函数欧氏距离:
    \(d(X_i, C_j) = ||X_i - C_j||^2\)
  • 数据正则化时的L2范数:
    \(\parallel x \parallel_2=\sqrt{\sum_{i=1}^m \mid x_{i}^2\mid}\)
  • 等等... ...

仔细观察机器学习模型中涉及的各种公式,大部分都是一些
向量

矩阵
的运算,包括加减,标量积和内积等等。
之所以觉得困难,是因为我平时生活中用的计算几乎都是标量运算,对于
向量

矩阵
的运算不熟悉,
再加上对各种数学符号不熟悉,混在一起的时候就觉得像天书一样。

其实,
向量
可以当成是一种特殊的
矩阵
,我们可以把行向量看成是
\(1\times N\)
的矩阵;
把列向量看成是
\(N\times 1\)
的矩阵。

最后,给大家留下一个小小的问题,
请问:向量和矩阵的运算有加减法和乘法的运算,却没有除法相关运算,为什么?

标签: none

添加新评论