本系列文章是博主跟着 github 项目:《神经网络与深度学习》学习的笔记,目标是理解机器学习的原理,了解不同的深度学习模型并最终可以运用到科研生活中。
本文内容主要是机器学习的绪论部分,包括:人工智能历史、流派,机器学习介绍,表示学习,深度学习,神经网络,常用框架,推荐阅读。
# 绪论
一个人在不接触对方的情况下,通过一种特殊的方式,和对方进行一系列的问答。如果在相当长时间内,他无法根据这些问题判断对方是人还是计算机,那么就可以认为这个计算机是智能的。
—— 阿兰・图灵(Alan Turing)《Computing Machinery and Intelligence 》
人工智能、机器学习、深度学习、神经网络概念辨析:
- 人工智能:为机器赋予人的智能,是最广泛的概念。
- 机器学习:一种实现人工智能的方法,通过使用算法来解析有限数据、从中学习,然后对真实世界中的未知事件做出决策和预测。
- 深度学习:一种机器学习模型,利用深度(3 层以上)的神经网络,将模型处理得更为复杂,从而使模型对数据的理解更加深入。
- 神经网络:一种机器学习模型,深度学习可以采用神经网络模型,也可以采用其他模型(例如深度信念网络);神经网络是深度学习中主要采用的模型。
如上图所示,深度学习是机器学习的一个子领域,近年来发展十分迅速,从根源讲,深度学习是指一类问题以及解决这类问题的方法。深度学习一般采用的模型比较复杂「指样本的原始输入到输出目标之间的数据流经多个线性或非线性组件」,所以会出现贡献度分配问题「指不清楚每个组件的贡献度」。而贡献度分配问题在深度学习中是一个很关键的问题,关系到如何学习每个组件中的参数。
人工神经网络(Artificial Neural Network,ANN)是一种比较好解决贡献度分配问题的模型,简称为神经网络,是一种受人脑神经系统的工作方式启发而构造的数学模型。可以把神经网络看作是由一组参数控制的用于处理信息的复杂函数,其参数可以通过机器学习的方式从数据中自动学习。由于神经网络一般都比较复杂,所以复杂神经网络可以看成一种深度的机器学习,即深度学习。由于神经网络模型可以较容易地解决贡献度分配问题,因此神经网络模型成为深度学习中主要采用的模型。
# 人工智能
在 1956 年的达特茅斯会议上,“人工智能” 被正式确定为本研究领域的名称,John McCarthy 提出了人工智能的定义:人工智能就是要让机器的行为看起来就像是人所表现出的智能行为一样。
根据图灵测试的理论,如果计算机想通过图灵测试,就必须具有理解语言、学习、记忆、推理、决策等能力,目前人工智能研究的主要领域大体可分为:
- 感知:模拟人的感知能力,对外部刺激(视觉和语音等)进行感知和加工,主要研究领域包括:语音信息处理和计算机视觉等
- 学习:模拟人的学习能力,主要研究如何从样例或从与环境的交互中进行学习,主要研究领域包括监督学习、无监督学习和强化学习等
- 认知:模拟人的认知能力,主要研究领域包括知识表示、自然语言理解、推理、规划、决策等
# 人工智能发展历史
人工智能从诞生至今,经历了一次又一次繁荣与低谷,大体上可分为 “推理期”、“知识期”、“学习期”。
# 推理期
早期研究者都通过人类的经验,基于逻辑或者事实归纳出来一些规则,然后通过编写程序来让计算机完成一个任务。这个时期中,研究者开发了一系列的智能系统,例如:几何定理证明器、语言翻译器等。但随着研究的深入,研究者意识到这些推理规则过于简单,对项目难度评估不足,原来的乐观预期受到严重打击,人工智能开始陷入第一次大低谷。
# 知识期
到了 20 世纪 70 年代,研究者意识到知识对于人工智能系统的重要性。特别是对于一些复杂的任务,需要专家来构建知识库。在这一时期,出现了各种各样的专家系统(Expert System),并在特定的专业领域取得了很多成果。专家系统可以简单的理解为 “知识库 + 推理机”,是一类具有专门知识和经验的计算机智能程序系统。一个专家系统必须具备三要素:
- 领域专家级知识
- 模拟专家思维
- 达到专家水平
在这一时期,Prolog(Programming in Logic)语言是主要的开发工具,用来建造专家系统、智能知识库以及处理自然语言理解等。
# 学习期
人类的很多智能行为(比如语言理解、图像理解等),我们很难知道其中的原理,也无法描述这些智能行为背后的 “知识”。因此,我们也很难通过知识和推理的方式来实现这些行为的智能系统。为了解决这类问题,研究者开始将研究重点转向让计算机从数据中自己学习。事实上,“学习” 本身也是一种智能行为。
从人工智能的萌芽时期开始,就有一些研究者尝试让机器来自动学习,即机器学习(Machine Learning,ML),但是由于各种其他交叉学科还不完善,一直没有很受重视。直到 1980 年后,机器学习在很多领域有出色表现,逐渐成为热门学科。
# 人工智能流派
由于人们对人类智能的机理依然知之甚少,没有一个通用的理论来指导如何构建一个人工智能系统,因此在研究过程中产生了很多流派,例如有些研究者认为人工智能应该通过研究人类的智能机理来实现一个仿生模拟器,而另外一些学者则认为可以使用其他方法来实现人类的某种智能行为(想想我们制造的飞机不需要想鸟一样扇动翅膀也可以飞起来)。
各种流派总的来说可以归结为一下两种:
- 符号主义(Symbolism):又称逻辑主义、心理学派或计算机学派,是指通过分析人类智能的功能,然后用计算机来实现这些功能的一类方法。符号主义有两个基本假设:1)信息可以用符号表示;2)符号可以通过显式的规则(比如逻辑运算)来操作。人类认知的过程可以看做符号操作的过程。在推理期和知识期,符号主义比较盛行,并取得了大量成果。
- 连接主义(Connectionism):又称仿生学派或生理学派,是认知科学领域中的一类信息处理的方法和理论。在认知科学领域,人类的认知过程可以看作一种信息处理过程。连接主义认为人类的认知过程是由大量简单神经元构成的神经网络中的信息处理过程,而不是符号运算。因此,连接主义模型的主要结构是由大量简单的信息处理单元组成的互联网络,具有非线性、分布式、并行化、局部性计算以及自适应性等特性。
符号主义方法的一个优点是可解释性,而这也正是连接主义方法的弊端。深度学习的主要模型神经网络就是一种连接主义模型。随着深度学习的发展,越来越多的研究者开始关注如何融合符号主义和连接主义,建立一种高效并且具有可解释性的模型。
# 机器学习
机器学习(Machine Learning,ML)是指从有限的观测数据中学习(或 “猜测”)出具有一般性的规律,并用这些规律对未知数据进行预测的方法。
传统机器学习主要关注如何学习一个预测模型,一般需要首先将数据表示为一组特征(Feature),特征可以是连续的数值、离散符号或其他形式,然后将这些特征输入到预测模型,并输出预测结果。这类学习可以看作是浅层学习(Shallow Learning)。浅层学习的一个重要特点是不涉及特征学习,其特征主要靠人工经验或特征转换方法来抽取。
但实际情况下,不同类型的数据(声音、图像、文本等)的特征构造方式差异很大,很难找到合适的特征表示方式,因此在实际任务中使用机器学习模型一般会包含以下几个步骤:
- 数据预处理:对数据的原始形式进行初步的数据清理(比如去掉一些有缺失特征的样本,或去掉一些冗余的数据特征等)和加工(对数值特征进行缩放和归一化等),并构建成可用于训练机器学习模型的数据集。
- 特征提取:从数据的原始特征中提取一些对特定机器学习任务有用的高质量特征。比如在图像分类中提取边缘、尺度不变特征变换(Scale Invariant Feature Transform,SIFT)特征,在文本分类中去除停用词等。
- 特征转换:对特征进行进一步的加工,比如降维和升维。降维包括特征抽取(Feature Extraction)和特征选择(Feature Selection)两种途径。常用的特征转换方法有主成分分析(Principal Components Analysis,PCA)、 线性判别分析(Linear Discriminant Analysis,LDA)等
- 预测:机器学习的核心部分,学习一个函数并进行预测。
上述流程的每一步都是分开处理的,在实际操作中,不同预测模型的准确性相差不大,而前三步中的特征处理对最终结果却有着十分关键的作用。由于特征处理一般都需要人工干预完成,利用人类的经验来选取好的特征,最终提高机器学习系统的性能。因此,很多的机器学习问题变成了特征工程(Feature Engineering)问题。开发一个机器学习系统的主要工作量都消耗在了预处理、特征提取以及特征转换上。
# 表示学习
为了提高机器学习系统的准确率,我们就需要将输入信息转换为有效的特征,或者更一般性地称为表示(Representation)。如果有一种算法可以自动地学习出有效的特征,并提高最终机器学习模型的性能,那么这种学习就可以叫作表示学习(Representation Learning)。
表示学习的关键是解决语义鸿沟(Semantic Gap)问题;语义鸿沟问题是指输入数据的底层特征和高层语义信息之间的不一致性和差异性。比如给一些关于 “车” 的照片,其高层含义(车)与底层特征(照片中的各个像素点)之间有极大的差异。我们对于这些图片的理解是站在比较抽象的高层语义概念上的。如果模型直接建立在底层特征上,会导致对预测模型的能力要求过高,这时,如果我们有一个好的表示,可以在某种程度上反映出数据的高层语义特征,那么我们就能相对容易的构建后续的机器学习模型。
在表示学习中,有两个核心问题:
- 什么是一个好的表示
- 如何学习到好的表示
# 局部表示与分布式表示
「好的表示」是一个非常主观的概念,没有一个明确的标准。但一般而言,一个好的表示具有以下几个优点:
- 一个好的表示应该具有很强的表示能力,即同样大小的向量可以表示更多信息。
- 一个好的表示应该使后续的学习任务变得简单,即需要包含更高层的语义信息。
- 一个好的表示应该具有一般性,是任务或领域独立的。虽然目前的大部分表示学习方法还是基于某个任务来学习,但我们期望其学到的表示可以比较容易地迁移到其他任务上。
在机器学习中,我们常有两种方式来表示特征:
- 局部表示(Local Rep-resentation)
- 分布式表示(Distributed Representation)
以颜色为例,在语言中,我们可以通过不同的词来形容颜色:“红”、“中国红”、“正红” 等等。在计算机中,颜色主要有两种表示方式
# 局部表示
又称为离散表示或符号表示,经常可以表示为 one-hot 向量「有且只有一个元素为 1,其余元素都为 0 的向量」的形式。逻辑上是以不同的名字来命名不同的颜色,假设所有颜色的名字构成一个词表 ,词表大小为,我们可以用一个 维的 one-hot 向量来表示每一种颜色,第 种颜色对应的 one-hot 向量中,第 维的值为 1,其他都为 0。
优点:
- 这种离散的表示方式具有很好的解释性,有利于人工归纳和总结特征,并通过特征组合进行高效的特征工程
- 通过多种特征组合得到的表示向量通常是稀疏的二值向量,当用于线性模型时计算效率非常高
缺点:
- one-hot 向量的维数很高,且不能扩展。如果有一种新的颜色,我们就需要增加一维来表示
- 不同颜色之间的相似度都为 0,即我们无法知道 “红色” 和 “中国红” 的相似度要高于 “红色” 和 “黑色” 的相似度
# 分布式表示
其实就是 “分散式表示”,将一种颜色的语义分散到语义空间中的不同基向量上。其实就是我们熟悉的用 RGB 值来表示颜色,不同颜色对应到 R、G、B 三维空间中一个点。分布式表示通常可以表示为低维的稠密向量。
和局部表示相比,分布式表示的表示能力要强很多,分布式表示的向量维度一般都比较低。我们只需要用一个三维的稠密向量就可以表示所有颜色。并且,分布式表示也很容易表示新的颜色名。此外,不同颜色之间的相似度也很容易计算。
通过分布式表示,可以将高维的局部表示空间映射到一个非常低维的分布式表示空间。在这个地位空间中,每个特征不再是坐标轴上的点,而是分散在整个低维空间中。在机器学习中,这个过程称为嵌入(Embedding)。
嵌入通常指将一个度量空间中的一些对象映射到另一个低维的度量空间中,并尽可能保持不同对象之间的拓扑关系。比如自然语言中词的分布式表示,也经常叫作词嵌入。
# 表示 “学习”
「学到好的表示」通常需要从底层特征开始经过多步非线性转换才能得到。深层结构的优点是可以增加特征的重用性,从而指数级地增加表示能力。因此,表示学习的关键是构建具有一定深度的多层次特征表示。在传统机器学习中,由于特征的学习和最终预测模型的学习是分开进行的,所以学习到的特征不一定可以提升最终模型的性能。
# 深度学习
为了学习一种好的表示,需要构建具有一定 “深度” 的模型,并通过学习算法来让模型自动学习出好的特征表示(从底层特征,到中层特征,再到高层特征),从而最终提升预测模型的准确率。所谓 “深度” 是指原始数据进行非线性特征转换的次数。如果把一个表示学习系统看作一个有向图结构,深度也可以看作从输入节点到输出节点所经过的最长路径的长度。由于学习过程是自动的,所以可以避免 “特征工程”,即无需提供人为标注的特征数据。
深度学习是将原始的数据特征通过多步的特征转换得到一种特征表示,并进一步输入到预测函数得到最终结果。由于整体是黑盒的过程(又称端到端学习),所以需要解决 “贡献度分配问题”,但是这非常困难。从某种意义上讲,深度学习可以看作一种强化学习(Reinforcement Learning,RL),每个内部组件并不能直接得到监督信息,需要通过整个模型的最终监督信息(奖励)得到,并且有一定的延时性。
目前,深度学习采用的模型主要是神经网络模型,其主要原因是神经网络模型可以使用误差反向传播算法,从而可以比较好地解决贡献度分配问题。只要是超过一层的神经网络都会存在贡献度分配问题,因此可以将超过一层的神经网络都看作深度学习模型。随着深度学习的快速发展,模型深度也从早期的 5 ∼ 10 层增加到目前的数百层。随着模型深度的不断增加,其特征表示的能力也越来越强,从而使后续的预测更加容易。
# 神经网络
随着神经科学、认知科学的发展,我们逐渐知道人类的智能行为都和大脑活动有关。人类大脑是一个可以产生意识、思想和情感的器官。受到人脑神经系统的启发,早期的神经科学家构造了一种模仿人脑神经系统的数学模型,称为人工神经网络,简称神经网络。在机器学习领域,神经网络是指由很多人工神经元构成的网络结构模型,这些人工神经元之间的连接强度是可学习的参数。
# 人脑神经网络
「抢救下要死未死的高中生物」人脑是人体最复杂的器官,由神经元、神经胶质细胞、神经干细胞和血管组成。其中,神经元(Neuron),也叫神经细胞(Nerve Cell),是携带和传输信息的细胞,是人脑神经系统中最基本的单元。人脑中包含近 860 亿个神经元,每个神经元有上千个突触和其他神经元相连接。这些神经元和它们之间的连接形成巨大的复杂网络,其中神经连接的总长度可达数千公里。我们人造的复杂网络,比如全球的计算机网络,和大脑神经网络相比要 “简单” 得多。
典型的神经元结构大致可分为细胞体和细胞突起:
- 细胞体(Soma)中的神经细胞膜上有各种受体和离子通道,胞膜的受体可与相应的化学物质神经递质结合,引起离子通透性及膜内外电位差发生改变,产生相应的生理活动:兴奋或抑制
- 细胞突起是由细胞体延伸出来的细长部分,又可分为树突和轴突
- 树突(Dendrite)可以接收刺激并将兴奋传入细胞体。每个神经元可以有一或多个树突
- 轴突(Axon)可以把自身的兴奋状态从胞体传送到另一个神经元或其他组织。每个神经元只有一个轴突
神经元可以接收其他神经元的信息,也可以发送信息给其他神经元。神经元之间没有物理连接,两个 “连接” 的神经元之间留有 20 纳米左右的缝隙,并靠突触(Synapse)进行互联来传递信息。一个神经元可被视为一种只有两种状态的细胞:兴奋和抑制。神经元的状态取决
于从其他的神经细胞收到的输入信号量,以及突触的强度(抑制或加强)。当信号量总和超过了某个阈值时,细胞体就会兴奋,产生电脉冲。电脉冲沿着轴突并通过突触传递到其他神经元。一个典型的神经元结构如下图所示。
人的智力不完全由遗传决定,大部份来自生活经验,即人脑神经网路就是一个具有学习能力的系统,人脑的学习能力是通过改变神经元之间的突触强度来实现的,不同神经元之前的突触有强有弱,通过学习(训练)可以改变强度,进而实现我们所谓的 “学习”。
# 人工神经网络
人工神经网络是为模拟人脑神经网络而设计的一种计算模型,它从结构、实现机理和功能上模拟人脑神经网络。人工神经网络与生物神经元类似,由多个节点(人工神经元)互相连接而成,可以用来对数据之间的复杂关系进行建模。不同节点之间的连接被赋予了不同的权重,每个权重代表了一个节点对另一个节点的影响大小。每个节点代表一种特定函数,来自其他节点的信息经过其相应的权重综合计算,输入到一个激活函数中并得到一个新的活性值(兴奋或抑制)。从系统观点看,人工神经元网络是由大量神经元通过极其丰富和完善的连接而构成的自适应非线性动态系统。
构造人工神经网络很简单,但是如何实现网络的学习并不容易,早期的神经网络模型并不具备学习能力(早期神经网络并不是用于解决机器学习问题的)。首个可学习的人工神经网络是赫布网络,采用一种基于赫布规则「」的无监督学习方法。感知器是最早的具有机器学习思想的神经网络,但其学习方法无法扩展到多层的神经网络上。 直到 1980 年左右,反向传播算法才有效地解决了多层神经网络的学习问题,并成为最为流行的神经网络学习算法。
” 赫布规则 “或” 赫布理论 “:
当神经元 A 的一个轴突和神经元 B 很近,足以对它产生影响,并且持续地、重复地参与了对神经元 B 的兴奋,那么在这两个神经元或其中之一会发生某种生长过程或新陈代谢变化,以致神经元 A 作为能使神经元 B 兴奋的细胞之一,它的效能加强了。
由于神经网络可以用作一个通用的函数逼近器(一个两层的神经网络可以逼近任意的函数),因此我们可以将人工神经网络看作一个可学习的函数,并将其应用到机器学习中。理论上,只要有足够的训练数据和神经元数量,人工神经网络就可以学到很多复杂的函数。我们可以把一个人工神经网络塑造复杂函数的能力称为网络容量(Network Capacity),这与可以被储存在网络中的信息的复杂度以及数量相关。
# 神经网络的发展历史
神经网络的发展大致经过五个阶段
第一阶段:模型提出
1943~1969 年,神经网络发展的第一个高潮期,提出了许多神经元模型和学习规则,包括 MP 模型、感知机等。在这一时期,神经网络以其独特的结构和处理信息的方法,在许多实际应用领域(自动控制、模式识别等)中取得了显著的成效。
第二阶段:冰河期
1969 年~1983 年,是神经网络发展的第一个低谷期。在此期间,神经网络的研究处于长年停滞及低潮状态。当时的神经网络有两个关键缺陷:
- 感知机无法处理 “异或” 回路问题
- 当时的计算机无法支持处理大型神经网络所需要的算力
但是这个时期也提出很多有用的模型或算法,如:反向传播算法、新知机等
第三阶段:反向传播算法引起的复兴
1983 年~1995 年,是神经网络发展的第二个高潮期,这个时期中,反向传播算法重新激发了人们对神经网络的兴趣。Hopfield 网络在旅行商问题上取得了当时的最好结果,随后又在 Hopfield 网络的基础上提出了随机化版本的网络 “玻尔兹曼机”。
20 世纪 80 年代中期,连接主义模型开始流行,即分布式并行处理(Parallel Distributed Pro-cessing,PDP)模型。反向传播算法逐渐成为 PDP 模型的主要学习算法,通过引入该算法的卷机神经网络在手写体数字识别上取得了很大成功。反向传播算法是迄今为止最为成功的网络学习算法,目前深度学习中主要使用的自动微可以看作是反向传播算法的一种扩展。
但是,梯度消失问题(Vanishing Gradient Problem)阻碍神经网络的进一步发展。
第四阶段:流行度降低
1995 年~2006 年,在此期间,支持向量机和其他更简单的方法(例如线性分类器)在机器学习领域的流行度逐渐超过了神经网络。原因在于:
- 当时算力不足以支撑复杂的神经网络
- 神经网络理论基础不清晰、优化困难、可解释性差
第五阶段:深度学习的崛起
2006 年开始至今,在这一时期研究者逐渐掌握了训练深层神经网络的方法,使得神经网络重新崛起。随着大规模并行计算以及 GPU 设备的普及,计算机的计算能力得以大幅提高。此外,可供机器学习的数据规模也越来越大。在强大的计算能力和海量的数据规模支持下,以神经网络为基础的深度学习迅速崛起,在语音识别和图像分类等任务上取得巨大成功。
# 知识体系图
主要对神经网络和深度学习所涉及的知识提出一个较全面的基础性介绍,可以分为三大块:机器学习、神经网络、概率图模型。
# 常用的深度学习框架
在深度学习中,一般通过误差反向传播算法来进行参数学习。采用手工方式来计算梯度再写代码实现的方式会非常低效,并且容易出错。此外,深度学习模型需要的计算机资源比较多,一般需要在 CPU 和 GPU 之间不断进行切换,开发难度也比较大。因此,一些支持自动梯度计算、无缝 CPU 和 GPU 切换等功能的深度学习框架就应运而生。比较有代表性的框架包括:Theano、Caffe、TensorFlow、Pytorch、飞桨(PaddlePaddle)、Chainer 和 MXNet 等
- Theano:
由蒙特利尔大学的 Python 工具包,用来高效地定义、优化和计算张量数据的数学表达式。Theano 可以透明地使用 GPU 和高效的符号微分「项目已停止维护」 - Caffe:
由加州大学伯克利分校开发的针对卷积神经网络的计算框架,主要用于计算机视觉。Caffe 用 C++ 和 Python 实现,但可以通过配置文件来实现所要的网络结构,不需要编码「已被并入 PyTorch 中」 - TensorFlow:由 Google 公司开发的深度学习框架,可以在任意具备 CPU 或者 GPU 的设备上运行。TensorFlow 的计算过程使用数据流图来表示。TensorFlow 的名字来源于其计算过程中的操作对象为多维数组,即张量(Tensor)。TensorFlow 1.0 版本采用静态计算图,2.0 版本之后也支持动态计算图。
- PyTorch:由 Facebook、NVIDIA、Twitter 等公司开发维护的深度学习框架,其前身为 Lua 语言的 Torch3。PyTorch 也是基于动态计算图的框架,在需要动态改变神经网络结构的任务中有着明显的优势。
- 飞桨(PaddlePaddle)4:由百度开发的一个高效和可扩展的深度学习框架,同时支持动态图和静态图。飞桨提供强大的深度学习并行技术,可以同时支持稠密参数和稀疏参数场景的超大规模深度学习并行训练,支持千亿规模参数和数百个节点的高效并行训练。
- MindSpore:由华为开发的一种适用于端边云场景的新型深度学习训练 / 推理框架。MindSpore 为 Ascend AI 处理器提供原生支持,以及软硬件协同优化
- Chainer:一个最早采用动态计算图的深度学习框架,其核心开发团队为来自日本的一家机器学习创业公司 Preferred Networks。和 Tensorflow、Theano、Caffe 等框架使用的静态计算图相比,动态计算图可以在运行时动态地构建计算图,因此非常适合进行一些复杂的决策或推理任务。
- MXNet:由亚马逊、华盛顿大学和卡内基・梅隆大学等开发维护的深度学习框架。MXNet 支持混合使用符号和命令式编程来最大化效率和生产率,并可以有效地扩展到多个 GPU 和多台机器。
在这些基础框架上,还有一些建立在这些框架之上的高度模块化的神经网络库,其中比较有名的模块化神经网络框架有:
- 基于 TensorFlow 和 Theano 的 Keras
- 基于 Theano 的 Lasagne
- 面向图结构数据的 DGL
# 推荐阅读
- 斯坦福大学的 CS231n 和 CS224n 是两门非常好的深度学习入门课程,分别从计算机视觉和自然语言处理两个角度来讲授深度学习的基础知识和最新进展。
- 国际表示学习会议(International Conference on Learning Representations,ICLR):主要聚焦于深度学习。
- 神经信息处理系统年会(Annual Conference on Neural Information Processing Systems,NeurIPS):交叉学科会议,但偏重于机器学习。主要包括神经信息处理、统计方法、学习理论以及应用等。
- 国际机器学习会议(International Conference on Machine Learning,ICML):机器学习顶级会议,深度学习作为近年来的热点,也占据了 ICML 的很大比例。
- 国际人工智能联合会议(International Joint Conference on Artificial Intelligence,IJCAI):人工智能领域最顶尖的综合性会议。历史悠久,从 1969 年开始举办。
- 美国人工智能协会年会(AAAI Conference on Artificial Intelligence,AAAI):人工智能领域的顶级会议,每年二月份左右召开,地点一般在北美。
另外,人工智能的很多子领域也都有非常好的专业学术会议。在计算机视觉领域,有计算机视觉与模式识别大会(IEEE Conference on Computer Vision and Pattern Recognition,CVPR)和国际计算机视觉会议(International Comference on Computer Vision,ICCV)。在自然语言处理领域,有计算语言学年会(Annual Meeting of the Association for Computational Linguistics,ACL)和自然语言处理实证方法大会(Conference on Empirical Methods in Natural Language Processing,EMNLP)等。