人工智能概述
课程前置知识
- 线性代数 + 概率论 (不要有路径依赖,遇到不会的就现学)
- Python基础
人工智能
问题分类
人工智能,实际上就是利用计算机来代替人脑进行智能工作,计算机所要实现的智能可以分为两大部分,分别是推理和预测。
推理类
根据已有的信息来进行推理并做出决策的过程。
比如通过外界信息来判断自己要吃什么:
人脑 - 中午吃什么
机器学习 - 中午吃什么
预测类
根据具体的实体,将实体与抽象概念结合起来。
比如通过认识猫这一动物实体,来与汉字“猫”建立联系,本质是一个预测的过程,赋予真实存在的事物一个不真实存在的抽象的符号:
人 - 识别猫
机器学习 - 识别猫
算法分类
机器学习主要分为监督学习和非监督学习,监督学习相当于考前给模拟卷和答案,看完之后再考试,而非监督学习就是给模拟卷但是不给答案,看完之后就考试。
在学习的过程中,需要用到机器学习算法,这里的算法属于智能算法,而不是我们算法课学的那些传统算法。
传统算法与智能算法
传统算法:比如穷举法(暴力法)、分治法、动态规划(dp)和贪心,我们基于这些思想,可以利用数据结构来人工地设计算法。
智能算法:是基于数据集生成的算法,而非人工设计,主要和统计相关。
人工智能领域细分
人工智能包括传统的知识库和新兴的机器学习,而深度学习实际上是基于机器学习中的神经网路而衍生出的一种手段,是机器学习的一个分支。
AI(知识库)-> 机器学习(逻辑回归)-> 表示学习(自动编码器) -> 深度学习(多层感知机等神经网络)
学习系统的发展
基于规则的系统
将数据输入人工设计的程序中,从而得到满足目的的输出。
eg:基于根据导函数求解原函数的法则,设计求解原函数的程序,其中用到积分规则来建立知识库,并非真正的智能。
经典机器学习算法
在输入以后进行人工的特征提取,并对所提取的特征进行适配,以此来得到相应的输出。即先将具体信息变成张量,再实现对张量的映射来得到输出。
表示学习方法
维度诅咒
在整个input里面,对特征的需求越多,则对整个样本数量的需求就越大,造成参数空间搜索组合爆炸。
说明
依据大数定律,采样越多,与数据真实情况越接近。假定对于每个feature需要采集十个样本才能保证与真实情况足够得接近。
对于一组数据,如果只有一个feature,需要10个采样点。有两个feature ,则需要102个采样点,有n个feature,则需要10n个采样点。从而引起对原始数据量的过度需求,即维度诅咒。
解决方法
进行一个线性或者非线性的映射,来让原始维度降低。经过降维后的特征有可能会丢失关键信息,因此综合上述问题需要进行表示学习的过程,即在降维的同时而又保持住高维空间的度量信息,也就是使用更少的更有代表性的参数。
第一代
在提取特征时,利用特殊的算法进行,也就是自动提取特征,而非人工提取。
提取特征的部分,以及最终学习的部分(深色框)需要分开训练。先提取特征,再学习算法。
第二代(深度学习)
利用原始特征来进行特征提取,在原始特征的基础上,再进行提取,所有训练过程是统一的。
将特征提取和特征函数训练两个过程结合起来,也称之为End2End(端到端)。
传统机器学习策略
神经网络基础
基本原理
模仿神经元细胞来进行的设计,在整体结构上,模仿神经进行分层设计,属于仿生学的算法。
人工神经网络(Artificial Neural Networks,简写为ANNs)也简称为神经网络(NNs)或称作连接模型(Connection Model),它是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的。
神经网络是通过对人脑的基本单元——神经元的建模和联接,探索模拟人脑神经系统功能的模型,并研制一种具有学习、联想、记忆和模式识别等智能信息处理功能的人工系统。神经网络的一个重要特性是它能够从环境中学习,并把学习的结果分布存储于网络的突触连接中。神经网络的学习是一个过程,在其所处环境的激励下,相继给网络输入一些样本模式,并按照一定的规则(学习算法)调整网络各层的权值矩阵,待网络各层权值都收敛到一定值,学习过程结束。然后我们就可以用生成的神经网络来对真实数据做分类。
正向传播和反向传播
正向传播本质上是按照输入层到输出层的顺序,求解并保存网络中的中间变量本身。
反向传播本质上是按照输出层到输入层的顺序,求解并保存网络中的中间变量以及其他参数的导数(梯度)。
两者核心都是计算图
下图中,左图每一步是需要正向传播过程计算的中间量及结果,右图是需要进行反向传播过程进行计算的导数。
正向传播
上图中的实际计算过程为:
e=(a+b)∗(b+1)e=(a+b)*(b+1) e=(a+b)∗(b+1)
每一步都只能进行原子计算,每个原子计算构成一个圈,继而形成整个计算图。
在计算图中,先进行正向计算c=a+bc=a+bc=a+b, d=b+1d=b+1d=b+1,再进行e=c∗de=c*de=c∗d,求解得到ee的值以后即完成了正向计算的过程。
反向传播
小结
需要学会已经发展健全的基本神经网络的结构,进行针对问题的重新组装与搭建。