ai-ml-dl

从零开始-机器学习的数学原理和算法实践

Part 1: 补基础

1. 补基础:微积分

1.1 导数

导数典型的应用场景就是对瞬时速度的求解

(see:求解变速运动的瞬时速度)

导数描述了自变量的微小变化导致因变量微小变化的关系

复合函数求导

加法法则
基本函数相加形成的复合函数导数等于基本函数导数之和
乘法法则
基本函数相乘形成的复合函数导数等于“前导后不导加上后导前不导)
链式法则
基本函数嵌套形成的复合函数等于”外层导数与内层导数依次相乘

1.2 多元函数

多元函数偏导数的求解方法就是对一个变量求导时,将其他变量暂时看成固定的参数

梯度时导数对多元函数的推广,是多元函数对各个自变量求偏导形成的向量

梯度就是多变量微分的一般化
梯度的本意是一个向量,表示某一函数在该点处的方向导数沿着该方向取得最大值,即函数在该点处沿着该方向(此梯度的方向)变化最快,变化率最大(为该梯度的模)
一般来说,梯度可以定义为一个函数的全部偏导数构成的向量

(see:6. 凸优化核心问题:梯度下降过程)

1.3 微积分

微分

求解变速运动的瞬时速度
通过引入极限的概念,将瞬时速度定义为平均速度再Δt趋近于0时的极限值
求解曲线上某点处的切线
求解函数的最大值和最小值

积分

求解曲线的长度、曲面的面积、物体的体积

1.4 泰勒公式

泰勒公式也称为f(x)在点a处的泰勒级数,其主要作用室对特别复杂的函数进行化简

泰勒公式常见的应用场景是在某个点附近用多项式函数去逼近某个复杂的函数,从而通过多项式函数在该点处的数值去获得复杂函数在该点处的近似值。

泰勒公式本质上室微积分基本定理连续累积的结果

2. 补基础:线性代数

Overview

线性代数主要研究线性空间中对象的运动规律

核心问题一:线性空间中的对象 – 向量
核心问题二:线性空间中对象的运动规律 – 线性变换

2.1 向量

向量在形式上表现为一系列有序数组,可以看作空间中具有方向和大小的一个箭头

从数学视角来看,任何一个向量都可以用线性空间里面的一组基向量(基向量室线性无关的)的线性组合来表示

2.1.1 向量加法与数乘

维度相同的向量才可以进行加法运算,向量进行加法运算室将相同位置上的元素相加,结果向量的维度保持不变
向量数乘:λv表示λ个v向量相加,也就是将v向量拉伸(压缩)λ倍
向量进行数乘运算时将标量与向量的每个元素分别相乘即可得到结果向量

2.1.2 向量乘法

向量内积
也称为向量点积或者数量积
代数方式定义:参与向量内积的两个向量必须维度相同,向量内积运算时将两个向量对应位置上的元素分别相乘之后求和,结果是一个标量
几何方式定义:表征向量a在向量b方向上的投影位置乘以向量b的模长,即a.b=|a||b|cosθ
向量外积
也称为向量积、叉积
二维空间
三维空间

2.2 矩阵

2.2.1 理解矩阵

定义:由mxn个数aij排成的m行n列的数表为m行n列的矩阵,简称mxn矩阵
方阵:行数和列数相等的矩阵,其行数或列数称为阶数
对角矩阵:非主对角线元素全部为0的矩阵,对角矩阵必然时方阵
单位矩阵:主对角线元素为1的对角矩阵,单位矩阵必然是对角矩阵,也必然是方阵
对称矩阵:原始矩阵和它的转置矩阵相等的矩阵,对称矩阵必然是方阵
矩阵加法和数乘
矩阵加法只适用于规模相等的矩阵之间,也就是说只有矩阵之间的行数和列数分别相等才能够进行加法运算。两个[插图]矩阵A和B的和可以标记为A+B,两个矩阵相加的结果也是一个[插图]矩阵,且结果矩阵的各元素为其矩阵A和B对应元素相加后的值
矩阵数乘是一类特殊的矩阵加法,它的结果就是将参与运算的标量数字分别与矩阵的各元素相乘,得到的结果作为新矩阵的各元素,矩阵数乘得到的结果矩阵的行数和列数跟原始矩阵保持一致
矩阵乘法
两个矩阵相乘仅当第一个矩阵A的列数和另一个矩阵B的行数相等时才能定义。例如A是[插图]矩阵和B是[插图]矩阵,它们的乘积C是一个[插图]矩阵,并将此乘积记为[插图]

2.2.2 矩阵向量乘法

矩阵向量乘法可以看作矩阵乘以矩阵的一种特例,特殊之处在于列向量可以看作列数为1的特殊矩阵
从运动的视角来看,矩阵向量乘法可以理解为对线性空间中运动(线性变换)的一种描述。
对于任意线性空间,只要选定一组线性无关的基向量就可以使用矩阵的形式来描述空间中的任意一个线性变换
线性变换:输入向量通过某种线性变换成为输出向量
矩阵向量乘法描述的是线性空间中的一种线性变换,原始向量在矩阵所对应的线性变换作用下空间位置甚至空间维度和形态都发生了改变,这就是矩阵的空间映射作用
矩阵的数值描述了该线性变换导致原始线性空间中基向量变换后的形态

2.2.3 矩阵乘法

对矩阵乘法本质的理解:矩阵本质上是空间中的某种线性变换,所以矩阵与矩阵相乘可以看作线性变换的复合作用,最后可以用一个新矩阵来表示这种复合线性变换的结果。

2.3 线性方程组求解的本质

线性方程组的几个空间

(1)原始空间。对于矩阵向量乘法[插图],此处原始空间指代的是原始列向量x所在的空间。由于原始列向量x是一个n维列向量,因此原始空间的维度为n
(2)列空间。矩阵A是m行n列的矩阵,包含n个m维的列向量。这n个m维列向量的线性组合构成的空间就是矩阵A的列空间C(A),这n个m维列向量中线性无关列向量的个数r就是列空间C(A)的维度,也称为列矩阵A的秩。不难知道,r与m、n之间存在这样的关系:[插图]且[插图]
(3)待解空间。向量b是一个m维的列向量。求解原始未知向量x的时候需要比较向量b所在空间与矩阵A的列空间C(A)之间的关系,因此可以暂时称向量b所在空间为待解空间。待解空间的维度就是列向量b的维度m

任意线性方程组都可以写成矩阵向量乘法形式,如[插图],只有当向量b可以写成矩阵A各列的线性组合形式时,这个方程组才有解。换句话说,对于线性方程组[插图],当且仅当向量b在矩阵A的列空间中时方程组才有解

线性方程组一定存在解的含义是指,向量b取任意值都能够至少找到一个未知向量x使得[插图]成立
线性方程组一定不存在解的含义是指,假设向量b可以取任意值,这种情况下无法找到未知向量x使得[插图]成立
方程组[插图]一定有唯一解的情况要求原始空间Rn在矩阵A的线性变换作用下不发生空间压缩的效应,即列空间C(A)也是一个Rn空间,r=n
当[插图]时,方程组[插图]一定有唯一解
列空间C(A)的维度r等于待解空间的维度m,保证了[插图]一定有解;如果原始空间的维度n大于列空间C(A)的维度r,说明原始空间经过矩阵A的线性变换作用后空间维度发生了压缩,那么一条线或者一个面上的无穷多个向量就会被压缩到低维空间中的同一个位置上,因此会有无穷多个解。总的来说,当[插图]时,方程组[插图]一定有无穷多个解

2.4 最小二乘法的本质

2.5 相似矩阵对角化

3. 补基础:概率统计

Part 2: ML的全景与关键

4. 全景图:机器学习路线图

5. 数据降维:主成分分析PCA

6. 凸优化核心问题:梯度下降过程

Part 3: 算法与代码

7. 搞懂算法:线性回归

8. 搞懂算法:逻辑回归

9. 搞懂算法:决策树

10. 搞懂算法:支持向量机

11. 搞懂算法:聚类

12. 搞懂算法:朴素贝叶斯

13. 搞懂算法:神经网络

14. 综合实践:模型优化