文中程序以Tensorflow-2.6.0为例
部分概念包含笔者个人理解,如有遗漏或错误,欢迎评论或私信指正。
截图部分引用自北京大学机器学习公开课
人工智能算法的主流分类
首先明白一个概念,广义上的人工智能算法并不是只有Machine Learning或Deep Learning,而是一个相对的,能够使用计算机模拟人类智能在一定场景下自动实现一些功能。所以系统控制论中的很多最优控制算法同样可以称之为智能算法。在后面的描述中我们会看到NN结构在学习参数的过程中其实很类似于一个通过反馈系统,能自动矫正控制器参数的控制系统。
首先,学界将算法分类为以下三种主要类型:
行为主义,构建感知控制系统(控制论,经典控制论或者现代控制理论中的各种矫正模型和最优控制算法也属于智能控制算法的一种)
符号主义,基于数学表达和运算求解(通过数学建模,将复杂问题转化为完整的数学系统,通过数学方法求出解,进而解决问题,例如专家系统)
连接主义,基于仿生学,构建类神经网络,神经网络模型则类似于黑盒性质,通过自动的学习和参数调整,可以实现对复杂非线性方程的描述。
传统的建模方法和控制理论已经发展的非常完善,但是依然在实际应用中存在局限性。基于网络模型的算法,通过学习可以快速的拟合各类复杂的非线性函数,并且在数学设计上相比众多建模方法原理简单明了,便于设计和使用。
认识神经网络
通常构建一个NN网络我们需要以下内容:
1、什么是神经元模型
在中学生物中学习过生物神经元,包含树突,轴突,胞体等结构,大量的神经元细胞之间可以相互连接。同样可以在计算机中模拟出单一神经元的MP模型:
对于这样的单个神经元模型,当输入多个来源的数据,通过每个输入乘以各自权重系数后求和,在经由一些特定的输出函数后得到结果。可以写成向量函数: Y = F ( X × Y + b ) \mathit{Y=F(X\times Y+b)} Y=F(X×Y+b)其中Y是输出,X是输入,W是网络权重,b是偏置系数,f是输出函数
假设我们有很多个神经元,他们彼此连接,用多个上面的神经元模型并列就可以构成一层神经网络,再使用多层神经网络级联就可以更加复杂的网络结构。那么我们就可以一定的权重参数下计算输入对应的特地输出
上面的例子中输入4个X,输出3个Y,特定的输入会对应特定的输出。这个输出的数据就可以进一步设计,通过判断来得到最后总共的结果。
2、常见的神经网络构建流程:
- 准备数据:准备大量的“特征\标签”数据 ,网络通过学习二者之间的差距,来修改权重参数
- 搭建网络结构,设计特定的网络层连接
- 通过反向传播训练网络,优化参数
- 保存模型,使用前向传播推理计算结果
通常的分类问题中,大多数都可以数学建模使用判别式的计算来实现目标结果。但是数学建模和判别的计算会随着问题的复杂而不断复杂化,所以上述流程的NN网络算法就显得简单明了,容易使用。
3、模型的训练
在简单的MLP模型中,假设网络中每个权重都首次赋予某个初值,输入数据后进行一次计算,会得到第一次的输出,此时该输出与输入的标签之间会存在差距。利用损失函数来计算输出Y和正确标签之间的差距,通过反向传播(反馈修正)更改网络中的权重系数。在损失函数的