深度学习——你应该掌握的数学知识

深度学习——你应该掌握的数学知识


声明:

1)为什么要讲数学 ?数学作为一个基础的工具,对于大多数理工学科,是必不可少的一部分,尤其深度学习是和数学联系比较紧密的一个学科,对于数学概念的扎实理解,会帮助对深度学习中听上去很复杂的技术有直观而清晰的认识。

2)该Deep Learning中的数学知识系列是参考深度学习与计算机视觉及网上大牛博客。具体引用的资料请看参考文献。

4)该系列的基础数学知识尽量从定性的角度讲解一些与深度学习、计算机视觉紧密联系的基础数学概念,不一定会很严谨细致,但力求简单、形象,当然公式是不可避免的,本文会尽量做到简单讲解,有些地方看不懂也没关系,因为重点是定训的理解,帮助后面更透彻地明白入门实例中的原理。

2.1、线性变换和非线性变换

   2.1.1、线性变换的定义

   2.1.2、高中教科书中的小例子

   2.1.3、点积和投影

   2.1.4、矩阵乘法的几何意义(1)

   2.1.5、特征向量和特征值

   2.1.6、矩阵乘法的几何意义(2)

   2.1.7、奇异值分解

   2.1.8、线性可分性和维度

   2.1.9、非线性变换

2.2、概率论及相关基础知识

2.3、维度的诅咒

2.4、卷积

2.5、数学优化基础

2.1 线性变换和非线性变换

2.1.1 线性变化的定义

线性变换是指具有如下性质的函数 T T :
对于向量 u⃗  u → v⃗  v → ,有

T(u⃗ +v⃗ =)T(u⃗ )+T(v⃗ )(21) T ( u → + v → = ) T ( u → ) + T ( v → ) ( 公 式 2 − 1 )

对于标量 a a ,有
T(av⃗ )=aT(v⃗ )(22) T ( a v → ) = a T ( v → ) ( 公 式 2 − 2 )

公式2-1叫做加性,通俗来说就是两个向量的和经过变换后等于两个向量变换后的和。公式2-2叫做齐性,意思是给一个向量缩放一个常数倍在变换,和变换后在缩放这个倍数的结果是一样的。一般来说,机器学习和视觉中最长遇到的线性变换时矩阵乘法,也即是如下形式的线性变换。
公式2-3
后面如果提到线性变换基本都是指的矩阵乘法,接下来我们从一个小的例子讲起。

2.1.2 高中课本的小例子

首先我们来看一个高中数学的一个经典例子:坐标变换。如图2-1所示,在(1, 0)位置有一个点 A A ,问:要把这个点逆时针旋转60°到点 B B 的位置,如果做到?旋转后的坐标是什么?
根据高中课本,答案是:

这里写图片描述

这是高中数学里的一个基本问题,我们将上述问题转换为矩阵乘法的形式:
这里写图片描述

其中 θ=π/3 θ = π / 3 。上述公式就是一个典型的线性变换。所以我们知道,线性变换开业实现旋转。接下来,如果希望能从 B B C C ,也就是 B B 和原点连线的中点呢?我们想到把 x x 轴和 y y 轴都缩小为原来的1/2就可以,所以只要把变换矩阵中对应的系数,也就是每一行都乘以0.5,则得到了 将 A A 变换到 C C 的过程:

这里写图片描述

所以矩阵乘法除了能旋转,还能进行缩放,有了这两个操作我们已经能在给定的坐标系内任一起点和终点都能写出一个对应的变换了。那么再进一步 ,如果不是这种规律的旋转加缩放的矩阵,而是任意 2×2 2 × 2 的矩阵呢?代表的几何意义又是什么?回答该问题之前,我们首先来看另一个重要的概念:投影。

2.1.3 点积和投影

说到投影有需要有需要一起来回顾一个高中数学知识:点积。对于两个向量 u,vRn u → , v → ∈ R n ,其中 u=[u1,u2,...,un] u → = [ u → 1 , u → 2 , . . . , u → n ] v=[v1,v2,...,vn] v → = [ v → 1 , v → 2 , . . . , v → n ] u u → v v → 的点积定义如下:

这里写图片描述 (27) ( 公 式 2 − 7 )

其实上面的公式就是两个向量的内积,内积是点积的推广,是一个更广泛的概念,或者说,点击是欧几里得空间的标准内积。 在深度学习和计算机视觉应用到的范围内,这些细节并不重要。我们可以认为点击和内积是一回事。
知道了定义,来看看点积的几何意义。先从小学数学开始, 2×5=10 2 × 5 = 10 ,这个大家都知道,2的5倍,等于10.如果不把这么一个简单的乘法看出是两个标量想乘,而是想象一下这个乘法发生在二位平面的 x x 的轴上,如图所示。
这里写图片描述

两个向量(2, 0)和( 5, 0),他们的点积是 2×5+0×0=10 2 × 5 + 0 × 0 = 10 ,如果只看其中 x x 部分,和乘法没有区别,从几何方面来看,就是以一个倍数对另一个量进行拉伸和收缩。
接下来让(5, 0)这个向量保持长度,逆时针“旋转”成为(3,4),在和(2,0)做点积, (2×3+0×4)=6 ( 2 × 3 + 0 × 4 ) = 6 。通过图2-2b来形象理解一下,(3,4)在 x x 轴上的分量的长度是3。而(2,0)在自己方向上的长度就是向量本身的长度,也就是2。这两个标量的成绩 2×3=6 2 × 3 = 6 就是这两个向量的点积的结果。
事实上这就是两个向量点积的几何意义: 一个向量 u u 在另一个向量 v v 方向上的分量的长度,和 v v 的长度想乘得到的值。其中 u⃗  u → v⃗  v → 上的分量的长度,叫做 u⃗  u → v⃗  v → 上的投影。
图2-2中的(2, 0)例子刚好落在了 x x 轴,是为了方便理解和演示。接下来一起看看两个任意方向向量做点积的情况,如图2-3所示。
如果2-3a,两个二维向量 u⃗  u → v⃗  v → ,之间的夹角为 θ θ ,则 u⃗  u → v⃗  v → 投影长度是 |u|cos(θ) | u → | cos ⁡ ( θ ) ,这个长度在乘上 v v 的长度就是
uv=|u||v|cos(θ)(29) u → ⋅ v → = | u → | | v → | cos ⁡ ( θ ) ( 公 式 2 − 9 )

这里写图片描述

点积的几何意义和推导

当然,点积具有交换性,自然对对这个几何意义的理解也一样, u⃗  u → v⃗  v → 的点积也可以看作是 v v u u 的投影乘以 u u 的长度。公式2-9的推导也很简单,最常见的一种推导如图2-3b所示,把 u⃗  u → v⃗  v → 看作是三角形的两个边,则第三边的长度为 |u⃗ v⃗ | | u → − v → | ,根据高中数学中的三角形余弦定理,有
这里写图片描述 (210) ( 公 式 2 − 10 )

而直接展开公式 |uv|2 | u → − v → | 2 ,有
这里写图片描述 (211) ( 公 式 2 − 11 )

又公式2-10和2-11的最后一项应该是相等的,则推到出公式2-9,接下来把公式2-9变形:
这里写图片描述 (212) ( 公 式 2 − 12 )

也即是说,两个向量夹角的 cos c o s 值,就是这量向量方向上的单位向量的点积。这是一个非常有用的结论,因为两个向量夹角的 cos c o s 值是这个向量相似性的重要度量,夹角越小说明两个向量所指的方向月相近,儿公式2-12给我们提供了一个非常简便的计算这种相似性的方法。另外,虽然我们的示例和推导都是二维的,但是这个结论在高维度也普遍适用,并且在机器学习中是个很有用的公式,这就是余弦相似度的由来。

2.1.4

1 投影角度的理解
了解了点积的几何意义,在回过头来看看矩阵乘以向量的几何意义。从公式2-3以及公式2-7点积的几何意义可以知道,矩阵乘以一个向量的计算,事实上就是矩阵每一行的航行量和待乘向量的点积所形成的新向量,所以有

这里写图片描述 (213) ( 公 式 2 − 13 )

其中 ai, a i , → ∗ 代表第 i i 的行向量 (a1,1,a1,2,...,a1,n) ( a 1 , 1 , a 1 , 2 , . . . , a 1 , n ) x x → (x1,x2,...,xn) ( x 1 , x 2 , . . . , x n ) 。根据2.1.3节点积的几何意义,这个运算可以看作 x x → ai a i → 上的投影长度。如果我们把 ai a i → 看作是一个坐标轴的单位向量,那么矩阵乘法运算后的向量的每一维值对应的就是 x x → 在这个坐标轴上的投影长度。也就是说,这个变换计算的是向量 x x → 在以 ai a i → 作为每个坐标轴单位向量的新坐标系下的坐标,这就是从投影角度来看待矩阵乘法的几何意义。
现在回到2.1.2节中的旋转和缩放的小例子,旋转矩阵如下:
这里写图片描述

所以变换后的坐标州的单位向量是 这里写图片描述这里写图片描述,如图2-4左图所示,所以在标准坐标系(0, 1)中,也就是横轴上的向量,在以 x x ′ y y ′ 为坐标轴中的就不再是(0, 1),而是如图2-4右图中所示的一个落在第一象限的向量的坐标。在新坐标系中每个轴的值如前所示,就是向量在每个轴上的投影长度乘以每个轴向量的长度。
这里写图片描述

图2-4 从投影角度理解逆时针旋转60°

2 坐标角度的理解
从投影角度理解矩阵乘法虽然最能体现投影的意义,但却不是最直观的。第一是因为人脑中最形象的空间的参照系都是正交的,简单来说无论是二维还是三维(请自觉脑补高维图像),坐标系都是正交的,即互相垂直的。从本节讲的内容来理解,就是任何一个轴上的向量在其他轴上的投影是0。所以如果变换矩阵的行向量互相正交,那么还可以像图2-4中一样,形象的理解为旋转。但是如果变换矩阵的行向量不是正交的,甚至哪怕行向量的长度不是1的情况下,就很难形象的想象了,例如下面的矩阵乘法:
这里写图片描述

画出(1, 1)和行向量,和变换后的向量(1, 5)的位置,如图2-5a所示。
这里写图片描述

图2-5 从位置映射角度理解矩阵乘法

在图2-5a中,(1, 1)在两个行向量上的投影长度仍然可以形象的理解,但是由于(2, -1)和(1, 4)并不互相垂直,所以还是很难形象的理解矩阵乘法的变换。
从投影角度形象理解矩阵乘法的第二个困难时参考坐标系的变换,对于人们来说最直观的坐标系就是标准的笛卡尔坐标系,以二维为例子就是(1,0)所在为横轴,(0,1)所在为纵轴的这种坐标系。在执行矩阵乘法的变换时,无论是变换前的向量,还是变换后的向量,都是以笛卡尔坐标为参考的。所以我们可以换个角度考虑,自始至终都在笛卡尔坐标系下,首先来考虑下面的问题:横轴和纵轴的单位向量在矩阵乘法之后对应的向量是什么?还是以图2-5中矩阵乘法为例子,过程如下,对于横轴单位向量(1,0),有
这里写图片描述

对于纵轴单位向量(0,1),有
这里写图片描述

结论一目了然,对于横轴,也就是第一个维度的单位向量,变换后对应的就是变换矩阵的第一列的列向量(2,1),对于纵轴,也就是第二个维度的单位向量,变换后对应的就是变换矩阵的第二列向量(-1,4)。这个结论很容易推广到高维的情况,对于第 i i 维度的单位向量,变换后对应的就是变换矩阵中的第 i i 列的列向量。
可以把这种变换形象地理解成一种坐标的映射,具体到图2-5a的例子,就是图2-5b中的情况,经过变换后原来的(1,0)对应的新坐标是(2,1),(0,1)对应的新坐标是(-1,4)。在这种对应关系下,考虑有(0,0),(0,1),(1,1)和(1,0)围起来的单位长度的小方框,经过变化后相当于被拉伸成为又(0,0),(2,1),(1,5)和(-1,4)围起来的四边形,所以在单位方框中右上角的定点,在变换后就是被拉伸后四边形的对应定点(1,5)。
在回过来看看最开始讲的高中教科书里逆时针旋转 π/3 π / 3 的例子,如果2-6所示。
这里写图片描述

图2-6 从位置映射角度理解逆时针旋转 π/3 π / 3

比起投影的角度更加直观了,横轴单位向量变换后对应的坐标正式逆时针旋转 π/3 π / 3 。在这种情况下,对于任何矩阵乘法的变换,都可以很形象的理解为对变换前的区域进行旋转和沿特定方向缩放结合一起的操作,让原来区域经过变形后映射到了一个新的区域里。比如图2-7中,实现了对一个区域的切换和沿x轴翻转。
这里写图片描述

图2-7 通过矩阵乘法实现对一个区域的切变和翻转

如果希望变换后的坐标有位移,只需要在变换后的结果是加一个位移向量就可以,如图2-8所示:
这里写图片描述

图2-8 通过增加偏置项实现位移

如果把图2-9中的问题想象成一个回归问题,只通过矩阵乘法的话使无法把图2-8a中的笑脸变换为图2-8b中实线的笑脸,而添加了位移向量之后,则能够轻松拟合。这个位移向量偏执在机器学习中是一种常见的参数,通常被称为偏置(bias),而形如 y=Ax+b y = A x + b 的变换形式也是机器学习中最常见的变换,称为 仿射变换。简单来说,仿射变换就是一个线性变换接着一个位移。
从拟合角度看,偏执对结果的影响主要和样本的分布相关,当样本方差大,维度高的时候,则偏执的影响就会小一些。偏执的引入让变换的灵活度更大,但却不再使线性变换,并且形式上变得比 y=Ax y = A x 更复杂,一个常用的办法可以把 y=Ax+b y = A x + b 化为 y=Ax y = A x 的形式,推导如图2-9所示。
如推导的第2行所示,加上位移量的时候,可以看作为位移量是1前面的系数,这样就如图2-9中灰色方框标识的,通过把位移量加到矩阵的最后一列,同时在待变换向量添加一个值为1的维度,把位移向量/偏执直接包含在矩阵乘法之中。
这里写图片描述

图2-9 通过在向量末添加1的方式将偏置/位移向量包含在矩阵中

从形式上看,这样只是个公式的变换,从维度的角度来看,通过增加维度 ,变换更加灵活。

2.1.5 特征向量和特征值

一提到特征向量,我们都会想到通过特征值的定义对灯饰进行变换后,对着一元二次方程求解特征值的头疼经历。这里面我们不会过多的关注特征向量和特征值的细节,而是从定性的角度形象感受一下特征向量。首先,还是要从公式讲起,下面来看看特征值和特征向量的定义,对于一个非零向量 x⃗  x → 和一个矩阵 A A ,如果有标量 β β 使得:

这里写图片描述

这个矩阵变换的特征向量分别为 (1/2,1/2) ( − 1 / 2 , − 1 / 2 ) (1/5,1/5) ( − 1 / 5 , − 1 / 5 ) ,对应的特征值分别是2和3,这里我们使用了大于0的特征值,目的是为了方便讨论和计算。首先来看看向量(1,0)和(0,1)经过变换后的情况。
如图2-10a所示,根据2.1.4节关于矩阵乘法几何意义的理解,(1,0)向量所示的黑色实线箭头变换后对应的则是第一列的向量(-1,2),而(0,1)所示的浅色实线箭头变换后对应的是第二列的向量(1,4)。显然这两个向量都发生了变化。接下来看看图2-10b中对两个特征向量变换后的情况。 (1/2,1/2) ( − 1 / 2 , − 1 / 2 ) 是黑色实线箭头 , (1/5,1/5) ( − 1 / 5 , − 1 / 5 ) 是浅色虚线箭头,变换后的两个向量和变换前的向量方向完全一致,其中黑色虚线箭头的长度是黑色实线箭头长度的2倍,浅色虚线箭头的长度是浅色实线箭头的3倍,这就是特征值的含义: 变换后将对应特征向量方向上的向量进行缩放,缩放的倍数就是特征值
这里写图片描述

图2-10 理解特征向量的机会含义

上面的例子用的矩阵是一个非对称的矩阵,在机器学习中比较常见的情况是对称矩阵,尤其是正定矩阵。正定矩阵的定义如下:对于任意非零的向量 x x ,和一个对称矩阵 A A ,如果有
s

则称矩阵 A A 是正定矩阵。 从之前讲到的点积的几何意义,正定矩阵可以理解为一个向量经过正定矩阵变换后,和自身的点积大于0,说白了就是正定矩阵对应的变换不会把变换后的向量变到向量本身所垂直的平面的另一侧。具体到二维的例子就是,怎么变,变换后的向量和自身的夹角都不会大于90°。考虑如下正定矩阵:
这里写图片描述

特征向量分别是(0.85,0.53)和(-0.53,0.85),对应的特征向量为1.81和0.69,还是按照图2-10的方式画出来如图2-11a所示,深色实线箭头为单位向量,浅色虚线箭头为变换后的向量。
可以看到,两个特征向量是相互垂直的。正定矩阵的特征向量有什么特别之处呢,来看图2-11b,想象有关单位长度的向量,把这个向量绕着原点旋转,并画出变换前和变换后的轨迹,则这个向量先显然画出了一个圆,而变换后的向量画出的轨迹是一个椭圆。如图轨迹2-11b所示,而这个正定矩阵对应的特征向量,则正好分别是椭圆长轴和短轴所指的方向 ,特征值则是椭圆的半长轴和半短轴的长度。 从几何上理解就是正定矩阵变换前后的空间里可以找到一组正交的向量,这组正交向量变换后仍是正交的,且方向不变,空间只是沿着这组正交向量的方向发生了拉伸/收缩。如果有接触过主成分分析的同学肯定已经看出来了,这就是PCA的底层思想 ,关于PCA的细节,后面的章节也会讲到。但是这个结论在高维度也普遍使用,并且在机器学习中是个很有用的公式,在后面的实例中还会讲到。

图2-11 正定矩阵的特征向量和变换性质

2.1.6 矩阵乘法的几何意义(2)

根据特征值和特征向量的集合意义,我们知道一个正定矩阵对应的变换其实就是沿着特征向量的方向进行了缩放。那么从旋转和缩放的角度如何看待正定矩阵的变换呢?还是考虑图2-11的例子,对于图2-11例子中的变换矩阵

[1.50.50.51.0] [ 1.5 0.5 0.5 1.0 ]
我们还是很难直观想象出沿着特征向量方向(0.85,0.53)和(-0.53,0.85)进行缩放的几何过程。在2.1.2节中的公式2-6中,我们知道如果用沿着横轴和纵轴方向进行缩放,那么形式就非常简单了,如x-y二维平面中,用一个变换对横轴缩放 a a 倍,纵轴缩放 b b 倍的矩阵如下:
[a00b] [ a 0 0 b ]
该矩阵是一个对角矩阵,对应维度上的元素就是要缩放的倍数。 2.1.2节中和2.1.4节中也讲了旋转矩阵和对应的几何理解,那么对于二维平面的情况,只要用一个旋转矩阵,把原来空间中对应特征向量的方向旋转到对应 x x 轴和 y y 轴,然后进行简单的缩放,然后用一个矩阵变换旋转回去,不就和直接乘以一个变换矩阵等效了吗? 第一步:已知两个特征向量的方向,现在要把(0.85,0.53)“转回” x x 轴的位置,只需要当前的 x x 轴转到(0.85,0.53)沿 x x 轴对称的位置,所以根据2.1.4节中的形象理解,第一个列向量就是(0.85,-0.53)。同样对于(-0.53,0.85),要)“转回” y y 轴,则需要把当前 y y 轴转到)(-0.53,0.85)沿着 y y 轴对称的位置,也就是(0.53,0.85),所以变换矩阵就是
[0.850.530.530.85] [ 0.85 0.53 − 0.53 0.85 ]
也就是从图2-12a到图2-12b的情况。 第二步:接下来就是简单的沿着 x x 轴和 y y 轴方向进行缩放,其中缩放的倍数分别是两个特征向量对于的特征值,也就是进行如下的矩阵变换。
[1.81000.69] [ 1.81 0 0 0.69 ]
进一步对于图2-12b到图2-12c,变换前的方格里的笑脸已经被扭曲成了斜着的四边形,接下来最后一步就是“逆旋转”,其实就是逆变换,注意到旋转矩阵都是正交矩阵,所以你逆变换就是转置,也就是特征向量作为列向量的矩阵。
[1.81000.69] [ 1.81 0 0 0.69 ]
最后就得到了图2-12d,所以在这个过程中相当于把辩护矩阵按照分解成了3个子变换矩阵:
[1.50.50.51.0]=[0.850.530.530.85][1.81000.69][0.850.530.530.85] [ 1.5 0.5 0.5 1.0 ] = [ 0.85 − 0.53 0.53 0.85 ] [ 1.81 0 0 0.69 ] [ 0.85 0.53 − 0.53 0.85 ]

这里写图片描述

图2-12 将一个正定矩阵的变换分解为分布的“旋转——缩放——旋转操作”

其中第一次和最后一次的变换是单纯旋转,中间的变换是单纯地沿坐标轴缩放。

2.1.7 奇异值分解

你可能感兴趣的:(深度学习)