人工智能(Artificial Intelligence),英文缩写为AI。它是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。
人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器,该领域的研究包括机器人、语言识别、图像识别、自然语言处理和专家系统等。
人工智能在计算机上实现时有2种不同的方式。一种是采用传统的编程技术,使系统呈现智能的效果,而不考虑所用方法是否与人或动物机体所用的方法相同。这种方法叫工程学方法(ENGINEERING APPROACH),它已在一些领域内作出了成果,如文字识别、电脑下棋等。另一种是模拟法(MODELING APPROACH),它不仅要看效果,还要求实现方法也和人类或生物机体所用的方法相同或相类似。遗传算法(GENERIC ALGORITHM,简称GA)和人工神经网络(ARTIFICIAL NEURAL NETWORK,简称ANN)均属后一类型。遗传算法模拟人类或生物的遗传-进化机制,人工神经网络则是模拟人类或动物大脑中神经细胞的活动方式。
为了得到相同智能效果,两种方式通常都可使用,但是各有千秋,且算法也不相同:
由图可以看出,机器学习正是基于人工智能之上的,来源于数学的一门学科,就我自身感觉的话(也许再过几年学得更深入过后会有其他得见解),机器学习相当于是人工智能(AI)的头脑,如何将我们的machine训练成为我们希望的“人”(model)的一个关键。
机器学习是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。
符号学习:模拟人脑的宏现心理级学习过程,以认知心理学原理为基础,以符号数据为输入,以符号运算为方法,用推理过程在图或状态空间中搜索,学习的目标为概念或规则等。符号学习的典型方法有记忆学习、示例学习、演绎学习.类比学习、解释学习等。
神经网络学习(或连接学习):模拟人脑的微观生理级学习过程,以脑和神经科学原理为基础,以人工神经网络为函数结构模型,以数值数据为输人,以数值运算为方法,用迭代过程在系数向量空间中搜索,学习的目标为函数。典型的连接学习有权值修正学习、拓扑结构学习。
主要有统计机器学习。
统计机器学习是基于对数据的初步认识以及学习目的的分析,选择合适的数学模型,拟定超参数,并输入样本数据,依据一定的策略,运用合适的学习算法对模型进行训练,最后运用训练好的模型对数据进行分析预测。
统计机器学习三个要素:
模型(model):模型在未进行训练前,其可能的参数是多个甚至无穷的,故可能的模型也是多个甚至无穷的,这些模型构成的集合就是假设空间。
策略(strategy):即从假设空间中挑选出参数最优的模型的准则。模型的分类或预测结果与实际情况的误差(损失函数)越小,模型就越好。那么策略就是误差最小。
算法(algorithm):即从假设空间中挑选模型的方法(等同于求解最佳的模型参数)。机器学习的参数求解通常都会转化为最优化问题,故学习算法通常是最优化算法,例如最速梯度下降法、牛顿法以及拟牛顿法等。
(1)监督学习(有导师学习):输入数据中有导师信号,以概率函数、代数函数或人工神经网络为基函数模型,采用迭代计算方法,学习结果为函数。
(2)无监督学习(无导师学习):输入数据中无导师信号,采用聚类方法,学习结果为类别。典型的无导师学习有发现学习、聚类、竞争学习等。
(3)强化学习(增强学习):以环境反惯(奖/惩信号)作为输入,以统计和动态规划技术为指导的一种学习方法。(对于数据集好坏层次不齐这种情况下,也就是绝大部分情况下这种方法好得多)
(1)结构化学习:以结构化数据为输人,以数值计算或符号推演为方法。典型的结构化学习有神经网络学习、统计学习、决策树学习。
(2)非结构化学习:以非结构化数据为输人,典型的非结构化学习有类比学习案例学习、解释学习、文本挖掘、图像挖掘、Web挖掘等。
决策树及其变种是一类将输入空间分成不同的区域,每个区域有独立参数的算法。
决策树算法充分利用了树形模型,根节点到一个叶子节点是一条分类的路径规则,每个叶子节点象征一个判断类别。先将样本分成不同的子集,再进行分割递推,直至每个子集得到同类型的样本,从根节点开始测试,到子树再到叶子节点,即可得出预测类别。此方法的特点是结构简单、处理数据效率较高。
朴素贝叶斯算法是一种有监督的分类算法。它不是单一算法,而是一系列算法,它们都有一个共同的原则,即被分类的每个特征都与任何其他特征的值无关。朴素贝叶斯分类器认为这些“特征”中的每一个都独立地贡献概率,而不管特征之间的任何相关性。朴素贝叶斯适用于特征之间的相互独立的场景,例如利用花瓣的长度和宽度来预测花的类型。
“朴素”的内涵可以理解为特征和特征之间独立性强。
然而,特征并不总是独立的,这通常被视为朴素贝叶斯算法的缺点。简而言之,朴素贝叶斯算法允许我们使用概率给出一组特征来预测一个类。与其他常见的分类方法相比,朴素贝叶斯算法需要的训练很少。在进行预测之前必须完成的唯一工作是找到特征的个体概率分布的参数,这通常可以快速且确定地完成。这意味着即使对于高维数据点或大量数据点,朴素贝叶斯分类器也可以表现良好。
举个在 NLP 的应用:给一段文字,返回情感分类,这段文字的态度是positive,还是negative:
为了解决这个问题,可以只看其中的一些单词:
这段文字,将仅由一些单词和它们的计数代表:
原始问题是:给你一句话,它属于哪一类 ?通过贝叶斯规则变成一个比较简单容易求得的问题:
问题变成,这一类中这句话出现的概率是多少。
例子:单词“love”在positive的情况下出现的概率是 0.1,在negative的情况下出现的概率是0.001。
由图表可见,将句子里的“关键词”采用Bayes rules进行分类,这道题就可以转化成为在句子中找positive的单词和negative的单词的概率,当positive的单词出现的概率大于negative的单词概率时,可认为这段句子时积极的。
支持向量机(Support Vector Machine,SVM)是一种用于分类问题的监督算法。SVM模型将实例表示为空间中的点,要将两类分开,想要得到一个超平面,最优的超平面是到两类的 margin (模)达到最大,margin就是超平面与离它最近一点的距离,如下图, Z 2 > Z 1 Z2>Z1 Z2>Z1,所以绿色的超平面比较好。
分类问题示意:
将这个超平面表示成一个线性方程,在线上方的一类,都大于等于1,另一类小于等于-1:
点到面的距离根据图中的公式计算:
所以得到total margin(模求和)的表达式如下,目标是最大化这个margin,就需要最小化分母,于是变成了一个优化问题:
1 ∥ ω → ∥ + 1 ∥ ω → ∥ = 2 ∥ ω → ∥ → M A X \frac{{\rm{1}}}{{\left\| {\overrightarrow \omega } \right\|}}{\rm{ + }}\frac{{\rm{1}}}{{\left\| {\overrightarrow \omega } \right\|}} = \frac{{\rm{2}}}{{\left\| {\overrightarrow \omega } \right\|}}\to MAX ∥∥∥ω∥∥∥1+∥∥∥ω∥∥∥1=∥∥∥ω∥∥∥2→MAX
于是转化成为求:
∥ ω → ∥ → M I N {{\left\| {\overrightarrow \omega } \right\|}}\to MIN ∥∥∥ω∥∥∥→MIN
举个例子,三个点,找到最优的超平面,定义了 w e i g h t v e c t o r = ( 2 , 3 ) - ( 1 , 1 ) weight vector=(2,3)-(1,1) weightvector=(2,3)-(1,1)
得到 w e i g h t v e c t o r weight vector weightvector为 ( a , 2 a ) (a,2a) (a,2a),将两个点代入方程,代入 ( 2 , 3 ) (2,3) (2,3)另其值 = 1 =1 =1,代入 ( 1 , 1 ) (1,1) (1,1)另其值 = − 1 =-1 =−1,求解出 a 和 截矩 w 0 w0 w0 的值,进而得到超平面的表达式。
a a a求出来后,代入 ( a , 2 a ) (a,2a) (a,2a)得到的就是 s u p p o r t v e c t o r support vector supportvector,a和 w 0 w0 w0代入超平面的方程就是support vector machine。
只通过几个支持向量就确定了超平面,说明它不在乎细枝末节,所以不容易过拟合,但不能确保一定不会过拟合。可以处理复杂的非线性问题。
支持向量机是统计学习领域中一个代表性算法,但它与传统方式的思维方法很不同,输入空间、提高维度从而将问题简短化,使问题归结为线性可分的经典解问题。支持向量机应用于垃圾邮件识别,人脸识别等多种分类问题。
控制数据树生成的方式有多种,根据前人的经验,大多数时候更倾向选择分裂属性和剪枝,但这并不能解决所有问题,偶尔会遇到噪声或分裂属性过多的问题。
基于这种情况,总结每次的结果可以得到袋外数据的估计误差,将它和测试样本的估计误差相结合可以评估组合树学习器的拟合及预测精度。此方法的优点有很多,可以产生高精度的分类器,并能够处理大量的变数,也可以平衡分类资料集之间的误差。
在源数据中随机选取数据,组成几个子集:
S矩阵是源数据,有1-N条数据,A、B、C 是feature,最后一列C是类别(有点解非齐次线性方程组那味):
这M个子集得到 M 个决策树:将新数据投入到这M个树中,得到M个分类结果,计数看预测成哪一类的数目最多,就将此类别作为最后的预测结果。
Neural Networks适合一个input可能落入至少两个类别里:NN由若干层神经元,和它们之间的联系组成。 第一层是input层,最后一层是output层。在hidden层和output层都有自己的classifier(分类器)。
input输入到网络中,被激活,计算的分数被传递到下一层,激活后面的神经层,最后output层的节点上的分数代表属于各类的分数,下图例子得到分类结果为class 1;同样的input被传输到不同的节点上,之所以会得到不同的结果是因为各自节点有不同的weights 和bias,这也就是forward propagation(前向传递)。
基于前向传递的神经网络统称为前馈神经网络(FNN,feedforward neural network),常见的前馈神经网络一般有:
名称 | 介绍 |
---|---|
感知器网络 | 感知器(又叫感知机)是最简单的前馈网络,它主要用于模式分类,也可用在基于模式分类的学习控制和多模态控制中。感知器网络可分为单层感知器网络和多层感知器网络。 |
BP网络 | BP网络是指连接权调整采用了反向传播(Back Propagation)学习算法的前馈网络。与感知器不同之处在于,BP网络的神经元变换函数采用了S形函数(Sigmoid函数),因此输出量是0~1之间的连续量,可实现从输入到输出的任意的非线性映射。 |
RBF网络 | RBF网络是指隐含层神经元由RBF神经元组成的前馈网络。RBF神经元是指神经元的变换函数为RBF(Radial Basis Function,径向基函数)的神经元。典型的RBF网络由三层组成:一个输入层,一个或多个由RBF神经元组成的RBF层(隐含层),一个由线性神经元组成的输出层。 |
卷积神经网络 | CNN 是一类包含卷积计算且具有深度结构的前馈神经网络(Feedforward Neural Networks),是深度学习(deep learning)的代表算法之一 。卷积神经网络具有表征学习(representation learning)能力,能够按其阶层结构对输入信息进行平移不变分类(shift-invariant classification),因此也被称为“平移不变人工神经网络(Shift-Invariant Artificial Neural Networks, SIANN)” 。 |
除此以外还有递归神经网络(recursive neural network),递归神经网络是具有树状阶层结构且网络节点按其连接顺序对输入信息进行 递归的人工神经网络(Artificial Neural Network, ANN),是深度学习(deep learning)算法之一。其中最典型的就是以以序列(sequence)数据为输入,在序列的演进方向进行递归(recursion)且所有节点(循环单元)按链式连接的循环神经网络(Recurrent Neural Network, RNN)。
人工神经网络与神经元组成的异常复杂的网络此大体相似,是个体单元互相连接而成,每个单元有数值量的输入和输出,形式可以为实数或线性组合函数。它先要以一种学习准则去学习,然后才能进行工作。当网络判断错误时,通过学习使其减少犯同样错误的可能性。此方法有很强的泛化能力和非线性映射能力,可以对信息量少的系统进行模型处理。从功能模拟角度看具有并行性,且传递信息速度极快。
由于人工神经网络是作为深度学习的基础,于是将CNN和RNN的内容主要放在深度学习部分进行讲解。
深度学习(DL,Deep Learning)是机器学习(ML,Machine Learning)领域中一个新的研究方向,它被引入机器学习使其更接近于最初的目标——人工智能(AI,Artificial Intelligence)。
深度学习是学习样本数据的内在规律和表示层次,这些学习过程中获得的信息对诸如文字,图像和声音等数据的解释有很大的帮助。它的最终目标是让机器能够像人一样具有分析学习能力,能够识别文字、图像和声音等数据。 深度学习是一个复杂的机器学习算法,在语音和图像识别方面取得的效果,远远超过先前相关技术。
深度学习在搜索技术、数据挖掘、机器学习、机器翻译、自然语言处理、多媒体学习、语音、推荐和个性化技术,以及其他相关领域都取得了很多成果。深度学习使机器模仿视听和思考等人类的活动,解决了很多复杂的模式识别难题,使得人工智能相关技术取得了很大进步。
Boosting是种通用的增强基础算法性能的回归分析算法。不需构造一个高精度的回归分析,只需一个粗糙的基础算法即可,再反复调整基础算法就可以得到较好的组合回归模型。它可以将弱学习算法提高为强学习算法,可以应用到其它基础回归算法,如线性回归、神经网络等,来提高精度。Bagging和前一种算法大体相似但又略有差别,主要想法是给出已知的弱学习算法和训练集,它需要经过多轮的计算,才可以得到预测函数列,最后采用投票方式对示例进行判别。
Adaboost是Boosting的方法之一。Boosting就是把若干个分类效果并不好的分类器综合起来考虑,会得到一个效果比较好的分类器。
下图,左右两个决策树,单个看是效果不怎么好的,但是把同样的数据投入进去,把两个结果加起来考虑,就会增加可信度。
Adaboost的例子,手写识别中,在画板上可以抓取到很多features(特征),例如始点的方向,始点和终点的距离等等。
training的时候,会得到每个feature的weight(权重),例如2和3的开头部分很像,这个feature对分类起到的作用很小,它的权重也就会较小。
而这个alpha角就具有很强的识别性,这个feature的权重就会较大,最后的预测结果是综合考虑这些feature的结果。
关联规则是用规则去描述两个变量或多个变量之间的关系,是客观反映数据本身性质的方法。它是机器学习的一大类任务,可分为两个阶段,先从资料集中找到高频项目组,再去研究它们的关联规则。其得到的分析结果即是对变量间规律的总结。
在进行机器学习的过程中需要用到极大似然估计等参数估计方法,在有潜在变量的情况下,通常选择EM算法,不是直接对函数对象进行极大估计,而是添加一些数据进行简化计算,再进行极大化模拟。它是对本身受限制或比较难直接处理的数据的极大似然估计算法。
回归分析的主要内容有以下:
回归分析的应用非常广泛,统计软件包的使用可以让各种算法更加方便。
相关性分析:
偏相关分析:
多元回归:
曲线回归:
非线性回归:
分段回归:
在计算机的早期时代,约1980前,科学家们倾向于模仿人类的思维来让计算机读懂自然语言。经过近20年的尝试,被证明是不可行的,目前主流是基于统计的模型来对自然语言分析。即通过分析某个句子出现的概率来判断这个句子是否合理,从而找出最大概率的句子,就是分析的结果。
统计语言模型产生的初衷是为了解决语音识别的问题。在语音识别中,计算机需要知道一个文字序列是否能构成一个大家理解而且有意义的兔子,然后显示或者打印给使用者。
Markov算法的原理在于计算每个词在其上一个词现出的前提下出现的概率(先验条件)。
Markov Chains由state(状态)和transitions(转移)组成。例子,根据这一句话 ‘the quick brown fox jumps over the lazy dog’,要得到markov chains。
步骤,先给每一个单词设定成一个状态,然后计算状态间转换的概率。
这是一句话计算出来的概率,当你用大量文本去做统计的时候,会得到更大的状态转移矩阵,例如the后面可以连接的单词,及相应的概率。
给一个新的数据时,离它最近的 k 个点中,哪个类别多,这个数据就属于哪一类。
例子:要区分“猫”和“狗”,通过“claws”和“sound”两个feature来判断的话,圆形和三角形是已知分类的了,那么这个“star”代表的是哪一类呢?
k=3时,这三条线链接的点就是最近的三个点,那么圆形多一些,所以这个star就是属于猫。
先要将一组数据,分为三类,粉色数值大,黄色数值小 。最开始先初始化,这里面选了最简单的 3,2,1 作为各类的初始值 。剩下的数据里,每个都与三个初始值计算距离,然后归类到离它最近的初始值所在类别。
分好类后,计算每一类的平均值,作为新一轮的中心点:
几轮之后,分组不再变化了,就可以停止了:
数据分析与挖掘技术是机器学习算法和数据存取技术的结合,利用机器学习提供的统计分析、知识发现等手段分析海量数据,同时利用数据存取机制实现数据的高效读写。机器学习在数据分析与挖掘领域中拥有无可取代的地位,2012年Hadoop进军机器学习领域就是一个很好的例子。
模式识别的应用领域广泛,包括计算机视觉、医学图像分析、光学文字识别、自然语言处理、语音识别、手写识别、生物特征识别、文件分类、搜索引擎等,而这些领域也正是机器学习大展身手的舞台,因此模式识别与机器学习的关系越来越密切
随着基因组和其他测序项目的不断发展,生物信息学研究的重点正逐步从积累数据转移到如何解释这些数据。在未来,生物学的新发现将极大地依赖于我们在多个维度和不同尺度下对多样化的数据进行组合和关联的分析能力,而不再仅仅依赖于对传统领域的继续关注。序列数据将与结构和功能数据基因表达数据、生化反应通路数据表现型和临床数据等一系列数据相互集成。如此大量的数据,在生物信息的存储、获取、处理、浏览及可视化等方面,都对理论算法和软件的发展提出了迫切的需求。另外,由于基因组数据本身的复杂性也对理论算法和软件的发展提出了迫切的需求。而机器学习方法例如神经网络、遗传算法、决策树和支持向量机等正适合于处理这种数据量大、含有噪声并且缺乏统一理论的领域。
2012年Google在人工智能领域发布了一个划时代的产品一人脑模拟软件,这个软件具备自我学习功能。模拟脑细胞的相互交流,可以通过看YouTube视频学习识别猫、人以及其他事物。当有数据被送达这个神经网络的时候,不同神经元之间的关系就会发生改变。而这也使得神经网络能够得到对某些特定数据的反应机制,据悉这个网络已经学到了一些东西,Google将有望在多个领域使用这一新技术,最先获益的可能是语音识别。
[1]百度百科:机器学习
[2]图解十大经典机器学习算法入门
[3]机器学习十大算法实现代码汇总