本文共 22288 字,大约阅读时间需要 74 分钟。
目录
机器学习发展分为知识推理期、知识工程期、浅层知识期和深度学习几个阶段,可从几个阶段选择主要历史事件作答。
符号主义:专家系统、知识工程
贝叶斯派:情感分类、自动驾驶、垃圾邮件过滤
联结主义:神经网络
进化主义:遗传算法
行为类推主义
机器学习是人工智能的一个分支,作为人工智能核心技术和实现手段,通过机器学习的方法解决人工智能面对的问题
数据挖掘是从大量的业务数据中挖掘隐藏、有用的、正确的知识促进决策的执行。数据挖掘的很多算法都来自于机器学习,并在实际应用中进行优化。机器学习最近几年也逐渐跳出实验室,解决从实际的数据中学习模式,解决实际问题。数据挖掘和机器学习的交集越来越大,机器学习成为数据挖掘的重要支撑技术
数据科学主要包括两个方面:用数据的方法研究科学和用科学的方法研究数据。前者包括生物信息学、天体信息学、数字地球等领域;后者包括统计学、机器学习、数据挖掘、数据库等领域。大数据分析即是后者的一个部分。一般使用机器学习这个工具做大数据的分析工作,也就是说机器学习是我们做大数据分析的一个比较好用的工具,但是大数据分析的工具并不止机器学习,机器学习也并不只能做大数据分析
艺术创作、金融领域、医疗领域、自然语言处理、网络安全、工业领域、娱乐行业。举例略
监督学习:
分类:逻辑回归、决策树、KNN、随机森林、支持向量机、朴素贝叶斯
数字预测:线性回归、KNN、Gradient Boosting、AdaBoost
无监督学习:聚类、关联分析
强化学习
定义分析目标、收集数据、数据预处理、数据建模、模型训练、模型评估、模型应用
机器学习需要一定数量的数据作为支撑。数据量过多会耗费更多的计算资源,还可能有不平衡数据集、维度灾难等问题。数据量过少会导致机器学习的准确率下降,甚至不能完成学习的目标。数据数量和质量问题会导致过拟合或欠拟合的现象,优秀的数据集对机器学习的结果影响是决定性的
深度学习需要大量的标记数据并需要大量的计算能力,因此深度学习可以较好地应对机器学习中大规模数据集,为机器学习提供了解决复杂问题的方法
选择什么模型或算法、选择什么优化方法、如何对数据进行预处理、目标函数是什么、过拟合与欠拟合的处理、维度爆炸
新的机器学习算法面临的问题更加复杂,应用领域更加广泛,从广度到深度发展,对模型训练和应用都提出了更高的要求。随着人工智能的发展,冯诺依曼的有限状态机的理论基础越来越难以适应神经网络的层数要求,新的机器学习理论发展也迫在眉睫。
标准差描述是样本集合的各个样本点到均值的距离分布,描述的是样本集的分散程度
在机器学习中的方差就是估计值与其期望值的统计方差。如果进行多次重复验证的过程,就会发现模型在训练集上的表现并不固定,会出现波动,这些波动越大,它的方差就越大
协方差主要用来度量两个随机变量关系,如果结果为正值,则说明两者是正相关的;结果为负值,说明两者是负相关的;如果为0,就是统计上的“相互独立”
与平均值的偏差超过三倍标准差的测定值,称为高度异常的异常值。在处理数据时,应剔除高度异常的异常值。异常值是否剔除,视具体情况而定
标准差可用于识别符合高斯或类高斯分布的数据中的异常值
正则化是为了避免过拟合的手段。正则化为了结构风险最小化,在经验风险上加一个正则化项或惩罚项,正则化项一般是模型复杂度的单调递增函数,模型越复杂,正则化值就越大
均匀分布、正态分布、?分布、卡方分布、F-分布、二项分布、0-1分布、Poisson分布
损失函数是关于模型计算结果f(x)和样本实际目标结果的非负实值函数,记作L(y,f(x))用它来解释模型在每个样本实例上的误差损失函数的值越小,说明预测值与实际值越接近,即模型的拟合效果越好
L(y,f(x))可以被认为是模型的经验风险,是模型关于训练样本集的平均损失。通常情况下,经验风险也可以训练数据集的损失函数来确定
损失函数反映了模型预测结果和实际结果之间的差距,理解损失函数的本质有助于对算法进行优化,需要结合业务目标和数据特点对问题本质进行理解,并用数学公式进行抽象,并选择简单的实现方法应用
训练误差是模型Y关于训练数据集的平均损失。损失函数可以有多种,包括0-1损失函数、平方损失函数、绝对损失函数、对数损失函数。训练误差较高时可以调整超参数重新训练。
L0正则化是通过限制向量中非0的元素的个数实现模型优化,用L0来正则化一个参数矩阵 W,目标是使其更稀疏,即W中的大部分元素都是0。很明显,如果通过最小化L0范数作为罚项,就是寻找最优的稀疏特征项。L1正则化是通过对向量中各个元素绝对值之和进行限制,任何的规则化算子,如果在wi = 0的地方不可微,并且可以分解为多项式的形式,那么这个规则化算子就可以实现稀疏。L2正则化是指向量各元素求平方和然后求平方根,用模最小化来确保w的每个元素都很小,都接近于0。
在一般情况下将数据集随机切分为训练集、验证集和测试集三部分,其中训练集用来训练模型,验证集用于训练过程中模型的验证和选择,如果有多个模型,选择其中最小预测误差的模型,而测试集用于对最终训练完成的模型进行评估。在实际应用中,数据往往并不充足,此时可以采用交叉验证的方法,将训练集切分成很多份,然后进行组合,以扩大可用训练集的数量,按照样本切分和组合方式,交叉验证分为以下几种:HoldOut检验、简单交叉检验、k折交叉检验、留一交叉检验
不同算法有不同的评价指标。例如分类算法评价指标有:准确率、准确率、召回率、F1值、ROC曲线等。回归模型的评价指标有:平均绝对偏差(MAE)、均方误差(MSE)、R2指标等
主成分分析、线性判别分析、奇异值分解、局部线性嵌入、拉普拉斯特征映射
主成分分析是最常用的线性降维方法,它的目标是通过某种线性投影,将高维的数据映射到低维的空间中,并期望在所投影的维度上数据的方差最大,以此使用较少的维度,同时保留较多原数据的维度。PCA算法目标是求出样本数据的协方差矩阵的特征值和特征向量,而协方差矩阵的特征向量的方向就是PCA需要投影的方向。使样本数据向低维投影后,能尽可能表征原始的数据。协方差矩阵可以用散布矩阵代替,协方差矩阵乘以(n-1)就是散布矩阵,n为样本的数量。协方差矩阵和散布矩阵都是对称矩阵,主对角线是各个随机变量(各个维度)的方差。
线性判别分析的原理是对于给定的训练集,设法将样本投影到一条直线上,使得同类的投影点尽可能接近,异类样本的投影点尽可能远离;在对新样本进行分类时,将其投影到这条直线上,再根据投影点的位置来确定新样本的类别
参考课本中用LLE对“瑞士卷”数据集进行降维的例子
,拉普拉斯特征映射是一种基于图的降维算法,它希望相互间有关系的点(在图中相连的点)在降维后的空间中尽可能的靠近,从而在降维后仍能保持原有的数据结构
特征提取目的是自动地构建新的特征,将原始数据转换为一组具有明显统计意义的核心特征
特征构建需要很强的洞察力和分析能力,要求能够从原始数据中找出一些具有物理意义的特征。如果原始数据是表格数据,一般使用混合属性或者组合属性来创建新的特征,或是分解、切分原有的特征来创建新的特征
特征生成前的原始数据可以分单列变量、多列变量、多行样本(时间序列)等三种情况
主成分分析、独立成分分析、线性判别分析
过程:
a) 确定输入变量与目标变量间的回归模型,即变量间相关关系的数学表达式
b) 根据样本估计并检验回归模型及未知参数
c) 从众多的输入变量中,判断哪些变量对目标变量的影响是显著的
d) 根据输入变量的已知值来估计目标变量的平均值并给出预测精度
逻辑回归是一种预测分析, 解释因变量与一个或多个自变量之间的关与线性回归不同之处就是它的目标变量有几种类别,所以逻辑回归主要用于解决分类问题,与线性回归相比,它是用概率的方式,预测出来属于某一分类的概率值。如果超过50%,则属于某一分类
二次判别分析是针对那些服从高斯分布,且均值不同, 方差也不同的样本数据而设计的。它对高斯分布的协方差矩阵不做任何假设,直接使用每个分类下的协方差矩阵,因为数据方差相同的时候,一次判别就可以,但如果类别间的方差相差较大时,就变成了一个关于?的二次函数, 就需要使用二次决策平面
举例从定义分析目标、收集数据、数据预处理、数据建模、模型训练、模型评估、模型应用等阶段进行说明即可。
可视化分析是一种数据分析方法,利用人类的形象思维将数据关联,并映射为形象的图表。人脑对于视觉信息的处理要比文本信息容易得多,所以可视化图表能够使用户更好地理解信息,可视化分析凭借其直观清晰,能够提供新洞察和发现机会的特点活跃在诸多科学领域
分类算法是利用训练样本集获得分类函数即分类模型(分类器),从而实现将数据集中的样本划分到各个类中。分类模型通过学习训练样本中属性集与类别之间的潜在关系,并以此为依据对新样本属于哪一类进行预测
常用的分类算法包括决策树、支持向量机、最近邻、贝叶斯网络和神经网络等
决策树的构建过程是按照属性的优先级或重要性来逐渐确定树的层次结构,使其叶子结点尽可能属于同一类别,一般采用局部最优的贪心策略来构建决策树
C5.0算法选择分支变量的依据:以信息熵的下降速度作为确定最佳分支变量和分割阀值的依据。信息熵的下降意味着信息的不确定性下降。
CHAID算法分支处理的标注指标是独立性检验和相关性(分裂后自变量与目标变量的相关性)。
CART算法在分支处理中分支属性的度量指标是Gini指标。
非监督离散化不需要使用分类属性值,相对简单,有等宽离散化、等频离散化、聚类等方法,等宽离散化将属性划分为宽度一致的若干个区间;等频离散化将属性划分为若干个区间,每个区间的数量相等;聚类将属性间根据特性划分为不同的簇,以此形式将连续属性离散化。监督离散化常用的方法是通过选取极大化区间纯度的临界值来进行划分,C4.5与CART算法中的连续属性离散化方法均属于监督离散化方法;CART 算法使用Gini系数作为区间纯度的度量标准;C4. 5算法使用熵作为区间纯度的度量标准。结合几种方法举例说明即可。
模型的训练误差低但是泛化误差比较高,则称此分类模型过拟合。
解决过拟合问题,一方面要注意数据训练集的质量,选取具有代表性样本的训练样本集。另一方面要避免决策树过度增长,通过限制树的深度来减少数据中的噪声对于决策树构建的影响,一般可以采取剪枝的方法
剪枝是用来缩小决策树的规模,从而降低最终算法的复杂度并提高预测准确度,包括预剪枝和后剪枝两类。预剪枝的思路是提前终止决策树的增长,在形成完全拟合训练样本集的决策树之前就停止树的增长,避免决策树规模过大而产生过拟合。后剪枝策略先让决策树完全生长,之后针对子树进行判断,用叶子结点或者子树中最常用的分支替换子树,以此方式不断改进决策树,直至无法改进为止。
对于一般分类问题,有训练误差、泛化误差、准确率、精确率、召回率、F值、受试者工作特征曲线 (ROC)曲线等指标
通过将连续变量设定出多个不同的临界值,从而计算出一系列真正率和假正率,再以假正率为纵坐标、真正率为横坐标绘制成ROC曲线。
ROC曲线下面积越大,模型准确性越高。在ROC曲线上,最靠近坐标图左上方的点为假正率和真正率均较高的临界值。
ROC曲线下的面积称为AUC,AUC值越大,表示分类模型的预测准确性越高,ROC曲线越光滑,一般代表过拟合现象越轻
k折交叉验证法将样本集随机地划分为k个大小相等的子集,在每一轮交叉验证中, 选择一个子集作为检验集,其余子集作为训练集,重复k轮,保证每一个子集都作为检验集出现,用K轮检验结果取平均值作为模型好坏的评价标准。最常用的k折交叉验证法为十折交叉验证
集成学习方法是指组合多个模型,以获得更好的效果,使集成的模型具有更强的泛化能力。使用集成方法时会有多种形式:可以是不同算法的集成,也可以是同一算法在不同设置下的集成,还可以是数据集不同部分分配给不同学习模型之后的集成。最常见的集成思想有两种bagging和boosting。举例略。
梯度提升决策树算法是利用梯度下降的思想,使用损失函数的负梯度在当前模型的值,作为提升树中残差的近似值,以此来拟合回归决策树。梯度提升决策树的算法过程如下:
初始化决策树,估计一个使损失函数最小化的常数构建一个只有根节点的树。
不断提升迭代:计算当前模型中损失函数的负梯度值,作为残差的估计值;估计回归树中叶子节点的区域,拟合残差的近似值;利用线性搜索估计叶子节点区域的值,使损失函数极小化;更新决策树。
经过若干轮的提升法迭代过程之后,输出最终的模型
传统的分类方法是在一个由各种可能的函数构成的空间中寻找一个最接近实际分类函数的分类器。可以通过聚集多个分类器的预测结果提高分类器的分类准确率,这一方法即为集成学习。该方法由训练数据构建一组基分类器,然后通过对每个基分类器的预测进行投票来进行分类。随机森林算法目标是通过将多个弱学习机(如单棵决策树)组合得到一个强学习机。随机森林的每一棵决策树之间是没有关联的。在得到森林之后,当有一个新的输入样本进入的时候,就让森林中的每一棵决策树分别进行一下判断,看看这个样本应该属于哪一类,然后看看哪一类被选择最多,就预测这个样本为那一类。这样就集成了多个分类器的分类结果,达到了更好的分类性能。
结合课本的案例说明即可。
聚类分析用于对未知类别的样本进行划分,将它们按照一定的规则划分成若干个类族,把相似(距高相近)的样本聚在同一个类簇中, 把不相似的样本分为不同类簇,从而揭示样本之间内在的性质以及相互之间的联系规律
聚类算法将未标记的样本自动划分为多个类簇,但不会提供对每个类簇的语义解释,这部分解释就需要数据分析人员对聚类结果进行归纳总结,阐述聚类的意义。
金融保险、生物学、医学、军事、地理、电子商务等领域都有重要用途。
基于划分的聚类,多适用于中等体量的数据集,数据集越大,越有可能陷入局部最小。基于层次的聚类有自顶向下和自底向上两种,实际使用中根据数据特点及目标“聚类”结果个数来使用哪一种。基于密度的聚类对噪声数据的处理比较好,但不适合对参数设置非常敏感的场合基于网格的聚类适用于需要执行效率高,而对参数不敏感、无不规则分布的数据等场合。基于模型的聚类适用于数据的“类”不那么确定,而表现为概率形式的场合。
良好的可伸缩性、处理不同类型数据的能力、处理噪声数据的能力、对样本顺序的不敏感性、约束条件下的表现、易解释性和易用性。
具体评价指标包括外部指标如Rand统计量、F值、Jaccard指数、FM指数等;内部指标如欧式距离、曼哈顿距离、切比雪夫距离、明科夫斯基距离、紧密度、分隔度、戴维森堡丁指数、邓恩指数等。
常用的距离度量有欧式距离、曼哈顿距离、切比雪夫距离和明可夫斯基距离等。
基于划分的方法通过将对象划分为互斥的簇进行聚类, 每个对象属于且仅属于一个簇。划分结果旨在使簇之间的相似性低,簇内部的相似度高。
第一种方法:与层次聚类算法结合,先通过层次聚类算法得出大致的聚类数目,并且获得一个初始聚类结果,然后再通过k-均值算法改进聚类结果
第二种方法:基于系统演化的方法,将数据集视为伪热力学系统,在分裂和合并过程中,将系统演化到稳定平衡状态从而确定k值
K-means算法对初始化聚类中心依赖性比较大,很可能陷入局部最优的情况或使得迭代次数增加
类似课本“利用改进的k-均值算法帮助危险品运输企业进行风险管控、防范”的案例进行案例说明即可。
k -medoids算法不通过计算簇中所有样本的平均值得到簇的中心,而是通过选取原有样本中的样本点作为代表对象代表这个簇,计算剩下的样本点与代表对象的距离,将样本点划分到与其距离最近的代表对象所在的簇中。
k-prototype算法综合了k-均值和k-总数算法,采用新的距离度量算法,加入了描述数据簇的原型和混合数据之间的相异度计算公式,能够快速处理混合类型数据集的聚类问题。
CLARANS算法即随机搜索聚类算法,是一种分割聚类方法。它首先随机选择一个点作为当前点,然后随机检查它周围不超过参数Maxneighbor个的一些邻接点,假如找到一个比它更好的邻接点,则把它移人该邻接点,否则把该点作为局部最小量。然后再随机选择一个点来寻找另一个局部最小量,直至所找到的局部最小量数目达到用户要求为止。该算法要求聚类的对象必须都预先调人内存,并且需多次扫描数据集,这对大数据量而言,无论时间复杂度还是空间复杂度 都相当大。虽通过引人R-树结构对其性能进行改善,使之能够处理基于磁盘的大型数据库,但R*-树的构造和维护代价太大。该算法对脏数据和异常数据不敏 感,但对数据物人顺序异常敏感,且只能处理凸形或球形边界聚类。
Eps的值可以使用绘制k-距离曲线方法得当,在k-距离曲线图明显拐点位置为对应较好的参数。若参数设置过小,大部分数据不能聚类;若参数设置过大,多个簇和大部分对象会归并到同一个簇中。
MinPts的选取有一个指导性的原则,MinPts≥dim+1,其中dim表示待聚类数据的维度。MinPts设置为1是不合理的,因为设置为1,则每个独立点都是一个簇,MinPts≤2时,与层次距离最近邻域结果相同,因此,MinPts必须选择大于等于3的值。若该值选取过小,则稀疏簇中结果由于密度小于MinPts,从而被认为是边界点儿不被用于在类的进一步扩展;若该值过大,则密度较大的两个邻近簇可能被合并为同一簇。因此,该值是否设置适当会对聚类结果造成较大影响。
结合算法特点和具体应用说明即可。参考课本案例4.4“通过DBSCAN聚类分析城市异常事件”。
OPTICS算法生成一个增广的簇排序,即所有分析对象的线性表,代表各样本点基于密度聚类结构。从线性表的排序中可以得到基于任何领域参数的DBSCAN算法的聚类结果。OPTICS算法适用于数据样本点不均匀或聚类间相差很大,以及对领域参数非常敏感时。
层次聚类的核心思想就是通过对数据集按照层次,把数据划分到不同层的簇,从而形成一个树形的聚类结构。层次聚类算法可以揭示数据的分层结构,在树形结构上不同层次进行划分,可以得到不同粒度的聚类结果。
BIRCH算法的核心就是构建一个聚类特征树(Clustering Feature Tree,CF-Tree),聚类特征树的每一个节点都是由若干个聚类特征(??)组成的。具体言之,BIRCH算法利用树结构对数据集进行处理,叶结点存储一个聚类,用中心和半径表示,顺序处理每一个对象,并把它划分到距离最近的结点,该算法也可以作为其他聚类算法的预处理过程。
CURE算法采用抽样技术先对数据集D随机抽取样本,再采用分区技术对样本进行分区,然后对每个分区局部聚类,最后对局部聚类进行全局聚类。
ROCK算法也采用了随机抽样技术,该算法在计算两个对象的相似度时,同时考虑了周围对象的影响。
CHEMALOEN(变色龙算法)算法首先由数据集构造成一个K-最近邻图Gk ,再通过一个图的划分算法将图Gk 划分成大量的子图,每个子图代表一个初始子簇,最后用一个凝聚的层次聚类算法反复合并子簇,找到真正的结果簇。
SBAC算法则在计算对象间相似度时,考虑了属性特征对于体现对象本质的重要程度,对于更能体现对象本质的属性赋予较高的权值
凝聚的层次聚类并没有类似基本K均值的全局目标函数,没有局部极小问题或是很难选择初始点的问题。合并的操作往往是最终的,一旦合并两个簇之后就不会撤销。当然其计算存储的代价是昂贵的。
Kohonen聚类算法的基本思想是基于赢者通吃法则(也称为竞争学习),使获胜神经元对其邻近神经元的影响是由近及远,对附近神经元产生兴奋影响逐渐变为抑制。通过自动寻找样本中的内在规律和本质属性,自组织、自适应地改变网络参数与结构。参考课本例4.9结合案例进行应用分析即可。
参考课本例4.10“基于聚类和时间序列的易腐商品分级需求预测”案例结合具体应用进行分析即可。
可以从公开数据源下载,或者利用自有数据集,或者按照分析需求从网络抓取
一般经过分词、文本特征提取与表示、特征选择、知识或信息挖掘和具体应用等步骤。分词包括了对文本分词、去除停用词、词形归一化等;文本特征提取与表示包括了词性标注、句法分析、语义分析、特征提取与表示等;在特征选择后,通过知识提取和挖掘,具体应用到文本分类、情感分析、信息抽取和问答系统等方面。
文本特征指文本中少量的、具有代表性语义的词语。一组文本特征的集合即可代表整个文本的语义。
文本数据表示常用方法有布尔模型(boolean model)、向量空间模型(vector space model)、概率模型(probabilistic model)和图空间模型(graph space model)等。文本特征选择的方法一般有基于频率的、信息增益、互信息、CHI统计量、WLLR特征选择方法等。
TF-IDF适用范围广泛,其建立在在这样一个假设之上的:对区别文档最有意义的词语应该是那些在文档中出现频率高,而在整个文档集合的其他文档中出现频率少的词语,所以如果特征空间坐标系取tf词频作为测度,就可以体现同类文本的特点。
TF-IDF算法缺点包括:单纯以“词频”衡量一个词的重要性,不够全面,有时重要的词可能出现次数并不多(TF不高);算法中并没有体现出单词的位置信息,对于Web文档而言,权重的计算方法应该体现出HTML的结构特征;IDF的简单结构并不能有效地反映单词的重要程度和特征词的分布情况,使其无法很好地完成对权值调整的功能。
向量空间模型能把文本表示成由多维特征构成的向量空间中的点,从而通过计算向量之间的距离来判定文档和查询关键词之间的相似程度。常用的相似度计算方案有内积、Dice系数、Jaccard系数和夹角余弦值。
中文分词主要包括词的歧义切分和未登录词识别。切分歧义处理包括两部分内容:切分歧义的检测、切分歧义的消解。未登录词大致包含两大类:新涌现的通用词或专业术语等、专有名词。
中文文本分词主要分为基于词典的分词方法、基于统计的分词方法和基于规则的分词方法。在基于词典的方法中,对于给定的词,只有词典中存在的词语能够被识别,其中最受欢迎的方法是最大匹配法(MM),这种方法的效果取决于词典的覆盖度,因此随着新词不断出现,这种方法存在明显的缺点。基于统计的方法由于使用了概率或评分机制而非词典对文本进行分词而被广泛应用。基于规则的分词要求计算机理解人类语言,较难还在试验阶段。
IK分词使用了”正向迭代最细粒度切分算法“,简单说来就是: Segmenter会逐字识别词元,设输入”中华人民共和国“并且”中“单个字也是字典里的一个词,那么过程是这样的:”中“是词元也是前缀(因为有各种中开头的词),加入词元”中“;继续下一个词”华“,由于中是前缀,那么可以识别出”中华“,同时”中华“也是前缀因此加入”中华“词元,并把其作为前缀继续;接下来继续发现“华人”是词元,“中华人”是前缀,以此类推……。
命名实体识别目前主流还是基于统计的提取方式,例如最大熵、支持向量机、隐马尔可夫模型、条件随机场等,在实践中应用较广的是隐马尔可夫模型和条件随机场。最大熵模型关键是建立有效的特征模板,结合不同层次和粒度的特征建立中文实体语义知识库,所以模板设计是这一模型是否具有通用性的关键。支持向量机对于特征集的要求比较高,例如使用实体属性、词性、实体间关系等有助于提高识别的准确性,这一方法由于在细分类别上的识别效果不佳,目前应用较少。条件随机场是一种判别式概率模型,通过分析序列资料实现对目标序列建模,相较于最大熵模型,它引入了上下文信息实现对未知词汇的识别。隐马尔可夫模型依赖于训练语料的标签标记,它的速度要快一些,所以它更适用于信息检索等实时性要求较高的场景。
基于统计的方法对特征选取的要求较高,对语料库的依赖也比较大,需要从文本中选择对该项任务有影响的各种特征,而可用的大规模通用语料库又比较少,目前大部分细分领域的语料库是基于现有素材经过机器或人工的干预的方式构建的,这部分工作很难避免,也是自然语言处理的基础工作之一。
语义消歧是自然语言理解中核心的问题,在词义、句义、篇章含义层次都会出现不同的上下文(Context) 下语义不同的现象。消歧就是根据上下文来确定对象的真实语义。词义消歧方法分为以三类:
基于词典的词义消歧方法主要基于覆盖度实现,即通过计算语义词典中各词与上下文之间合理搭配程度,选择与当前语境最合适的词语。但由于词典中词义的定义通常比较简洁,粒度较租,造成消歧性能不高。并且,如果词项缺失就会导致问题。
有监督的消歧方法使用已经标记好的语义资料集构建模型,通过建立相似词语的不同特征表示实现去除歧义的目的。
半监督或无监督方法仅需要少量人工或不需要人工标注语料,但依赖于大规模的未标注语料和语料上的句法分析结果。
依存句法(Dependency Parsing, DP) 认为句法结构本质上包含词和词之间的依存关系,依存关系是指词与词之间存在修饰关系。通过分析语言单位成分之间的依存关系揭示其句法结构,将输入的文本从序列形式转化为树状结构,从而刻画句子内部词语之间的句法关系。目前主要是数据驱动的依存句法分析,通过对大规模语料进行训练得到模型。这种方式生成的模型比较容易跨领域和语言环境。比较常见的是基于图(graph-based) 的分析方法和基于转移( transition- based) 的分析方法。
短语结构句法分析的研究基于上下文无关文法(CFG),CFG主要是对句子成分结构进行建模。一个CFG由一系列规则组成,每个规则给出了语言中的符号可被组织或排列的方法,以及符号和单词构成的字典。
语义分析分为词汇级、句子级和篇章级。其中词汇级的难点主要在于词义消歧和词向量的表示。句子级语义分析分别有浅层语义分析语义角色标注和深层语义分析,其中语义角色标注包括了角色剪枝、角色识别和角色分类,在角色识别和角色分类过程中, 无论是采用基于特征向量的方法,还是基于树核的方法,其目的都是尽可能准确地计算两个对象之间的相似度,这也是其难点;深度语义分析主要面临普通文本到实体/关系谓词之间的映射、面向开放领域的语义分析等两个问题。篇章级的难点在于判定子句与子句的篇章语义关系。
文本分类技术在智能信息处理服务中有着广泛的应用。例如,大部分在线新闻门户网站(如新浪、搜狐、腾讯等)每天都会产生大量新闻文章,如果对这些新闻进行人工整理非常耗时耗力,而自动对这些新闻进行分类,将为新闻归类以及后续的个性化推荐等都提供巨大帮助。互联网还有大量网页、论文、专利和电子图书等文本数据,对其中文本内容进行分类,是实现对这些内容快速浏览与检索的重要基础。此外,许多自然语言分析任务如观点挖掘、垃圾邮件检测等,也都可以看作文本分类或聚类技术的具体应用。
结合自动摘要的方法进行讨论即可。可结合下列几种方法展开:抽取式方法相对比较简单,通常利用不同方法对文档结构单元(句子、段落等)进行评价,对每个结构单元赋予一定权重,然后选择最重要的结构单元组成摘要。而生成式方法通常需要利用自然语言理解技术对文本进行语法、语义分析,对信息进行融合,利用自然语言生成技术生成新的摘要句子。也可以利用拓展新将强的贝叶斯话题模型,对话题相关性概率进行建模。加权频数的定义可以有多种,如信息检索中常用的TF- IDF权重。还可以利用隐语义分析(LDA)得到低维隐含语义表示并加以利用。在多文档摘要任务中,重要的句子可能和更多其他句子较为相似,所以可以用相似度作为节点之间的边权,通过迭代求解基于图的排序算法来得到句子的重要性得分。
问答系统在回答用户问题时,首先需要正确理解用户所提的自然语言问题,并抽取其中的关键语义信息,然后在已有语料库、知识库或问答库中通过检索、匹配、推理的手段获取答案并返回给用户。
问答系统的核心问题在于问句理解、文本信息抽取和知识推理。给定用户问题,自动问答首先需要理解用户所提问题。用户问句的语义理解包含词法分析、句法分析、语义分析等多项关键技术,需要从文本的多个维度理解其中包含的语义内容。给定问句语义分析结果,自动问答系统需要在已有语料库、知识库或问答库中匹配相关的信息,并抽取出相应的答案。传统答案抽取构建在浅层语义分析基础之上,采用关键词匹配策略,往往只能处理限定类型的答案,系统的准确率和效率都难以满足实际应用需求。为保证信息匹配以及答案抽取的准确度,需要分析语义单元之间的语义关系,抽取文本中的结构化知识。基于分布式表示的知识表示学习方法能够将实体、概念以及它们之间的语义关系表示为低维空间中的对象(向量、矩阵等),并通过低维空间中的数值计算完成知识推理任务。虽然这类推理的效果离实用还有距离,但是我们认为这是值得探寻的方法,特别是如何将已有的基于符号表示的逻辑推理与基于分布式表示的数值推理相结合,研究融合符号逻辑和表示学习的知识推理技术,是知识推理任务中的关键科学问题。
关键步骤包括数据的提取、数据预处理和情感分析。结合具体案例进行阐述即可。
事件抽取技术是从非结构化信息中抽取出用户感兴趣的事件,并以结构化呈现给用户。常用的事件抽取的方法包括模式匹配方法和机器学习方法,其中模式匹配方法是指对于某种类型事件的识别和抽取是在一些模式的指导下进行的,采用各种模式匹配算法将带抽取的事件和已知的模式进行匹配。模式匹配方法由两个基本步骤组成:模式获取和事件抽取。机器学习方法其实就是一种分类方法,它是建立在统计模型的方法上,将事件类型与事件元的识别转换成分类问题。这种方法主要是选择合适的特征值与分类器来完成相关的分类。
一个感知器可以接收n个输入x=(x1,x2,…,xn),对应n个权值w=(w1,w2,…,wn),此外还有一个偏置项阈值,就是图中的b,神经元将所有输入参数与对应权值进行加权求和,得到的结果经过激活函数变换后输出,计算公式如下:
BP神经网络训练过程的基本步骤可以归纳如下:初始化网络权值和神经元的阈值,一般通过随机的方式进行初始化;前向传播:计算隐层神经元和输出层神经元的输出;后向传播:根据目标函数公式修正权值wij。上述过程反复迭代,通过损失函数和成本函数对前向传播结果进行判定,并通过后向传播过程对权重参数进行修正,起到监督学习的作用,一直到满足终止条件为止。
BP网络主要用于以下四个方面。
函数逼近:用输入向量和相应的输出向量训练一个网络逼近一个函数。
模式识别:用一个待定的输出向量将它与输入向量联系起来。
分类:把输入向量所定义的合适方式进行分类。
数据压缩:减少输出向量维数以便于传输或存储
激活函数经常使用Sigmoid函数、tanh函数、ReLu 函数。
Sigmoid函数的优点在于输出范围有限,数据在传递的过程中不容易发散,并且其输出范围为(0,1),可以在输出层表示概率值。Sigmoid函数的导数是非零的,很容易计算。
Sigmoid函数的主要缺点是梯度下降非常明显,且两头过于平坦,容易出现梯度消失的情况,输出的值域不对称,并非像tanh函数那样值域是-1到1。
双曲正切函数将数据映射到[-1,1],解决了Sigmoid函数输出值域不对称问题。另外,它是完全可微分和反对称的,对称中心在原点。然而它的输出值域两头依旧过于平坦,梯度消失问题仍然存在。为了解决学习缓慢和梯度消失问题,可使用其更加平缓的变体,如log-log、Softsign、Symmetrical Sigmoid等
ReLU函数是目前神经网络里常用的激活函数,由于ReLU函数是线性特点使其收敛速度比Sigmoid、Tanh更快,而且没有梯度饱和的情况出现。计算更加高效,相比于Sigmoid、Tanh函数,只需要一个阈值就可以得到激活值,不需要对输入归一化来防止达到饱和。
可以有多种方法:
算法的步长选择。步长实际上取值取决于数据样本,可以多取一些值,从大到小,分别运行算法,看看迭代效果,如果损失函数在变小,说明取值有效,否则要增大步长。步长太大,会导致迭代过快,甚至有可能错过最优解。步长太小,迭代速度太慢,很长时间算法都不能结束。所以算法的步长需要多次运行后才能得到一个较优的值。
网络的层数。理论已经证明,具有偏差和至少一个S型隐层加上一个线性输出层的网络,能够逼近任何有理函数,增加层数可以进一步降低误差,提高精度,但同时也是网络 复杂化。另外不能用仅具有非线性激活函数的单层网络来解决问题,因为能用单层网络解决的问题,用自适应线性网络也一定能解决,而且自适应线性网络的 运算速度更快,而对于只能用非线性函数解决的问题,单层精度又不够高,也只有增加层数才能达到期望的结果。
隐层单元数。在能够解决问题的前提下,再加上一两个神经元,以加快误差下降速度即可。
径向基函数网络的隐含层是由径向基函数神经元组成,这一神经元的变换函数为径向基函数。典型的RBF网络由输入层、RBF隐层和由线性神经元组成的输出层。与传统的即神经网络相比,其主要区别是隐层节点中使用了径向基函数、对输入进行了高斯变换、将在原样本空间中的非线性问题,映射到高维空间中使其变得线性,然后在高维空间里用线性可分算法解决,RBF网络采用高斯函数作为核函数:
y=exp-bx-w2
RBF网络的隐层神经元自带激活函数,所以其层数可以只有一层隐层, 权重值数量更少,所以RBF网络较BP网络速度快很多。
当RBF的中心点确定以后,低维空间的输入通过非线性函数到一个高维空间的这种映射关系也就确定了。而隐含层空间到输出空间的映射是线性的,即网络的输出是隐单元输出的线性加权和,此处的权即为网络可调参数。由此可见,从总体上看,网络由输人到输出的映射是非线性的,而网络输出对可调参数而言却又是线性的。这样网络的权就可由线性方程组直接解出,从而大大加快学习速度并避免局部极小问题。
Elman网络是在时间上动态的,具有内部动态反馈的功能,承接层的设置使得Elman网络能够有效应对具有时变特征的数据,在带有时序性的样本数据上有着比静态神经网络更好的预测性能
在中小数据集上,优先选择集成树模型。大数据集上推荐神经网络;在需要模型解释度的项目上,优先使用树模型;在项目时间较短的项目上,如果数据质量低(大量缺失值、噪音等),优先使用集成树模型;在硬件条件有限及机器学习知识有限的前提下,优先选择树模型;对于结构化较高的数据,尤其是语音、图片、语言,优先使用神经网络模型(往往其数据量也较大)。
常用的防止过拟合的方法有参数范数惩罚、数据增强、提前终止、Bagging等集成方法、Dropout、批正则化等。
归一化的目的就是使得预处理的数据被限定在一定的范围内(比如[0,1]或者[-1,1]),从而消除奇异样本数据导致的不良影响。
因为通常神经网络所用的激活函数是sigmoid函数,这个函数有个特点,就是能将负无穷到正无穷的数映射到0和1之间,并且对这个函数求导的结果是f′(x)=f(x)(1−f(x))。因此两个0到1之间的数相乘,得到的结果就会变得很小了。神经网络的反向传播是逐层对函数偏导相乘,因此当神经网络层数非常深的时候,最后一层产生的偏差就因为乘了很多的小于1的数而越来越小,最终就会变为0,从而导致层数比较浅的权重没有更新,这就是梯度消失。
可以使用mini-batch、Stochastic gradient descent等方法。mini-batch是将训练集分组,分组之后,分别对每组求梯度,然后更新参数。加入分 8组,则每次迭代将会做8次梯度下降,更新8次参数。所以mini-batch比传统的梯度下降法下降的速度快。Stochastic gradient descent可以看做是mini-batch的一种特殊情况,当mini-batch size等于1时,mini-batch就退化为Stochastic gradient descent。此时每次迭代中,对于数据集中每个样本都做一次梯度下降。还可以使用Monmentum、RMSprop、Adam等方法。
支持向量机是一种二类分类模型。它的基本模型是定义在特征空间上的间隔最大的线性分类器,支持向量机还包括核技巧,这使它成为实质上的非线性分类器。支持向量机的学习策略就是间隔最大化,可形式化为一个求解凸二次规划的问题,也等价于正则化的合页损失函数的最小化问题。支持向量机的学习算法是求解凸二次规划的最优化算法。
支持向量机用于二元分类问题,对于多元分类可以将其分解为多个二元分类问题,再进行分类。
支持向量机常用在图像分类、文本分类、面部识别以及垃圾邮件检测等领域。
线性核函数:主要用于线性可分的情况。
多项式核函数:一种非稳态核函数,适合于正交归一化后的数据。
径向基核函数:具有很强的灵活性,应用广泛。大多数情况下有较好的性能。
Sigmoid核:来源于MLP中的激活函数,SVM使用Sigmoid相当于一个两层的感知机网络。
只要一个对称函数所对应的核矩阵半正定,它就能作为核函数使用。事实上,对于一个半正定核矩阵,总能找到一个与之对应的映射。核函数的使用,不一定能够准确的划分,只能说使用哪个核函数,能够逼近真实的划分效果。因此特征空间的好坏对支持向量机的性能至关重要。在不知道特征映射的形式时,我们并不知道什么样的核函数是合适的,而核函数也仅是隐式定义了这个特征空间。于是,核函数的选择成为了支持向量机的最大变数。若核函数选择不合适,则意味着映射到一个不合适的特征空间,很可能导致性能不佳。
深度学习是一种利用复杂结构的多个处理层来实现对数据进行高层次抽象的算法,是机器学习的一个重要分支。传统的BP算法仅有几层网络,需要手工指定特征且易出现局部最优问题,而深度学习引入了概率生成模型,可自动地从训练集提取特征,解决了手工特征考虑不周的问题。而且初始化了神经网络权重,采用反向传播算法进行训练,与BP算法相比取得了很好的效果。
除了组织存储的数据类型的不同,数据的绝对量是促进深度学习工具和技术发展的一个关键因素。新兴公司积累了足够的数据后,技术才能更好地发挥作用。例如Affectiva的前身是麻省理工学院媒体实验室在2009年推出的一个研究项目。最初,该公司的研究人员试图用一对夫妇的视频“训练”面部识别软件,用该软件解释实验者的情绪状态。多年来,Affectiva为数以百万计的人像镜头建立了视频库。现在,McDuff的机器学习算法能够更加准确地评估人的情绪。
Torch:Lua语言编写的自带API的深度学习计算框架,支持机器学习算法,核心是以图层的方式定义网络,优点是包括了大量模块化的组件,可以快速进行组合,并且具有较多训练好的模型,可以直接应用。
TensorFlow:用Python API编写,对应的教程、资源、社区贡献都较多,支持深度学习、强化学习和其他算法的工具,支持数据和模型的并行运行。
Caffe:这是一款工业级深度学习工具,将Matlab实现的快速卷积神经网络移植到了C和C++平台上。不适用于文本、声音或时间序列数据等其他类型的深度学习应用。
Keras:是一个基于Theano和TensorFlow的深度学习库,具有较为直观的API,这可能是目前最好的Python API,未来可能会成为TensorFlow默认的Python API,更新速度较快,相应的资源也多,收到广大开发者追捧。
卷积神经网络是一种稀疏的网络结构,其中卷积层和子采样层是特征提取功能的核心模块。卷积神经网络采用梯度下降的方式,应用最小化损失函数对网络中各节点的权重参数逐层调节,通过反向递推,不断地调整参数使得损失函数的结果逐渐变小,从而提升整个网络的特征描绘能力,使卷积神经网络分类的精确度和准确率不断提高。
防止过拟合的方法有三类:人为增加数据集;正则化;Dropout。在原有在训练图像识别的深度神经网络时,使用更多的图像数据集训练的模型会使训练的网络具有更好地泛化性能,减小过拟合。正则化的作用是调节模型复杂度对损失函数的影响,若权重衰减很大,则复杂的模型损失函数的值也就大。使用dropout是在每次训练过程中随机将部分神经元的权重置为0,即让一些神经元失效,这样可以缩减参数量,避免过拟合。
循环神经网络是一种对序列数据建模的神经网络。循环神经网络中一个当前神经元的输出与前面的输出也有关,网络会对前面的信息进行记忆并应用于当前神经元的计算中,即隐藏层之间的节点是有连接的,并且隐藏层的输入不仅包括输入层的输出还包括上一时刻隐藏层的输出。理论上,循环神经网络可以对任何长度的序列数据进行处理。但是在实践中,为了降低复杂性往往假设当前的状态只与前面的几个状态相关。
LeNet:LeNet网络是较早出现的卷积神经网络,在这个网络出现之后各类神经网络不断涌现。
AlexNet网络:这是最早的现代神经网络,这个模型证明了CNN在复杂模型下的有效性,使用GPU使得训练在可接受的时间范围内得到结果,推动了有监督深度学习的发展。
VGG网络:VGG的一个特点是层数多。VGG是5个group的卷积2层全连接层用于提取图像特征、一层全连接层用于分类特征。
目标检测和追踪需要注意运动目标的表示,例如对其视觉特征进行建模,并采用相似性度量来对帧图像进行匹配,在追踪过程中需要处理大量冗余信息,采用搜索算法缩小比较范围。为了合理地表示运动目标,首先要获取目标的初始状态并且提取目标的特征,在此基础上构建目标描述模型,模型可分为生成式模型和判别式模型。生产式方法运用生成模型描述目标的表现特征,之后通过搜索候选目标来最小化重构误差。判别式方法通过训练分类器来区分目标和背景。
R-CNN可以用于目标检测、图像识别、检索和分类。R-CNN可以应用在车辆目标检测,食品图像检索和分类,手势识别,植物关键器官识别,人体行为检测等具体的应用场景中。
Q-学习是让主体从一个状态到另一个状态不断转换进行探索学习。主体的每一次探索都会从初始状态到目标状态,相当于一次迭代,训练越多,学到的东西越多。初始时会将所有状态-行动组合的Q-值初始化为0,将状态奖励值设置为初始值,主体会探索很多状态直至发现一个奖励,因此会对训练Q-函数限制一个训练长度,或者限制训练直到达到某些状态。保证主体不会卡在无用状态的学习中,避免不管做多少次迭代都无法得到有用的奖励值。
主要解决两个问题:小数据的问题。比方说新开一个网店,卖一种新的糕点,没有任何的数据,就无法建立模型对用户进行推荐。但用户买一个东西会反应到用户可能还会买另外一个东西,所以如果知道用户在另外一个领域,比方说买饮料,已经有了比较多的数据,利用这些数据建一个模型,结合用户买饮料的习惯和买糕点的习惯的关联,就可以把饮料的推荐模型给成功地迁移到糕点的领域,这样在数据不多的情况下可以成功推荐一些用户可能喜欢的糕点。这个例子说明,假设有两个领域,一个领域已经有很多的数据,能成功地建一个模型,有一个领域数据不多,但是和前面那个领域是关联的,就可以把那个模型给迁移过来;个性化的问题。比如每个人都希望自己的手机能够记住一些习惯,这样不用每次都去设定它,怎么才能让手机记住这一点呢?其实可以通过迁移学习把一个通用的用户使用手机的模型迁移到个性化的数据上面。
强化学习是目标导向的,从白纸一张的状态开始,经由许多个步骤来实现某一个维度上的目标最大化。就是在训练的过程中不断尝试,错误就惩罚,正确就奖励,由此训练得到的模型在各个状态环境下都最好。
生成对抗网络由一个生成网络与一个判别网络组成。生成对抗网络的实现方法是让生成模型和判别模型进行博弈,训练过程通过相互博弈使用两个模型的性能同时增强。生成模型需要在整个条件内去产生数据的分布,就像高斯分布一样,它需要去拟合整个分布。判别模型就像分类一样,有一个判别界限,通过这个判别界限去区分样本。
推荐系统是一种帮助用户快速发现有用信息的工具。通过分析用户的历史行为,研究用户偏好,对用户兴趣建模,从而主动给用户推荐能够满足他们感兴趣的信息。本质上,推荐系统是解决用户额外信息获取的问题。在海量冗余信息的情况下,用户容易迷失目标,推荐系统主动筛选信息,将基础数据与算法模型进行结合,帮助其确定目标,最终达到智能化推荐。
通过用户调查、离线实验、在线实验这些实验方法来评价,主要评价用户满意度、预测准确度、覆盖率、多样性、新颖性、惊喜度、信任度、实时性、健壮性这些指标。
参考资料:
转载地址:http://lzuii.baihongyu.com/