机器学习知识树
郝伟,2020/12/16
人工智能领域调研 {ignore=false}
以下都是观察值集合,
首先利用标注数据获得一个函数,然后利用未标注数据进行优化。包括自学习方法、互学习方法、基于图的方法、基于生成模型的方法、转导支持向量机等。
训练得到函数后,对未标注数据进行自动标注,同时给出可靠度,只有可靠度较高的自动标注结果才被用于函数的再学习,直到学习结果不变或者达到合适的迭代次数。基于生成模型的方法和转导支持向量机都是这种思路。
利用不同信息间的互补性达到相互学习的目的。用不同的已标注的训练集分别训练得到不同的函数,都对未标注数据进行自动标注,同时给出可靠度,只有可靠度较高的自动标注结果才被用于函数的再学习,再学习时的训练集来自其他关联信息对应的函数。直到学习结果不变或者达到合适的迭代次数,输出训练得到的多个分类器。
KNN,LR(逻辑回归),softmax回归,SVM,朴素贝叶斯,决策树—>随机森林,adaboost,gbdt,xgboost,神经网络,maxEnt等
回归问题是根据输入的离散点,模拟出样本函数的过程。如果指预测结果函数是连续的是回归,如果是离散的就是分类问题。根据自/因变量数量区分,如果只包括一个自变量和一个因变量,且二者的关系可用一条直线近似表示,这种回归分析称为一元线性回归分析。如果回归分析中包括两个或两个以上的自变量,且因变量和自变量之间是线性关系,则称为多元线性回归分析。
回归问题主要包括以下。
图的节点表示数据,边反映了数据间的相似度。计算未标注数据和标注数据的关联程度,来确定未标注数据的标注结果。这里的关联程度分为硬关联和软关联,对于硬关联用最小割方法,对于软关联用谐函数方法。
最小割试图找到一个合适的割集,使得权值最小。
Step1 构造图,权值可以为距离的反比;
Step2 增加两个特殊节点:源点和汇点,表示两个类,分别与各自的标注数据相连,权值无穷大,表示必须在一起;
Step3 用图论的最大流(最小割)算法求解;
Step4 根据分割结果确定未标注数据的标注结果。
可以从随机游走和电路网络的角度认识。从随机游走的角度,节点的边的权值视为两个彼此行走的概率,概率与相似度成正比。未标注节点与某一类别直接的关联程度可以看成是:从未标注节点出发,按照边上的概率行走,直到走到第一个被标注为相应类别的节点概率。计算出该未标注点到每个类别的行走概率后,按概率最大原则进行标注。从电路网路的角度,一类为正极,另一类为负极,施加电压,根据电压值的大小确定标注结果。
高斯混合模型方法
执行步骤:
Step1 监督学习阶段,每个类别(高斯成分),给了一定量的数据。可以直接算出相应的高斯成分的参数;
Step2 是非监督学习阶段E步,计算对于每个未标注数据,分别确定到各个高斯成分的概率;
Step3 非监督学习阶段的M步,组合标注和未标注数据的期望,使其最大化,直接解析式赋值迭代;
Step4 反复执行Step2-Step3,直到结果稳定或达到最大迭代次数。
朴素贝叶斯混合模型方法
执行步骤:
Step1 监督学习阶段,用m-估计法得到概率密度函数;
Step2 非监督学习阶段E步,利用已有的朴素贝叶斯混合模型,对每个未标注数据计算到各个类别的概率;
Step3非监督学习阶段M步,依据MLE准则,使期望最大化;
Step4 反复执行Step2-Step3,直到结果稳定或达到最大迭代次数。
转导SVM的优化结果既要使两类数据的间隔最大化,又要使未标注数据的标注结果最优化。S3VM,是一个两层循环算法,内层是原始SVM学习过程,外层是对未标注数据的自动标注结果的学习过程。外循环的目标是在所有可能标注结果中找到最优,S3VM通过贪婪的局部搜索来解决这一问题。
执行步骤:
Step1 利用已学习的SVM计算每个未标注数据的分类结果,在被分类为正样本的数据中可靠度(数据到分类超平面的距离)最高的若干个为正样本,其余全部作为反样本;
Step2 进行标注后,再次用SVM进行学习,得到新的结果;
Step3 对未标注的标注结果进行两两交换,某一正样本改为反样本,某一反样本改为正样本,再次执行SVM学习,看能否提高学习效果,能够提高进行交换,否则不交换;
Step4 重复Step3,直到满足停止条件。
对k-均值聚类算法进行改进,初始值为已标注数据,种子点的归属可以保持不变,或者发生变化。
在每次确定数据归属到某一个簇时,确定结果不应该破坏给定的约束,即“must-link”所对应的两个数据被划分到一个簇里,而“cannot-link”必须不划分到一个簇里。在分配时,分配给距离最近且不破坏约束条件的簇。如果不存在,则算法失败。
对于层次聚类来说,“must-link”的距离为0,“cannot-link”距离为最大距离。
即 Python编程语言,作用实现的最基本工具。对很多人来说, Python编程语言拥有强大的吸引力。从1991年面世以来, Python, Perl, Ruby等语言成为最流行的解释型语言, Python和Ruby从2005年之后格外流行
可以基于众多web框架,比如Rails (Ruby)和Django (Python)进行网站搭建。在解释型语言中,由于历史和文化上的原因, Python发展出了一个大型活跃的科学计算及数据分析社区。在过去十年里, Python已经从一个最前沿或者说“后果自负”的科学计算语言,成为数据科学、机器学习和学术/工业界通用软件开发等领在数据科学、交互式计算以及数据可视化等领域, Python经常被拿来和其他开源或商业。
NumPy(Numerical Python) 是Python中用于表示矩阵的基础,是Python能够进行人工智能的数据计算的基石。其底层使用C语言实现,所以可以以Python的简洁达到C语言的执行效率。
提供了强大的矩阵计算的功能。和 NumPy 一起,提供了强大了矩阵表示和计算功能。
提供了一些高级数据结构和函数。从而能够和上面两个一起满足绝大部分的人工智能计算的需求。
这是目前最流行的用于数据可视化的库。可以将各类数据依据一定的规则进行图形的展示
这是2010年才上线的基于BCD协议的一个开源项目。提供了深度学习六大领域的一些模型和算法,能够方便且免费地对其进行扩展。
NIPS(NeurIPS)
NIPS 全称神经信息处理系统大会(Conference and Workshop on Neural Information Processing Systems)是一个关于机器学习和计算神经科学的排名第一的国际顶级会议。该会议2001开始,固定在每年的12月举行,由NIPS基金会主办。在中国计算机学会的国际学术会议排名中,NIPS为人工智能领域的A类会议 [2] 。
ICLR
始于2013年由Yoshua Bengio 和 Yann LeCun 牵头创办,参见:https://www.zhihu.com/question/47940549。这篇文章有对会议的详细介绍,包括重要的人员,论文发表情况,引用情况和一些统计数据,值得一读。
北京时间2019年3月27日晚,ACM(计算机协会)宣布把 2018 年度图灵奖颁给了深度学习“三巨头” Yoshua Bengio, Geoffrey Hinton 和 Yann LeCun,以表彰他们在深度学习神经网络上的工作。
蒙特利尔大学计算机科学与运筹学系全职教授,也是深度学习“三巨头”中唯一一位完全在学术界工作。他的诸多科研积累,包括深度学习架构、循环神经网络(RNN)、对抗算法、表征学习,影响和启发了后来的大量研究者,将深度学习应用到自然语言处理、计算机视觉等人工智能的各个主要领域,对近年来深度学习的崛起和发展起到了巨大的推动作用。目前,他是仅存的几个仍然全身心投入在学术界的深度学习教授之一,为人工智能培养了许多杰出的下一代人才。
谷歌副总裁兼工程研究员,Vector Institute 的首席科学顾问,多伦多大学的名誉大学教授。他在80年代把以前没有受重视的反向传播(BP)算法引入了神经网络,使得复杂神经网络的训练成为可能,直到今天,反向传播算法依然是训练神经网络最重要的算法。之后,他又在1983 年发明玻尔兹曼机(Boltzmann Machines),以及在 2012 年改进了卷积神经网络的,并在著名的 ImageNet 评测中取得惊人成绩,在计算机视觉领域掀起一场革命。
Facebook人工智能研究院负责人,纽约大学数据科学中心的创始人之一。他最广为人知的工作是CNN(卷积神经网络)。虽然并未直接发明CNN,但Yann LeCun将反向传播算法引入了CNN,并且发明了权值共享、池化等技巧,让CNN真正更为可用,现在,CNN已经广泛用于计算机视觉、语音识别、语音合成、图片合成以及自然语言处理等学术方向,以及自动驾驶、医学图片识别、语音助手、信息过滤等工业应用方向。他在1998年开发了LeNet5——首个被大规模商用的CNN,并制作了MNIST数据集,一个被Hinton称为“机器学习界的果蝇”的经典数据集,也是绝大多数人接触的第一个数据集。更难能可贵的是他坚持了足足有二十年,才迎来了CNN如今的繁荣。
重要的论文
各类资源
常见的两类任务:分类与回归(均为监督学习)。
无监督学习典型:聚集
监督学习:根据提供正确答案的样本集进行学习,去预测未知答案的类似题目。
偏差:
方差:
半监督学习是监督学习和非监督学习的混合体,训练数据包括标注数据和非标注数据。根据学习目标分为两类:一类是监督学习任务,得到输入—输出的映射函数,利用未标注数据进行函数的优化;另一类是非监督学习任务,得到聚类的结果,利用标注数据提高效果。