Basic Math For AI

在简单的对python有了基础的了解之后,我们的下一步的目标是对机器学习和人工智能进行初步的了解,但是,需要知道的是,机器学习和人工智能中包含着大量的数学知识,如果不对这些基础的知识进行学习,日后的学习中将难以深入一些算法,因此在此处我们先对一些必须的基础数学知识进行了解。

首先我们应该了解到,人工智能模型可以被理解成一个多元函数,有输入X,模型f(x)和输出Y。如图:

image-20220205231110405

其次,我们了解到,对于图片来说,每一个图片都是像素的三维矩阵,其中拥有红绿蓝(RGB)的三通道,如图:

image-20220206145122283

image-20220206145208783

关注,用A矩阵的转置和B矩阵相乘时:

1
2
3
4
5
6
import numpy as np
x=np.linspace(1,10,1000)#将1到10分成1000份
A=np.array([[5,2][4,3][1,1]])
B=np.array([[2,7][9,3][1,5]])
np.dot(A.T,B)
np.dot(A,B.T)

有关导数在机器学习中的应用:梯度下降,机器学习常常通过梯度下降来对模型函数进行优化。通过向函数上当前点的对应梯度(导数)的反方向的规定的步长距离点进行迭代搜索,直到在极小点收敛。

在深度学习中,如图像识别,大部分的识别结果都是一个概率,因此概率与统计也被成为AI模型的评估和优化,其中,我们用平均值标准差来评估模型的表现(如猫狗识别)和优化输入数据(如预测房价对输入数据进行归一化)。

1
2
3
4
#生成随机数
np.random.randn(10000)#高斯分布,平均值为0,标准差为1
np.random.randn(10000)*2#平均值为0,标准差为2
np.random.randn(10000)+1#平均值为1,标准差为1
1
2
tmp=np.random.randn(10000)
np.sum(tmp>0)#接近5000

image-20220207220907537

1
2
3
4
5
#蒙特卡洛近似
dots=np.random.rand(10000,2)#等效为坐标
#随机分布一定位于0到1,而高斯分布则不是。
rad=np.sqrt(dots[:,0]**2+dots[:,1]**2)#通过x,y坐标平方取根求半径
np.sum(rad<=1)#可以估算Π

接着是机器学习与深度学习的模块,其中,深度学习包括:

  1. 全连接神经网络。
  2. 卷积神经网络。
  3. 循环神经网络。

机器学习的本质:以数据为驱动,自主的从数据种寻找规律的方法。

  1. 更少的人为假设和定义。
  2. 更灵活的应用。
  3. 更高的准确度。

通过机器学习可以获得模型,常见的机器学习的方法有:

  1. 非监督学习。(聚类)
  2. 监督学习。(分类,量化预测)
  3. 强化学习。(无初始数据)
  4. 优化。

回归:根据已有的数据,建立因变量Y和自变量X的定量(函数)关系的模型。

通过均方误差来评价回归模型的好坏。

求解线性回归有两个方法,分别是最小二乘法梯度下降法

1
2
3
4
5
6
7
8
9
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

%pip install sklearn
import sklearn
x=np.linspace(1,100,100)
y=5*x+10+10*np.random.randn(100)
plt.plot(x,y,".k")#黑色点图

image-20220208224733637

1
2
3
4
5
6
7
from sklearn.linear_model import LinearRegression
model=LinearRegression()

model.fit(x.reshape(100,1),y.reshape(100,1))#若不进行reshape则无法进行运算
y_p=model.predict(x.reshape(100,1))
plt.plot(x,y,".k")
plt.plot(x,y_p,"b")#蓝线

image-20220209142350814

1
2
#模型预测:
model.predict(np.array(10).reshape(1,1))#注意要进行reshape!

读入外部数据多元线性回归

1
2
3
4
5
6
7
8
9
10
data=pd.read_csv('data.csv')
x=data[:,1:3]#1至3列
y=data[:,3]#第三列

form sklearn.linear_model import LinearRegression
model=LinearRegression()
model.fit(x,y)#训练

predict=model.predict(x)
plt.plot(y,predict,".b")#真实值为x轴,预测值为y轴

image-20220209164309337

由此可见拟合度是较好的。

计算误差如下:

1
2
3
diff=predict-y
mae=np.mean(np.abs(diff))#平均误差
rmse=np.sqrt(np.mean(diff**2))#均方误差

关于逻辑运算逻辑运算又称为布尔运算,是通过数学方法研究逻辑问题来建立了逻辑演算。

布尔值:是(True,1),否(False,0)

逻辑运算常用来搭建AI配套模型来实现具体应用。

深度强化学习:深度强化学习神经网络模型+强化学习方法。

马尔科夫链:状态空间中经过从一个状态到另一个状态的转换的随机过程,下一状态的概率分布只能由当前状态决定,且与它前面的事件均无关。

数学表达为:

image-20220209223825640

假设有三种天气状态(晴天、阴天、下雨),在第二天的状态只取决于前一天的天气状态。

  1. 第一天晴天,第二天70%晴天,20%阴天,10%下雨。
  2. 第一天阴天,第二天40%晴天,40%阴天,20%下雨。
  3. 第一天下雨,第二天20%晴天,40%阴天,40%下雨。

状态转移矩阵可写为:

image-20220209225144605

用已知概率和状态转移矩阵相乘,可以得到对应的预测的概率。

马尔科夫链收敛和平稳的条件

  1. 可能的状态数是有限的。
  2. 状态间的转移概率需要固定不变。
  3. 从任意状态能够转变到任意状态。
  4. 不能是简单的循环,例如全是从x到y再从y到x。

关于马尔科夫奖励过程
马尔科夫过程主要描述的是状态之间的转移关系,在各个状态的转移过程中赋予不同的奖励值就得到了马尔科夫奖励过程。有一个四元组组成(S,P,R,y)

S表示状态集合,P表示状态转移矩阵,R表示奖励函数,y表示衰减因子(0-1)。

马尔科夫决策过程:相比于马尔科夫奖励过程多了一个动作A,A表示决策过程的集合。

强化学习的目标就是最大化期望回报,相应的结果就是找到从状态空间S映射到动作空间A的最优策略。

Author: Jerry Ren
Link: http://example.com/2022/02/03/Basic-Math-For-AI/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.