人工智能–机器学习&深度学习
在日常学习人工智能的一些笔记。
概述
目前还需要人为输入、需要训练,期待以后能实现AI自我训练。
1956年麦卡锡提出AI这个概念,图灵
人工智能目前在语音识别、翻译、人脸识别、智能驾驶、智能客服等场景发展比较成熟。其实也都是任重道远。
数学知识准备
-
线性代数:AI中很多部分是都涉及向量矩阵的运算,如神经网络中的反向传播过程,PCA中的SVD分解等都涉及了矩阵运算
-
概率论与统计:从模型从大类分为生成式和判别式模型到特定基于统计概率模型的算法,比如朴素贝叶斯等理解,都可能是有概率论与统计的先验知识会更为便利
-
最优化:AI中涉及最优化的部分也有很多,比如随机梯度下降中用到的优化算法;及一些算法的证明,如SVM中KKT+对偶问题的证明
-
高等数学:AI中的数学很多涉及了偏导、微分、积分等。
机器学习
- 寻找规律
工作中使用到的场景:自然语言处理、语音识别、数据挖掘
机器学习将数据分为:训练集(70%)、验证集(20%)、测试集(10%)
机器学习分为:分类问题、回归问题、聚类问题、降维问题
混淆矩阵:
T/F表示 true/false 表示预测的是不是对的
P/N表示 positive/negative 表示实际数据是正样本还是负样本
P/N表示 positive/negative 表示预测数据是正样本还是负样本
TP: 预测为1, 实际为1,预测正确
FP: 预测为1, 实际为0,预测错误
TN: 预测为0,实际为0,预测正确
FN: 预测为0, 实际为1,预测错误
True Positive (真正, TP)被模型预测为正样本,实际为正样本;
False Positive (假正, FP)被模型预测为正样本, 实际为负样本;
True Negative(真负 , TN)被模型预测为负样本,实际为负样本 ;
False Negative(假负 , FN)被模型预测为负样本,实际为正样本;
参考:混淆矩阵,准确率,精准率,召回率,真正率,假正率,ROC/AUC
分类、回归问题
监督学习
逻辑回归分类
logistic回归是一种广义线性回归,sigmoid函数也叫Logistic函数,sigmoid函数用途:用作神经网络的激活函数、逻辑回归。
优点:
- 实现简单,广泛的应用于工业问题上;
- 分类时计算量非常小,速度很快,存储资源低;
- 便利的观测样本概率分数;
- 对逻辑回归而言,多重共线性并不是问题,它可以结合L2正则化来解决该问题;
- 计算代价不高,易于理解和实现;
缺点:
- 当特征空间很大时,逻辑回归的性能不是很好;
- 容易欠拟合,一般准确度不太高
- 不能很好地处理大量多类特征或变量;
- 只能处理两分类问题(在此基础上衍生出来的softmax可以用于多分类),且必须线性可分;
- 对于非线性特征,需要进行转换;
朴素贝叶斯分类
朴素贝叶斯算法(Naive Bayesian algorithm) 是应用最为广泛的分类算法之一。
基本式:
进阶式:
优点:
- 朴素贝叶斯模型发源于古典数学理论,有着坚实的数学基础,以及稳定的分类效率。
- 对大数量训练和查询时具有较高的速度。即使使用超大规模的训练集,针对每个项目通常也只会有相对较少的特征数,并且对项目的训练和分类也仅仅是特征概率的数学运算而已;
- 对小规模的数据表现很好,能个处理多分类任务,适合增量式训练(即可以实时的对新增的样本进行训练);
- 对缺失数据不太敏感,算法也比较简单,常用于文本分类;
- 朴素贝叶斯对结果解释容易理解。
缺点:
- 需要计算先验概率;
- 分类决策存在错误率;
- 对输入数据的表达形式很敏感;
- 由于使用了样本属性独立性的假设,所以如果样本属性有关联时其效果不好。
SVM分类(支持向量机)
支持向量机(Support Vector Machine, SVM)是一类按监督学习(supervised learning)方式对数据进行二元分类的广义线性分类器(generalized linear classifier),其决策边界是对学习样本求解的最大边距超平面(maximum-margin hyperplane)
优点
- 可以解决高维问题,即大型特征空间;
- 解决小样本下机器学习问题;
- 能够处理非线性特征的相互作用;
- 无局部极小值问题;(相对于神经网络等算法)
- 无需依赖整个数据;
- 泛化能力比较强;
缺点
- 当观测样本很多时,效率并不是很高;
- 对非线性问题没有通用解决方案,有时候很难找到一个合适的核函数;
- 对于核函数的高维映射解释力不强,尤其是径向基函数;
- 常规SVM只支持二分类;
- 对缺失数据敏感;
映射函数的内积为核函数(kernel function)
决策树回归与分类
决策树算法采用树形结构,使用层层推理来实现最终的分类。
决策树由下面几种元素构成:
- 根节点:包含样本的全集
- 内部节点:对应特征属性测试
- 叶节点:代表决策的结果
3 种典型的决策树算法
信息熵:
ID3 算法
ID3 是最早提出的决策树算法,他就是利用信息增益来选择特征的。
信息增益:纯度的提高,信息熵的降低
C4.5 算法
他是 ID3 的改进版,他不是直接使用信息增益,而是引入“信息增益比”指标作为特征的选择依据。
CART(Classification and Regression Tree)
这种算法即可以用于分类,也可以用于回归问题。CART 算法使用了基尼系数取代了信息熵模型。
优点
- 决策树易于理解和解释,可以可视化分析,容易提取出规则;
- 可以同时处理标称型和数值型数据;
- 比较适合处理有缺失属性的样本;
- 能够处理不相关的特征;
- 测试数据集时,运行速度比较快;
- 在相对短的时间内能够对大型数据源做出可行且效果良好的结果。
缺点
- 容易发生过拟合(随机森林可以很大程度上减少过拟合);
- 容易忽略数据集中属性的相互关联;
- 对于那些各类别样本数量不一致的数据,在决策树中,进行属性划分时,不同的判定准则会带来不同的属性选择倾向;信息增益准则对可取数目较多的属性有所偏好(典型代表ID3算法),而增益率准则(CART)则对可取数目较少的属性有所偏好,但CART进行属性划分时候不再简单地直接利用增益率尽心划分,而是采用一种启发式规则)(只要是使用了信息增益,都有这个缺点,如RF)。
- ID3算法计算信息增益时结果偏向数值比较多的特征。
随机森林分类
随机森林是一种由决策树构成的集成算法,随机森林属于 集成学习 中的 Bagging(Bootstrap AGgregation 的简称) 方法。
优点
- 它可以处理很高维度(特征很多)的数据,并且不用降维,无需做特征选择
- 它可以判断特征的重要程度
- 可以判断出不同特征之间的相互影响
- 不容易过拟合
- 训练速度比较快,容易做成并行方法
- 实现起来比较简单
- 对于不平衡的数据集来说,它可以平衡误差。
- 如果有很大一部分的特征遗失,仍可以维持准确度。
缺点
- 随机森林已经被证明在某些噪音较大的分类或回归问题上会过拟合。
- 对于有不同取值的属性的数据,取值划分较多的属性会对随机森林产生更大的影响,所以随机森林在这种数据上产出的属性权值是不可信的
KNN
概念:通过搜索K个最相似的实例(邻居)的整个训练集并总结那些K个实例的输出变量,对新数据点进行预测。对于回归问题,这可能是平均输出变量,对于分类问题,这可能是模式(或最常见)类值。
K的大小对模型的影响:
- K较小时,低偏移(bias),高方差(variance);
- K较大时,高偏移,低方差
聚类问题
无监督学习
k-means聚类
是一种迭代求解的聚类分析算法
K均值聚类的优缺点
优点
- 算法简单,容易实现 ;
- 算法速度很快;
- 对处理大数据集,该算法是相对可伸缩的和高效率的,因为它的复杂度大约是O(nkt),其中n是所有对象的数目,k是簇的数目,t是迭代的次数。通常k«n。这个算法通常局部收敛。
- 算法尝试找出使平方误差函数值最小的k个划分。当簇是密集的、球状或团状的,且簇与簇之间区别明显时,聚类效果较好。
缺点
- 对数据类型要求较高,适合数值型数据;
- 可能收敛到局部最小值,在大规模数据上收敛较慢
- 分组的数目k是一个输入参数,不合适的k可能返回较差的结果。
- 对初值的簇心值敏感,对于不同的初始值,可能会导致不同的聚类结果;
- 不适合于发现非凸面形状的簇,或者大小差别很大的簇。
- 对于”噪声”和孤立点数据敏感,少量的该类数据能够对平均值产生极大影响。
降维问题
主成分分析是把多指标转化为少数几个综合指标。
主成分分析 – PCA
是一种无监督学习
即主成分分析技术,又称主分量分析技术,旨在利用降维的思想,把多指标转化为少数几个综合指标。
什么时候使用PCA:
- 不是缓解过拟合的方法
- 不要默认的将PCA认为是学习算法的某一部分,当原始数据运行很慢、占用很高CPU时才考虑使用
线性判别算法—LDA
属于监督学习
当数据由均值来区分,可以取得更好结果
人工智能模型预测的步骤:
数据收集——数据清理——特征选取——描述性分析——算法选择——模型验证——优化
最优化
二叉树:
前序遍历:中左右
中序遍历:左中右
后续遍历:左右中
深度优先(DFS)与广度优先(BFS):
属于盲目搜索
DFS:从根节点出发,沿着左子树方向进行纵向遍历,直到找到叶子节点为止。然后回溯到前一个节 点,进行右子树节点的遍历,直到遍历完所有可达节点为止。
BFS:从根节点出发,在横向遍历二叉树层段节点的基础上纵向遍历二叉树的层次。
最优化问题5中常见解法
- 梯度下降法
- 牛顿法
- 共轭梯度法
- 拉格朗日乘数法
- 启发式算法
启发式算法
贪心算法
爬山算法
八皇后问题
参照demo-example:基于爬山算法的八皇后游戏
模拟退火算法
模拟退火算法算是对局部搜索和爬山算法的改进
蚁群算法
导航实现思路
遗传算法
模拟生物信息DNA,结合神经网络,在游戏领域应用挺多
极大极小值算法
Minimax算法 又名极小化极大算法,是一种找出失败的最大可能性中的最小值的算法(即最小化对手的最大得益)。通常以递归形式来实现。
深度学习
与机器学习区别:
- 数据规模上:需要大数据量
- 特征处理方式:自动提取特征
深度学习三个步骤
定义网络——>损失函数——>优化
定义网络
CNN
卷积神经网络
RNN
循环神经网络
损失函数
信息量:当越不可能的事件发生了,获取到的信息量就越大。