科学网

 找回密码
  注册
科学网 标签 深度学习 相关日志

tag 标签: 深度学习

相关日志

[转载]深度学习在流程工业过程数据建模中的应用
Kara0807 2020-7-24 15:00
【摘 要】 深度学习是近年来发展的人工智能技术。相比于传统浅层学习模型,深度学习具有强大的特征表示和函数拟合能力。深度学习能够从海量数据中提取层次特征,其在流程工业过程数据驱动建模中具有较大的潜力和应用前景。首先简单介绍了深度学习的发展历程;然后,介绍了4类广泛使用的深度学习模型以及它们在流程工业过程数据建模中的应用;最后,在流程工业过程数据建模领域对深度学习进行了简要总结。 【关键词】 流程工业 ; 深度学习 ; 数据解析 ; 数据建模 【引用格式】 袁小锋,王雅琳,阳春华, 等. 深度学习在流程工业过程数据建模中的应用 . 智能科学与技术学报, 2020, 2(2): 107-115. YUAN X F, WANG Y L, YANG C H, et al. The application of deep learning in data-driven modeling of process industries . Chinese Journal of Intelligent Science and Technology, 2020, 2(2): 107-115. 1.引言 流程工业是我国的基础原材料工业,主要包括冶金、钢铁、化工、石油和造纸等行业。作为制造业的重要组成部分,流程工业是我国国民经济和社会发展的支柱产业。经过数十年的发展,我国流程工业的生产工艺、装备和生产过程自动化水平都得到了大幅提升。现今,我国已成为世界上门类最齐全、规模最庞大的流程工业大国。在德国“工业4.0”和美国的“再工业化”等战略背景下,我国流程工业生产正朝着智能制造的目标发展。 流程工业智能制造的关键是实现生产过程建模、控制、优化和决策的智能化。其中,过程建模是实现智能制造的基础,也是智能控制和优化的先决条件。由于现代流程工业过程的大规模化和复杂化,传统基于机理分析和专家经验的方法无法准确获取过程模型,不能满足产品质量预测、生产过程监测和故障诊断的准确性和实时性需求,这将严重导致过程控制、优化和管理决策的滞后。随着数据采集、网络通信和数据存储等技术的飞速发展,流程工业生产过程不断积累大量的数据,其中蕴含丰富的过程知识和价值信息,为数据驱动建模提供了数据基础。流程工业大数据具有高维非线性、高速多采样性、动态时序性等复杂特性,如何从生产过程大数据中挖掘和实现数据的真实知识和价值,并指导实际过程生产,是数据驱动建模的难点。 近年来,深度学习技术在互联网、信息通信、金融等领域取得了巨大成功,并正在深刻改变社会生活和世界格局 。深度学习通过深层网络结构对低等级特征进行变换或组合来获得更高等级的抽象特征,从而学习出具有层次结构的深度特征,具有更优异的特征学习能力和获取更本质的数据特征的能力。因而,深度学习在流程工业数据建模中有着广泛的应用。 本文主要集中于深度学习在流程工业数据建模中的软测量与故障诊断研究。软测量技术被广泛用于流程工业过程中的质量指标估计和预测,主要利用工业过程数据建立难以直接测量的质量变量与易于测量的过程变量之间的数学模型。利用该模型可以实现对难以测量的变量的实时在线预测。相比于传统的机理建模,建立基于深度网络的软测量模型不需要对工艺流程和机理有明确的认识,而且相较于浅层模型,深度学习模型具有更强的复杂函数逼近能力,故而能够很好地解决过程的非线性、时变性、动态性等问题,在质量预测任务中有更高的预测精度。故障诊断技术可分为故障检测(过程监测)、故障识别和分类等。在流程工业过程故障诊断领域,深度学习有广泛的应用前景。 过程监测通过收集工业过程中的历史数据,利用各种数据分析处理方法挖掘过程变量的重要信息,提取正常操作和故障条件下的数据特征表示,进而建立过程监测模型,对流程工业生产过程进行实时监测,判断生产过程是否存在异常,从而指导生产操作,确保生产的安全、稳定运行。如今,现代工业系统愈发复杂,使用基于解析模型和传统数据驱动模型的过程监控方法得不到满意的监测效果。目前,在现代工业工厂中,不同的操作单元可测量大量反映工业过程操作状态的变量,从而给基于深度学习的过程监测提供了契机。因此基于深度学习的过程监测可以从工业生产的大量过程数据中提取有用信息,用于判断系统的运行状态。 此外,还可以利用深度学习实现工业过程的故障诊断与分类,通过分析过程的历史数据发现设备运行中的异常,并分析故障情况,从而及时根据故障类别对设备进行维护,以保障设备的正常运行。现代工业生产中各种设备组件之间的复杂的、强耦合的相关关系以及各种复杂的环境因素使得故障的发生具有随机性、不确定性以及并发性等,传统的故障诊断方法难以解决上述问题,误诊概率较大。深度学习能够学习到数据的有用特征表示,发现数据的本质结构,学习到对任务有用的信息,因而在故障诊断中具有更高的精度。 随着深度学习技术在流程工业中的发展,深度学习在流程工业过程数据建模中具有巨大的潜力,将进一步在流程工业智能化中发挥巨大的推动作用。本文主要阐述深度学习的发展历程、典型深度学习模型及其在流程工业中的应用,并对深度学习在流程工业过程数据建模领域的工作进行简要展望。 2. 深度学习发展历程 深度学习作为机器学习的重要发展产物,其发展历程与机器学习密不可分。在深度学习之前,机器学习领域已发展出了各种学习模型,如以主成分分析(principal component analysis,PCA)和偏最小二程(partial least squares,PLS)回归等为代表的线性模型,以支持向量机(support vector machine, SVM)、核方法等为代表的非线性模型。相比而言,传统的机器学习方法大多属于浅层学习模型,其模型结构一般不超过一个隐藏层。浅层学习模型能够有效地解决一些情况简单或条件简单的问题。但是在面临一些更复杂的问题时,浅层学习模型的函数表达能力和建模效果将受到限制,无法满足复杂场景下的建模要求。 深度学习是一种多层次结构学习模型,其通过对原始信号进行逐层非线性特征变换,将样本在原空间的特征表示变换到新的特征空间自动地学习层次化的特征表示,从而更有利于解决分类或回归等特定问题。深度学习是人工神经网络的一个重要分支,具有深度网络结构的人工神经网络是深度学习最早的网络模型。总体而言,人工神经网络的发展经历了3个阶段。 第一阶段:人工神经网络思想起源于 1943 年的人工神经元数学模型 ,该模型希望能够使用计算机来模拟人的神经元反应的过程。1958 年, Rosenblatt 提出了感知器(perceptron)算法,并提出利用 Hebb 学习规则或最小二乘法来训练感知器的参数,该模型被用于解决多维数据二分类问题。1969年,美国数学家Minsky 在其著作中证明了感知器本质上是一种线性模型,只能处理线性分类问题,不能处理非线性分类问题。自此之后的十几年,神经网络的研究陷入了一段低潮时期。 第二阶段:在1974年,Werbos 提出采用反向传播法来训练一般的人工神经网络。1986年,加拿大多伦多大学的Hinton教授等人 在其基础上设计了适用于多层感知器(multi-layer perceptron,MLP)的反向传播算法,并采用Sigmoid激活函数进行非线性映射,有效解决了非线性分类和学习的问题。自此,神经网络进入第二次研究热潮。但是,反向传播算法对具有多隐含层的神经网络的模型参数的学习效果并不好,基于梯度下降的反向传播法很容易在训练网络参数时收敛于局部极小值。因而,部分研究学者开始探究通过改变感知器的结构来改善网络学习的性能。1995年,Vapnik教授等人 提出了著名的支持向量机(SVM)模型,并发展出了核技巧的 SVM 模型,在非线性分类问题上取得了比神经网络更突出的效果。因而,神经网络的研究又进入了一段寒冬时期。 第三阶段:2006年,Hinton教授等人 首次提出了深度学习技术,通过无监督逐层预训练和有监督训练微调,能够有效地解决深层网络训练过程中的梯度消失和梯度爆炸问题。2012年,以卷积神经网络(convolutional neural network,CNN)为基础的 AlexNet 模型 在国际 ImageNet 图像识别比赛中一举夺冠,极大地降低了图像识别的错误率。自此,深度学习受到各个领域研究人员的关注,并再次引领了 人工智能 的研究热潮。 3. 深度学习模型及其在流程工业中的应用 3.1 深度置信网络 深度置信网络(deep belief network,DBN)是最早提出的深度学习模型,是一种无监督概率生成模型。DBN 由多个受限玻尔兹曼机(restricted Boltzmann machine,RBM)堆叠而成,其基本结构如图1所示 。其基本组成单元——受限玻尔兹曼机是一种由可见层和隐藏层组成的基于能量的概率图模型,对于一组给定的状态 (v,h) ,其能量函数 E(v,h) 可表示为: 其中, v 和 a 分别为可见层的状态向量和偏置向量, v = ( v 1 , v 2 ,…, v i ,…, v m ) , a = ( a 1 , a 2 ,…, a i ,…, a m ) , h 和 b 分别为隐藏层的状态向量和偏置向量, h =( h 1 , h 2 ,…, h j ,…, h m ) , b = ( b 1 , b 2 ,…, b j ,…, b m ) , w 为隐藏层和可见层之间的权值矩阵, w = { w ij } 。 图1DBN的基本结构 由上述能量函数可给出状态 (v , h) 的联合概率分布: 其中,参数集合 θ ={ v , h , a , b , w } ,Z θ 为θ的配分函数, E θ ( v , h ) 为θ的能量函数,其与能量函数 E ( v , h ) 在数学计算上并无本质不同。 由此,可计算得到对应 v 和 h 的边缘分布(似然函数): 因此,在给定可见层或隐藏层的神经元状态时,可计算对应隐藏层或可见层的神经元被激活(即取值为1)的概率: 其中,f(.)为激活函数。 最后,采用最大化似然函数的方法求解得到RBM 的参数,使得在该参数下得到的概率分布尽可能与样本的分布一致。为简化该计算过程,优化过程使用了对比散度(contrastive divergence,CD)算法。其原理是:通过隐含层对样本数据进行特征提取,并对可视层和隐含层神经元进行吉布斯(Gibbs)采样。在CD-k算法中,参数k为执行步数,训练RBM时k的值通常设为1,RBM执行一步对比散度计算后的权值增量为: 由输入层、隐藏层和输出层组成 DBN 模型的训练可分为无监督逐层预训练和有监督微调2个步骤。在无监督逐层预训练阶段,主要通过逐层贪婪训练方法对多个受限玻尔兹曼机进行逐层训练,单个RBM训练时的参数更新过程如式(8)~式(10)所示。首先从输入层引入原始输入数据,由输入层和第一隐藏层组成第一个受限玻尔兹曼机RBM-1,通过最小化RBM-1的可视层观测数据的能量函数对其进行预训练。RBM-1预训练完成后,再将其隐藏层的输出作为 RBM-2 的输入,继续对 RBM-2进行预训练。以此类推,可逐层对整个 DBN 进行预训练。在整个预训练中,只用了输入数据,而未涉及数据标签,因而该过程被称为无监督预训练。预训练完成后,在 DBN 模型顶层加上特定任务的输出层,将预训练阶段的权重参数作为整个网络的初始参数,以数据标签信息最小化为目标,通过反向传播算法可对整个网络参数进行微调整。 通过无监督逐层预训练和有监督微调,DBN可对原始输入数据的深层抽象特征进行学习,其在流程工业过程软测量、过程监测和故障诊断等方面有广泛应用。例如,Shang 等人 建立了基于 DBN的软测量模型,其分析了深度学习模型相较于传统机器学习模型在流程工业过程软测量建模方面的优势,并将其用于原油蒸馏装置中柴油95%分馏点的预测,实验结果证明 DBN 能够取得比传统方法更好的预测效果。刘瑞兰等人 建立了基于深度置信网络的精对苯二甲酸(pure terephthatic acid, PTA)工业生产过程中4-CBA预测的软测量模型。康岩等人 提出了基于 DBN-ELM 的球磨机料位软测量方法。Liu等人 提出了基于DBN的燃烧系统氧含量预测方法,其通过设计多层 DBN 结构,提取燃烧系统火焰图像的多层特征描述来估计氧含量。Yuan等人 建立了基于DBN的冶金烧结过程的烧结成品矿成分含量预测模型,其提出的深度置信网络模型通过多层特征提取,挖掘出数据的本质特征,利用远超浅层网络的复函数逼近能力较准确地完成了基于复杂工业数据的质量预测建模;在故障检测与诊断方面,Zhang等人 提出了基于深度置信网络的化工过程故障诊断模型。针对高炉冶炼系统复杂性特点,结合深度学习在处理复杂分布数据、提取特征等方面的优势,赵辉等人 提出了一种基于深度置信网络模型的高炉炉况分类方法。葛强强 针对目前多维时间分类方法没有考虑多维时间序列变量之间重要性联系以及不同样本矩阵约减后维数不完全对应的问题,将共同主成分分析(common principle component analysis,CPCA)和动态时间规整(dynamic time warping,DTW)方法引入DBN模型,提出了基于CPCA_DTW_DBN 的多维时间序列故障诊断方法,在公开数据集和田纳西-伊斯曼过程故障案例中取得较好的分类效果。Wang等人 提出了一种扩充DBN模型的化工过程故障分类模型,在预训练阶段通过逐层加入原始数据信息,可以更有效地提高特征提取和故障分类预测能力。 3.2 堆栈自编码器 深度学习策略在DBN上取得成功后,该思想被进一步延伸到其他深度网络。通过将DBN结构中的基本RBM模块替换成自编码器(autoencoder,AE)单元,构成了堆栈自编码器(stacked autoencoder, SAE)深度网络。图2分别给出了AE和SAE 的基本结构。其中,AE 是单隐含层神经网络,且输出层重构其自身输入变量。在自编码器中,输入层到隐藏层部分称为编码器,隐藏层到输出层部分称为解码器。编码器将输入数据x由非线性函数f 编码为隐层特征h,解码器利用非线性函数 ˜f 将h解码为 ˜x 。因此,自编码器的目标函数为: 其中, W 、 b 分别为编码器的权值矩阵和偏置向量; ˜ W 、 ˜ b 分别为解码器的权值矩阵和偏置向量;N 是样本总数,x i 和 ˜ b 分别为样本值和自编码器的输出值。AE 以最小化输出层对其输入数据的重构误差为目标,通过反向传播算法进行网络参数训练和学习。因而,AE 是一个无监督特征自学习网络。类似于DBN,SAE深度网络的训练也分为无监督逐层预训练和有监督微调2个步骤。在无监督逐层预训练阶段,网络从底层第一个 AE1 开始训练,训练完后将其隐藏层的输出作为AE2的输入,并对AE2进行训练。以此类推,逐层训练,直至最顶层AEK训练完成。预训练完成后,各AE的编码器部分被保留在SAE网络中,然后利用数据标签对整个网络进行有监督微调。 图2AE和SAE的基本结构 堆栈自编码器模型不依赖于过程标签数据,能够通过无监督逐层预训练获取海量输入数据的层次特征表示,其也被广泛用于流程工业过程数据建模。例如,针对原始SAE预训练学习无法学习与质量变量相关的深度特征,Yuan等人 提出了变量加权SAE、混合变量加权SAE 和堆栈质量驱动编码器 等模型的软测量方法,将输出的标签信息以不同形式引入网络预训练过程,可引导网络学习到与输出指标相关的层次特征,从而提高软测量模型的预测精度。邱禹等人 提出了基于 SAE 深度学习的多输出自适应软测量建模方法。在过程监测与故障诊断建模中,Kong 等人 提出了基于正则化自编码器的数据深度特征表示,并用于工业过程监测。Yan等人 提出了教师和监督双重堆叠自动编码器模型,用于提取与质量相关的特征学习和工业过程故障监测。Yan等人 提出用带标签的自编码器对神经网络进行监督,并结合k近邻算法进行可视化工业过程监测。蒋立 提出了一种鲁棒自编码器模型及其故障检测方法以及一种基于反向传导的贡献度计算及其故障识别方法,可提高模型的重构误差对故障的灵敏度,且能避免对故障来源的错误识别。针对实际炼铁过程,Zhang等人 提出了一种基于去噪自编码器的监控方法,该方法考虑了2 台不同的主热风炉之间切换引起的峰值扰动,并将所提方法在冷炉故障对应的数据上进行了验证。Zhang等人 提出了一种堆叠去噪自编码器和 k 近邻规则的非线性过程监测方法,该方法利用堆叠去噪自编码器对非线性过程数据进行建模,并自动提取关键特征,然后通过堆叠自编码器将原始非线性空间映射到特征空间和剩余空间,通过引入k近邻算法,构造了上述空间中的2个新的统计量,并在一个非线性数值系统和TE基准过程中验证了该方法的有效性。 3.3 卷积神经网络 CNN是一种前馈型神经网络,该网络由卷积层和池化层交替堆叠而成。卷积神经网络是目前深度学习领域研究较广泛的模型之一,其在图像处理方面有突出的优势。图3给出了卷积神经网络的结构 。在卷积层中,通过多个卷积核在输入数据中进行有规律的平移滑动,获得其低维表示的特征图。卷积核所处的输入数据的各个位置被称为感受野(receptive field)区域,其类似于视觉皮层细胞的感受野。卷积核的数量等于输出特征图的数量。假设输入特征图的宽和高分别为w 1 和h 1 ,n个卷积核的宽和高均为f,那么将得到n个输出特征图的宽w 2 和高h 2 为: 其中,p为在输入特征图周围的零填充数,s为卷积核的步长。卷积运算是卷积核权值和感受野对应元素的加权和,输出特征图在坐标(i,j)的值定义为: 图3卷积神经网络结构 其中,w kl 为卷积核在坐标(w,l)处的权重, x ( k + i × s )( l + j × s ) 为输入特征图在坐标(k+i×s,l+j×s)处的值,w 2 、h 2 分别为输出特征图的宽和高。 在卷积层进行特征提取后,输出的特征图将被传递至池化层进行特征选择和信息过滤。池化层包含预设定的池化函数,其功能是将特征图中单个点的结果替换为其相邻区域的特征图统计量。常见的池化操作有最大池化、平均池化等。池化操作没有任何参数,并且可以对池化层的输入特征进行进一步降维,因此池化层有利于降低网络的参数规模。将多个卷积层和池化层进行交替堆叠后,可构建深度 CNN 结构。CNN最高隐藏层输出的特征将被展开,并经过全连接层到达网络输出层,用于特定建模任务。不同于DBN和SAE等全连接神经网络,CNN 具有强大的局部特征学习能力,因而在局部特征学习方面有着比其他算法更高的优越性。 相较而言,CNN在大型二维图像处理研究领域取得了巨大的成功,因而,CNN也被用于流程工业过程图像处理相关研究。例如,Horn等人 将卷积神经网络应用于泡沫浮选过程中基于图像的软测量建模。但是,目前针对流程工业中过程变量数据的 CNN 建模较少,其主要原因在于流程工业过程的采样数据是以向量形式存在的,而不是二维数据形式。然而,通过对一维数据进行二维动态扩充, CNN 能够有效地对流程工业过程数据进行局部动态特征学习。例如,易令等人 利用 CNN对国内某炼油厂的原油总氢物性进行回归预测。Wang 等人 提出了将优先脉冲响应和 CNN 结合的有限冲激响应卷积神经网络用于动态过程软测量建模,并将该模型用于仿真算例和化工过程,结果显示有限冲激响应卷积神经网络能给出与质量相关的变量的最佳预测精度和最易解释的趋势。Wu 等人 通过数据动态扩充,提出了基于 CNN 模型的化工过程故障诊断与分类方法。苏堪裂 研究了基于卷积神经网络的化工过程故障诊断。Lee等人 提出了基于 CNN 网络的半导体生产过程故障分类与诊断方法,这种方法使得第一卷积层的输出与原始数据的结构相关联,由此能够定位表示过程故障和时间信息,在一个化学气相沉积过程的实验中,该方法要优于其他深度学习模型。 3.4 循环神经网络 循环神经网络(recurrent neural network,RNN)是一类以序列数据为输入,在序列的演进方向进行递归且所有节点按链式连接的神经网络。图4(a)给出了RNN模型的基本结构。不同于前述DBN、SAE、CNN 等模型,RNN 模型是一种时间序列模型,模型中样本之间具有时间关联性。而 DBN、SAE、CNN等模型的基本假设是数据之间不存在时间相关性,即所有样本服从独立同分布假设。因此,在 RNN 结构中,每个神经元不但可以接收当前时刻的信息,还可以接收其前面时刻的信息,形成具有环路的网络结构。假设当前时刻t的输入为x (t) ,前一时刻的隐状态为h (t1) -,则可以计算出当前时刻RNN单元的隐状态为: 其中, W 和 V 为网络的参数矩阵, b 为偏置向量, tanh(.)为非线性激活函数。 由隐状态可得到当前时刻t的质量变量预测值: 其中, U 为输出层的权值参数矩阵, b y 为输出层的偏置向量。 由于时间上的关联性,RNN参数的训练与前述深度网络训练方式不同,RNN采用基于时间的反向传播算法来学习,即按照时间的逆序把误差一步步往前传递。RNN是一种具有短期记忆能力的神经网络,其无法解决长期依赖问题,即当输入序列较长时,容易产生梯度爆炸或梯度消失问题 。为了有效缓解该问题,在 RNN 的基本结构中引入了记忆细胞和门控机制,用于对历史信息进行存储以及选择性记忆。典型的基于门控机制的改进 RNN 模型包括长短期记忆(long short-term memory,LSTM)网络 和门控循环单元(gated recurrent unit,GRU) 等, 图4 (b)为基本LSTM单元的结构。f、i、o分别表示LSTM 单元的遗忘门、输入门和输出门。假设当前时刻的输入为x (t) ,前一时刻的隐状态为h (t1) -,前一时刻记忆单元的输出为 c ( t − 1 ) ,则遗忘门、输入门和输出门的输出为: 其中, W ∗ x 和 W ∗ x 分别为 3 个控制门与输入信息和前一时刻隐状态之间的连接权值矩阵, b f 、 b i 、 b o 为相应的偏置向量,σ(⋅)为Sigmoid激活函数。当前时刻的候选输入信息为: 其中, b c 为当前时刻的偏置向量。 图4RNN模型和LSTM单元的结构 由此可更新LSTM单元的记忆细胞,并得到当前时刻的隐状态输出: 由于复杂物理化学反应机理、反馈控制和动态噪声等因素,流程工业过程本身具有自然的动态特征属性。因而,通过连续采样获得的过程数据具有较强的时间关联性。为了描述过程时序动态特性,基于 RNN 的深度学习模型也被广泛用于流程工业过程数据建模。最开始,Su 等人 将并行方法和RNN 结合的外部循环网络用于炼油厂污水生物处理及催化重整装置;Chen等人 将RNN用于生物量浓度的在线预测,网络的输入变量为进料量、液体体积和溶解氧浓度,试验结果的精度为±11%;Zhao等人 针对焦炉煤气运行优化问题,提出了基于高斯过程的长短期记忆网络,实现了对煤气实时流量和煤气柜液位的实时预测。近几年,随着经济的快速发展,人们对生产过程的经济、高效、安全提出了更高的要求,使得LSTM在流程工业软测量建模中得到了更加广泛的应用。例如 Fu 等人 针对影响石灰石/石膏湿法烟气脱硫效率的主要因素,采用LSTM建立了脱硫效率预测模型;Han等人 为了准确分析和评价乙烯生产装置在工业过程中的能源效率状况,提出了一种基于双向长短期记忆(bidirectional long short-term memory,Bi LSTM)网络的产量预测方法;Yuan等人提出了基于有监督LSTM网络 和变量注意力机制LSTM网络模型 的非线性动态过程软测量建模方法。Wang 等人 将LSTM用于批次过程每个阶段的长时间序列中,用于提取与质量相关的隐藏特征,并对产品质量进行预测建模。Sun等人 提出了基于DBN和RNN的概率序列网络,并将其用于复杂过程数据软测量建模。Kataria等人 成功地将一种基于RNN的软测量模型用于反应精馏塔的监测和控制系统。 4.结束语 大数据时代的到来使得数据驱动建模在流程工业智能工厂建设中发挥着至关重要的作用。深度学习作为大数据处理的核心技术之一,能够从海量过程数据中挖掘和学习到有用的层次特征表示,从而有效地提高数据驱动模型的性能。本文首先简单回顾了深度学习的发展历程,然后介绍了目前4种较为流行的深度学习基本模型,并对各个模型在流程工业过程数据建模中的应用进行了简要概述。 深度学习作为机器学习的一个新领域,现在仍处于蓬勃发展时期。由于深度学习具有强大的数据处理和特征学习能力,其在流程工业过程数据建模中取得了一定的成效。但是,深度学习在流程工业过程这一特定领域的应用还有许多问题值得研究者们进一步深入探索和研究。例如,流程工业过程往往具有缓慢时变特性,其操作条件和数据模式也随着过程运行而不断发生改变。深度学习模型的性能在过程时变特性下将一步步退化,如何有效维持并提高过程时变特性下深度学习的建模精度和性能,是未来深度学习在流程工业研究领域的一个难点。此外,由于流程工业过程数据的动态时序性,数据样本之间存在较强的时间相关性。因而,如何建立有效的流程工业过程时间序列模型将是未来深度学习在本领域的重点研究方向之一。
个人分类: 智能科学与技术学报|1112 次阅读|0 个评论
机器学习、计算机视觉的小伙伴看过来:更新新模块(IEEE 预印本已火,年热度top6):梯度感受野-替换卷积?
Time 2020-7-22 10:12
梯度感受野: 人在看东西时, 视野是有梯度的! 现有神经网络卷积丢失了这一梯度,损失了位置信息。本模块补全; 群编码:基于梯度编码,实现大脑网络模拟。 B站视频讲解:https://www.bilibili.com/video/BV1RV411B7aD/
个人分类: 刘刚的个人主页|1865 次阅读|0 个评论
神经网络(相声)
热度 4 zhuyucai1 2020-6-30 13:10
小神经 :大数据呀!神经网络!深度学习! 老前浪 :干什么呢,神经嘻嘻的? 小神经 :大数据呀!神经网络!深度学习! 老前浪 :喂,小神经,醒醒。 小神经 :是你啊,老前浪。刚从沙滩上遛弯回来? 老前浪 :嗯呀。最近做什么呢? 小神经 :您还不知道吧,我们在干神经网络。 老前浪 :哦? 小神经 :现在神经网络可流行了,席卷全球! 老前浪 :流行你就跟着干? 小神经 :那当然了。流行的就是好东西,最流行的就是最好的东西。 老前浪 :新冠病毒最流行,你也来点? 小神经 :不要,不要。 老前浪 :神经网络怎么就那么好? 小神经 :这个,说来话长。 老前浪 :慢慢讲,小神经。 小神经 :牛顿发现了万有引力定律,伟大吧? 老前浪 :对。 小神经 :为了搞清牛顿是怎么想出万有引力定律的,我们把牛顿的天灵盖打开。。。 老前浪 :盗墓啊! 小神经 :谁盗墓了?打开天灵盖,往里一看,哇!牛顿的大脑是一个神经元网络啊。 老前浪 :搞清牛顿是怎么想出万有引力定律的? 小神经 :嗯没有。。。爱因斯坦发现了相对论,辉煌吧? 老前浪 :嗯。 小神经 :为了搞清爱因斯坦是怎么发现的相对论,我们把爱因斯坦的天灵盖打开。。。 老前浪 :又盗墓啊! 小神经 :没盗墓,老爱自己捐献的。打开往里一看,哇!爱因斯坦的大脑也是一个神经元网络。 老前浪 :搞清楚爱因斯坦是怎么发现相对论了? 小神经 :嗯没有。。。维纳提出了控制论,卓越吧? 老前浪 :是的。 小神经 :为了搞清维纳是怎么发现控制论的,我们把维纳的天灵盖打开。。。 老前浪 :打开往里一看,哇!维纳的大脑又是一个神经元网络。 小神经 :您怎么知道的? 老前浪 :跟你学的呗。 小神经 :我们就想,既然这些伟大科学家的脑子都是神经元网络,我们干脆把所有的对象当作一个神经元网络来研究,简称神经网络。 老前浪 :神经网络。。。听起来跟神经病网络差不多。 小神经 :这怎么讲? 老前浪 :你把一头蠢驴的天灵盖打开,往里一看,还是一个神经元网络。 小神经 :这个。。。不跟您计较。现在,不管研究什么系统,我们就收集大数据,建立神经网络,进行深度学习。 老前浪 :“大数据呀!神经网络!深度学习!” 小神经 :对对,就是这样。 老前浪 :能解决问题吗? 小神经 :能,无所不能。 老前浪 :举个成功的例子。 小神经 :不止一个呢。比如图像识别呀,语音识别呀。 老前浪 :这个我知道,不就是瞎猫抓了两只死老鼠吗。 小神经 :后来还抓了个阿尔法狗。 老前浪 :三只死老鼠。 小神经 :从此以后大风起了,猪都飞了,瞎猫变成大眼睛猫。。。 老前浪 :还双眼皮呢。 小神经 :对,大明星呀。 老前浪 :抓完死老鼠,瞎猫还是瞎猫。 小神经 :老前浪,您真是顽固不化。 老前浪 :所以只能天天在沙滩上遛弯儿了。 小神经 :神经网络可厉害了,现在我们有神经医生、神经律师、神经会计师。。。 老前浪 :够神经的。 小神经 :老前浪您是做什么的? 老前浪 :流程工业自动化。 小神经 :流程工业也能神经呀。 老前浪 :是吗?讲讲怎么神经的。 小神经 :工业锅炉,流程工业吧? 老前浪 :对。 小神经 :我们对着锅炉,“大数据呀!神经网络!深度学习!”。。。啪! 老前浪 :怎么啦? 小神经 :节煤 3% 。 老前浪 :够多的! 小神经 :你们自动化能节煤 3% 吗? 老前浪 :不能。 小神经 :服不服吧! 老前浪 :你们投自动闭环了吗,厂里在用吗?带我去看看。 小神经 :网上可以看。 老前浪 :网上的不可靠。 小神经 :化学反应器,流程工业吧? 老前浪 :是。 小神经 :我们对着反应器, “大数据呀!神经网络!深度学习!” 。。。啪! 老前浪 :怎么啦? 小神经 :提高合格率 4% 。 老前浪 :够高的! 小神经 :服不服吧! 老前浪 : 你们投自动闭环了吗,厂里在用吗?带我去看看。 小神经 :网上可以看。 老前浪 :不回答问题。 小神经 :垃圾焚烧炉,流程工业吧? 老前浪 :我替你说。我们对着焚烧炉, “大数据呀!神经网络!深度学习!” 。。。啪! 小神经 :怎么啦? 老前浪 :提高产量 5% 。 小神经 :够高的! 老前浪 :服不服吧! 小神经 :你们投自动闭环了吗,厂里在用吗?带我去看看。 老前浪 :网上可以看。 小神经 :不回答问题。。。哎,我怎么掉你坑里了。
4150 次阅读|8 个评论
突然发现我是IEEE预印版paper总点击top1
热度 1 Time 2020-6-23 01:14
莫名兴奋! https://www.techrxiv.org/articles/It_may_be_time_to_perfect_the_neuron_of_artificial_neural_network/12477266
2707 次阅读|1 个评论
向深度学习三剑客学习四种科研精神(下)
热度 4 dwchen 2020-6-16 08:57
向深度学习三剑客学习四种科研精神(下) 陈德旺 众所周知,深度学习算法是人工智能(AI)第三次复兴的关键所在,不仅体现在快速增长的研究项目和发表论文。 如果仅仅是研究项目和发表论文, 深度学习很可能是昙花一现 , 难以持久 。更重要地是体现在人工智能产业的兴起, 各种AI实际应用如雨后春笋,在全球大规模展开 。国内外著名IT大公司,几乎都转型为AI公司,有的公司甚至喊出了“All in AI(全部都在人工智能)”的口号。 AI广泛深度应用有效提高了产品的效能,服务的质量和公司的盈利。 现在AI渗透到各行各业,深度学习三剑客不仅仅是享誉世界的计算机科学家,更是AI产业复兴的开拓者和先行者。他们没有 陷入“搞项目为了发论文,发论文为了搞项目“的自我陶醉和循环中 , 好像学习了毛泽东主席的“将革命进行到底”的文章,誓将深度学习进行到底 。为了证明他们研究的深度学习算法确实有用,他们不止步于论文, 虽经常面对非议,仍毅然砥砺前行 。他们不仅亲自编码并开源,还开发深度学习算法包,身体力行帮助产业界发展,最终推动了智能产业的巨大飞跃。 这与我国的袁隆平先生研究杂交水稻,一直坚持到底,直到杂交水稻大规模播种,还继续在田间地头进行研究实践的精神如出一辙。 4. 重视产业应用的科研落地精神 Hinton 和他的 2 名研究生在 2012 年成立了 DNN Research (深度神经网络研究) 公司。 该公司成立的主要目的就是要推广他们在 ImageNet 大赛中所采用的深度卷积神经网络技术。 2013 年, 该公司就被市场嗅觉敏锐的谷歌公司高价收购了。之后, Hinton 领导谷歌的 AI 团队,将“深度学习”从边缘课题变成了谷歌等互联网巨头依赖的看家本领 。 再之后,谷歌就有了家喻户晓的 AlphaGo 等新技术,不得不让人浮想联翩。因此,学者只要能放下身段,深入实际,是有可能搞出核心技术,并推动产业发展和社会进步的。我国最近密集出台多项政策对“唯论文说不”,相信将对我国科技的未来和核心技术的掌握影响深远。 作为 Hinton 志同道合的合作者和坚定不移的追随者, LeCun 也具有将深度学习进行到底的精神和毅力。他花费大量时间和精力,亲自制作了包括 7 万张图片的 MNIST 手写体识别数据集并编写了 CNN (卷积神经网络)代码,极大提高了手写体识别的精度和效率。 该数据集也是机器(深度)学习算法的试金石和垫脚石。 2013 年底,他被任命为 Facebook 人工智能实验室主任和首席科学家,他在纽约大学的职位也从终身教授变更为兼职教授。最近几年,Facebook的快速发展充分证明了LeCun的突出贡献。 2016 年之前, Bengio 虽担任了几家大公司的学术顾问,但他更多的精力还是耕耘在学术界。 看到其他2位剑客在产业界做的风生水起,他在2016年也终于下海试水了,而且步伐更大。Bengio和几位朋友一起创立了创业公司 Element AI 。 该公司的使命是赋能 AI 优先的商业 ,支持 Bengio 实验室和其他顶尖大学的研究人员每月为企业工作数小时,同时保留学术职位,以更好地实现理论研究和产业应用的相互促进。 总之,荣获图灵奖的深度学习 三剑客身体力行了“将科研进行到底“的精神,完成了从理论研究到核心技术再到产业化的完美历程 ,并启示我们:好的研究成果是有用的,好的研究是可以形成核心技术并实现产业化的,科学家是可以改变世界的, 只要我们能坚定不移,坚持不懈并砥砺前行 。 作者简介:陈德旺,IEEE高级会员, IEEE Trans.on ITS 编委, 中国自动化学会混合智能专委会副主任,中国运筹学会智能计算分会副理事长,美国加州大学伯克利分校访问学者, 福州大学数学与计算机科学学院教授、博士生导师,主要研究方向为人工智能、大数据和智能交通等。至今发表论文120余篇,其中SCI检索论文40余篇,IEEE Transaction论文13篇,他引3000余次 ;获得各类科研奖励10多项。 参考文献: 1) 陈德旺, 向深度学习三剑客学习四种科研精神(上) http://blog.sciencenet.cn/home.php?mod=spaceuid=57940do=blogid=1237134 2) 陈德旺, 向深度学习三剑客学习四种科研精神(中) http://blog.sciencenet.cn/blog-57940-1237499.html
个人分类: 深度学习|9656 次阅读|21 个评论
向深度学习三剑客学习四种科研精神(中)
热度 4 dwchen 2020-6-12 07:07
向深度学习三剑客学习四种科研精神(中) 陈德旺 深度学习三剑客Hinton, LeCun和Bengio,经过长时间的反复讨论,相互辩论和编码实现,终于合力搞定了深度神经网络学习算法这个怪兽。他们的贡献,主要体现为以下三个方面的新思路:1)利用新的激活函数ReLu等解决了梯度消失或发散问题;2)利用卷积运算和参数共享解决了高维图像的特征提取和降维问题;3)利用逐层训练和Dropout等技术解决了网络参数太多,训练时间长,容易过拟合等问题。如同神勇无敌的唐朝大将军薛仁贵“三箭定天上“,深度学习三剑客三箭齐发,终于合力搞定了深度学习算法,实现了对深度神经网络的多层庞大参数的学习和调整。 3. 注重编码实现和开源的实干开放精神 深度学习与其说是一种理论,不如说是一种高超的编程技术。深度学习的实现需要大数据,GPU(图形处理器)和深度学习算法同时发力,对深度神经网络的几百万,几千万的参数进行学习,不断降低误差,达到非常高的精度,在图像识别,语音识别和下围棋等领域都超过了人类专家。 LeCun亲手制作了被Hinton称为“机器学习界的果蝇”的经典数据集MNIST,并亲自编程实现了LeNet5网络, 点燃了深度神经网络再度复兴的希望 。Hinton年纪虽然有些大了,但有亲自实现BP算法的丰富编程经验。“老骥伏枥,志在千里“,在Hinton的循循善诱下,他的研究生Alex 编写出了著名的AlexNet网络,一举取得ImageNet大赛的冠军,并遥遥领先于第二名, 标志着深度神经网络的第三次再度兴起。 Bengio也是编程实现的高手,率先带领了团队开发了深度学习算法库Theano,使得我们使用深度学习算法变得非常方便, 极大地推动了深度神经网络的推广和普及。 三剑客既各有所长,又相互补充,你中有我,我中有你,才形成了深度学习完整的理论体系和算法实现,因此分享图灵奖是非常合理的。历史上,图灵奖一般来说,1年只发给1人,很少发给2人,据我所知,这是第1次发给3人。 他们这种“亲力亲为,止于至善”的工匠精神非常值得我们科研人员学习 。我国传统文化的坐而论道思维其实对今天科技的发展有一定阻碍作用。 尤其值得称道的是,这三位大专家不仅是埋头苦干的编程实干家,更是胸怀宽广的计算机科学家。在他们的个人网页,可以找到各种学习资源,从论文到PPT,从数据集到代码,均可下载,毫无保留。这种公开开放的精神,给深度学习的推广以非常大的助力。 这就像一个武林高手公开了自己的武功秘籍和练功方法,不怕别人超越,也欢迎别人超越, 比金庸笔下阴险毒辣,独占秘笈的东方不败和隐居山林,后继乏人的独孤求败境界要高很多。 作者简介:陈德旺,IEEE高级会员, IEEE Trans.on ITS 编委, 中国自动化学会混合智能专委会副主任,中国运筹学会智能计算分会副理事长,美国加州大学伯克利分校访问学者, 福州大学数学与计算机科学学院教授、博士生导师,主要研究方向为人工智能、大数据和智能交通等。至今发表论文120余篇,其中SCI检索论文40余篇,IEEE Transaction论文13篇,他引3000余次 ;获得各类科研奖励10多项。 参考文献: 1) 陈德旺, 向深度学习三剑客学习四种科研精神(上) http://blog.sciencenet.cn/home.php?mod=spaceuid=57940do=blogid=1237134
个人分类: 科技创新|8827 次阅读|24 个评论
清华大学雨课堂主讲嘉宾邹晓辉大综合公益课直播回放 第九课 人工智能之魂
geneculture 2020-6-10 18:44
https://www.bilibili.com/video/BV1j5411W7DA/ 一键搞定视听回放
个人分类: AI系列|1260 次阅读|1 个评论
向深度学习三剑客学习四种科研精神(上)
热度 5 dwchen 2020-6-9 14:57
向深度学习三剑客学习四种科研精神(上) 陈德旺 深度学习,尤其是深度神经网络学习算法的兴起和大数据的加持,结合GPU的算力,如同 “三英战吕布”,终于搞定了人工智能这一反复无常的“吕布”, 使得人工智能得以第三次复兴。 如今,人工智能技术向各行各业渗透,智能产业的发展正如火如荼。 饮水思源,我们不能忘记,提出深度学习核心算法并于2019年获得图灵奖的三位英雄:深度学习三剑客: Hinton, LeCun 和Bengio. 尤其,是要向他们学习以下四种创新精神,以更好地实现我国创新能力的提升。 1. 坚持神经网络研究三十年的坚定执着精神 Hinton, LeCun 和Bengio虽然在不同的国家,处于不同的阶段, 从20世纪八十年代开始,不约而同就对人工神经网络,尤其是神经网络学习算法,非常感兴趣。Hinton年纪较大,在另外2位还在读上大学或读研究生的时候,Hinton已经博士毕业,到斯坦福大学做博后了。1986年,Hinton与美国科学院院士Rumelhart等在Nature 上发表论文,提出了著名的BP(反向传播)算法: 多层神经网络参数学习算法,引起了神经网络第二次复兴的浪潮。 该经典论文至今已经被引用2万多次。 这次复兴之后,基于BP算法的神经网络解决了很多问题,相关研究和论文呈现井喷状态。 可惜,好景不长在。几年后,研究人员发现:BP算法虽然好用,但也存在收敛速度慢,容易陷入局部最小值和网络的初始化参数密切相关。尤其,由于训练时间太长,训练参数太多,内存经常溢出,难以处理如图像识别这类高维度和大量样本数据问题。于是,神经网络的研究陷入了第二次低潮: 很难拿到课题,很难发表论文 ,很多研究人员就放弃了,转向别的研究方向。 但是,Hinton不气馁,始终坚持研究方向不动摇,苦思冥想破解之道不懈怠, 转移到加拿大多伦多大学继续开展研究。在共同发明BP算法20年后,2006年Hinton,通过深度思考和编程实践,终于想出了针对高维数据的破解之道,在Science上发表了用神经网络减少数据维度的新方法,为深度学习的兴起奠定了理论基础,至今被引用1万余次。 之后,深度神经网络的发展可谓波澜壮阔,气势如虹。由于篇幅关系,就不逐一描述了。 2. 合作与争论并重的和谐团队精神 1987 博士毕业后,LeCun 去加拿大多伦多大学,追随神经网络的旗手人物Hinton 做了一年的博士后。在Hinton的启发和指导下,LeCun提出卷积神经网络用于手写体识别,大幅度提高了精度,引起了关注。但好景不长,该方法的通用性不强,还是难以处理更高维的彩色图像数据。 2003 年,LeCun到纽约大学任教并发展了第三个合作者:前公司同事 蒙特利尔大学教授Yoshua Bengio,与Hinton一起组成了所谓的“深度学习的阴谋( Deep Learning Conspiracy)”。据说,Bengio 在读研究生时,读到了Hinton的一篇论文,如被电击,找到了儿时非常喜欢的科幻故事的感觉。如今有机会加入偶像领导的神秘小组,自然是喜出望外。 2004年机会终于来了,Hinton拿到了一个加拿大政府支持的大项目,很快就组建了研究组,并邀请LeCun和Bengio加入了他的项目组。至此,三剑客正式进入了蜜月期 。为了证明神经网络是有用的,他们开发了更多层的神经网络(深度神经网络),用更大的数据集来训练网络,并在更强大的计算机上运行网络参数的学习算法。 Hinton 曾开玩笑地表示:三人平均每周都要见一次,而聚会经常以吵架结束。我想Hinton2006年在Science上发表的经典论文应该和这些吵架相关,吵架和辩论使Hinton的思考更有深度(深度思考)。十年面壁思考,十年讨论争论,Hinton化了整整20年的时间,终于想出了神经网络第二次衰落的关键破解之法。 达摩面壁9年(另说10年),9年后的2015年,三剑客合作写了一篇Deep Learning(深度学习)综述论文发表在Nature, 正式给他们的研究成果和无数相关研究树立了一面旗帜,影响了这些年AI的快速发展和智能产业的快速崛起,已经被引用2.5万余次了。 作者简介:陈德旺,IEEE高级会员, IEEE Trans.on ITS 编委, 中国自动化学会混合智能专委会副主任,中国运筹学会智能计算分会副理事长,美国加州大学伯克利分校访问学者, 福州大学数学与计算机科学学院教授、博士生导师,主要研究方向为人工智能、大数据和智能交通等。至今发表论文120余篇,其中SCI检索论文40余篇,IEEE Transaction论文13篇,他引3000余次 ;获得各类科研奖励10多项。
个人分类: 人工智能|11178 次阅读|12 个评论
【AI+专题】农/工/医多领域最新应用研究
Chenfiona 2020-5-7 10:30
当前,人工智能已经应用于各行各业,在精准农业、智能医疗、工业生产、社交网络等领域发挥着重要作用。IJAC特推出AI+专题,集结了近两年相关研究成果,部分文章开放获取,IJAC公众号对话框回复AI+即可免费获取本专题所有文章PDF。 Potential Bands of Sentinel-2A Satellite for Classification Problems in Precision Agriculture Tian-Xiang Zhang, Jin-Ya Su, Cun-Jia Liu, Wen-Hua Chen 全文下载: https://link.springer.com/article/10.1007/s11633-018-1143-x http://www.ijac.net/en/article/doi/10.1007/s11633-018-1143-x 中文导读(开放获取): 拉夫堡大学陈文华:精准农业中分类问题的研究 当前,新型遥感卫星提供的高光谱、高时间、空间分辨率的遥感图像为精准农业中的分类问题提供了新的手段。很多在农业遥感中所遇到的问题和挑战都可以通过监督分类对遥感图像进行直接处理并加以解决,比如作物种类分类、疾病及胁迫(包括杂草、干旱、氮胁迫)监测。本文以不同光谱波段信息为要素提取特征,着重探讨了基于机器学习分类器的直接分类法,而不是基于特定指数的分类方法。在这篇文章中,作者以哨兵-2A卫星(Sentinel-2A image)图像进行土地覆盖分类为例,应用支持向量机算法对五类对象(包括作物、树木、土壤、水、路)进行分类,并比较了针对该问题光谱特征选择的四种方法,从而验证了所提直接分类方法的有效性。 Localization and Classification of Rice-grain Images Using Region Proposals-based Convolutional Neural Network Kittinun Aukkapinyo, Suchakree Sawangwong, Parintorn Pooyoi, Worapan Kusakunniran 全文下载: https://link.springer.com/article/10.1007/s11633-019-1207-6 http://www.ijac.net/en/article/doi/10.1007/s11633-019-1207-6 中文导读: 本文提出一种算法,借助图片即可对稻谷(rice grains)进行定位(localization)和分类(classification)。当前,相关研究均采取传统机器学习方法,然而,由于不同种类稻谷间的相似度很高,这些方法无法很好解决本文所提出的问题。在此背景下,本研究基于深度学习提出全新的解决方案,该方案包括利用分水岭算法(watershed algorithm)对数据标注(data annotation)进行预处理(pre-processing steps)、以长轴为准(major axis orientation)进行自动校正(auto-alignment)、采用对比度受限直方图均衡技术(CLAHE)完成图像增强(image enhancement)and 。而后,通过训练掩膜基于区域的卷积神经网络(the mask region-based convolutional neural networks, R-CNN)对输入稻谷图片(input image)进行定位和分类,再借助迁移学习(transfer learning)和丢弃正则化(dropout regularization)防止过度拟合(overfitting prevention),该方法的性能得到了进一步提升。 Generalized Multiscale RBF Networks and the DCT for Breast Cancer Detection Carlos Beltran-Perez, Hua-Liang Wei, Adrian Rubio-Solis 全文下载: https://link.springer.com/article/10.1007/s11633-019-1210-y http://www.ijac.net/en/article/doi/10.1007/s11633-019-1210-y 中文导读: 【专题好文】基于神经网络的新型乳腺癌检测框架 在公共健康领域,乳腺癌图像检测是一项非常重要却极具挑战的研究。此前,MSRBF网络(multiscale generalized radial basis function)尚未应用于图像处理技术及计算机辅助诊断系统(Computer-aided diagnosis, CAD)中。本文提出一种全新的图像处理框架(image processing framework),可基于升级版RBF网络(improved version of RBF networks)完成特征提取(feature extraction),同时还在框架中结合了DCT的优势来压缩信息(compress information)。最终,本研究成功将MSRBF方法用于CAD系统中并服务于乳腺癌检测。 Applying Deep Learning to Individual and Community Health Monitoring Data: A Survey 综述 Zhen-Jie Yao, Jie Bi, Yi-Xin Chen 全文下载: https://link.springer.com/article/10.1007/s11633-018-1136-9 http://www.ijac.net/en/article/doi/10.1007/s11633-018-1136-9 中文导读: 【综述专栏】华盛顿大学陈一昕: 深度学习在健康检测数据中的应用 传统的医疗数据大多通过信息系统(如:医院信息系统、实验室信息系统、图像存储与传输系统等)进行收集、标准化处理及存储。新技术的出现,如穿戴设备、医学网站、药物研发、基因测试,使得医疗数据的种类和范围进一步扩大,数据的体量也进一步增加。这些数据经过智能分析后,将给疾病诊断、治疗、决策支持、药物处方、疾病预测、疗效评价等工作带来很大帮助。华盛顿大学陈一昕教授团队集中讨论了深度学习在医疗健康各个领域(医学影像处理除外)中的应用。通过系统地回顾这些研究成果,帮助读者更好地从宏观层面把握该领域的研究现状。此外,本文作者还分享了其将深度学习应用于医疗健康领域的研究经验。 Text-mining-based Fake News Detection Using Ensemble Methods Harita Reddy, Namratha Raj, Manali Gala, Annappa Basava 全文下载: https://link.springer.com/article/10.1007/s11633-019-1216-5 http://www.ijac.net/en/article/doi/10.1007/s11633-019-1216-5 中文导读: 社交媒体是允许人们自由表达观点和态度的平台,让人与人之间的交流较以往更加简单。同样,社交媒体也为蓄意传播虚假新闻的人提供了可乘之机。网络上各类便利的新闻获取渠道让人们更易暴露于虚假信息之中,也增加了误信误传的风险。因此,检测并标记出社交媒体上的这些内容显得尤为重要。然而,按照当前新闻生产效率来看,在新闻源未知的情况下,很难区分新闻的真假。本研究主要讨论在没有任何相关元数据的基础上,仅凭新闻文本特征检测假新闻的方法。最终,研究发现:借助集成方法,综合文体风格特征和基于文本的词向量表示,可以有效检测出虚假新闻,检测准确度高达95.49%。 Recent Advances in the Modelling and Analysis of Opinion Dynamics on Influence Networks 综述 Brian D. O. Anderson,Mengbin Ye 全文下载(开放获取): https://link.springer.com/article/10.1007/s11633-019-1169-8 http://www.ijac.net/en/article/doi/10.1007/s11633-019-1169-8 中文导读: 【综述】美外籍院士Brian Anderson: 社交网络中舆论动力学研究进展 社会生活中,人与人之间的交流必不可少,无论是在公司会议室,还是在中学教室、线上社交媒体,都普遍存在着意见交流,这其中就涉及了舆论动力学研究。舆论动力学旨在构建和分析动力学模型(dynamical models),借助这些模型可得出个体在社交网络中交流及交换意见的方式;在听取他人意见后,一个人对某件事的看法可能会随着时间而不断改变。本文为控制与系统科学领域国际著名学者、美国工程院外籍院士、澳洲科学院院士、IEEE终身会士Brian D. O. Anderson教授的特约综述,该综述集中讨论了社交网络中,舆论动力学模型的最新研究进展。文章部分内容整理自Brian教授在CCC2018大会上的主题报告。 Electronic Nose and Its Applications: A Survey 综述 Diclehan Karakaya, Oguzhan Ulucan, Mehmet Turkan 全文下载: https://link.springer.com/article/10.1007/s11633-019-1212-9 http://www.ijac.net/en/article/doi/10.1007/s11633-019-1212-9 中文导读(开放获取): 一文尽览电子鼻技术 电子鼻是模拟动物嗅觉器官开发出的一种高科技产品,响应时间短、检测速度快、重复性好,其应用场合囊括环境监测、产品质量检测、医学诊断、爆炸物检测等。随着生物芯片、生物技术的发展、集成化技术的提高及一些纳米材料的应用,电子鼻还将有更广阔的应用前景。本综述尽览电子鼻技术的软件算法、硬件组件、应用领域及未来发展,全文开放获取! Toolpath Interpolation and Smoothing for Computer Numerical Control Machining of Freeform Surfaces: A Review 综述 Wen-Bin Zhong, Xi-Chun Luo, Wen-Long Chan, Yu-Kui Cai, Fei Ding, Hai-Tao Liu, Ya-Zhou Sun 全文下载(开放获取): https://link.springer.com/article/10.1007/s11633-019-1190-y http://www.ijac.net/en/article/doi/10.1007/s11633-019-1190-y 中文导读: 综述:用于自由曲面加工的新型计算机数控方法 随着制造业对功能整合的需求不断提升,越来越多新一代高附加值产品应运而生,如三维显示器、太阳能聚光器、人工晶体等,他们大多采用自由曲面(freeform surfaces)的设计,即非回转对称设计。加工这些产品的计算机数控系统通常设定了由高密度短直线节段或圆弧曲线节段组成的刀具轨迹。然而,刀位轨迹段间的不连续性易导致进给速度及加速度产生高频波动,从而降低加工效率和产品表面光洁度。受对高速高精度加工产品的需求驱动,学术界和产业界均提出了很多新型刀具轨迹插补和光滑化方法,旨在应对传统方法中产生的问题。本篇综述来自英国斯克莱德大学Luo Xichun教授团队,文章详细综述了计算机数控系统中用于加工自由曲面的刀具轨迹插补和光滑化方法,同时对技术路线进行了分类、并讨论了各自的优点和局限性,最后得出结论。 An Overview of Contour Detection Approaches 综述 Xin-Yi Gong, Hu Su, De Xu, Zheng-Tao Zhang, Fei Shen, Hua-Bin Yang 全文下载: https://link.springer.com/article/10.1007/s11633-018-1117-z http://www.ijac.net/en/article/doi/10.1007/s11633-018-1117-z 中文导读: 【综述专栏】轮廓检测方法综述 轮廓(contour)是图像目标(imagery object)的典型特征,而轮廓检测是计算机视觉领域的重要研究方向。要解决一些实际性问题,如目标识别、场景理解等,轮廓检测算法(contour detection algorithms)是基础。轮廓检测是一项非常困难的工作,在实际操作中会出现各种各样的问题和变化。通常,在只能获取局部特征时,检测仪很难得出理想结果,特别是对于那些有纹理(textures)、低对比度(low-contrast objects)、或者含有大量噪声的图像(severely noisy images)。为提升性能,研究者们研发出更加复杂的检测仪。本综述来自中科院自动化所徐德研究员团队,集中讨论了当前轮廓检测的主要方法,以及未来可深入研究的方向。 高被引Top团队综述 最新精选好文 一文尽览“电子鼻技术” 高被引Top1团队综述:图像、图形及文本领域的对抗攻击及防御 【精选好文】服务机器人物品归属关系学习新策略 【专题好文】基于神经网络的新型乳腺癌检测框架 【最新专题】智能医疗 UAV控制 情感识别 【特别策划】聚焦全球、优质成果 港科大-微众AI杨强团队:用于生成对话系统的迁移多层注意力网络 2019高被引学者论文精选 美国蒙莫斯大学:基于深度学习的手势识别及无人机控制 自动化所陶建华团队: 基于真实环境的面部表情分析 陶建华团队:基于半监督梯形网络的语音情感识别 【综述】美外籍院士Brian Anderson: 社交网络中舆论动力学研究进展 2020年国际学术会议参考列表 【最新】2020年5月会议变动汇总 一款强大的公式编辑器 【科研战”疫”】IEEE ICAC’20 征稿! 如何在不平坦的科研路上狂奔? 复杂公式转LaTex:一张图片,三步搞定! 提升科研效率的几款小工具 【主编报告】如何写好一篇学术论文?
个人分类: 好文推荐|1183 次阅读|0 个评论
基于大数据的新冠肺炎风险评估与预测
HUST5GLabs 2020-3-13 19:57
基于大数据的新冠肺炎风险评估与预测 华中科技大学 5G联创行业应用开发实验室 1.从硬性围堵到隐性预防 始于2019年12月的新冠肺炎传染病大爆发事件是2003年SARS传染病暴发以来最大规模的全球性传染病突发事件,被中国政府和全球多个国家定义为重大危机事件。截止2020年3月7日,已经造成全球超过十万人感染,其中我国已累计超过八万人感染,累计超过三千人死亡 。 我国政府于1月下旬开始采取了包括封城、全国性的医疗资源调度和医护人员支援等前所未有的措施。尽管这些措施在短时间内有效地抑制了病毒的传播和扩散,但是这些措施均不可能成为长期政策执行。此外,超过一个月的封锁也对经济和民生造成了严重影响。目前,新冠肺炎在我国部分地区和国外尚未清零。随着各省市复工复产的逐步开展,新冠肺炎的区域性传染将有很大可能会再度出现,如何采集更加先进、积极和隐蔽的手段对病毒的传播和扩散进行有效的隐性预防、预测、控制和追踪对确保复工复产的顺利开展,确保我国今年经济目标的实现至关重要。 由于新冠肺炎病毒强大的传染性、长潜伏期和高死亡率, 采用大数据和最新的信息技术对新冠肺炎的传染轨迹、扩散速度、接触人群等重要信息进行建模和数据分析对政策制定、防范措施设计和应对措施及建议具有重要意义 。 2.预测模型分类与性能比较 目前已有大量数学模型可对不同传染病扩散和传播进行预测和建模。具体来说,目前主流的传染病模型主要可以分为三类: 经典传染病传播模型、基于深度学习的传染病传播模型和其他模型 。 2.1 经典传染病传播模型 传染病的建模有很长的研究历史, 经典传染病传播模型包括SI、SIR、SEIR、SIRQ等模型 ,这些模型都是在分类的类别上进行修改从而适应于不同的传染病进行建模。例如,钟南山院士团队于2020年2月27日发表在Journal of Thoracic Disease期刊上的论文(参见参考文献 )采用了改进的SEIR(susceptible-exposed-infected-removed,即疑似-暴露-感染-治愈)模型对新冠肺炎传染病全国的蔓延情况进行了预测。其改进的SEIR模型主要采用了从2020年1月16日到1月25日总共10天的数据,对2月1日至4月15日的数据进行了预测。具体地,通过综合考虑总人口、死亡率、潜伏期等因素估算出了每日与感染人群密切接触的人总数、每日可能携带病毒的人数和感染人群中死亡和康复的概率等重要参数,采用7天为潜伏天数的中位数和3%的死亡率,文献 给出了新冠肺炎传染病在三个主要爆发省份,湖北、广东和浙江,的预测新增确认人数。我们将钟院士团队论文的SEIR模型复现如图1所示。 图1. 参考文献 中SEIR模型预测的每日新增确诊人数 表1. 参考文献 中模型预测的每日新增确诊人数和真实新增人数的误差比较 我们初步分析认为参考文献 中构建的SEIR模型可从下列几个方面进行改进: (1) 模型参数的精度可进一步改善 。如论文中直接假设在1月23日之前人均接触人数为15人,1月23日之后人均接触人数为3人; (2) 由于政策和外部情况变化, 模型需要手工分段设计和估算参数 。如表1所示,文献 和真实数据的差距非常大,其主要原因是在应对措施的不断出台和更新的情况下(包括1月23日,对武汉市采取了“封城”措施,2月12日,对新增确诊人数统计的订正,以及随着疫情的发展,核酸检查试剂的供应逐渐满足需求等等),许多更新的政策和多种环境因素对模型参数地影响并没有在模型中得到考虑; (3)疫情数据统计方法的调整以及前期的确诊困难等原因导致 数据存在更新滞后问题 ,进而使模型估计出现偏差。 基于上述思考,我们对文献 的模型做了如下改进: (1) 在建模过程中引入更多不可忽略的实际因素 ,如医院的收治能力变化、不同患病人群传染率不同等等; (2) 借助启发式算法推断模型的各个参数 ,尽可能得到良好的模型参数来降低模型输出与实际数据间的误差; (3) 分析选用现有数据中相对更具可靠性的数据对模型进行拟合 ,尽可能减小输入数据端的误差对模型预测造成的影响。 改进后的预测模型生成的每日新增数和累计新增数结果如图2和图3所示。具体结果如表2所示,我们的结果与真实数据相关性 图2. 改进模型预测的每日新增确诊人数 图3. 改进模型预测的累计确诊人数 表2. 改进后模型预测的每日新增确诊人数 尽管我们的模型在预测精度上有所提高,但是 现有SEIR模型普遍具有如下缺陷 : (1)由于缺少对空间维度的建模,SEIR无法准确分析疫情的空间扩散情况,更无法跟踪病毒的传播位置和路径; (2)模型的准确度高度依赖参数、初始值以及基础表达式,在复杂多变的实际情况中缺乏灵活性,容易出现较大偏差。 2.2 基于深度学习的传染病传播模型 最近随着深度学习方法的出现和普及,大量及与深度学习的时空预测模型不断涌现出来。例如在文献 中,除了采用SEIR模型对病毒的扩散进行了预测之外, LSTM方法也被用与训练病毒传染和扩散模型 。具体地,文献采用2003年4月到6月的SARS-CoV累计确诊感染数计算出每日新确诊病例数,并用插值法调整未更新或者数据更新异常的日期数据。通过设置长度为三天的滑动窗口,得到一系列的时间数据序列。使用所得到的数据序列作为LSTM模型的训练输入,循环训练500次,保存训练后的LSTM模型。再将2020年1月22日到2月7日在全国范围内新冠肺炎感染的人数输入到已经训练好的LSTM模型中,并对2月7号之后80天进行预测。为了防止过拟合,文献 采用了包含一个全连接层的最简单的LSTM模型。 在下面的图4中,我们对文献 中的LSTM模型进行了复现,除了复现原论文的曲线之外,我们还给出了如果增加了2020年2月7到3月6日的最新数据后的曲线,模型对3月6号后80天的预测数据。除此之外,在图5中,我们还是用同样的方法给出了采用武汉市每日的新增数据对新冠肺炎感染的人数进行的预测结果。 图4 全国新增新冠肺炎人数预测 图5. 武汉新增新冠肺炎人数预测 表3. 文献 所采用的LSTM数据预测出的数据和真实新增数据之间的误差 图4和图5考虑的数据集总结如下: SARS Dataset: Mar. 17-Jul. 11, 2003 Dataset 1: Jan. 26-Mar. 6, 2020 (wuhan) Dataset 2: Jan. 26-Feb. 11, 2020 (wuhan) Dataset 3: Jan. 26-Mar. 6, 2020 (China) Dataset 4: Jan. 26-Feb. 11, 2020 (China) 图4和图5的具体解释如下: l 图4中“ Predicted result with dataset 3 ” 预测了3月7日到5月25日(共80天)全国的新增人数变化,输入数据集为Dataset 3,即2020年1月26日到3月6日中国全国每日新冠肺炎每日新增人数。 l 图4中“ Predicted result with dataset 4 ”是对原文的复现,预测了2月12号到5月1日(共80天)全国的新增人数变化,输入数据集为Dataset 4,即2020年1月26日到2月11日中国全国每日新冠肺炎每日新增人数。 l 图5中“ Predicted result with dataset 1 ” 预测了3月7日到5月25日(共80天)武汉的新增人数变化,输入数据集为Dataset 1,即2020年1月26日到3月6日中国武汉每日新冠肺炎每日新增人数。 l 图5中“ Predicted result with dataset 2 ”预测了2月12号到5月1日(共80天)武汉的新增人数变化,输入数据集为Dataset 2,即2020年1月26日到2月11日中国武汉每日新冠肺炎每日新增人数。 我们可以观察到, LSTM能够很好地预测新增人数的整体趋势,但是并不能预测出由于国家政策实施等因素导致的某段时间新增人数的突然增多 ,主要原因有以下几点: l 使用LSTM进行预测,模型对于某一参数的变化并不敏感; l 03年SARS数据集数据量太少,对模型训练不够精确,这也是为什么不直接采用新冠肺炎数据集进行训练的主要原因之一。 2.3 其他模型 除了上述的SEIR和深度学习以外,还有其他模型也被用于预测病毒的扩散和传播。一类被广泛使用的模式是 复合群体模型 ,该类模型考虑了人类移动模式对传染病传播的影响,通过人群间的流动进行耦合而形成复杂的系统,适用于研究不同地区之间病毒的传播情况。例如Watts等人在文献 中将人群看作多层结构,不同层级之间互相流动,建立了层级结构的复合群体模型。Cross等人在文献 中建立了11×11方格模型,个体可以移动到相邻群体,而群体内部则动态采用SIR或是SIRS等基础模型。Hufnagel等人在文献 里建立了随机复合群体模型,通过将世界上500个大城市看作复合群体,每个群体采用SIR模型描述,对SARS的全球流行进行了预测。虽然复合模型在一些应用中取得了很好的效果。但是一般来说, 复合群体模型对不同群体之间的迁移数据要求非常高。任何原始数据的细微缺陷可能导致预测模型产生很大的误差 。 此外,近几年来 基于网络的微观模型 也快速发展,有针对于诸如随机网络,规则网络(元胞自动机、CA)、小世界网络、无标度网络等理想网络的模拟,也有基于现实网络数据进行的建模分析。具体来说, Halloran等人在文献 中根据真实数据,构造了2000人的社区,研究发生天花攻击时各种对策的效果,Milne等人在文献 对澳大利亚一个3万人的城镇进行了建模,采用真实的家庭、学校、医院等场所的设置,描述了流感的接触、传播过程,还有研究者构造了更大规模的网络模型,Eubank等人在文献 中开发了EpiSimS系统,构造了大城市级别的人际接触模型。虽然基于网络的微观模型能够建立较为真实的场景,但是对原始数据要求极高,需要大量的真实的社会环境数据。此外, 最终的模型也十分复杂,具有很多的属性特征,建模难度大。随着模型规模的扩大,其运行所需的计算量也会变得相当庞大 。考虑到这些因素,该方法难以短期内快速的做出对疫情的准确预测。 3.总结 目前新冠肺炎在部分国家仍处于上升期,诸多迹象显示新冠肺炎将在未来相当长的时间存在。因此做好新冠肺炎的预防和检测并及时发现和处理可能成为未来相当长时期的研究重点。 本文采用目前已经公布的公开数据集对模型进行了初步预测 ,期望能够对后续基于大数据的病毒扩散和预防起到积极的作用。 参考文献 Zifeng Yang, Zhiqi Zeng, Ke Wang, Sook-San Wong, Wenhua Liang, Mark Zanin, Peng Liu, Xudong Cao, Zhongqiang Gao, Zhitong Mai, Jingyi Liang, Xiaoqing Liu, Shiyue Li, Yimin Li, Feng Ye, Weijie Guan, Yifan Yang, Fei Li, Shengmei Luo, Yuqi Xie, Bin Liu, Zhoulang Wang, Shaobo Zhang, Yaonan Wang, Nanshan Zhong, Jianxing He, “Modified SEIR and AI prediction of the epidemics trend of COVID-19 in China under public health interventions” Journal of Thoracic Disease, no. 2, vol. 12, Feb 2020. Watts D , Muhamad R , Medina D , et al. Multiscale, resurgent epidemics in a hierarchical metapopulation model . Proceedings of the National Academy of Sciences of the United States of America, 2005, 102(32):p. 11157-11162. Cross P C , Johnson P L F , Lloyd-Smith J O , et al. Utility of R0 as a predictor of disease invasion in structured populations . Journal of The Royal Society Interface, 2007, 4(13):315-324. Hufnagel L , Brockmann D , Geisel T . Forecast and control of epidemics in a globalized world . Proceedings of the National Academy of Sciences of the United States of America, 2004, 101(42):p.15124-15129. Halloran, M. E. Containing Bioterrorist Smallpox . Science, 2002,298(5597):1428-1432. Milne G J , Kelso J K , Kelly H A , et al. A Small Community Model for the Transmission of Infectious Diseases: Comparison of School Closure as an Intervention in Individual-Based Models of an Influenza Pandemic . PLoS ONE, 2008, 3(12):e4005-. Eubank, Stephen Guclu, Hasan Kumar, Sritesh Marathe, Madhav Toroczkai, Zoltan Wang, Nan. (2004). Modeling Disease Outbreaks in Realistic Urban Social Networks . Nature, 2004, 429(6988): 180-184.
470 次阅读|0 个评论
《电子与封装》2019年12期:深度学习算法、硬件技术及其在未来军事上的应用
EPjournal 2020-1-15 09:55
魏敬和1,林军2 1. 中科芯集成电路有限公司,江苏 无锡 214072;2. 南京大学,南京 210023 摘要: 人工智能在感知和认知智能领域取得的重大进展,促进该技术向军事应用的转移。从当前深度学习算法研究重点展开论述,对其未来的技术应用、发展方向进行了系统的梳理,从延续传统架构的cpu、gpu、fpga、asic和非传统架构的神经拟态芯片两个阵营出发,依次对比分析了各个计算架构的结构特点以及对人工智能硬件未来发展带来的影响,同时以雷达红外图形处理技术和声呐信号处理技术在军事上的应用为例,阐述了人工智能技术在未来军事领域内的发展方向。 关键词: 深度学习, 硬件实现, 军事应用 引用本文: 魏敬和, 林军. 深度学习算法、硬件技术及其在未来军事上的应用 . 电子与封装, 2019, 19(12): 1-6. wei jinghe, lin jun. deep learning algorithms, hardware and their military applications . electronics and packaging, 2019, 19(12): 1-6. 点击此处免费获取全文
167 次阅读|0 个评论
深度学习在商务分析与运筹学中的应用——“大数据与智能决策”讨论班
郭崇慧 2019-12-14 09:23
深度学习 深度学习(Deep Learning)是指机器学习中一种通过模拟人脑的神经结构,对数据进行表征学习的方法。深度学习的概念源于人工神经网络的研究。人工神经网络(Artificial Neural Networks,ANN)是指从信息处理的角度,对人脑神经元网络进行抽象,建立数学模型,按不同的连接方式组成不同的网络,简称为神经网络或类神经网络。因此,深度学习又被称为深层神经网络,是从之前的人工神经网络模型发展而来的。 图1 人工智能、机器学习与深度学习之间的关系示意图 早期对人工神经网络的研究,由于受到算法理论、数据、硬件的制约,多年以来一直停留在单层或浅层的网络结构。现在的神经网络规模发生了巨大变化,它可以轻松包含多达数百个层,数百万个神经元,神经元之间还有着复杂的连接结构。这主要是由于现代科学技术的发展打破了之前的制约,使棘手的任务变得可能,具体体现在以下三个方面: (1)计算能力。计算机的算力迅速提高,特别是GPU(Graphics Processing Unit)的广泛使用,为神经网络训练所需的复杂运算提供了基础。例如,Google旗下的人工智能DeepMind公司使用176个GPU优化了40天的深度神经网络(AlphaGo),在围棋游戏中击败最优秀的人类玩家。 (2)大数据。训练深度神经网络需要大量的数据集,以防止过拟合问题和微调参数。深度神经网络的性能通常随数据量的增加而提高。实证结果表明,即使深度神经网络已经拥有数百万个数据点,也仍然可以从附加数据中受益。 (3)优化算法。在深度神经网络中优化参数是一项艰巨的任务。2006年,Hinton和Salakhutdinov提出了通过在添加新的隐含层和优化网络参数之间交替优化来逐渐增加神经网络深度的方法,被视为深度学习的开创性工作。这项稳定的优化技术为学习更深层的网络铺平了道路。庞大的数据集使人们无法直接优化整体性能。取而代之的是通过随机优化来训练深度神经网络。另外,为了改善优化性能,有许多常见的优化方法(例如Adam,Adagrad,RMSprop)作为随机梯度下降算法的变体,通常与步长的自适应调节配合使用。 深度学习的动机在于建立模拟人脑进行分析学习的神经网络,因此它能够用类似人脑的机制来解释数据,比如图像,声音和文本等。相比于传统的机器学习算法,其优势在于:它擅长发现高维数据中的复杂结构,精度也远远超过了传统的机器学习方法。另外,经典的机器学习算法通常需要复杂的特征工程,而深度网络只需直接对原始数据进行处理,通常就可以实现良好的性能。 深度学习还具有适应性强,易于转换的优势,该技术可以更容易地适应不同的领域和应用。迁移学习使得预先训练的深度网络可以适用于同一领域内的不同应用程序。例如,一旦了解了语音识别领域的基础深度学习理论,那么学习如何将深度网络应用于自然语言处理并不是太具有挑战性,因为基准知识非常相似。 深度学习在商务分析与运筹学中的应用 文献:M. Kraus, S. Feuerriegel and A. Oztekin, Deep learning in business analytics and operations research: Models, applications and managerial implications , European Journal of Operational Research, 2020, 281(3): 628-641 . 深度学习在业界中的商务分析和多个运筹学领域具有巨大的潜在应用价值,如供应链管理、风险建模,预防性维护等等。其中,商务分析由于受深度学习的冲击正在发生着根本性的转变。 商务分析是指通过大数据分析为个人、公司和组织创造价值的方法和实践。成功进行商务分析竞争的核心是建立预测模型。与传统的机器学习算法相比,深度神经网络(Deep Neural Networks,DNN)可显著改善模型的预测性能。尽管深度学习有望成为商务分析和运营管理研究中的预测分析行业标准,但是对现有文献的研究表明,在运筹学中还缺乏利用深度学习的研究工作。 论文针对这一现状,首先总结了深度学习相关的数学概念,从单个神经元的工作方式开始到权值优化和正则化方法的概述,最后还介绍了现存的最先进的网络架构及其应用场景。 然后提出了一种深度嵌入的网络架构。该架构先将类别变量进行嵌入,转化为稠密表示,然后与数值变量一同送入模型,可以实现数值稳定的优化过程以及更高的预测精度。 图2 深度嵌入的网络架构 接着从运营管理、库存管理和风险管理这三个领域各选择了一个具体的案例进行分析,验证了深度学习在运筹学实际应用中较传统机器学习算法的优势以及所提出的深度嵌入网络架构较传统深度学习方法的优势。不同案例研究的计算结果表明,深度学习是一种可行且有效的方法,在数据分析模型系列的预测和操作性能方面,深度学习可以始终如一地优于传统方法。 最后分析了深度学习的管理学意义和未来的研究路线。虽然深度学习拥有巨大的潜在价值,但在运筹学的应用中还存在三个关键挑战,文中总结了这三个挑战并且提出了可行的应对措施: (1)深度神经网络的配置是一项艰巨的任务,因为它仍然需要大量的参数调整才能获得令人满意的结果。最近,在“AutoML”框架下提出了一系列用于自动化调整过程的工具,这为DNN架构的部署提供了一条有希望的途径。 (2)深度神经网络目前仅关注点估计,而其预测通常缺乏严格的不确定性量化。因此希望为直接建模分布后者开发DNN的贝叶斯变体。 (3)尽管事后分析已使理解深度神经网络的行为迈出了一大步,但可解释性被广泛认为是深度学习中的一个弱点。通过变分推断来估计结构模型,或者在神经网络中应用注意力机制可能会增强其可解释性。 由于深度学习领域的许多创新尚未被广泛采用,因此还有进一步挖掘的潜力。对于大多数管理人员来说,如何识别预测分析(尤其是深度学习)的有价值应用案例仍然面临挑战。因此,建议未来在商务分析领域中的研究目标集中在识别珍贵的应用案例以及发现潜在的价值收益上。而这进一步需要一套更好的网络体系结构、优化方法以及参数微调体系。另外,深度学习仅提供预测性见解,而很少提出实现预期结果的实际管理策略,所以未来可以对如何将预测转化为有效的决策进行研究。此外,实际应用中的数据集通常无法保证有效使用深度学习所需的必要规模,对此可以考虑迁移学习的方法,将不同但相关的数据集用于训练模型,然后将模型应用于目标数据集,实现归纳知识迁移。 随着各类公司以越来越快的速度生成更多数据,商务分析成为影响企业生存发展的重要驱动力,商务分析的变革成为企业竞争中重要的因素。而深度学习的发展势必对商务分析的变革产生巨大影响。因为即使预测精度的微小提高也可以扩大收益,因此需要更好地了解深度学习。这篇文章的主要信息是介绍深度学习和回顾深度学习在改善商务运营核心领域的决策支持方面的适用性。其中提出的通用方法可以用来创建自动化的决策支持系统,这反过来又可以提高效率和决策质量。文中进行的案例研究是有目的地从运筹学的不同领域中选择的,以验证深度神经网络有助于改善运营绩效这一事实。同时,定制的网络体系结构通常是有益的,例如文中提出的深层嵌入式网络体系结构比默认体系结构在所有指标上的性能提高了1.56%至21.73%。 备注:2019年11月5日晚上,“糖果之家”相约星期二,“大数据与智能决策”讨论班(Seminar)继续开讲,本次讨论班以“ 深度学习在商务分析与运筹学中的应用 ”为题,共讨论了一篇文献,由硕士生进行讲解,共有青年教师、博士后、博士生和硕士生18人参加。
个人分类: 科研笔记|6596 次阅读|0 个评论
一天搞懂深度学习-李宏毅-学习笔记
SNXGT 2019-12-1 15:00
一周后要进行深度学习考试。十几周的课程下来,基础部分掌握不是很扎实,高阶应用部分更是N头雾水。 在这种情况下,我阅读了李宏毅老师的文章。通过这篇精悍之文,可以提纲挈领地把握深度学习的主体框架,可以对“深度学习到底在做什么事”有一点整体认识。 (此文通道如下) https://zhuanlan.zhihu.com/p/54483252 #知乎# https://www.slideshare.net/tw_dsconf/ss-62245351?qid=108adce3-2c3d-4758-a830-95d0a57e46bcv=b=from_search=3 #LinkedIn SlideShare# https://github.com/yuneming/DeepLearningTutorial #Github# http://speech.ee.ntu.edu.tw/~tlkagk/index.html #李老师主页# 学习后,我深深体会到,不论是在科研圈还是工业界,人工智能必定将是日后重要的技术工具。未来二十年,人工智能技术工程师(即文中所谓的“AI训练师”)将逐步起到越发重要的作用。 后来,我又结合课程讲义和《深度学习》教材,逐章复习掌握知识细节 。 5月28日,深度学习课程期末考试结束后五小时,我又回顾了过去这一周深度学习的复习情况,写下了自己的一些体会。 第一,试卷上考察的很多知识点是非常基础的,我们只需要知道每一章节中最核心的基础概念,就可以比较清楚的作答。   然而,上课时候的自己,对深度学习才刚刚接触,初来乍到,生疏感、距离感很强烈,甚至对深度学习有一种崇敬的情感,学习时有一种“先入为主”的不自信,脑海里浮现着“我到底能不能学会”这些想法。   事实上,自己到了每门课的复习阶段,才能体会到“哦,原来这门课就讲了这么回事啊!” 蓦然回首,发现要学的东西,其实就在灯火阑珊处,离自己并不遥远,也没那么高深,更不是深不可测。每个人只要搬个小板凳,拿一本最最基础的课本,老老实实看上几钟头,就能明白这门课究竟在讲些什么东西。只不过,要想产生更深刻的领悟,需要重复上三五个,甚至十来个“几钟头”。   所以,以后的学习一定要顶住最前面、最开始的10小时,20小时,50小时。不要怕概念的生疏和模糊,去查资料,一点一点地复习、回顾。不需为自己的遗忘感到自责,当发现以往学过的知识有点忘了,这是好事,因为这比你一点也找不到“抓手”,强得多。循着记忆的轨迹,重新复习,再在此基础上拾级而上,学习新知,如此往复,才是学习正道。总而言之,发现不懂不会的,是好事,这样才能学得越来越明白。   至于研究生阶段简单的课程考试,以这种学习方法来应对,显然不成问题。 第二,课程作业包括论文阅读和实践项目,论文读得不够深入,项目没有具体实践成功,对自己要求松。   综合整学期的课程,为保证其他课程顺利进行,从战略上对论文和项目没有给予足够的重视,以留给日后详细解决。 第三,课堂上老师的授课内容自己跟不上,一方面不能怪老师讲得不好(要怪宁肯怪自己水平不够),另一方面自己要课下努力跟上,只有努力跟上,才是学习最好的方法。   平常很多时间没有利用好,白白蹉跎了光阴。要养成好的工作生活习惯,克制自己的懒惰。偶尔破坏了习惯,要尽快恢复状态,找回工作的状态。  手机不能成为生活的核心,核心应是时间线。 下面是课程考试的复盘: 1.机器学习经典学习方法举例,深度学习与之相比的优势。 2.反向传播算法简单计算。深度学习网络常见问题与解决思路。 3.卷积神经网络参数计算。 4.长短时记忆和门控制循环网络的模型图和各个门的作用。 5.正则化的几种方法。随机梯度下降和Batch梯度下降的区别。 6.自编码器和生成对抗网络的模型图和简要说明。 7.强化学习的学习要素和学习算法。 8.机器翻译的编码解码机制。 9.图神经网络的正向传播。 同时,这也是本次课程的大纲内容,没有完全掌握,是自己的问题。日后要在自学过程中逐个解决。   努力修炼!
个人分类: 学习笔记|0 个评论
基于深度学习的推荐系统——“大数据与智能决策”讨论班
郭崇慧 2019-11-26 08:28
推荐系统 互联网的出现和普及给用户带来了大量的数据和信息,满足了用户在大数据时代对信息的需求,但随着网络的迅速发展而带来的网上信息量的大幅增长,使得用户在面对大量信息时无法从中获得对自己真正有用的那部分信息,对信息的使用效率反而降低了,这就是所谓的信息超载(Information Overload)问题。 解决信息超载问题的一个有效途径是个性化推荐系统(Recommender Systems)。推荐系统根据用户的信息需求、兴趣等,利用推荐算法将用户感兴趣的信息、产品等推荐给用户。和搜索引擎相比,推荐系统通过研究用户的兴趣偏好,进行个性化计算,由系统发现用户的兴趣点,从而引导用户发现自己的信息需求。一个好的推荐系统不仅能为用户提供个性化的服务,还能和用户之间建立密切关系,让用户对推荐产生依赖。作为一种信息过滤系统,推荐系统具有主动性和个性化两个最显著的特性。 多数推荐系统的结构都是由线上和线下两部分组成。线下部分通过学习用户资料和行为日志建立模型,在新的上下文背景之下,计算相应的推荐内容,呈现于线上用户页面中。 图1 推荐系统的结构 目前,推荐系统已广泛应用于诸多领域,其中最典型的便是电子商务领域。ACM RecSys会议上最常提及的应用落地场景为:电子商务、在线视频、社交网络、在线音乐、互联网广告等,这些领域是推荐系统大展身手的舞台,也是近年来业界研究和应用推荐系统的重要实验场景。 基于深度神经网络的视频推荐 文献:Covington P, Adams J, Sargin E. Deep neural networks for YouTube recommendations //Proceedings of the 10th ACM conference on recommender systems. ACM, 2016: 191-198. 论文主要介绍了YouTube使用深度神经网络进行视频推荐的相关工作。文章发表在2016年ACM RecSys会议上,是利用深度学习进行推荐这方面研究中比较经典的文章。 一、引言 在YouTube视频推荐场景中,存在的主要挑战有3个: 1 、规模大。表现在用户和视频两个方面,首先YouTube宣称坐拥十亿用户,其次视频的存量巨大,是百万量级的视频,所以那种只能处理小规模数据的模型在YouTube推荐场景中是完全不能使用的。 2 、更新快。一方面,视频更新速度快,YouTube上每秒具有小时级别的视频进行上传;另一方面,用户的实时行为切换很快。要求模型能够捕捉到这些更新的信息。 3 、噪声。首先,用户的历史行为是存在噪声的,面对百万量级的视频,每个用户只对其中一小部分视频存在观看行为,所以用户观看的相关日志是高度稀疏的。再加上用户的行为会受到外界一些推荐系统察觉不到的因素影响,比如用户受诱导点击了一个视频,但这个视频不是用户关心的内容,用户并没有进行观看,如果我们把这次点击认为是用户喜欢此视频,就引入了噪声。其次,从视频本身来看,视频内容是非结构化的。这些都对模型的鲁棒性提出了很高的要求。 二、系统概述 针对以上挑战,YouTube使用了一个两阶段的推荐模型。 第一阶段是个深度召回模型,主要作用是从百万量级的视频里粗略筛选出几百个用户很可能感兴趣的视频,这一阶段对效率要求比较高,耗费较少的资源获得用户有很大可能喜欢的视频。在召回阶段,使用神经网络模型进行召回,实际上现在召回阶段大都使用多路召回,除了模型筛选出一部分视频外,可能还要根据视频的热度、具体业务需求等通过其他途径召回,多路召回的结果进入排序模型进行更细的排序筛选。 第二阶段是深度排序模型,对召回的结果进行更细致的筛选,这时相对召回阶段,排序阶段面临的数据量已经大大减少,所以可以引入更多视频相关以及用户相关的内容来进行内容的筛选,最后展示给用户十几条推荐内容。 图2 两阶段的推荐模型 三、召回模型 在召回模型部分,作者将推荐问题转化成一个多分类问题,其中视频库中的每一个视频各自对应着一种类别,推荐问题变为:在时刻t,给定用户以及上下文(观看记录、搜索记录等),预测用户接下来会观看哪一种类别的视频。如果我们能求得用户接下来看每种类别视频的概率,那么就可以按照概率,将概率大的视频筛选出来。所以召回模型训练阶段的样本如下: 输入:用户观看的视频记录+搜索记录等;标签:某个视频。 在构建训练样本的时候, 需要注意以下几点: 1 )作者使用的是用户隐性反馈数据,就是那些没有明确地表示出用户喜恶,但可以从中推测用户喜恶的数据。比如,用户观看了某个视频,系统就认为用户喜欢这个视频,用户搜索了某个视频,系统就认为用户喜欢这个视频等,这类的用户反馈就是隐性反馈。相对于显性反馈数据(明显表示出喜恶,如点赞、差评、问卷调查到的内容等),隐性反馈数据量比较大,在深度学习这种需要大规模数据的情况下使用隐性反馈数据是很合适的。 2 )在选择样本的时候,考虑的是整个YouTube上的用户日志(甚至用户在其他网站上的观看记录),而不是只考虑YouTube推荐系统的用户日志信息,这就能够更全面地捕捉用户偏好,而不是只受推荐结果诱导。 3 )对每个用户提取等数量的训练样本,而不是使用原始用户日志,减少活跃用户对模型的过度影响。 4 )作为标签的视频所处的时间点一定要在作为特征的视频的时间点之后, 传统的随机留一法没有考虑特征与标签的时间顺序,这点是不符合认知的。 5 )用户有一种观看新视频的偏好,作者引入了“视频年龄”这个特征表示样本的新鲜度,这样模型就能够很好的表示视频上传之后随时间的点击率分布,从而捕捉到一些视频新鲜度的信息。 四、排序模型 虽然神经网络的优势是能够自动产生高维的特征表示,但一些特征还是需要人工设计之后才能较好地表示。在排序阶段,引入了更多特征来表示视频及用户与视频之间关系,比如一个视频属于某个频道,那么就构造一个特征表示“用户看了多少这个频道的视频”,如果视频属于某个主题,就可以构造一个特征表示“用户上一次观看这一主题的视频是什么时候”,甚至还考虑了视频曾经是否曝光给用户等信息。 在排序阶段,作者将排序问题转化为一个二分类问题,原意是用样本数据来预测用户会不会对某个视频进行点击,其中,用户观看了的视频作为正样本,用户没有观看的视频作为负样本。但作者考虑到用点击率来表示用户喜好具有较大的偏差,比如,误点击、骗点击等都不能表示用户对视频的喜好,所以作者通过预测用户对一个视频的预期观看时长来代表用户对视频的喜爱程度。 为了能够使用逻辑回归预测视频预期观看时长,作者使用了加权逻辑回归,对于正样本,将其观看时间作为样本权重,对于负样本,权重为1。在训练阶段,标签仍然为0、1两类,但在线上使用阶段,输出 即为视频的预期观看时长。 备注:2019年10月22日晚上,“糖果之家”相约星期二,“大数据与智能决策”讨论班(Seminar)继续开讲,本次讨论班以推荐系统为题,共讨论了一篇文献,由硕士生进行讲解,共有青年教师、博士后、博士生和硕士生16人参加。
个人分类: 科研笔记|3212 次阅读|0 个评论
深度学习交流群
iggcas010 2019-11-7 18:11
哈喽大家好,很高兴认识大家。 我是做深度学习的小菜鸟,长期以来混迹各个深度学习QQ群中,不时抛出各种低级问题,偶有大佬指点,但绝大多数都是自己解决问题。这也是做学生最基本的学习能力,没有自学能力是无法在江湖行走的。 我目前从事语音方面的深度学习落地工作,从模型到移动端,从模型构建/重构、模型转换到参数调整,各种细节问题都是我所面对的问题,这也将是我长期的工作内容。 但,不仅仅是套用个网络,github上clone个项目,搜索下最流行的Net,调整下参数,这些都远远不够。我们需要从根本上了解、认识这种需求背后的基本知识,如何设计网络?又为何设计这样的结构?不为重复,只求有意义。 AI不是高深莫测、讳莫如深的东西,如果不能将你所做的内容用PPT讲出来,那么这不算进步,这就是纯粹的模仿,当然我等菜鸟也不可能自己重构一个框架/体系,自成一派,那太难了,做这些都是百万年薪了。 从实际出发,立足于事实问题,合理运用深度学习解决问题,这才是深度学习应有的作用。不要做些没有价值和意义的工作,仅仅为了满足所谓的虚荣心则大可不必如此。 作为一个纯粹的人,一个做学问的人,我是有信仰的。做事就是认真做事,不会掺杂任何杂念,更与金钱无关。如果可以的话,我们何不并肩作战,齐心协力,共创美好世界。 来吧,深度学习未来必将光芒万丈! 希望大家转移到我的大群,语音深度学习与信号处理,这也是我目前的研究方向和工作内容,只要是深度学习均可,不限制 点击链接加入群聊【语音深度学习及信号处】: https://jq.qq.com/?_wv=1027k=5FmC5x5
5642 次阅读|0 个评论
[转载]谷歌用深度强化学习提高提高量子计算机性能
quantumchina 2019-10-10 12:58
雷锋网 AI 科技评论按:日前,谷歌在 Nature 合作期刊《npj Quantum Information》上发表了一篇论文,提出结合深度强化学习的方法来实现通用量子控制,从而能够极大地提高量子计算机的计算能力。谷歌也在官方博客上发表文章介绍了这项工作。 论文下载地址: https://www.nature.com/articles/s41534-019-0141-3.pdf 实现近期量子计算机的主要挑战之一与其最基本的组成有关:量子比特。量子位可以与任何携带与自身能量相近的东西交互,包括杂散光子(如不需要的电磁场)、声子(量子设备的机械性振荡)或量子亏损(制造期间所形成的芯片基板中的不规则性),其中,量子亏损会不可预测地改变量子比特本身的状态。 而使问题进一步复杂化的是,用于控制量子比特的工具带来了许多挑战。研究者通过经典的控制方式来操作和读取量子比特:模拟信号以电磁场的形式耦合到其中嵌入了量子比特的物理基底,例如超导电路。这些控制电子设备中的缺陷(会造成白噪声)、来自外部辐射源的干扰以及数模转换器的波动会引入更多的随机误差,从而降低量子线路的性能。这些现实问题都会影响计算的保真度,因此限制了近期量子设备的应用。 为了提高量子计算机的计算能力,并为实现大规模量子计算铺路,就必须首先建立能够准确描述这些实验性问题的物理模型。 谷歌在 Nature 合作期刊《npj Quantum Information》上发表的《通过深度强化学习实现通用量子控制》(Universal Quantum Control through Deep Reinforcement Learning)论文中,提出了一种使用深度强化学习生成的新的量子控制框架,其中可以通过单个控制成本函数来概括量子可控制优化中的各类实际问题。与标准随机梯度下降的解决方案相比,该框架可将量子逻辑门的平均误差最多降低两个数量级,并且大幅降低了来自最优门生成的副本的门时间。这一结果为使用近期量子设备来开展量子仿真、量子化学和量子霸权测试开启了更加广阔的应用空间。 这种新的量子控制范式,其创新之处在于对量子控制函数的改进以及提出的基于深度强化学习的高效优化方法。 为了创建一个全面的成本函数,首先需要为实际的量子控制过程创建一个物理模型,基于该模型,我们能够可靠地预测误差量。对量子计算的准确性最不利的误差之一就是泄漏:在计算过程中损失的量子信息量。这种信息泄漏通常发生在量子比特的量子态被激发为较高能态或通过自发辐射衰退成较低能态时。泄漏误差不仅会损失有用的量子信息,而且还会降低「量子性」,并最终使量子计算机的性能降低得与经典计算机差不多。 在量子计算过程中准确地评估泄漏信息的常见做法是,一开始就模拟整个计算。然而,这并不利于达成构建大规模量子计算机的目的,因为量子计算机的优势就在于它们能够执行经典系统所无法执行的计算。谷歌研究人员通过使用改进后的物理模型,能够让通用的成本函数对逐渐增加的泄漏误差、控制边界条件的违背情况、总的门时间和门保真度进行联合优化。 创建了新的量子控制成本函数后,下一步就是应用高效的优化工具将该函数最小化。经证实,现有的优化方法无法找到对于控制波动同样具有鲁棒性的令人满意的高保真度解决方案。相反地,谷歌研究人员则采用同步策略的深度强化学习(RL)方法,即置信域强化学习(Trusted-Region RL),因为该方法在所有基准问题中均表现出良好的性能,对样本噪声具有固有的鲁棒性,并且能够优化有着数亿个控制参数的数百种高难度的控制问题。 这种同步策略强化学习与先前研究的异步策略强化学习方法之间的显著差异在于,其对控制策略的表示独立于控制成本。另一方面,例如 Q 学习等异步策略强化学习使用单个神经网络(NN)来表示控制轨迹和相关的奖励,其中控制轨迹指定要耦合到不同时间步长的量子比特的控制信号,而相关的奖励则评估量子控制当前步长的好坏。 同步策略强化学习引人关注的一项能力在于:能够在控制轨迹中利用非本地特征。当控制领域是高维且包含大量组合的非全局解决方案时,这种能力就变得至关重要,而对于量子系统而言,这种情况经常发生。 研究人员将控制轨迹编码为一个完全连接的三层神经网络,即策略 NN,同时将控制成本函数编码为第二个神经网络(值 NN),后者可以对折扣未来奖励(Discounted Future Reward)进行编码。强化学习智能体在模拟现实中的噪音控制驱动的随机环境下训练这两个神经网络,获得了鲁棒的控制解决方案。此外,他们还为一组连续参数化的两位量子门提供了控制解决方案,这对于量子化学应用而言很重要,不过,使用传统的通用量子门集实现这一操作,成本也很高。 谷歌研究人员使用这一新框架进行的数值模拟结果表明,与通用量子门集的传统方法相比,该方法将量子门误差减少了 100 倍,与此同时,还为一系列连续参数化的模拟量子门将门时间减少了平均一个数量级。 这项工作凸显了使用创新性机器学习技术和能够利用通用量子控制方案的灵活性和附加计算能力的近期量子算法的重要性。进一步,该领域的研究者还需要做更多的实验来将机器学习技术(就比如说我们在这项工作中开发的技术)整合到实际的量子计算过程中,从而利用机器学习来充分提高量子计算机的计算能力。 雷锋网 via https://ai.googleblog.com/2019/10/improving-quantum-computation-with.html 来源: https://www.leiphone.com/news/201910/tJH7KTvVUOED9cxW.html?uniqueCode=KxLLR7JKUTzE7EVK
个人分类: 量子计算|1565 次阅读|0 个评论
“没有灵魂”的AI作诗,有啥用?
热度 3 wshuyi 2019-9-9 10:17
解决眼高手低,促进触类旁通。 作诗 如果你今天还没有被AI作的唐诗刷屏,那说明你身边的科技爱好者和尝鲜者不够多。 引爆点来自于2019 AI 开发者大会上,华为的刘群老师做了一段 AI 赋诗演示。 现场观众非常兴奋,不时发出惊呼与啧啧赞叹。 与几年前人工智能作诗的演示效果完全不是一个等级,如今机器已经能够自主学习到平仄、押韵等基本技法,使得编出来的诗在技术层面上突飞猛进。 开会归来,我也给乐府 AI 命了个题,叫做《古亭咏怀》。 这是做出来的效果。 你觉得 AI 云得怎么样? 我把它发到了朋友圈。 不出所料,褒贬不一。 评价 褒奖的,自然是觉得这种技法运用让人惊喜。这里咱们就不提了。 质疑的,主要是以下这几种评价: 缺少灵魂 明显的模仿痕迹 拿词拼凑 也有问得更直接的: 啥意思? 这些质疑评价有没有道理? 当然有。 因为从原理上讲,机器就不可能学到“灵魂”,它只是学到了一些文本规律而已。 其原理,我在《 人工智能写手,好用吗? 》一文中已经给你介绍过了。如果你已想不起来,还是得复习一下。 了解了模型训练与生成的原理,你便会清楚,其“写作”(标准叫法是“文本生成”)内容的质量上限,也无非是高考时所谓“二类文”的等级。 在体育新闻快报,或者是证券市场资讯等领域,读者更关注的是事实类信息,对于文采、情感不甚关切。这些行当里,机器早就替代了人,成为了当仁不让的作者。 对写诗 AI 来说,输入的文本里,目前只是唐宋诗词,尚未包含那形象化的自然环境,作者胸中的喜怒哀乐,亦或是大时代里的风云变幻。 要想学到李白的洒脱,苏轼的豪放,机器巧妇难为无米之炊,怕是要望洋兴叹的。 但是,如果你因为目前机器作诗“没有灵魂”就轻视甚至是全盘否定它,那恐怕是要错过许多机会的。 赋能 与前几年,人们总在担心“机器 换人 ”这个事儿不同,现在的人工智能开发者,更愿意宣称自己是为某个行业,或者某个具体人群 赋能 。 为什么? 第一可以有效减少抵触情绪。想想看,你天天闹唤着要抢人家饭碗,谁会给你好脸色看? 第二,也是更重要的,这是一种非常聪明的 预期管理 。 当人们并不认为机器可以聪明到替代人,而觉得它只是人类的助手和高参时, 容忍度 就会更高,与其合作也会更加愉快。 作诗,能给谁赋能? 当然有服务对象。 首先是 缺乏 创作古诗 基本功 的人。这种状况,俗称“眼高手低”。 他可能没有平仄押韵的训练,所以看见了一处景物,例如大瀑布,胸中一股激情奔腾,却无法吟唱出“疑是银河落九天”那样等级的 原创 诗句,又不甘心说那句人尽皆知的“口头语”,以“哇”或者“我”开头。 这时候,如果有作诗 AI 帮忙,他就可以立即把一首绝句或者律诗跟照片一起发出去,等着看无数涌来的赞,不亦乐乎? 就在刚刚,我在学校院子里溜达,看见了鲤鱼型的喷泉,觉得很有意思。 然后呢,我立即就让 AI 赋诗一首。所谓歌以咏志嘛。 这是结果: 有人觉得这纯属作弊,没有意思。但他显然忽略了一个因素——由于目前作诗 AI 的水平还不是太高,所以你看到朋友圈里的几乎每一首 AI 吟诵诗词,几乎都是 人工筛选 出来的。 差别是,前几年,为了找出一首像样的诗,你得从机器生成的几十上百个选项里面选,还不一定能找到合适的。 如今,三五个选项,兴许就会有佳句出现。 机器做的诗,不论意境还是遣词造句,难免会有疏漏。可实话实说,咱自己作一首,别说七步成诗,就是给你俩小时,质量就真能甩开 AI 好几条街吗? 选择的过程,也是对人们诗歌鉴赏水平的锻炼与提高。 不是吗? 另外一种情境,就是 激发 人们本来就很丰沛的 联想 能力。 服务对象嘛,例如我的小学数学老师。 他老人家,平时钻研数学知识,琢磨怎么把学生教好。不过一到运动会,就暴露出自己文人的癖好——爱作个诗,让学生拿上去让主持人念。 其实也不一定是什么千古名句,打油诗就行。一来为学生打气助威,二来也是满足一下自己被学生们崇拜为诗人的良好感觉。 我亲眼看见过,他老人家被煎熬的时候。 那首七绝,前三句写得一气呵成,到了最后一句,突然怎么也想不出合适的句子,学生们都眼巴巴在一旁盯着,搞得他很是狼狈。 这时候,如果有作诗 AI 暗中帮忙…… 当然,以老师的傲骨,是断然不肯让 AI 来捉刀代笔的。 不过,AI 提供的对仗功能,很可能瞬间帮助他打开思路,妙句就很可能涌现了。 应用 其他的应用场景,也颇可期待。 例如有好事者,如今已经把“黑手”伸到了学术界。 Arxiv 这个预印本平台,我给你反复介绍过的。 他们就把这些论文的内容,喂给了文本生成模型。 于是,机器一张口,就是洋八股了。 例如这里,我输入了一句话,大意是“知识图谱集成到Transformer模型,可以形成通用结构,从而达成强人工智能”。 别管我这句话看起来有多不靠谱。机器看到后,就立即开始酝酿,往后接着“云”了。 这里,你只需要不断按下去 Tab 键,就可以像编程时代码补全一样,不断有新的文字供你选择。几秒钟,一个段落就写好了。 你可能会担心人们用它作弊。没错,这确实可能发生。但是更可能发生的是,人们在写论文写不下去的时候,通过这种补全,给自己提供一些开阔思路的语句。 尤其是英文论文写作时,国内不少研究者已经想好了要说什么,却会在遣词造句上颇觉头痛。 此时,这个应用就可能发挥很大功效。 如果你想自己尝试一下机器作诗和写论文,在我的公众号“玉树芝兰”(nkwangshuyi)后台回复“aipoem”,就能看到链接。 小结 读过本文之后,希望你能够放下对 AI 文本生成质量的苛责。转而去思考,可以在它发展改进的过程中,快人一步,做些什么。 因为篇幅关系,本文只举了作诗和论文写作这两个应用场景。在你的工作或者生活中,有没有发现文本生成可以帮助你 赋能 的场景呢? 如果有的话,欢迎你在留言中,将它分享给大家。让专业研究人员了解你的需求。只要需求足够大,他们就有激励,开发出更好用的应用,让你和更多人享受科技进步的成果。 祝深度学习愉快! 喜欢别忘了 点赞 。 还可以微信关注我的公众号 “玉树芝兰”(nkwangshuyi) 。别忘了 加星标 ,以免错过新推送提示。 延伸阅读 你可能也会对以下话题感兴趣。点击链接就可以查看。 如何高效学 Python ? 如何用 Python 和深度迁移学习做文本分类? 如何用 Python 和 BERT 做中文文本二元分类? 如何用 Python 和 BERT 做多标签(multi-label)文本分类? 如何在 fast.ai 用 BERT 做中文文本分类? 题图 : Photo by Jon Tyson on Unsplash
9434 次阅读|3 个评论
人工智能写手,好用吗?
wshuyi 2019-8-23 18:37
有了这东西,作文还怎么判啊? 印象 之前给学生上课的时候,我介绍过利用循环神经网络,仿照作家风格进行创作的机器学习模型。 不过,那模型写出来的东西嘛…… He went over to the gate of the café. It was like a country bed.“Do you know it’s been me.”“Damned us,” Bill said.“I was dangerous,” I said. “You were she did it and think I would a fine cape you,” I said.“I can’t look strange in the cab.”“You know I was this is though,” Brett said.“It’s a fights no matter?”“It makes to do it.”“You make it?”“Sit down,” I said. “I wish I wasn’t do a little with the man.”“You found it.”“I don’t know.”“You see, I’m sorry of chatches,” Bill said. “You think it’s a friend off back and make you really drunk.” 我的评价是: 望之,不似人语。 因为这种限制,人们并没有把“机器写作”当成一回事儿。 总觉得机器要写成那种以假乱真的高度,可能还需要等上很久远的一段时间。 然而,这世界变化快。 工具 早上,我尝试了一个新工具。 一个在线编辑器界面里,输入或长或短的一段话,然后按一下 Tab 键。 后面的内容,机器就帮你 自动 逐步填充。 填充的过程里,系统每次给你3个备选方案,这样你可以控制写作思路的走向。 当然,你也可以根本不管其他选项,一直走默认路径。机器照样文思泉涌。 最后生成的文章,是这个样子的。 其中,第一段落是我自己随便瞎写的。后面高亮段落,都是电脑模型自己编出来的。 不但标点符号、语法修辞用得有鼻子有眼儿,就连我那段里根本没有提到过的创始人,都跳了出来长篇大论。 尝试 你可以在我的公众号“玉树芝兰”(nkwangshuyi)后台回复“aiwrite”,查看这个智能写作编辑器的链接。 不知道你尝试过后的感觉是什么。 反正我觉得,以后学校里的英文写作课,怕是没有办法判作业了。 原本需要学生花半个小时完成的任务,现在他可以轻点几下按键,就能搞定交差。 更要命的是,从原理来讲,查重系统面对这种作品,是无效的。 因为这 并非抄袭 。 机器每一次的“创作”,几乎都能保证是全新的。 原理 你一定想知道这背后的原理吧? 其实,在我们之前的教程里,我多次给你介绍过它。就是目前最火的自然语言模型架构——Transformer。 (上图来自于经典之作“Attention is All You Need”) 我们详细介绍过使用方法的 BERT ,当初用的就是这种技术,才产生了野蛮霸榜的效果。 不过咱们用的这个编辑器,底层并不是 BERT ,而是我们之前提及的 GPT 2。 大多数人提到它的时候,介绍往往不是那么正面。 并不是因为 GPT 2 这种技术不够好。而是因为它“ 太好了 ”。 好到足够让人眼馋。 好到开发者决定, 不开放 训练数据集、代码、甚至模型参数…… 要知道,在当今这样一个 开源开放 的趋势下,这么做会招致多少非议。 当时 OpenAI 做出这种决定和解释,有人便认为是出于饥饿营销的目的,赚眼球。 但是,你刚刚自己尝试过语言生成模型的威力之后,还会保持这么单纯的想法吗? 威胁 仅举一例。 互联网上,假新闻是一个非常严重的问题。 原先,用机器造假新闻出来,成本固然低,但专业人士还是很容易通过语言特征和统计规律来识别的。 而一旦,假新闻不但生产成本低廉,分分钟可搞定,还完全具备了真新闻的语言特征,要分辨出来,就不容易了。 假新闻有可能多点大规模爆发,因 从众 和 沉默螺旋 等社会心理机制,对大众轻易造成误导。 面对这种潜在威胁,我们真的已有完善的应对之策吗? 正因为这种威胁实际存在,数据伦理才愈发成为重要的研究课题。 如果你做数据科学研究,这个方向大有可为。 魔盒 风险是显著的。 而技术的进步与发展,真的能够因为一家机构决定“不开放模型”的举措,就能停滞吗? 当然不会。 OpenAI 因为压力,不断释放出更为强大的开源模型。目前开放的预训练模型版本,达到了 774M 个参数。距离完全版本模型的释放,也就是临门一脚的事儿了。 曾经,普通人即便拿到了这种开源工具,也需要一定的门槛,才能使用。 然而“有好事者”,在整合包装了若干种主流的 Transformer 模型之后,降低了 GPT2 机器写作的门槛。 于是,就有你看到的这个编辑器了。 波澜 我把 GPT2 自动写作的结果,发到了朋友圈。 惊艳之余,小伙伴想到的,主要是以下两个问题: 什么时候出中文的? 能否和写字机器人配合使用? 我看后很无语。 好在这一位的留言,让我看到了光明的一面: 以后英语老师出阅读题,可方便多了。 延伸阅读 你可能也会对以下话题感兴趣。点击链接就可以查看。 如何高效学 Python ? 如何用 Python 和深度迁移学习做文本分类? 如何用 Python 和 BERT 做中文文本二元分类? 如何用 Python 和 BERT 做多标签(multi-label)文本分类? 如何在 fast.ai 用 BERT 做中文文本分类? 喜欢别忘了 点赞 。 还可以微信关注我的公众号 “玉树芝兰”(nkwangshuyi) 。别忘了 加星标 ,以免错过新推送提示。 题图: Photo by Pereanu Sebastian on Unsplash
3001 次阅读|0 个评论
如何在 fast.ai 用 BERT 做中文文本分类?
wshuyi 2019-7-29 10:19
鱼我所欲也,熊掌亦我所欲也。 痛点 我之前用 BERT ,就 没有 痛快过。 最初,是 Google 发布的原始 Tensorflow 代码,一堆堆参数,一行行代码,扑面而来。让人看着,就眼晕。 后来,Google 把 BERT 在 Tensorflow Hub 上面打了个包。 还是需要很多行代码,许多参数设置,才能让它学习你自己提供的数据。不过我还是很兴奋地帮你重构代码,搞了个 十行代码可执行版本 。 但这其实,不过是 隐藏了大量细节 而已。 那些繁琐的代码,依然在那里。 代码越多,修改和维护就越困难。 你看人家 fast.ai ,需要什么功能,只要找到对应的 API ,输入三样东西: 数据 模型架构 损失函数 一般而言,只需要几行代码。 然后,结果就出来了。 这样,你可以很轻易尝试自己的想法,并且在不同数据集上面加以验证。 这种 快速迭代反馈 ,对于机器学习研究来说,是非常有益处的。 因此,当 Huggingface 的 Kaushal Trivedi 真的起心动念,仿照 fast.ai 搞了个 fastbert 时,我特别开心。 于是又 写了份教程 ,教你如何用它来做多标签文本分类。 但是,这个 fastbert ,与 fast.ai 比起来,差别还是太大了。 首先是设置起来依旧繁琐,你得照顾到许多参数; 其次是维护并不及时。两次更新之间的时间,竟然可能相差一个月; 第三是缺乏文档和样例。这对于新手,是非常不友好的。 几乎所有遭遇到这些问题的人,都在问一个问题: 什么时候,才能在 fast.ai 里面,方便地调用 BERT 来完成自然语言处理任务呢? 大部分人,只是动动念头,然后继续将就着使用 fast.ai 提供的 ULMfit 来处理英文文本。 毕竟,对于英文、波兰文来说,效果 也不错 。 可是,中文怎么办? ULMfit 推出1年多了,至今却没有一个公开发布、广泛使用的中文预训练模型。 这真是令人烦恼的事儿啊! 黑客 有需求,也就有人来琢磨解决。 fast.ai 结合 BERT 这问题,对研究者的要求,着实不低。至少包括: 熟悉 fast.ai 框架机制; 熟悉 BERT 工作原理; 此外,还得能够融汇贯通,把二者结合起来,这就需要对 PyTorch 的熟练掌握。 能做出这样工作的人,大约就算是黑客了。 幸好,这样的高人真的出手了。 他就是卡内基梅隆大学的研究生,Keita Kurita。 Keita 有个博客,叫 Machine Learning Explained ,干货非常多,这里一并推荐给你。 他写的 fast.ai 结合 BERT 的英文教程,地址在 这里 。 其实,有时候问题的解决,就如同窗户纸,一捅就破。 Keita 并没有尝试“重新发明轮子”,即从头去解决这个问题。 他只是巧妙地借用了第三方的力量,并且将其与 fast.ai 融合起来。 这个第三方,就是咱们前面提过的 Huggingface 。 自从 BERT 的 Tensorflow 源代码经由 Google 发布出来,他们就在 Github 上面,搞了一个 PyTorch 版本的克隆。 这个克隆,还包含了预训练的结果。 也就是说,他们提供了一个完整版的模型架构,只要配上相应的数据和损失函数, fast.ai 就可以开工了! fast.ai 文本处理一直不支持中文,是因为它其实也调用了第三方库,就是咱们介绍过的 Spacy 。 到今天为止, Spacy 也并不能完整支持中文处理,这就导致了 fast.ai 对中文无能为力。 但是, BERT 可不是这样。 它很早就有专门的中文处理工具和预训练模型。 关键是,如何在 fast.ai 中,用它替换掉 Spacy 来使用。 Keita 的文章,一举解决了上述两个问题。 便捷的 fast.ai 框架就这样和强大的 BERT 模型嫁接了起来。 变化 受 Keita 的影响,其他作者也尝试了不同的任务和数据集,并且把自己的代码和工作流程也做了发布。 例如 abhik jha 这篇 “Fastai integration with BERT: Multi-label text classification identifying toxicity in texts”(地址在 这里 ),还在 Twitter 受到了 Jeremy Howard (fast.ai 联合创始人)点赞。 蒙天放 这篇 知乎教程,更讲解了如何处理中文数据分类。 看起来,我似乎没有必要再写一篇教程了。 然而环境是在 变化 的。 Huggingface 现在,已经不仅仅做 BERT 预训练模型的 PyTorch 克隆了。 他们居然希望把所有的 Transformer 模型,全都搞一遍。 于是把原先的 Github 项目“pytorch-pretrained-BERT”,改成了“pytorch-transformers”这样一个野心勃勃的名字。 新的项目地址在 这里 。 你的想象空间,也就可以因此而开启了。 能不能用这些基于 Transformer 的预训练模型,来做自己的下游任务呢? 一如既往, Huggingface 的技术还是那么过硬。 然而,提供的接口,还是那么繁琐。虽然用户手册比之前有了较大改进,可教程样例依然不够友好。 我于是在思考,既然老版本 BERT 预训练模型可以和 fast.ai 对接,那能否把新版本的各种 Transformer,也用这种方式简化调用呢? 如果这样做可以的话,咱们就不必再眼巴巴等着 Huggingface 改进教程与用户接口了,直接用上 fast.ai ,取两者的长处,结合起来就好了。 于是,我开始了尝试。 一试才发现,新版本“pytorch-transformers”的预训练模型,与老版本还有一些变化。倘若直接迁移代码,会报错的。 所以,这篇文章里,我从头到尾,为你提供一个在新版本“pytorch-transformers” 中 BERT 预训练模型上直接能用的样例,并且加以详细讲解。 这样一来,相信我踩了一遍的坑,你就可以躲开了。这可以大量节省你的时间。 同时,我也希望你能够以这个样例作为基础,真正做到 举一反三 ,将其他的 Transformer 模型尝试迁移,并且把你的试验结果,分享给大家。 环境 本文的配套源代码,我放在了 Github 上。 你可以在我的公众号“玉树芝兰”(nkwangshuyi)后台回复“aibert”,查看完整的代码链接。 如果你对我的教程满意,欢迎在页面右上方的 Star 上点击一下,帮我加一颗星。谢谢! 注意这个页面的中央,有个按钮,写着“在 Colab 打开”(Open in Colab)。请你点击它。 然后,Google Colab 就会自动开启。 我建议你点一下上图中红色圈出的 “COPY TO DRIVE” 按钮。这样就可以先把它在你自己的 Google Drive 中存好,以便使用和回顾。 Colab 为你提供了全套的运行环境。你只需要依次执行代码,就可以复现本教程的运行结果了。 如果你对 Google Colab 不熟悉,没关系。我 这里有一篇教程 ,专门讲解 Google Colab 的特点与使用方式。 为了你能够更为深入地学习与了解代码,我建议你在 Google Colab 中开启一个全新的 Notebook ,并且根据下文,依次输入代码并运行。在此过程中,充分理解代码的含义。 这种看似笨拙的方式,其实是学习的有效路径。 代码 首先提示一下,fast.ai 给我们提供了很多便利,例如你只需要执行下面这一行,许多数据科学常用软件包,就都已经默认读入了。 from fastai.text import * 因此,你根本就不需要执行诸如 import numpy as np , import torch 之类的语句了。 下面,我们本着 fast.ai 的三元素(数据、架构、损失函数)原则,首先处理数据。 先把数据下载下来。 !wgethttps://github.com/wshuyi/public_datasets/raw/master/dianping.csv 这份大众点评情感分类数据,你应该已经很熟悉了。之前的教程里面,我多次用它为你演示中文二元分类任务的处理。 让我们用 Pandas ,读入数据表。 df=pd.read_csv( dianping.csv ) 下面是划分 训练集、验证集和测试集 。我们使用 scikit-learn 软件包协助完成。 from sklearn.model_selection import train_test_split 首先,我们把全部数据,分成训练和测试集。 注意这里我们设定 random_state ,从而保证我这儿的运行结果,在你那里可 复现 。这可是“可重复科研”的基本要件。 train,test=train_test_split(df,test_size= .2 ,random_state= 2 ) 之后,我们再从原先的训练集里,切分 20% ,作为验证集。依旧,我们还是要设置 random_state 。 train,valid=train_test_split(train,test_size= .2 ,random_state= 2 ) 之后,咱们检查一下不同数据集合的长度。 训练集: len(train) 验证集: len(valid) 测试集: len(test) 然后,来看看训练集前几行内容。 train.head() 数据预处理的第一步,已经做完了。 但是,我们都知道,机器学习模型是不认识中文的,我们必须做进一步的处理。 这时候,就需要 Huggingface 的 Transformers 预训练模型登场了。 !pipinstallpytorch-transformers 本文演示的是 BERT ,所以这里只需要读入两个对应模块。 一个是 Tokenizer ,用于把中文句子,拆散成一系列的元素,以便映射成为数字来表示。 一个是 序列分类 模块。在一堆 Transformer 的顶部,通过全连接层,来达到分类功能。 from pytorch_transformers import BertTokenizer,BertForSequenceClassification 我们指定几个必要的参数。 例如每句话,最长不能超过128个字。 每次训练,用32条数据作为一个批次。 当然,我们用的预训练模型,是中文的,这也得预先讲好。 bert_model= bert-base-chinese max_seq_len= 128 batch_size= 32 设置参数之后,我们就可以读取预置的 Tokenizer 了,并且将它存入到 bert_tokenizer 变量中。 bert_tokenizer=BertTokenizer.from_pretrained(bert_model) 我们检查一下,看预训练模型都认识哪些字。 这里我们随意选取从 2000 到 2005 位置上的 Token 来查看。 list(bert_tokenizer.vocab.items()) 这里我们看到, BERT 还真是认识不少汉字的。 我们把全部的词汇列表存储起来,下面要用到。 bert_vocab=Vocab(list(bert_tokenizer.vocab.keys())) 注意 fast.ai 在 Tokenizer 环节,实际上设计的时候有些偷懒,采用了“叠床架屋”的方式。 反正最终调用的,是 Spacy ,因此 fast.ai 就把 Spacy Tokenizer 作为底层,上层包裹,作为自己的 Tokenizer 。 我们这里做的工作,就是重新定义一个新的 BertFastaiTokenizer ,最重要的功能,就是把 Spacy 替掉。另外,在每一句话前后,根据 BERT 的要求,加入起始的 和结束位置的 ,这两个特殊 Token 。 class BertFastaiTokenizer (BaseTokenizer) : def __init__ (self,tokenizer,max_seq_len= 128 ,**kwargs) : self.pretrained_tokenizer=tokenizer self.max_seq_len=max_seq_len def __call__ (self,*args,**kwargs) : return self def tokenizer (self,t) : return ]+self.pretrained_tokenizer.tokenize(t) + ] 我们把这个类的调用,作为一个函数保存。 tok_func=BertFastaiTokenizer(bert_tokenizer,max_seq_len=max_seq_len) 然后,最终的 Tokenizer, 是把这个函数作为底层,融入其中的。 bert_fastai_tokenizer=Tokenizer( tok_func=tok_func, pre_rules= ) 我们设定工作目录为当前目录。 path=Path( . ) 之后,得把训练集、验证集和测试集读入。 注意我们还需要指定数据框里面,哪一列是文本,哪一列是标记。 另外,注意 fast.ai 和 BERT 在特殊 Token 定义上的不同。 include_bos 和 include_eos 要设定为 False ,否则两套系统间会冲突。 databunch=TextClasDataBunch.from_df(path,train,valid,test, tokenizer=bert_fastai_tokenizer, vocab=bert_vocab, include_bos= False , include_eos= False , text_cols= comment , label_cols= 'sentiment' , bs=batch_size, collate_fn=partial(pad_collate,pad_first= False ,pad_idx= 0 ), ) 让我们来看看预处理之后的数据吧: databunch.show_batch() 在 fast.ai 里面,正常出现了 BERT 风格的中文数据预处理结果,还是很令人兴奋的。 注意,前面我们指定了 pre_rules 和 post_rules 两个参数,都写成 下面,我们来用新构建的类,搭模型架构。 注意你需要说明分类任务要分成几个类别。 我们这里是二元分类,所以写2。 bert_pretrained_model=MyNoTupleModel.from_pretrained(bert_model,num_labels= 2 ) 现在,只剩下第三个元素了,那就是 损失函数 。 因为要做二元分类,输出的结果按照 fast.ai 的要求,会是 这样。所以损失函数我们选择 nn.CrossEntropyLoss 。 loss_func=nn.CrossEntropyLoss() 三大要素聚齐,我们终于可以构建学习器 Learner 了。 learn=Learner(databunch, bert_pretrained_model, loss_func=loss_func, metrics=accuracy) 有了 Learner ,剩下的工作就简单了许多。 例如,我们可以寻找一下最优的最大学习速率。 learn.lr_find() 找到后,绘制图形。 learn.recorder.plot() 读图以后,我们发现,最大学习速率的量级,应该在 e-5 上。这里我们设置成 2e-5 试试。 这里,只跑两个轮次,避免过拟合。 当然,也有省时间的考虑。 learn.fit_one_cycle( 2 , 2e-5 ) 验证集上,效果还是很不错的。 但是,我们不能只拿验证集来说事儿。还是得在测试集上,看真正的模型分类效果。 这里面的原因,我在《 如何正确使用机器学习中的训练集、验证集和测试集? 》一文中,已经为你做了详细的解释。 如果忘了,赶紧复习一下。 我们用 笨办法 ,预测每一条测试集上的数据类别。 定义一个函数。 def dumb_series_prediction (n) : preds= ) )) return preds 实际执行,结果存入到 preds 里面。 preds=dumb_series_prediction(len(test)) 查看一下前 10 个预测结果: preds 我们还是从 scikit-learn 里面读入分类报告和混淆矩阵模块。 from sklearn.metrics import classification_report,confusion_matrix 先看分类报告: print(classification_report(test.sentiment,preds)) f1-score 达到了 0.9 ,很棒! 再通过混淆矩阵,看看哪里出现判断失误。 print(confusion_matrix(test.sentiment,preds)) 基于 BERT 的中文分类任务完成! 小结 通过这篇文章的学习,希望你掌握了以下知识点: 如何在 fast.ai 中使用自定义 Tokenizer; 如何根据与训练模型要求,微调特殊 Token 设置; 如何在 fast.ai 中调用 Transformer 预训练模型; 如何把自己的数据、架构和损失函数封装在 fast.ai 学习器中。 如前文所述,希望你举一反三,尝试把 Huggingface 推出的其他 Transformer 预训练模型与 fast.ai 结合起来。 欢迎你把尝试的结果在留言区分享给其他同学。 祝深度学习愉快! 征稿 SSCI 检索 期刊 Information Discovery and Delivery 要做一期《基于语言机器智能的信息发现》( “Information Discovery with Machine Intelligence for Language”) 特刊(Special Issue)。 本人是客座编辑(guest editor)之一。另外两位分别是: 我在北得克萨斯大学(University of North Texas)的同事 Dr. Alexis Palmer 教授 南京理工大学 章成志教授 征稿的主题包括但不限于: Language Modeling for Information Retrieval Transfer Learning for Text Classification Word and Character Representations for Cross-Lingual Analysis Information Extraction and Knowledge Graph Building Discourse Analysis at Sentence Level and Beyond Synthetic Text Data for Machine Learning Purposes User Modeling and Information Recommendation based on Text Analysis Semantic Analysis with Machine Learning Other applications of CL/NLP for Information Discovery Other related topics 具体的征稿启事(Call for Paper),请查看 Emerald 期刊官网的 这个链接 (http://dwz.win/c2Q)。 作为本专栏的老读者,欢迎你,及你所在的团队踊跃投稿哦。 如果你不巧并不从事上述研究方向(机器学习、自然语言处理和计算语言学等),也希望你能帮个忙,转发这个消息给你身边的研究者,让他们有机会成为我们特刊的作者。 谢谢! 延伸阅读 你可能也会对以下话题感兴趣。点击链接就可以查看。 如何用 Python 和深度迁移学习做文本分类? 如何用 Python 和 BERT 做中文文本二元分类? 如何用 Python 和 BERT 做中文文本二元分类? 如何用 Python 和 BERT 做多标签(multi-label)文本分类? 题图 : Photo by Harley-Davidson on Unsplash
8881 次阅读|0 个评论
如何用 fast.ai 高效批量推断测试集?
wshuyi 2019-7-22 08:42
简洁和效率,我们都要。 痛点 通过咱们之前几篇 fast.ai 深度学习框架介绍,很多读者都认识到了它的威力,并且有效加以了利用。 fast.ai 不仅语法简洁,还包裹了很多实用的数据集与预训练模型,这使得我们在研究和工作中,可以省下大量的时间。 跟着教程跑一遍,你会发现做图像、文本分类,乃至推荐系统,其实是非常简单的事情。 然而,细心的你,可能已经发现了一个问题: fast.ai 训练数据体验很好;可做起测试集数据推断来,好像并不是那么 高效 。 教程里面,模型训练并且验证后,推断/预测是这么做的: 如果你只是需要对单个新的数据点做推断,这确实足够了。 但是如果你要推断/预测的是一个集合,包含成千上万条数据,那么该怎么办呢? 你可能会想到,很简单,写个循环不就得了? 从道理上讲,这固然是没错的。 但是你要真是那么实践起来,就会感觉到 等待的痛苦 了。 因为上面这条语句,实际上效率是很低的。 这就如同你要搬家。理论上无非是把所有要搬的东西,都从A地搬到B地。 但是,你比较一下这两种方式: 方法一,把所有东西装箱打包,然后一箱箱放到车上,车开到B地后,再把箱子一一搬下来。 方法二,找到一样要搬的东西,就放到车上,车开到B地,搬下来。车开回来,再把下一样要搬的东西放上去,车开走……重复这一过程。 你见过谁家是用方法二来搬家的? 它的效率太低了! 用循环来执行 predict 函数,也是一样的。那里面包含了对输入文本的各种预处理,还得调用复杂模型来跑这一条处理后的数据,这些都需要开销/成本。 怎么办? 其实,fast.ai 提供了完整的解决方案。你可以把测试集作为整体进行输入,让模型做推断,然后返回全部的结果。根本就不需要一条条跑循环。 可是,因为这个方式,并没有显式写在教程里面,导致很多人都有类似的疑问。 这篇文章里,我就来为你展示一下,具体该怎么做,才能让 fast.ai 高效批量 推断测试集数据。 为了保持简洁,我这里用的是文本分类的例子。其实,因为 fast.ai 的接口逻辑一致,你可以很方便地把它应用到图像分类等其他任务上。 划分 为了保持专注,我们这里把一个模型从训练到推断的过程,划分成两个部分。 第一部分,是读取数据、训练、验证。 第二部分,是载入训练好的模型,批量推断测试集。 我把第一部分的代码,存储到了 Github 上,你可以在我的公众号“玉树芝兰”(nkwangshuyi)后台回复“train”,查看完整的代码链接。 点击其中的“Open in Colab”按钮,你可以在 Google Colab 云端环境打开并且执行它,免费使用 Google 提供的高性能 GPU 。 如果你想了解其中每一条代码的具体含义,可以参考我的这篇《 如何用 Python 和深度迁移学习做文本分类? 》。 注意,在其中,我加入了3条额外的数据输出语句。 分别是: data_clas.save( 'data_clas_export.pkl' ) 这一条,存储了我们的分类数据(包含训练集、验证集、测试集)及其对应的标签。注意,因为 fast.ai 的特殊假设(具体见后文“解释”部分),测试集的标签全部都是0。 也正因如此,我们需要单独存储测试集的正确标签: with open(path/ test_labels.pkl , 'wb' ) as f: pickle.dump(test.label,f) 除了上述两条之外,你还需要保留训练好的模型。 毕竟,为了训练它,我们也着实是花了一番时间的。 learn.export( model_trained.pkl ) 上述 pickle 数据文件,我都存储到了 Gitlab 公共空间。后面咱们要用到。 这就是训练和存储模型的全部工作了。 第二部分,才是本文的 重点 。 这一部分,我们开启一个全新的 Google Colab 笔记本,读入上述三个文件,并且对测试集进行批量推断。 这个笔记本,我同样在 Github 上存储了一份。 你可以在后台回复“infer”,找到它的链接。 下面,我给你一一讲解每一条代码语句的作用,并且告诉你一些关键点, 避免 你在使用过程中,跟我一样 踩坑 。 代码 首先,你要读入 fast.ai 的文本处理包。 from fastai.text import * 注意这个包可不只是包含 fast.ai 的相关函数。 它把许多 Python 3 新特性工具包,例如 pathlib 等,全都包含在内。这就使得你可以少写很多 import 语句。 下面,是从 Gitlab 中下载我们之前保存的 3 个 pickle 数据文件。 !gitclonehttps://gitlab.com/wshuyi/demo_inference_ulmfit_fastai_data.git 如果你对 pickle 数据不是很熟悉,可以参考我的这篇文章《 如何用 Pandas 存取和交换数据? 》。 我们设定一下数据所在目录: path=Path( 'demo_inference_ulmfit_fastai_data' ) 下面,我们就要把训练好的模型恢复回来了。 learn=load_learner(path, model_trained.pkl ) 不过这里有个问题。 虽然 fast.ai 是高度集成的,但为了避免训练结果占用空间过大,模型和数据是分别存储的。 这时我们读取回来的,只有一个预训练模型架构。配套的数据,却还都不在里面。 我们可以通过展示学习器 learn 的内容,来看看。 learn 注意下方架构的数据是完整的,但是训练集、验证集、测试集的长度,都是0。 这时候,我们就需要自己读入之前存好的分类数据了。 learn.data=load_data(path, data_clas_export.pkl ) 数据、模型都在,我们可以进行测试集数据推断了。 predictions=learn.get_preds(ds_type=DatasetType.Test,ordered= True ) 注意这一句里,函数用的是 get_preds 。说明我们要批量推断。 数据部分,我们指定了测试集,即 DatasetType.Test 。但是默认情况下,fast.ai 是不保持测试集数据的顺序的。所以我们必须指定 ordered=True 。这样才能拿我们的预测结果,和测试集原先的标记进行比较。 测试集推断的结果,此时是这样的: predictions 这个列表里面包含了 2 个张量(Tensor)。 千万不要以为后面那个是预测结果。不,那就是一堆0. 你要用的,是第一个张量。 它其实是个二维列表。 每一行,代表了对应两个不同分类,模型分别预测的概率结果。 当然,作为二元分类,二者加起来应该等于1. 我们想要的预测结果,是分类名称,例如0还是1. 先建立一个空的列表。 preds= .tolist(): preds.append(int(item item )) 看看我们最终预测的标记结果: preds 为了和真实的测试集标记比较,我们还要读入第三个文件。 with open(path/ test_labels.pkl , 'rb' ) as f: labels=pickle.load(f) 预测结果与真实标记我们都具备了。下面该怎么评价模型的分类效果? 这时可以暂时抛开 fast.ai ,改用我们的老朋友 scikit-learn 登场。 它最大的好处,是用户界面设计得非常人性化。 我们这里调用两个模块。 from sklearn.metrics import classification_report,confusion_matrix 先来看分类报告: print(classification_report(labels,preds)) 几千条数据训练下来,测试集的 f1-score 就已经达到了 0.92 ,还是很让人振奋的。 fast.ai 预置的 ULMfit 性能,已经非常强大了。 我们再来看看混淆矩阵的情况: print(confusion_matrix(labels,preds)) 分类的错误情况,一目了然。 解释 讲到这里,你可能还有一个疑惑,以易用著称的 fast.ai ,为什么没有把测试集推断这种必要功能做得更简单和直观一些? 而且,在 fast.ai 里,测试集好像一直是个“二等公民”一般。 以文本分类模型为例。 TextDataBunch 这个读取数据的模块,有一个从 Pandas 数据框读取数据的函数,叫做 from_df 。 我们来看看它的文档。 注意这里, train_df (训练集) 和 valid_df (验证集)都是必填项目,而 test_df 却是选填项目。 为什么? 因为 fast.ai 是为你参加各种学术界和业界的数据科学竞赛提供帮助的。 这些比赛里面,往往都会预先给你训练集和验证集数据。 但是测试集数据,一般都会在很晚的时候,才提供给你。即便给你,也是 没有 标记的。 否则,岂不是成了发高考试卷的时候,同时给你标准答案了? 看过《 如何正确使用机器学习中的训练集、验证集和测试集? 》一文后,再看 fast.ai 的设计,你就更容易理解一些。 你训练模型的大部分时候,都 不会 和测试集打交道。甚至多数场景下,你根本都没有测试集可用。 所以,fast.ai 干脆把它做成了可选项,避免混淆。 然而,这种设计初衷虽然好,却也给很多人带来烦恼。尤其是那些不参加竞赛,只是想和已有研究成果对比的人们。 大量场景下,他们都需要频繁和测试集交互。 我建议 fast.ai ,还是把这部分人的需求考虑进来吧。至少,像本文一样,写个足够简明的文档或样例,给他们使用。 小结 通过这篇文章的学习,希望你掌握了以下知识点: 如何保存在 fast.ai 中训练的模型; 如何在 fast.ai 中读取训练好的模型,以及对应的数据; 如何批量推断测试集数据; 如何用 scikit-learn 进行分类测试结果汇报。 祝深度学习愉快! 征稿 SSCI 检索 期刊 Information Discovery and Delivery 要做一期《基于语言机器智能的信息发现》( “Information Discovery with Machine Intelligence for Language”) 特刊(Special Issue)。 本人是客座编辑(guest editor)之一。另外两位分别是: 我在北得克萨斯大学(University of North Texas)的同事 Dr. Alexis Palmer 教授 南京理工大学 章成志教授 征稿的主题包括但不限于: Language Modeling for Information Retrieval Transfer Learning for Text Classification Word and Character Representations for Cross-Lingual Analysis Information Extraction and Knowledge Graph Building Discourse Analysis at Sentence Level and Beyond Synthetic Text Data for Machine Learning Purposes User Modeling and Information Recommendation based on Text Analysis Semantic Analysis with Machine Learning Other applications of CL/NLP for Information Discovery Other related topics 具体的征稿启事(Call for Paper),请查看 Emerald 期刊官网的 这个链接 (http://dwz.win/c2Q)。 作为本专栏的老读者,欢迎你,及你所在的团队踊跃投稿哦。 如果你不巧并不从事上述研究方向(机器学习、自然语言处理和计算语言学等),也希望你能帮个忙,转发这个消息给你身边的研究者,让他们有机会成为我们特刊的作者。 谢谢! 延伸阅读 你可能也会对以下话题感兴趣。点击链接就可以查看。 如何高效学 Python ? 《文科生数据科学上手指南》分享 如何用 Python 和 fast.ai 做图像深度迁移学习? 如何用 Python 和深度迁移学习做文本分类? 如何用 Python 和 BERT 做中文文本二元分类? 喜欢别忘了 点赞 。 还可以微信关注我的公众号 “玉树芝兰”(nkwangshuyi) 。别忘了 加星标 ,以免错过新推送提示。 题图: Photo by Tim Evans on Unsplash
6149 次阅读|0 个评论
专题讨论班:模式识别之深度学习算法、自然语言处理(周池春)
GrandFT 2019-6-17 12:38
题目:模式识别之深度学习算法、自然语言处理及其他相关问题简介 主讲人:周池春 时间:2019年6月17号下午12:30-14:30 地点:天津大学新校区32教302 提纲: 1)模式识别中的数据问题与现有解决问题,如,冗余(高度相关)、错误、不全,缺失的特征被抹平。 2)模式识别中的算法。 机器学习算法 深度学习算法 RNN类网络 CNN类网络 其他代表网络 Tensorflow为代表的框架 3)自然语言处理的例子。 从关键词模型开始说起到n-gram统计算法 →机器学习算法→三大经典深度学习算法 模型压缩问题 语言的理解→语言模型 3)网络与linux简介。 4)web服务与python解决方案简述。 参考文献: 《深度学习》Goodfellow、Bengio和Courville 《NeuralnetworksandDeepLearning》 《DeepLearningwithPython》 《Hands-OnMachineLearningwithScikit-LearnandTensorFlow》
个人分类: 专题讨论班|2057 次阅读|0 个评论
[转载]进行深度学习时,如何选择激活函数?
dalianwang 2019-6-16 04:22
How to choose the right activation function? The activation function is decided depending upon the objective of the problem statement and the concerned properties. Some of the inferences are as follows: Sigmoid functions work very well in the case of shallow networks and binary classifiers. Deeper networks may lead to vanishing gradients. The ReLU function is the most widely used, and try using Leaky ReLU to avoid the case of dead neurons. Thus, start with ReLU, then move to another activation function if ReLU doesn't provide good results. Use softmax in the outer layer for the multi-class classification. Avoid using ReLU in the outer layer.
个人分类: 机器学习|1371 次阅读|0 个评论
如何用 Python 和 BERT 做多标签(multi-label)文本分类?
wshuyi 2019-5-21 09:08
10余行代码,借助 BERT 轻松完成多标签(multi-label)文本分类任务。 疑问 之前我写了《 如何用 Python 和 BERT 做中文文本二元分类? 》一文,为你讲解过如何用 BERT 语言模型和迁移学习进行文本分类。 不少读者留言询问: 王老师,难道 BERT 只能支持二元分类吗? 当然 不是 。 BERT 是去年以来非常流行的语言模型(包括 ELMO, Ulmfit, BERT, Ernie, GPT-2等)的一种,长期霸榜,非常强悍。 研究者已经证明,它可以很好地处理多种自然语言处理任务。甚至在部分任务上,超越了人类水平。 它处理自然语言任务,靠的是 迁移学习 的威力。 复习一下,我在《 如何用 Python 和深度迁移学习做文本分类? 》一文里,给你讲过迁移学习的范例 ULMfit (Universal language model fine-tuning for text classification)。 其原理就是首先让一个深度神经网络在海量文本上 自监督学习 (self-supervised learning)。 自监督和非监督(unsupervised)学习的区别,在于自监督学习,实际上是 有标记 的。 例如我们找到大量的语料,把常出现的词语放在一起,配对成(输入,输出)格式,例如(France, Paris)。这里 Paris 就可以看做是 France 的标记。然后学习的方式跟监督学习没有差别。 这也是著名的 word2vec 训练方式。 那问题来了,为什么不干脆叫监督学习? 因为监督学习,往往是指需要 人工参与打标记 的。例如你已经熟悉的情感分类任务,都是人阅读以后标记1或者0的。 可在语言模型这里,你利用了语料自身中词语的自然位置关系,没有主动人工打标记。所以为了区分,我们叫它“自监督学习”。 经过足够长时间的训练,这个神经网络就学会了该领域语言的特性。 然后,我们给这个神经网络,加上一个头部,就可以让它来完成特定的目标。 加上全连接层作为分类器,就可以把输入文本做分类(classification),例如我们讲解过的情感分析。 加上解码器(decoder),就可以把输入文本序列,转换成另一种序列。这就可以完成文本翻译、问答,甚至是文本转语音。 加上生成器(generator),例如卷积神经网络,就可以把序列转换成多层矩阵。这样,机器就可以根据你的文字输入,为你输出对应的图像来。 我以二元分类任务举例,仅仅是因为它 足够简单 ,便于说明。 你完全可以举一反三,直接使用它来做多类别(multi-class)分类任务,例如三分类情感分析(正向、负向、中性)之类。 这时候,《 如何用 Python 和 BERT 做中文文本二元分类? 》一文中其他的代码,都是 可以复用 的。 你只需要调整一下 测量指标 (Evaluation Metrics)。 例如说,f1 分数专门针对二分类。你用它衡量多分类任务,程序会无所适从。 把它删除,或者替换成 micro f 或者 macro f 分数,就好了。 本文,我们来看看其他同学提出的这个 更有挑战性 的问题: 老师,BERT 能否做多标签(multi-label)分类? 多标签 先来解释一下,什么叫做多标签(multi-label)文本分类问题。 这里咱们结合一个 Kaggle 上的竞赛实例。 竞赛的名字叫做:恶毒评论分类挑战(Toxic Comment Classification Challenge),链接在 这里 。 这个竞赛的数据,取自真实的网络评论。 除了序号和原始文本以外,每行数据都包含了6个维度的标注,分别是: toxic(恶毒) severe_toxic(非常恶毒) obscene(污言秽语) threat(威胁) insult(侮辱) identity_hate(憎恨) 这就是我们的任务: 对于一个样本,需要同时在6个不同维度上判断它是否属于该标签范畴。 我觉得这个竞赛的初衷非常好。 因为网上恶毒评论过多,会降低用户高质量内容贡献度,让社区变得沉寂。 而人工处理,显然效率和速度都不理想,而且成本过高。 用机器自动甄别,可以第一时间直接屏蔽恶毒评论,有助于打造良好的网络社群环境和讨论氛围。 并且,成本还很低。 你可以很容易看出,这种多标签标注和多元分类标注的区别。 多元分类任务里面,分类互斥。一个样本属于某种分类, 不能同时属于另一种 分类。 例如一条评论,不能同时属于“正向”或者“负向”情感。 一张图片,不能同时属于“哆啦A梦”或者“瓦力”。 但是这个多标签分类例子里面,我们不难看出,一个“非常恶毒”的评论,同时也必定是“恶毒”的评论。 因此一个样本,可能同时属于上述两种,甚至全部六种类别。 当然,也有可能 不属于任何 一种类别。 了解了任务后,下一个问题自然是:怎么做? 最简单的偷懒办法,是分别建立6个 独立的 模型。 第一个模型,判断是否“恶毒”。 …… 最后一个模型,判断是否“憎恨”。 这样一来,我们就可以把一个多标签分类问题,转化成6个二元分类问题。 解决了? 对。 很多论文,就是这么处理多标签分类任务的。 这样做有问题吗? 有。 因为6个独立模型,可能会判断出某条评论“非常恶毒”的同时,却认为它不“恶毒”。 这显然是个荒唐结论。 但既然模型是独立的,哪里管得了这么多? 好在,多标签分类任务,其实是可以 只用一个模型 来解决的。 一个模型的好处有很多。 例如可以对上述荒唐结论进行惩罚(penalize),从而让机器避免得出这样不合乎逻辑的判定结果。 而且,可以节省大量的时间、存储和计算资源。 本文,我们就讨论如何基于 BERT ,构造这样的多标签分类模型。 发现 本来,我是打算在之前 BERT 二元分类代码的基础上,实现多标签分类功能,然后把代码和教程提供给你的。 再次强调,我做的工作主要是 简化 (而非从头撰写)代码,使得你可以利用它学习,以及替换成你自己的数据来使用。 但是,现在正是 Tensorflow 大版本切换的过渡期。 之前分享的 BERT 二元分类原始代码采用 Tensorflow 1.X 代码编写,底层代码处理起来非常麻烦。 而且一旦 2.0 正式版推出,之前写好的 1.X 版代码需要大幅修改,甚至重来。 这种西西弗斯推石头般的 无用功 ,让人望而却步。 这时,有人 捷足先登 了。 完成这件事的,就是我的 LinkedIn 好友 Kaushal Trivedi 。 早在今年1月份,他就在 medium 发布了关于 BERT 多标签分类的文章。 那一篇文章的配套代码,他是直接基于 PyTorch 撰写的,包含了大量底层细节。 对于应用来说,源代码包含底层细节过多,可不是什么好事儿。 因为这意味着以下几个特点: 代码很长 为了适应自己的任务,找需要修改的地方很麻烦 出错之后,不容易检查 这就是为什么软件工程会强调 封装 。 所谓封装,就是把已经通过反复测试的内容包裹起来。只在更高层次上,让开发者或者用户跟输入输出接口打交道。 这样可以避免重复造轮子,而且更不容易发生错误。 受 fast.ai 的启发,Kaushal Trivedi 做了一个新的项目,叫做 fast-bert 。 看,连名字都向 fast.ai 致敬了。 这次的代码简洁明快多了。 Kaushal Trivedi 还专门写了一篇文章,讲述了如何用 fast-bert 来进行多标签分类。用的样例就是咱们刚才提到的恶毒评论分类数据。 然而,由于这个软件包刚刚研发出来,所以坑非常多,包括但不限于: 文章内的代码不完整 Github 上的样例 ipynb 文件需要特定底层 Linux 编译软件包支持 样例数据过大,导致执行时间过长 Colab 上执行,会出现内存耗尽报错 …… 把所有坑都踩过来之后,我觉得还是有必要整理出一个可以在 Google Colab 上 让你直接执行 ,并且可以 套用自己数据 的版本。 毕竟,我们都喜欢 免费的 GPU ,对吧? 现在,我已经完成了这项工作。 这篇文章就将成果 分享给你 。 数据 如果你使用恶毒评论分类数据全集的话,训练数据有十几万条。 即便用上了 Colab 的 GPU ,执行起来也会花费好几个小时的时间。 顺便说一句,Colab 的免费 GPU 最近升级了,已经从原来速度慢、内存容量小的 K80,换成了 Tesla T4 。 这里为了让你快速看到运行结果,我对数据进行了采样。 目前的训练集包含 4000 条数据,验证集只有 1000 条。比起原始数据,这只是不到20分之一而已。 同样,对于测试集,我也只采样了 1000 条。 这样做,会有不利的影响,那就是分类效果会降低。 请记住现在的结果,是在数据相对较少的基础上训练出来的。因此结果如果不理想,并不能代表 BERT 的能力不够强。 环境 本文的配套源代码,我放在了 Github 上。链接获取方式请见 本文末尾 。 如果你对我的教程满意,欢迎在页面右上方的 Star 上点击一下,帮我加一颗星。谢谢! 注意这个页面的中央,有个按钮,写着“在 Colab 打开”(Open in Colab)。请你点击它。 然后,Google Colab 就会自动开启。 我建议你点一下上图中红色圈出的 “COPY TO DRIVE” 按钮。这样就可以先把它在你自己的 Google Drive 中存好,以便使用和回顾。 Colab 为你提供了全套的运行环境。你只需要依次执行代码,就可以复现本教程的运行结果了。 如果你对 Google Colab 不熟悉,没关系。我 这里有一篇教程 ,专门讲解 Google Colab 的特点与使用方式。 为了你能够更为深入地学习与了解代码,我建议你在 Google Colab 中开启一个全新的 Notebook ,并且根据下文,依次输入代码并运行。在此过程中,充分理解代码的含义。 这种看似笨拙的方式,其实是学习的有效路径。 代码 为了让你把注意力集中在重要的环节,我这里把全部的准备工作都集中在了第一个代码段落,并且隐藏了其内容。 如果你需要查看和修改,只需要点击该代码段即可。 或者,你现在可以忽略并直接执行它。这大概需要花几分钟的时间。因为有个底层的软件包需要编译,才能支持 fast-bert 软件包。 下面,才是咱们要关注和讲解的部分。 首先,我们把数据下载下来。 !gitclonehttps://github.com/wshuyi/demo-multi-label-classification-bert.git 注意这里包含的数据,不只有采样版本,也包含了原始数据。 你在尝试过本教程后,也可以重新载入原始数据,看模型效果是否会有显著提升。 之后,是咱们的主角 fast-bert 登场。 !pipinstallfast-bert 我们需要从 fast-bert 以及它依赖的软件包 pytorch_pretrained_bert 读入一些预置函数。 from fast_bert.data import * from fast_bert.learner import * from fast_bert.metrics import * from pytorch_pretrained_bert.tokenization import BertTokenizer 之后,是参数设定。 DATA_PATH=Path( 'demo-multi-label-classification-bert/sample/data/' ) LABEL_PATH=Path( 'demo-multi-label-classification-bert/sample/labels/' ) BERT_PRETRAINED_MODEL= bert-base-uncased args = True args = 16 args = 6e-5 args = 512 args = True 这里为你解释一下各项参数的含义: DATA_PATH :数据路径。包含训练、验证和测试集的csv文件。 LABEL_PATH :标记路径。注意它只是把所有标记的类别每个一行,写在了一个 csv 中,短小精悍。 BERT_PRETRAINED_MODEL :使用的预训练模型。我们这里使用的是英文不分大小写版本 bert-base-uncased 。 args :数据处理中是否全部转换小写。这里设定为“是”。 args :训练集批次大小。这里设定为16。如果设定为32的话,Colab 的 GPU 会报告内存溢出错误。 args :学习速率。 args :最大序列长度。这里我们设定为512。当然如果你处理 Twitter 数据,140就够了。 args :以16位浮点精度来进行运算。可以加快运算速度,节省存储空间。 下面我们从预训练模型中,获得数据处理器。 tokenizer=BertTokenizer.from_pretrained(BERT_PRETRAINED_MODEL, do_lower_case=args ) 把全部的标签类别输入到列表中。 label_cols= 终于可以正式读取数据了。 databunch=BertDataBunch(DATA_PATH,LABEL_PATH,tokenizer,train_file= 'train.csv' ,val_file= 'valid.csv' , test_data= 'test.csv' ,label_file= labels.csv , text_col= comment_text ,label_col=label_cols, bs=args ,maxlen=args , multi_gpu=multi_gpu,multi_label= True ) 这里填充的参数,基本上都可以通过其名称直接了解含义。所以我这里只给你讲解以下几个重点: text_col 是指训练集、验证集和测试集里面,文本所在那一列的表头名称。 multi_gpu 是指要不要使用多 GPU 并行运算。这里前面代码已经自动获取了取值,你 不需要修改 它。 multi_label 说明了咱们要进行的是 多标签分类 任务。 读取后的数据,存在了 databunch 中。模型可以直接使用。 我们指定模型效果测量标准。 metrics= 因为是多标签分类,所以我们用的是准确率衡量指标是 accuracy_multilabel 。 我们把当前的参数设置,存入到日志记录器中。 logger.info(args) 开始构造模型了。 learner=BertLearner.from_pretrained_model(databunch,BERT_PRETRAINED_MODEL,metrics,device,logger, is_fp16=args ,loss_scale=args , multi_gpu=multi_gpu,multi_label= True ) 因为指定了 multi_label=True ,程序会自己构造模型的头部,以便正确处理 多标签分类任务 。 训练开始。 这里我们设定跑4个周期(cycle)。 learner.fit( 4 ,lr=args ,schedule_type= warmup_linear ) 根据 BERT 的设定,训练中间学习速率是要进行变化的。我们设定变化方式为 warmup_linear 。 它将在每一个周期中,把学习速率按类似下图这样的方式进行调整: 运行结果如下: 4轮周期跑下来,模型在验证集准确率达到了 0.993 。这就意味着平均每 1000 个样本,多标签分类准确数量 993 个。 这个结果怎么样? 够不够好?为什么? 这个问题作为今天的思考题。欢迎你把自己的想法记录下来写在留言区,咱们一起交流讨论。 小结 通过阅读本文,希望你已经掌握了以下知识点: 除二元分类外,语言模型(例如 BERT )的其他应用场景 多类别(multi-class)分类和多标签(multi-label)分类的区别 自监督学习(self-supervised learning)的概念 多标签分类的独立模型转化法 使用 BERT 单模型进行多标签分类 希望这些知识和技能,可以帮助你解决研究和工作中遇到的实际问题。 祝深度学习愉快! 延伸阅读 你可能也会对以下话题感兴趣。点击链接就可以查看。 如何高效学 Python ? 《文科生数据科学上手指南》分享 如何用 Python 和 fast.ai 做图像深度迁移学习? 如何用 Python 和深度迁移学习做文本分类? 如何用 Python 和 BERT 做中文文本二元分类? 喜欢别忘了点赞。 还可以微信关注我的公众号 “玉树芝兰”(nkwangshuyi) ,别忘了加星标,以免错过新推送提示。 “赞赏”一下,请我喝杯咖啡,就更好了。 如果你对 Python 与数据科学感兴趣,不妨阅读我的系列教程索引贴《 如何高效入门数据科学? 》,里面还有更多的有趣问题及解法。 题图 :Photo by Pro Church Media on Unsplash 代码链接获取方法 第一步,微信关注公众号 “玉树芝兰”(nkwangshuyi) 。 第二步,在后台回复“bert”(注意大小写)。
6026 次阅读|0 个评论
神经网络是怎么火起来的?
热度 1 yxgyylj 2019-4-19 02:33
目录: 0. 引子 1. 人工神经网络发家史 2. 深度学习——从横空出世到广泛应用 四个例子:--计算机视觉 --自然语言处理 --自动驾驶系统 --生成对抗网络 3. 神经网络背后的算法 三大要点:--反向迭代算法 --激活函数的选择 --随机梯度下降法 4. 神经网络的局限性 --要求大量训练数据 --过度拟合 --超参数选取和数学理论的缺乏 5. 笔者点评 0. 引子 近几年,“人工智能”(AI)、“深度学习”这类字眼越来越频繁地出现在我们的视野中。和十年前相比,我们的生活已经被 AI 和深度学习改变了太多太多,而今年的图灵奖得主也颁发给了深度学习领域的三位奠基人: 2019 年图灵奖得主,图片来自纽约时报(The New York Times) 正所谓几家欢喜几家愁,有人把它们当作赚钱的利器;有人对这类野蛮生长的科技深表忧虑;还有人则只愿意安静地当吃瓜群众,扔掉瓜皮吐光瓜籽后继续自己的美好或并不美好的生活。 无论您是哪类人,一个既定事实是,人工智能和深度学习已经在短短数年之内对人们的生活带来了太多的改变。近年来最为著名的一个例子也许就是 DeepMind 团队的阿尔法狗战胜李世石和柯洁 —— 尽管在国际象棋方面,人工智能在 30 年前就足以吊打所有人类大师,但由于围棋在计算复杂度吊打国际象棋,阿尔法狗的辉煌战绩依然被认为是人工智能领域的一大里程碑。 国际象棋和围棋的计算复杂度对比。两者皆为决策树模型,国际象棋使用了 α-𝛽 修剪算法,围棋则使用了蒙特卡洛决策树搜索+神经网络。图片来自 DeepMind 官网 有读者也许依然会对此不屑一顾:“围棋虽然复杂,但本质上和象棋一样,也只有有限多种可能结果啊,人工智能只需要把最佳结果意义列举并比较比较罢了!” 然而对于具有无限多种可能结果的情况,人工智能也不甘示弱,这在去年的一些电竞比赛中得到了证实。例如,在团队型即时战略游戏 Dota 2 中 (一个 5 v 5 的在线游戏),人类顶尖玩家团队被 OpenAI 团队的 OpenAI Five 战胜。 OpenAI Five(左下方)对战人类玩家(右上方) 一些资深游戏玩家或许认为 Dota 毕竟是五个人的游戏,出现“猪队友”的概率比“猪人工智能”大多了。不过在以单人竞技为主的即时战略游戏《星际争霸》中,人类顶尖玩家也败于 DeepMind 团队开发的人工智能 , 阿尔法星(AlphaStar) 之手。(关于《星际争霸》和人工智能的早期介绍,可以参考笔者的另一篇文章《 数学模型教你如何成为星际争霸高手·下 》) AlphaStar 的训练过程。动图来自 https://deepmind.com/blog/alphastar-mastering-real-time-strategy-game-starcraft-ii/ 注: 笔者表示,Dota 和星际争霸的复杂度都可以趋向于无穷,因为这类游戏的操作界面在时间和空间上都是连续的,无法用 AlphaGo 的蒙特卡洛搜索树算法来穷举。做为即时战略游戏迷,笔者以后会更加详细地介绍上面两个团队各自的算法。 不管是 DeepMind 也好,还是 OpenAI 也好,他们在训练人工智能的时候都用到了 深度学习 ,也就是有很多层的 人工神经网络 (artificial neural network,以下简称神经网络)。想必大部分读者对“神经网络”的最初印象都来自于大脑神经,顾名思义,神经网络必然和脑神经有着千丝万缕的联系。那么神经网络为什么会这么火呢?我们先来看看神经网络的发家史。 1. 人工神经网络发家史 人工神经网络的首次提出可以追溯到上世纪 40 年代,美国神经科学家 Warren McCulloch 和 Walter Pitts 提出的 神经逻辑计算模型 (Neural Logical Calculus Model, )。不过做为神经科学家,McCulloch 和 Pitts 提出该模型的初衷只是为了解释大脑是如何运行的,他们不会想到这个模型会成为神经网络的先驱,为人工智能领域带来天翻地覆的影响。 图一:McCulloch-Pitts 模型,后来的各种人工神经网络都可以归纳于这个大框架。我们会在后面的章节中详细介绍 由于受到时代的限制,McCulloch-Pitts 模型乃至于之后出现的 感知元 (Perception)都并不能体现出神经系统的特点。到了 1959 年,加拿大神经科学家 David Hubel 和瑞典神经科学家 Torsten Wiesel(两位都是诺贝尔生理学或医学奖得主,神经科学家的牛 x 是不分国界的)发现视觉神经系统中存在两种不同细胞, 复杂细胞 (complex cell)和 简单细胞 (simple cell),分别位于大脑的不同部位。受此启发,人们便在原来的神经网络中加入 隐藏层 (Hidden Layer),以体现复杂细胞可以跨层次存在。 图二 不过归根结底,人工神经网络终究是个数学模型,层数越多,模型越复杂。由于缺少有效的算法支持,在 60-80 年代期间,神经网络的研究进入一个低谷期。直到 1984 年,深度学习之父,杰弗里·辛顿(Geoffrey Hinton)等人将所谓的 反向迭代算法 (Backpropagation)引入神经网络中,神经网络的研究方才再次步入正规。例如如今炙手可热的 玻尔兹曼机 (Boltzmann machine)、 卷积神经网络 (CNN, Convolutional Neural Network)和 长短期记忆 (LSTM, Long-Short Term Memory)等,实际上在上世纪 80-90 年代就出现了。 图三:神经网络界的几大网红。笔者会在后续的文章中更加详细地介绍这些神经网络的工作原理 2. 深度学习——从横空出世到广泛应用 当神经网络真正成为网红概念时,它已经有了一个更加高大上的名字—— 深度学习 (Deep learning) 。2012 年,深度学习之父杰弗里·辛顿和他的两个学生设计了一个有 7 个隐藏层的卷积神经网络,不仅赢得了该年度计算机图像分类大赛的冠军(ILSVRC),并且其分类错误率远低于传统的图像分类方法 。 笔者注: 在计算机视觉领域,“传统”方法也是上世纪 90 年代以后才提出来的方法了,例如支持向量机、稀疏编码、SIFT方法等。该领域更新换代速度也许只略逊于生物医学的某些领域(例如癌症研究),远超其他大多数行业。 图四:你能准确分辨拖把和拖把狗吗?基于深度学习的计算机已经可以了! 从此以后,深度学习渐渐变成了越来越多领域的香饽饽。文章开头提到的阿尔法狗、阿尔法星和 OpenAI Five 就都用到了深度神经网络,以及 强化学习 (Reinforcemence Learning)的框架。 图五:新东西总是最美好的 又如在 自然语言处理 (Natural Language Processing, 一般指不同于计算机语言的人类语言)领域,2012 年,谷歌团队开发出了一种用高维向量来表示单词的方法(俗称 word2vec),于是文本变成了数据,为使用深度学习方法(例如长短期记忆 LSTM网络)提供了理论架构 。 图六:文本处理与深度学习的结合。多数聊天机器人就是用这种方式被训练出来的 再如自动驾驶系统的实现。最著名的框架也许是英伟达(NVIDIA)公司在 2016 年提出来的“端对端系统” (end-to-end system)。该系统采用三个不同相机以通过不同视角记录和随机生成路况信息,然后将这些生成的路况信息用一个卷积神经网络进行训练,并不断地用实际操纵指令来纠正神经网络产生的错误。该系统的训练过程如下所示: 图七:英伟达的“端对端系统”训练过程。原图来自 的图片 2 英伟达提出的这个架构十分类似于另一个近年来应用十分火爆的神经网络架构 —— 生成对抗网络 (Generative Adversarial Nets)。也许很多读者并不清楚这是何方神圣,所以我们先来看一下它的几个应用: 智能换脸 AI 合成表情 新华社的 AI 合成主播 也就是说,我们平常在网上看到的一些看似不可思议的视频或动图,其实都是通过生成对抗网络合成出来的!而这个网络的魔力就在于,它拥有 生成器 (Generator)和 判别器 (Discriminator)两个不同的神经网络,其中生成器通过随机输入的数据来生成图像,判别器则负责鉴别生成器生成的图像是否达到标准,以此来达到训练的目的。 3. 神经网络背后的算法 注:本节要求读者有高等数学和线性代数基础,并对梯度下降法有一定了解 到这里,相信读者们已经对神经网络的应用有了一些大体的认识。我们经常听说一个神经网络需要接受“训练”,这个“训练”到底是怎么做到的呢? 答案就是 反向迭代算法 (Backpropagation)。读者不要被这个算法高大上的名字吓到了,它的核心只有两个—— 偏导数 和 链式法则 。反向迭代算法的目的在于 通过减小输出值与实际值的差异,来不断更新神经网络里的各种参数 。这便是“训练”一个神经网络的全部内容。 听上去训练一个 AI 比训练小孩子容易多了!然而实际上,训练神经网络最大的挑战就在于 更新模型中的大量参数 。一图以蔽之,神经网络隐藏层的每个神经元本质上都是这样运作的: 图八:神经网络算法总结 从上图中我们可以看到,神经元起到的作用无非就是把一系列输入数据转化为输出,只不过需要引入一系列未知参数——权重 w_{ij} 和 偏差 b_{j} 罢了(j 表示神经网络的第 j 层,i 表示第 j-1 层的第 i 个神经元)。而 如何更新这些未知参数,则是训练神经网络的核心所在 。下面的图表明了反向迭代算法和向前迭代算法的区别,以及为什么在训练神经网络(尤其是深层神经网络)的过程中必须用到反向迭代算法的原因: 图九:反向迭代vs向前迭代 在实际训练过程中,我们需要不断地更新权重 w_{ij} 和偏差 b_{j},这可以通过不断地最小化某个损失函数 L 来完成。根据实际问题,常用的损失函数有 均方差 (L2 损失)、DL 距离和 交叉熵 (Cross Entropy)等等。确定好损失函数后,我们使用 梯度下降法 分别对 w_{ij} 和 b_{j} 求偏导数,然后利用 链式法则 计算出每一步需要更新的步长,例如对于权重参数 w_{ij},更新方法如下: 图十:上角标 t 表示训练(迭代)次数 其中“学习效率”一般取值在 0 和 1 之间。就像小孩一样,如果学习效率太高,遇到不好的输入数据时就很容易学到坏东西,但如果学习效率太低,那么学习成本又会过高。因此选取适当的学习效率值,是训练一个好神经网络的关键。 图十一:学如江流徒杠,不可鹅行鸭步,亦不可操之过急 此外值得一提的是,从数学的观点看来,神经网络中 激活函数 (Activation Function)的非线性性是神经网络的一大特色。早期的激活函数选择受到了生物神经元的影响(可参考笔者之前的文章《 读懂你的大脑——漫话神经元 》),一般选择 Sigmoid 函数或双曲正切函数(tanh): 图十二:生物神经元模型中常用的两种激活函数 不过由于当输入比较大时,上面这两兄弟关于输入的导数接近于 0 (读者可自行验证),这在反向迭代过程中并不是个好消息 —— 图十中在 L 对 s_{i} 的偏导数几乎为 0,因而在迭代过程中权重 w_{ij} 几乎不变!这在十年之前一直是一个难题,不过 2011 年以后,上面这两兄弟便很快被一种叫做 线性整流 (ReLU,Retified Linear Unit)的激活函数所取代。这个函数长这样: 图十三:ReLU 函数 容易验证,只要 u 0, 那么 f'(u) = 1, 于是损失函数 L 对 s_{i} 的偏导数不会接近 0,更新参数困难的问题得以解决! 到此为止,神经网络算法的理论基础已经被搞定了。然而在实际操作中还有另外一个问题——计算时间。试想如果要训练一个非常深层的神经网络,势必需要更新大量未知参数(未知参数的个数随着网络层数呈指数上升),如果采用图十那样的每更新一个参数都需要把 N 个训练数据(输入数据的一种)都用进去,那么当训练数据很多的时候,计算复杂度将非常高!为了解决这个方法,人们通常采用一种叫做 随机梯度下降 (Stochastic Gradient Descent)的算法,来代替常规的梯度下降法: 图十四:梯度下降 vs 随机梯度下降。其中 L_k 表示只依赖于第 k 个训练数据的损失函数, k 从 N 个总训练数据中随机取出的一个 可以看到,相比常规的梯度下降法,每一步随机梯度下降的计算量小了很多。不过由于训练数据的随机性,这样带来的后果便是收敛速度变慢,训练所需的迭代次数增加了(t 的取值上界更高)。所以如今常用的迭代方法一般是经过两者综合的 微小块梯度下降法 (Mini Batch Gradient),或者收敛速度更快的的 自适应动量估计 (Adam, Adaptive Moment Estimation) 算法等等。限于文章篇幅,具体细节在此不做介绍,有兴趣的读者可以参考一篇不错的综述 。 4. 神经网络的局限性 到此为止,我们已经对深度学习和神经网络的历史、应用,以及背后的算法有了初步的认识。但话说回来,世间万物皆有破绽,那么神经网络还存在哪些局限性呢? 也许一些读者会思考这样的问题:如果神经网络真的这么厉害,历史也不算短了,为什么直到 21 世纪以后才开始普遍投入使用呢?其中主要原因其实是硬件层面的,因为进入 21 世纪,电子硬件的成熟,尤其是通用性 GPU 的广泛使用才得以胜任深层神经网络的训练任务。换言之,神经网络和深度学习的火爆在 很大程度上依赖于芯片技术的不断更新换代 。关于 GPU 计算的更多内容,可参考笔者之前的文章《 让 GPU 也参加到计算中来 》。 CPU 和 GPU 计算力(以浮点数计算效率为测度)对比。图片来自网络 既然有了如此强大硬件的支持,如果没有足够的训练数据集的话,神经网络也并不见得比传统方法高效多少了。这是因为神经网络的一大主要特色就是,其未知参数数量可以非常多,因此在理论上可以逼近出任何函数。但这样做的代价就是需要有足够的训练和测试数据集(测试数据集用于测试训练出来的神经网络表现如何)。 另一方面,如果模型参数太多,很容易出现 过度拟合 (overfitting)的情况,反而降低模型的准确率。为了解决过度拟合,人们会采用许多不同的 正则化 (regularization)技巧,例如 随机失活 (Dropout)、加入惩罚项、自助式聚合(Bagging, Bootstrap Aggragation)等方法来达到减少参数个数的目的。限于篇幅,这里不做进一步介绍了。 神经网络的另一大特色就是架构非常灵活——如引言中所述,卷积神经网络(CNN)、长短记忆(LSTM)、玻尔兹曼机等等都是很常用的神经网络,而且每种神经网络都有大量 超参数 (Hyperparameter,例如神经网络的深度、宽度、学习效率、激活函数等等)供选择,没有一个可靠的数学定理保证应该如何选取超参数以及神经网络种类。 做为数学系出身的笔者对此表示遗憾。限于学识水平,笔者所知道的关于神经网络的数学定理都不算十分本质,例如 万有近似定理 (Universal Approximation Theorem),用本科的泛函分析工具(哈恩-巴拿赫定理 + 里兹表示定理)证明了任一连续有界的 n 维实函数可被一个至少一层的神经网络任意逼近,且该定理对不同的激活函数(Sigmoid 和 ReLU)又有不同的证明方法,尽管证明过程都非常漂亮。这个定理不算十分本质的原因在于,其他许多非神经网络系统,例如 模糊系统 (Fuzzy System),也有类似的万有近似定理。 万有近似定理的核心就是证明上面这个函数的值域在 R^N 上是稠密的 从数学上看来,还有一些其他有趣结论和神经网络有关。例如 2016 年有人严格地证明了在模型复杂度的意义下,深层的神经网络比浅层的更为高效 。不过从证明过程中可以看出,这个定理只是在渐进意义(单层神经元数目趋向于无穷)下有效,对实际应用的指导依然非常有限。笔者十分希望以后有机会能看到一个能真正具有广泛指导意义的数学定理。 5. 笔者点评 我们不难看出,深度学习虽然在很大程度上改变了我们的生活,但它依然存在不少软肋。天下没有免费的午餐,深度学习之所以有今天的火爆,很大程度上依赖于芯片技术的发展(计算力的提升),而芯片生产是一个很长的产业链,有设计、设备、材料和测封等过程,涉及到大量基础学科。因此笔者认为, 基础学科才是科技发展的重中之重,而并非盲目地追求人工智能、深度学习这些热门词汇 。 另一方面,深度学习虽然火爆至今,但这种火热能持续多久,笔者持以保留态度。其一,深度学习的理论基础,神经网络,在上世纪 90 年代就已经被研究透测,而据笔者所知,该领域至今并未出现一个如同广义相对论(可参考笔者和小伙伴合作的文章《 广义相对论 是如何被一步步构思出来的?》)或规范场论(可参考笔者和小伙伴合作的文章《 带你认识高大上的规范场 》)那样具有框架性的数学理论;其二,深度学习只是众多机器学习方法的其中一种,每种机器学习方法都有自己的优缺点,并不存在一种万能的方法。因此,笔者建议打算入行深度学习的朋友们, 要先打好微积分、线性代数、概率论与数理统计、离散数学、最优化算法和数据挖掘这些课程的基础 ,毕竟也许几年以后,便会有一种全然不同的机器学习方法凌驾于深度学习之上。 参考文献: McCulloch WS, Pitts W. A logical calculus of the ideas immanent in nervous activity. The bulletin of mathematical biophysics. 1943 Dec 1;5(4):115-33. https://www. nobelprize.org/prizes/m edicine/1981/hubel/biographical/ Ackley DH, Hinton GE, Sejnowski TJ. A learning algorithm for Boltzmann machines. Cognitive science. 1985 Jan 1;9(1):147-69. LeCun Y, Boser B, Denker JS, Henderson D, Howard RE, Hubbard W, Jackel LD. Backpropagation applied to handwritten zip code recognition. Neural computation. 1989 Dec;1(4):541-51. Hochreiter S, Schmidhuber J. Long short-term memory. Neural computation. 1997 Nov 15;9(8):1735-80. Krizhevsky A, Sutskever I, Hinton GE. Imagenet classification with deep convolutional neural networks. InAdvances in neural information processing systems 2012 (pp. 1097-1105). Mikolov T, Chen K, Corrado G, Dean J. Efficient estimation of word representations in vector space. arXiv preprint arXiv:1301.3781. 2013 Jan 16. Bojarski M, Del Testa D, Dworakowski D, Firner B, Flepp B, Goyal P, Jackel LD, Monfort M, Muller U, Zhang J, Zhang X. End to end learning for self-driving cars. arXiv preprint arXiv:1604.07316. 2016 Apr 25. Goodfellow I, Pouget-Abadie J, Mirza M, Xu B, Warde-Farley D, Ozair S, Courville A, Bengio Y. Generative adversarial nets. In Advances in neural information processing systems 2014 (pp. 2672-2680). Ruder S. An overview of gradient descent optimization algorithms. arXiv preprint arXiv:1609.04747. 2016 Sep 15. Cybenko G. Approximation by superpositions of a sigmoidal function. Mathematics of control, signals and systems. 1989 Dec 1;2(4):303-14. Eldan R, Shamir O. The power of depth for feedforward neural networks. In Conference on learning theory 2016 Jun 6 (pp. 907-940). 欢迎大家关注我的公众号“科普最前线”(id:kpzqxyxg),对话前沿科学!每篇文章都由笔者亲自完成或修改,希望和大家一起交流!
981 次阅读|2 个评论
如何用 Python 和 Tensorflow 2.0 神经网络分类表格数据?
热度 1 wshuyi 2019-4-15 11:51
以客户流失数据为例,看 Tensorflow 2.0 版本如何帮助我们快速构建表格(结构化)数据的神经网络分类模型。 变化 表格数据,你应该并不陌生。毕竟, Excel 这东西在咱们平时的工作和学习中,还是挺常见的。 在之前的教程里,我为你分享过, 如何利用深度神经网络,锁定即将流失的客户 。里面用到的,就是这样的表格数据。 时间过得真快,距离写作那篇教程,已经一年半了。 这段时间里,出现了 2个重要的变化 ,使我觉得有必要重新来跟你谈谈这个话题。 这两个变化分别是: 首先,tflearn 框架的开发已经不再活跃。 tflearn 是当时教程中我们使用的高阶深度学习框架,它基于 Tensorflow 之上,包裹了大量的细节,让用户可以非常方便地搭建自己的模型。 但是,由于 Tensorflow 选择拥抱了它的竞争者 Keras ,导致后者的竞争优势凸显。 对比二者获得的星数,已经不在同一量级。 观察更新时间,tflearn 已经几个月没有动静;而 Keras 几个小时之前,还有更新。 我们选择免费开源框架,一定要使用 开发活跃 、 社区支持完善 的。只有这样,遇到问题才能更 低成本、高效率 地解决。 看过我的《 Python编程遇问题,文科生怎么办? 》一文之后,你对上述结论,应该不陌生。 另一项新变化,是 Tensorflow 发布了 2.0 版本。 相对 1.X 版本,这个大版本的变化,我在《 如何用 Python 和 BERT 做中文文本二元分类? 》一文中,已经粗略地为你介绍过了。简要提炼一下,就是: 之前的版本,以计算图为中心。开发者需要为这张图服务。因此,引入了大量的不必要术语。新版本以人为中心,用户撰写高阶的简洁语句,框架自动将其转化为对应的计算图。 之前的版本,缺少目前竞争框架(如 PyTorch 等)包含的新特性。例如计算图动态化、运行中调试功能等。 但对普通开发者来说,最为重要的是,官方文档和教程变得对用户 友好 许多。不仅写得 清晰简明 ,更靠着 Google Colab 的支持,全都能 一键运行 。我尝试了 2.0 版本的一些教程样例,确实感觉大不一样了。 其实你可能会觉得奇怪—— Tensorflow 大张旗鼓宣传的大版本改进,其实也无非就是向着 PyTorch 早就有 的功能靠拢而已嘛。那我干脆去学 PyTorch 好了! 如果我们只说道理,这其实没错。然而,还是前面那个论断,一个框架好不好,主要看是否 开发活跃 、 社区支持完善 。这就是一个自证预言。一旦人们都觉得 Tensorflow 好用,那么 Tensorflow 就会更好用。因为会有更多的人参与进来,帮助反馈和改进。 看看现在 PyTorch 的 Github 页面。 受关注度,确实已经很高了。 然而你再看看 Tensorflow 的。 至少在目前,二者根本不在一个数量级。 Tensorflow 的威力,不只在于本身构建和训练模型是不是好用。那其实只是深度学习中, 非常小 的一个环节。不信?你在下图里找找看。 真正的问题,在于是否有完整的 生态环境 支持。其中的逻辑,我在《 学 Python ,能提升你的竞争力吗? 》一文中,已经为你详细分析过了。 而 Tensorflow ,早就通过一系列的布局,使得其训练模型可以直接快速部署,最快速度铺开,帮助开发者占领市场先机。 如果你使用 PyTorch ,那么这样的系统,是 相对不完善 的。当然你可以在 PyTorch 中训练,然后转换并且部署到 Tensorflow 里面。毕竟三巨头达成了协议,标准开放,这样做从技术上并不困难。 但是,人的 认知带宽 ,是非常 有限 的。大部分人,是不会选择在两个框架甚至生态系统之间折腾的。这就是 路径依赖 。 所以,别左顾右盼了,认认真真学 Tensorflow 2.0 吧。 这篇文章里面,我给你介绍,如何用 Tensorflow 2.0 ,来训练神经网络,对用户流失数据建立分类模型,从而可以帮你见微知著,洞察风险,提前做好干预和防范。 数据 你手里拥有的,是一份银行欧洲区客户的数据,共有10000条记录。客户主要分布在法国、德国和西班牙。 数据来自于匿名化处理后的真实数据集,下载自 superdatascience 官网 。 从表格中,可以读取的信息,包括客户们的年龄、性别、信用分数、办卡信息等。客户是否已流失的信息在最后一列(Exited)。 这份数据,我已经上传到了 这个地址 ,你可以下载,并且用 Excel 查看。 环境 本文的配套源代码,我放在了 这个 Github 项目 中。请你点击 这个链接 ( http://t.cn/EXffmgX )访问。 如果你对我的教程满意,欢迎在页面右上方的 Star 上点击一下,帮我加一颗星。谢谢! 注意这个页面的中央,有个按钮,写着“在 Colab 打开” (Open in Colab)。请你点击它。 然后,Google Colab 就会自动开启。 我建议你点一下上图中红色圈出的 “COPY TO DRIVE” 按钮。这样就可以先把它在你自己的 Google Drive 中存好,以便使用和回顾。 Colab 为你提供了全套的运行环境。你只需要依次执行代码,就可以复现本教程的运行结果了。 如果你对 Google Colab 不熟悉,没关系。我 这里有一篇教程 ,专门讲解 Google Colab 的特点与使用方式。 为了你能够更为深入地学习与了解代码,我建议你在 Google Colab 中开启一个全新的 Notebook ,并且根据下文,依次输入代码并运行。在此过程中,充分理解代码的含义。 这种看似笨拙的方式,其实是学习的 有效路径 。 代码 首先,我们下载客户流失数据集。 !wgethttps://raw.githubusercontent.com/wshuyi/demo-customer-churn-ann/master/customer_churn.csv 载入 Pandas 数据分析包。 import pandas as pd 利用 read_csv 函数,读取 csv 格式数据到 Pandas 数据框。 df=pd.read_csv( 'customer_churn.csv' ) 我们来看看前几行显示结果: df.head() 显示正常。下面看看一共都有哪些列。 df.columns 我们对所有列,一一甄别。 RowNumber:行号,这个对于模型没用,忽略 CustomerID:用户编号,这个是顺序发放的,忽略 Surname:用户姓名,对流失没有影响,忽略 CreditScore:信用分数,这个很重要,保留 Geography:用户所在国家/地区,这个有影响,保留 Gender:用户性别,可能有影响,保留 Age:年龄,影响很大,年轻人更容易切换银行,保留 Tenure:当了本银行多少年用户,很重要,保留 Balance:存贷款情况,很重要,保留 NumOfProducts:使用产品数量,很重要,保留 HasCrCard:是否有本行信用卡,很重要,保留 IsActiveMember:是否活跃用户,很重要,保留 EstimatedSalary:估计收入,很重要,保留 Exited:是否已流失,这将作为我们的标签数据 确定了不同列的含义和价值,下面我们处理起来,就得心应手了。 数据有了,我们来调入深度学习框架。 因为本次我们需要使用 Tensorflow 2.0 ,而写作本文时,该框架版本尚处于 Alpha 阶段,因此 Google Colab 默认使用的,还是 Tensorflow 1.X 版本。要用 2.0 版,便需要显式安装。 !pipinstall-qtensorflow== 2.0 .0 -alpha0 安装框架后,我们载入下述模块和函数,后文会用到。 import numpy as np import tensorflow as tf from tensorflow import keras from sklearn.model_selection import train_test_split from tensorflow import feature_column 这里,我们设定一些随机种子值。这主要是为了保证结果可复现,也就是在你那边的运行结果,和我这里尽量保持一致。这样我们观察和讨论问题,会更方便。 首先是 Tensorflow 中的随机种子取值,设定为 1 。 tf.random.set_seed( 1 ) 然后我们来分割数据。这里使用的是 Scikit-learn 中的 train_test_split 函数。指定分割比例即可。 我们先按照 80:20 的比例,把总体数据分成 训练集 和 测试集 。 train,test=train_test_split(df,test_size= 0.2 ,random_state= 1 ) 然后,再把现有训练集的数据,按照 80:20 的比例,分成最终的训练集,以及 验证集 。 train,valid=train_test_split(train,test_size= 0.2 ,random_state= 1 ) 这里,我们都指定了 random_state ,为的是保证咱们随机分割的结果一致。 我们看看几个不同集合的长度。 print(len(train)) print(len(valid)) print(len(test)) 验证无误。下面我们来做 特征工程 (feature engineering)。 因为我们使用的是表格数据(tabular data),属于 结构化数据 。因此特征工程相对简单一些。 先初始化一个空的特征列表。 feature_columns= 可见,包含了以下列: CreditScore:信用分数 Age:年龄 Tenure:当了本银行多少年用户 Balance:存贷款情况 NumOfProducts:使用产品数量 EstimatedSalary:估计收入 对于这些列,只需要直接指定类型,加入咱们的特征列表就好。 for header in numeric_columns: feature_columns.append(feature_column.numeric_column(header)) 下面是比较讲究技巧的部分了,就是类别数据。 先看看都有哪些列: categorical_columns= Geography:用户所在国家/地区 Gender:用户性别 HasCrCard:是否有本行信用卡 IsActiveMember:是否活跃用户 类别数据的特点,在于不能直接用数字描述。例如 Geography 包含了国家/地区名称。如果你把法国指定为1, 德国指定为2,电脑可能自作聪明,认为“德国”是“法国”的2倍,或者,“德国”等于“法国”加1。这显然不是我们想要表达的。 所以我这里编了一个函数,把一个类别列名输入进去,让 Tensorflow 帮我们将其转换成它可以识别的类别形式。例如把法国按照 ,德国按照 来表示。这样就不会有数值意义上的歧义了。 def get_one_hot_from_categorical (colname) : categorical=feature_column.categorical_column_with_vocabulary_list(colname,train .unique().tolist()) return feature_column.indicator_column(categorical) 我们尝试输入 Geography 一项,测试一下函数工作是否正常。 geography=get_one_hot_from_categorical( 'Geography' );geography 观察结果,测试通过。 下面我们放心大胆地把所有类别数据列都在函数里面跑一遍,并且把结果加入到特征列表中。 for col in categorical_columns: feature_columns.append(get_one_hot_from_categorical(col)) 看看此时的特征列表内容: feature_columns 6个数值类型,4个类别类型,都没问题了。 下面该构造模型了。 我们直接采用 Tensorflow 2.0 鼓励开发者使用的 Keras 高级 API 来拼搭一个简单的深度神经网络模型。 from tensorflow.keras import layers 我们把刚刚整理好的特征列表,利用 DenseFeatures 层来表示。把这样的一个初始层,作为模型的整体输入层。 feature_layer=layers.DenseFeatures(feature_columns);feature_layer 下面,我们顺序叠放两个中间层,分别包含200个,以及100个神经元。这两层的激活函数,我们都采用 relu 。 relu 函数大概长这个样子: model=keras.Sequential( ) 我们希望输出结果是0或者1,所以这一层只需要1个神经元,而且采用的是 sigmoid 作为激活函数。 sigmoid 函数的长相是这样的: 模型搭建好了,下面我们指定3个重要参数,编译模型。 model.compile(optimizer= 'adam' , loss= 'binary_crossentropy' , metrics= ) 这里,我们选择优化器为 adam 。 因为评判二元分类效果,所以损失函数选的是 binary_crossentropy 。 至于效果指标,我们使用的是准确率(accuracy)。 模型编译好之后。万事俱备,只差数据了。 你可能纳闷,一上来不就已经把训练、验证和测试集分好了吗? 没错,但那只是原始数据。我们模型需要接收的,是 数据流 。 在训练和验证过程中,数据都不是一次性灌入模型的。而是一批次一批次分别载入。每一个批次,称作一个 batch ;相应地,批次大小,叫做 batch_size 。 为了方便咱们把 Pandas 数据框中的原始数据转换成数据流。我这里编写了一个函数。 def df_to_tfdata (df,shuffle=True,bs= 32 ) : df=df.copy() labels=df.pop( 'Exited' ) ds=tf.data.Dataset.from_tensor_slices((dict(df),labels)) if shuffle: ds=ds.shuffle(buffer_size=len(df),seed= 1 ) ds=ds.batch(bs) return ds 这里首先是把数据中的标记拆分出来。然后根据把数据读入到 ds 中。根据是否是训练集,我们指定要不要需要打乱数据顺序。然后,依据 batch_size 的大小,设定批次。这样,数据框就 变成了 神经网络模型喜闻乐见的 数据流 。 train_ds=df_to_tfdata(train) valid_ds=df_to_tfdata(valid,shuffle= False ) test_ds=df_to_tfdata(test,shuffle= False ) 这里,只有训练集打乱顺序。因为我们希望验证和测试集一直保持一致。只有这样,不同参数下,对比的结果才有显著意义。 有了模型架构,也有了数据,我们把训练集和验证集扔进去,让模型尝试拟合。这里指定了,跑5个完整轮次(epochs)。 model.fit(train_ds, validation_data=valid_ds, epochs= 5 ) 你会看到,最终的验证集准确率接近80%。 我们打印一下模型结构: model.summary() 虽然我们的模型非常简单,却也依然包含了23401个参数。 下面,我们把测试集放入模型中,看看模型效果如何。 model.evaluate(test_ds) 依然,准确率接近80%。 还不错吧? …… 真的吗? 疑惑 如果你观察很仔细,可能刚才已经注意到了一个很奇特的现象: 训练的过程中,除了第一个轮次外,其余4个轮次的这几项重要指标居然 都没变 ! 它们包括: 训练集损失 训练集准确率 验证集损失 验证集准确率 所谓机器学习,就是不断迭代改进啊。如果每一轮下来,结果都 一模一样 ,这难道不奇怪吗?难道没问题吗? 我希望你,能够像侦探一样,揪住这个可疑的线索,深入挖掘进去。 这里,我给你个提示。 看一个分类模型的好坏,不能只看准确率(accuracy)。对于二元分类问题,你可以关注一下 f1 score,以及混淆矩阵(confusion matrix)。 如果你验证了上述两个指标,那么你应该会发现真正的问题 是什么 。 下一步要穷究的,是问题产生的 原因 。 回顾一下咱们的整个儿过程,好像都很清晰明了,符合逻辑啊。究竟哪里出了问题呢? 如果你一眼就看出了问题。恭喜你,你对深度学习已经有感觉了。那么我继续追问你,该怎么解决这个问题呢? 欢迎你把思考后的答案在留言区告诉我。 对于第一名全部回答正确上述问题的读者,我会邀请你作为嘉宾,免费(原价199元)加入我本年度的知识星球。当然,前提是你愿意。 小结 希望通过本文的学习,你已掌握了以下知识点: Tensorflow 2.0 的安装与使用; 表格式数据的神经网络分类模型构建; 特征工程的基本流程; 数据集合的随机分割与利用种子数值保持一致; 数值型数据列与类别型数据列的分别处理方式; Keras 高阶 API 的模型搭建与训练; 数据框转化为 Tensorflow 数据流; 模型效果的验证; 缺失的一环,也即本文疑点产生的原因,以及正确处理方法。 希望本教程对于你处理表格型数据分类任务,能有帮助。 祝深度学习愉快! 延伸阅读 你可能也会对以下话题感兴趣。点击链接就可以查看。 如何高效学 Python ? 如何用 Python 和 fast.ai 做图像深度迁移学习? 如何用 Python 和深度迁移学习做文本分类? 如何用 Python 和 BERT 做中文文本二元分类? 《文科生数据科学上手指南》分享 喜欢请点赞和打赏。还可以微信关注和置顶我的公众号 “玉树芝兰”(nkwangshuyi) 。 如果你对 Python 与数据科学感兴趣,不妨阅读我的系列教程索引贴《 如何高效入门数据科学? 》,里面还有更多的有趣问题及解法。
7007 次阅读|1 个评论
如何用 Python 和 BERT 做中文文本二元分类?
wshuyi 2019-4-8 08:59
兴奋 去年, Google 的 BERT 模型一发布出来,我就很兴奋。 因为我当时正在用 fast.ai 的 ULMfit 做自然语言分类任务(还专门写了《 如何用 Python 和深度迁移学习做文本分类? 》一文分享给你)。ULMfit 和 BERT 都属于预训练语言模型(Pre-trained Language Modeling),具有很多的相似性。 所谓语言模型,就是利用深度神经网络结构,在海量语言文本上训练,以抓住一种语言的 通用特征 。 上述工作,往往只有大机构才能完成。因为 花费 实在太大了。 这花费包括但不限于: 存数据 买(甚至开发)运算设备 训练模型(以天甚至月计) 聘用专业人员 …… 预训练 就是指他们训练好之后,把这种结果开放出来。我们普通人或者小型机构,也可以 借用 其结果,在自己的专门领域文本数据上进行 微调 ,以便让模型对于这个专门领域的文本有非常清晰的 认识 。 所谓认识,主要是指你遮挡上某些词汇,模型可以较准确地猜出来你藏住了什么。 甚至,你把两句话放在一起,模型可以判断它俩是不是紧密相连的上下文关系。 这种“认识”有用吗? 当然有。 BERT 在多项自然语言任务上测试,不少结果已经超越了人类选手。 BERT 可以辅助解决的任务,当然也包括文本分类(classification),例如情感分类等。这也是我目前研究的问题。 痛点 然而,为了能用上 BERT ,我等了很久。 Google 官方代码早已开放。就连 Pytorch 上的实现,也已经迭代了多少个轮次了。 但是我只要一打开他们提供的样例,就头晕。 单单是那代码的行数,就非常吓人。 而且,一堆的数据处理流程(Data Processor) ,都用数据集名称命名。我的数据不属于上述任何一个,那么我该用哪个? 还有莫名其妙的无数旗标(flags) ,看了也让人头疼不已。 让我们来对比一下,同样是做分类任务,Scikit-learn 里面的语法结构是什么样的。 from sklearn.datasets import load_iris from sklearn import tree iris=load_iris() clf=tree.DecisionTreeClassifier() clf=clf.fit(iris.data,iris.target) 即便是图像分类这种数据吞吐量大,需要许多步骤的任务,你用 fast.ai ,也能几行代码,就轻轻松松搞定。 !gitclonehttps://github.com/wshuyi/demo-image-classification-fastai.git from fastai.vision import * path=Path( demo-image-classification-fastai/imgs/ ) data=ImageDataBunch.from_folder(path,test= 'test' ,size= 224 ) learn=cnn_learner(data,models.resnet18,metrics=accuracy) learn.fit_one_cycle( 1 ) interp=ClassificationInterpretation.from_learner(learn) interp.plot_top_losses( 9 ,figsize=( 8 , 8 )) 别小瞧这几行代码,不仅帮你训练好一个图像分类器,还能告诉你,那些分类误差最高的图像中,模型到底在关注哪里。 对比一下,你觉得 BERT 样例和 fast.ai 的样例区别在哪儿? 我觉得,后者是 给人用的 。 教程 我总以为,会有人把代码重构一下,写一个简明的教程。 毕竟,文本分类任务是个常见的机器学习应用。应用场景多,也适合新手学习。 但是,这样的教程,我就是没等来。 当然,这期间,我也看过很多人写的应用和教程。 有的就做到把一段自然语言文本,转换到 BERT 编码。戛然而止。 有的倒是认真介绍怎么在官方提供的数据集上,对 BERT 进行“稍微修改”使用。所有的修改,都在原始的 Python 脚本上完成。那些根本没用到的函数和参数,全部被保留。至于别人如何复用到自己的数据集上?人家根本没提这事儿。 我不是没想过从头啃一遍代码。想当年读研的时候,我也通读过仿真平台上 TCP 和 IP 层的全部 C 代码。我确定眼前的任务,难度更低一些。 但是我真的懒得做。我觉得自己被 Python 机器学习框架,特别是 fast.ai 和 Scikit-learn 宠坏了。 后来, Google 的开发人员把 BERT 弄到了 Tensorflow Hub 上。还专门写了个 Google Colab Notebook 样例。 看到这个消息,我高兴坏了。 我尝试过 Tensorflow Hub 上的不少其他模型。使用起来很方便。而 Google Colab 我已在《 如何用 Google Colab 练 Python? 》一文中介绍给你,是非常好的 Python 深度学习练习和演示环境。满以为双剑合璧,这次可以几行代码搞定自己的任务了。 且慢。 真正打开一看,还是以样例数据为中心。 普通用户需要什么?需要一个接口。 你告诉我输入的标准规范,然后告诉我结果都能有什么。即插即用,完事儿走人。 一个文本分类任务,原本不就是给你个训练集和测试集,告诉你训练几轮练多快,然后你告诉我准确率等结果吗? 你至于让我为了这么简单的一个任务,去读几百行代码,自己找该在哪里改吗? 好在,有了这个样例做基础,总比没有好。 我耐下心来,把它整理了一番。 声明一下,我并没有对原始代码进行大幅修改。 所以不讲清楚的话,就有剽窃嫌疑,也会被鄙视的。 这种整理,对于会 Python 的人来说,没有任何技术难度。 可正因为如此,我才生气。这事儿难做吗?Google 的 BERT 样例编写者怎么就不肯做? 从 Tensorflow 1.0 到 2.0,为什么变动会这么大?不就是因为 2.0 才是给人用的吗? 你不肯把界面做得清爽简单,你的竞争者(TuriCreate 和 fast.ai)会做,而且做得非常好。实在坐不住了,才肯降尊纡贵,给普通人开发一个好用的界面。 教训啊!为什么就不肯吸取呢? 我给你提供一个 Google Colab 笔记本样例,你可以轻易地替换上自己的数据集来运行。你需要去理解(包括修改)的代码, 不超过10行 。 我先是测试了一个英文文本分类任务,效果很好。于是写了 一篇 Medium 博客 ,旋即被 Towards Data Science 专栏收录了。 Towards Data Science 专栏编辑给我私信,说: Very interesting, I like this considering the default implementation is not very developer friendly for sure. 有一个读者,居然连续给这篇文章点了50个赞(Claps),我都看呆了。 看来,这种忍受已久的痛点,不止属于我一个人。 估计你的研究中,中文分类任务可能遇到得更多。所以我干脆又做了一个中文文本分类样例,并且写下这篇教程,一并分享给你。 咱们开始吧。 代码 请点击 这个链接 ,查看我在 Github 上为你做好的 IPython Notebook 文件。 Notebook 顶端,有个非常明显的 Open in Colab 按钮。点击它,Google Colab 就会自动开启,并且载入这个 Notebook 。 我建议你点一下上图中红色圈出的 “COPY TO DRIVE” 按钮。这样就可以先把它在你自己的 Google Drive 中存好,以便使用和回顾。 这件事做好以后,你实际上只需要执行下面三个步骤: 你的数据,应该以 Pandas 数据框形式组织。如果你对 Pandas 不熟悉,可以参考我的 这篇文章 。 如有必要,可以调整训练参数。其实主要是训练速率(Learning Rate)和训练轮数(Epochs)。 执行 Notebook 的代码,获取结果。 当你把 Notebook 存好之后。定睛一看,或许会觉得上当了。 老师你骗人!说好了不超过10行代码的! 别急 。 在下面这张图红色圈出的这句话之前,你 不用修改任何内容 。 请你点击这句话所在位置,然后从菜单中如下图选择 Run before 。 下面才都是紧要的环节,集中注意力。 第一步,就是把数据准备好。 !wgethttps://github.com/wshuyi/demo-chinese-text-binary-classification- with -bert/raw/master/dianping_train_test.pickle with open( dianping_train_test.pickle , 'rb' ) as f: train,test=pickle.load(f) 这里使用的数据,你应该并不陌生。它是餐饮点评情感标注数据,我在《 如何用Python和机器学习训练中文文本情感分类模型? 》和《 如何用 Python 和循环神经网络做中文文本分类? 》中使用过它。只不过,为了演示的方便,这次我把它输出为 pickle 格式,一起放在了演示 Github repo 里,便于你下载和使用。 其中的训练集,包含1600条数据;测试集包含400条数据。标注里面1代表正向情感,0代表负向情感。 利用下面这条语句,我们把训练集重新洗牌(shuffling),打乱顺序。以避免过拟合(overfitting)。 train=train.sample(len(train)) 这时再来看看我们训练集的头部内容。 train.head() 如果你后面要替换上自己的数据集,请注意格式。训练集和测试集的列名称应该保持一致。 第二步,我们来设置参数。 myparam={ DATA_COLUMN : comment , LABEL_COLUMN : sentiment , LEARNING_RATE : 2e-5 , NUM_TRAIN_EPOCHS : 3 , bert_model_hub : https://tfhub.dev/google/bert_chinese_L-12_H-768_A-12/1 } 前两行,是把文本、标记对应的列名,指示清楚。 第三行,指定训练速率。你可以阅读原始论文,来进行超参数调整尝试。或者,你干脆保持默认值不变就可以。 第四行,指定训练轮数。把所有数据跑完,算作一轮。这里使用3轮。 最后一行,是说明你要用的 BERT 预训练模型。咱们要做中文文本分类,所以使用的是这个中文预训练模型地址。如果你希望用英文的,可以参考 我的 Medium 博客文章 以及对应的 英文样例代码 。 最后一步,我们依次执行代码就好了。 result,estimator=run_on_dfs(train,test,**myparam) 注意,执行这一句,可能需要 花费一段时间 。做好心理准备。这跟你的数据量和训练轮数设置有关。 在这个过程中,你可以看到,程序首先帮助你把原先的中文文本,变成了 BERT 可以理解的输入数据格式。 当你看到下图中红色圈出文字时,就意味着训练过程终于结束了。 然后你就可以把测试的结果打印出来了。 pretty_print(result) 跟咱们之前的 教程 (使用同一数据集)对比一下。 当时自己得写那么多行代码,而且需要跑10个轮次,可结果依然没有超过 80% 。这次,虽然只训练了3个轮次,但准确率已经超过了 88% 。 在这样小规模数据集上,达到这样的准确度,不容易。 BERT 性能之强悍 ,可见一斑。 小结 讲到这里,你已经学会了如何用 BERT 来做中文文本二元分类任务了。希望你会跟我一样开心。 如果你是个资深 Python 爱好者,请帮我个忙。 还记得这条线之前的代码吗? 能否帮我把它们打个包?这样咱们的演示代码就可以更加短小精悍和清晰易用了。 欢迎在 咱们的 Github 项目 上提交你的代码。如果你觉得这篇教程对你有帮助,欢迎给 这个 Github 项目 加颗星。谢谢! 祝深度学习愉快! 延伸阅读 你可能也会对以下话题感兴趣。点击链接就可以查看。 如何高效学 Python ? 学 Python ,能提升你的竞争力吗? 文科生如何理解卷积神经网络? 文科生如何理解循环神经网络(RNN)? 《文科生数据科学上手指南》分享 喜欢请点赞和打赏。还可以微信关注和置顶我的公众号 “玉树芝兰”(nkwangshuyi) 。 如果你对 Python 与数据科学感兴趣,不妨阅读我的系列教程索引贴《 如何高效入门数据科学? 》,里面还有更多的有趣问题及解法。
6712 次阅读|0 个评论
图灵奖和人工智能- Turing Award Won by 3 Pioneers in Artificial Intel
jhsbj 2019-3-31 17:32
纽约时报报道,2019年3月27号 美国计算机学会宣布将 2018 年度图灵奖授予人工智能领域的科学家:蒙特利尔大学教授本吉奥(Yoshua Bengio), 纽约大学教授,脸书公司首席人工智能科学家勒昆(Yann LeCun)和谷歌公司副总裁、多伦多大学名誉教授辛顿(Geoffrey Hinton), 以褒奖他们推动深度神经网络成为计算机技术的重要组成部分。三位科学家将平分 100 万美元的奖金。 图灵奖(ACM A.M. Turing Award),是计算机协会(ACM)于1966年设立的奖项,作为计算机领域最负盛名的奖项,有“计算机界诺贝尔奖”之称,专门奖励对计算机事业做出重要贡献的个人。其名称取自世界计算机科学先驱、英国科学家、曼彻斯特大学教授艾伦·图灵(Alan.M. Turing)。获奖者必须是在计算机领域具有持久而重大的先进性的技术贡献,大多数获奖者是计算机科学家。 人工智能目前是所有科学领域中发展最快的学科之一,也是当今社会最为热议的话题之一。这很大程度上归功于“深度学习”(deep learning)领域近年来取得显著进展。本吉奥、辛顿和勒昆这三位获奖者是“深度学习”领域的奠基人,他们把单层神经网络拓展成实用性多层神经网络,在图像识别、语音识别和机器翻译等领域,获得很好的效果。“深度学习”似乎已经成为人工智能的代名词,从ImageNet 图像识别,智能语音助手到自动驾驶,都得益于“深度学习”的发展。 所谓人工神经网络,是指参照人类神经结构和功能的特点,在计算机中模拟出一层或多层所谓“神经元”的计算单元,使它们之间通过加权方式相互连接和互相影响。改变这些连接点的加权值,则可以改变和扩展人工神经网络的计算性能。正是这三位科学家认识到和实践通过搭建多层神经元的方法,创建了较“深”的人工神经网络,这对于人工智能的发展具有突破性和创新性的意义,也为“深度学习”概念的出现奠定了重要的基础。 “深度学习”是机器学习的一个新的领域,目的在于建立模拟人脑进行分析学习的神经网络,模仿人脑的机制来解释数据,例如图像,声音和文本。“深度学习”是一种特征学习方法,把原始数据通过非线性的复杂模型转换为更高层次、更抽象表达的算法,可以将特征提取和分类结合到一起,用数据学习特征,也是一种可以自动学习特征的方法。 许多学者相信,“深度学习”技术将会逐渐发展愈加成熟,也将会进入比较平稳的发展过程。而更深一步的发展与突破需要对人工神经网络进行较大改进,也可能在包括脑科学在内的多学科交叉研究的基础上建立新的模型和方法。以此,通过极大提高计算机理解环境世界的能力,深度神经网络不仅在改变计算机模式,也在改变人类行为和科学世界的每一个领域。 就像其他创新工作一样,都不大可能是一帆风顺的,人工神经网络和“深度学习”从上个世纪80年代就开始使用模拟人脑的智能,帮助计算机完成模式识别任务。但是,当时并没有为计算机科学界认可。而辛顿、本吉奥和勒昆一直把这种思路坚持到现在。辛顿博士71岁,出生于伦敦,他在20世纪70年代初作为一名研究生时首次接受了神经网络这个想法,当时大多数人工智能研究人员都反对这个想法,就连他自己的博士导师也质疑这个选择。辛顿回忆往日光时说:“我和导师每周见一次面,有时会以争吵结束,有时候不会。” 勒昆58 岁,曾在辛顿的实验室中做过一年的博士后研究,之后加入当时顶尖的贝尔实验室。在贝尔实验室,勒昆应用“深度学习”研发出能识别手写信件和电话号码的系统,曾一度识别了美国 10% 的手写支票,获得很好的商业成功。而在其他领域的应用,勒昆则遇到了重重困难,只有当训练数据集足够大时,“深度学习”才能发挥作用,但当时很少有什么领域能满足这个条件,即使是现在,也不是每个领域都能满足这个条件。训练数据集小,即便算法在测试集表现很好,但在实际应用是也会出现极大误差,而当时的计算机性能和容量也无法满足拥有成千上万个参数的“深度学习”模型。使得人工智能的发展受到极大的限制。尽管相当长的时间里,勒昆的研究并不被看好,而他和当时也在贝尔实验室工作的现年55岁的本吉奥始终坚信“深度学习”的未来。 2004 年,在加拿大前沿科学机构的赞助下,辛顿创立了“神经计算和自适应感知”的专项研究项目,他邀请了在“深度学习”领域坚守多年的本吉奥和勒昆加入这个项目。从辛顿博士研究生期间开始的研究,到现在他们为深度学习已经默默奉献了 30 年。至此。深度学习”引领的人工智能开始获得了腾飞式的发展。有人把三位科学家的“深度学习”之旅称之为“孤独之旅”。我想这种孤独之旅的另一面就是坚定的信念,顽强的毅力和对科学无所畏惧全身心的追求。 William Schwartz 在1970年的“新英格兰医学杂志”中,曾经预测:到2000年,许多医生的脑力劳动,可以被人工智能中的“专家系统”替代,或者至少大大增强它在医疗领域中的作用。Schwartz也希望医学院的课程重新定向到医疗保健的社会和心理方面,医学院将主要吸引对行为和社会科学,以及生物信息科学感兴趣的申请人。换句话说,就是预测现代的大多数医疗技术方面的工作,将有人工智能所替代。但Schwartz的梦想在很大程度上,还没能实现。 迄今为止,生物医学领域中人工智能的成功使用,大都来自图像识别方法在放射学,病理学,皮肤病学和眼科学等学科的应用。尽管美国FDA最近批准了少数这样的系统,但目前许多这些项目都还仅限于在研究范围。 我本人感兴趣的领域是对人衰老过程和与对衰老影响因子的分析和预测,以及筛选具有强免疫原性和可以为HLA分子识别的肿瘤新生抗原的工作。这些都期待人工智能的深入发展提供重要的帮助。
个人分类: 健康|3527 次阅读|0 个评论
深度学习获得图灵奖说明了什么?
热度 1 lhj701 2019-3-30 10:58
深度学习获得图灵奖说明了什么 ? 2019年3月27日, ACM 正式宣布 将 2018 年图灵奖授予 Yoshua Bengio, Geoffrey Hinton 和Yann LeCun,表彰他们对于 深度学习神经网络的重大突破性贡献。 至此,深度学习神经网络,正式得到学术官方的认可,并相信 神经网络已经成为计算领域的重要组成部分。这 对深度学习未来寒冬的质疑画上了句号,去除了对出身“寒冬的”深度学习带来这次AI繁荣之后会再次带来AI寒冬的忧虑。 当然,深度学习也不是万能的,图灵奖对于深度学习的认可,也同时宣布,后深度学习时代的带来----它的出现将计算机如何对人类进行“算计”贡献,开拓了一个如何使用计算机的新领域,但同时它的局限也必然期待未来新的计算机使用模式的出现,当然未必是颠覆和替代,但必然需要开拓新的使用方式,只有那样,才可能以人工智能的骄傲再次登顶图灵的顶峰。 深度学习获得图灵大奖,说明了什么?一方面是大量工业信息业对于深度学习大量的实锤应用,是算法,更是大数据和大算力的胜利, 但更为重要的,也许是:人类终于决定,开始真正对机器(计算机器)放手了----过去的计算方式,人类将不确定性留给人类,而将确定后的不确定性交给机器处理。因此,人类对于规律的确定性,是总体可控和把握的。 而深度学习,真正将人类不能确定的不确定性交给机器--也就是说,创造一种机制,让机器去寻找那些确定性(规律),等机器找到了那些它认为的确定性规律后,再处理不能预先确定的任务。 从这个角度上讲,深度学习的方法,赋予了机器拥有自我寻找智能(规律)的权利。而人类的角色,开始从自己寻找确定性规律中部分解脱出来,转而创造能够自己寻找到这些确定规律的机器和机制,也就是开始真正创造可以代替人工的智能。 也许,这是目前,将人的智能嵌入到机器,能够寻找到的唯一实用办法,而显然,那些确定性规律,那些能够被机器确定的规律(而不是人),必定存在于海量的数据中(大数据), 这也是目前深度学习的缺陷: 它 是数据产生的机器智能,必须依赖于产生它的智能的数据 。理论上数据必须足够多,或者必须足够饱和规律的存在。但数据是万能的吗?或者说数据一定能够产生智能吗?或者说,一定存在能够让深度学习识别出规律的数据样本吗? 但不论如何,智能的机器是人类创造的智能工具,它们的产生是替代人类完成各种繁琐的工作任务的,显然没有万能的工具,但人类创造为人类服务的工具的步伐从来没有停止过。 深度学习作为一种嵌入到机器(计算机)的智能工具,也许不是完美的,但它是证明实用和有效的,可以完美的胜任人类的一些传统的工作任务。而它存在的不完美,也正是推动未来人类创造新的、能够自己识别社会和自然规律的智能机器,而未来他们的出现,正是能够登顶未来图灵大奖的新的自己认识不确定性规律的智能机器。 在后深度学习时代,他们会是什么呢?
个人分类: 人工智能|3558 次阅读|1 个评论
(机器的)深度学习不是(人类的)学习:人机双脑的较量不在此
geneculture 2019-2-25 17:38
(机器的)深度学习不是(人类的)经验学习:人机双脑的学习能力的较量不在于此。 (机器的)神经网络也非(人类的)神经网络:人机双脑的神经网络的较量更不在此。 尽管如此,但是,基于神经网络的深度学习的确又比基于统计的机器学习进了一大步。当然,更比基于规则的自动计算(批处理)进步了许多。 最近,在调查了信息处理、人工智能和大数据三类技术之后,我发现:2016年及其前后这段时间是非常重要的转折点。因此,就2016-2018年自己提出的“三信、三智和三数”之后,进一步坚定了自己长期研究方向,即:人际和人机以及机际乃至机人之间怎样结合得更好这个融智学的研究方向。因此,我对于(机器的)深度学习不是(人类的)经验学习和(机器的)神经网络也非(人类的)神经网络这样的判定是支持的。尽管如此但是我仍然认为:机器的神经网络虽非人类的神经网络,机器的深度学习也非人类的经验学习,但它们的确都有其不可替代的重要的里程碑意义。因为,它们向人类(尤其是人类的广大成员甚至少数精英成员都)提出了巨大的挑战。未来学的第一和第二定律在此更具备可验证性。-邹晓辉 附录: “深度学习不是学习”:英特尔高管与AI大牛LeCun展开互怼 量子位 02-24 13:09 郭一璞 夏乙 假装发自 旧金山 量子位 出品 | 公众号 QbitAI “深度学习不是真正的学习。” 英特尔神经形态计算实验室主任Mike Davies在国际固态电路会议(ISSCC)上将深度学习批判了一番。 Davies说,深度学习跟大多数人印象中的并不一样,它只是一种优化程序,实际上并不是真正在“学习”。 受到攻击的重灾区,还是深度学习中的反向传播算法。 他说,反向传播与大脑无关,而只是在深度学习计算机程序中用来优化人工神经元响应的一种数学技术。 自然的反向传播例子,并不存在。 虽然他承认深度学习现在非常有效,但他也坚定地强调里,大脑才是真正智能计算的范例。 Davies死死抓住不放的“不像大脑”这个问题,也正是深度学习教父Hinton一直重视的。 不过对于这次批判本身,美国媒体ZDNet认为,他主要的攻击目标其实是Yann LeCun。 深度学习vs.神经形态计算之争 为何攻击LeCun? 就在周一,这位AI大牛在同一个学术会议上发言时,顺便批判了Davies在搞的神经形态计算。 神经形态计算是英特尔布局的一个重要新兴方向,在这个领域,他们推出了芯片样品 Loihi 。英特尔说,这种芯片可以实现自主学习,而且能耗只有传统芯片的千分之一。 而Davies就是神经形态计算实验室的负责人,主管着英特尔在这一领域的探索。他参加ISSCC会议,也是来讲Loihi的。 Loihi用了一种名叫 尖峰神经元(spiking neurons) 的技术,这类神经元只有在输入样本后才能被激活。 神经形态计算倡导者们认为,这种方法更好地模拟了大脑的运行机制,比如说信号传递的过程就像大脑一样经济。 在LeCun看来,神经形态计算领域没有产生有实际效果的算法,为何要为一种没用的算法构建芯片? 不过Davies直接表达了反对,他说,神经形态计算产生的算法是有效的, LeCun忽视了神经形态计算的优势 。 Davies说:“LeCun反对尖峰神经元,但他却说我们需要解决硬件中的稀疏性,尖峰神经元就是干这个的啊。” 他说,这太讽刺了。 为了驳斥对尖峰神经元的批评,Davies引用了安大略滑铁卢一个名叫应用脑科学(Applied Brain Science)的机构的数据,比较了一种语音检测算法在不同芯片上的表现。 这个算法被要求识别“aloha”这个词,并且拒绝无意义词语,这家机构在CPU、GPU和Loihi芯片上运行了这一算法。 这份数据显示,Loihi在常规处理器上运行常规神经网络性能最佳,特别是在计算速度方面,并且能源效率更高,不过精确度会低一些。 在另一个例子中,Davies说Loihi执行的基本分类器任务的速度是传统的基于GPU的深度学习网络的40倍,准确度提高了8%。 因此,Davies认为Loihi效率高得多,可以运行规模越来越大的网络,他认为,机器人控制将会是Loihi这类神经形态芯片的杀手级应用。 Davies还从LeCun的批评挑出了他认同的一点:尖峰神经元的硬件非常充足,提供了很多工具来映射有趣的算法。 针对这句话后边隐含的“但是软件算法层面不行”,Davies说,他的团队当前目标就是在算法上取得进展,算法确实拖了这个领域的后腿。 在推特上,也有人隔空参与了这场辩论。 有人认为,神经形态计算就像量子计算一样处在起步阶段,所以没什么可批判的。 也有人觉得深度学习已经在许多领域内取得了成果,量子计算和神经形态计算还差得远,虽然技术很尤其,但两者都没有被证实,而且都没有编程模型。 其实,这场LeCun和Davies的争斗,除了学术方面之外,另外不得不考虑的一点就是Facebook和英特尔的商业竞争。 周一,LeCun表示Facebook内部正在开发AI芯片,一旦Facebook自己的芯片研发成功,那就不需要使用英特尔的芯片了,甚至还会抢走英特尔的客户。 看完这场隔空口水战的来龙去脉,我们把目光收回到Davies指责的核心:反向传播。 训练深度学习模型离不开它,但对它的质疑也接连不断。 反向传播到底行不行? 反向传播,生于1986,出自David Plaut、Steven Nowlan、Geoffrey Hinton在卡耐基梅隆大学(CMU)时发表的Nature论文:Experiments on Learning by Back Propagation。 △ www.cs.toronto.edu/~fritz/absps/bptr.pdf 31年后,这一概念已经随着深度学习广泛应用到了各种领域,也遇到了最大的一次危机。 它的的提出者之一、“深度学习之父”Hinton在多伦多举办的一场会议上公开提出了质疑。 他说,他对反向传播“深感怀疑”,甚至想“全部抛掉,重头再来”。因为,大脑的运作机制并不是这样的。 “不像大脑”这个问题,Hinton一直非常重视,他曾在MIT的一次讲座上说,他相信正是这些不像大脑的东西,导致人工神经网络的效果不够好。 在Hinton发出自我质疑之后,反向传播更成了讨论的热点,甚至被称为“今日AI的阿喀琉斯之踵”。 不过现在,可能Hinton应该自己的作品稍微满意一点了。 哈佛大学临床神经科学学院的两位科学家在最新一期Cell旗下期刊《认知科学趋势》(Trends in Cognitive Sciences)上发表综述,总结了人工神经网络的反向传播算法,在大脑中是怎样体现的。 这篇综述题为“大脑中误差反向传播的理论”(Theories of Error Back-Propagation in the Brain),综合了近来的一批理论研究,分析几类生物反向传播模型。 作者说,这些理论研究“否定了过去30年来普遍接受的教条,即:误差反向传播算法太复杂,大脑无法实现”。 根据这些研究,脑神经回路中类似反向传播的机制,是基于突触前和突触后神经元活动的简单突触可塑性规则。 论文:https://www.cell.com/trends/cognitive-sciences/fulltext/S1364-6613(19)30012-9 One more thing… 虽然Davies和LeCun在一场学术会议上隔空吵得很热闹,但深度学习和神经形态计算并非势不两立。 有不少学者在研究如何把神经形态芯片和深度学习结合起来。 比如: 美国橡树岭国家实验室、加州理工大学和田纳西大学的学者们,就曾经研究过如何在高性能计算设备、神经形态芯片和量子计算机上运行复杂的深度神经网络。这是他们的研究: A Study of Complex Deep Learning Networks on High Performance, Neuromorphic, and Quantum Computers arxiv.org/abs/1703.05364 而奥地利格拉茨技术大学的Guillaume Bellec、Franz Scherr等人,最近在arXiv上公开了一项研究,提出了反向传播的一种替代方案。他们的研究题为: Biologically inspired alternatives to backpropagation through time for learning in recurrent neural nets arxiv.org/abs/1901.09049 供感兴趣的朋友们深入探索~ — 完 — https://mbd.baidu.com/newspage/data/landingsuper?context=%7Bnid%3Anews_9369246177122558788%7Dn_type=0p_from=1
个人分类: 融智学前期探索|2325 次阅读|1 个评论
如何从零基础学最前沿的 Python 深度学习?
热度 7 wshuyi 2019-1-26 11:28
学深度学习,可能“弯道超车”吗? 困惑 深度学习的初学者,总会在学习路径上遇到困惑。 先是那群框架,就让你不知道该从哪儿着手。 一堆书籍,也让你犹豫如何选择。 即便你去咨询专业人士,他们也总会轻飘飘地告诉你一句“先学好数学”。 怎样算是学好? 对方会给你罗列出一堆大学数学课程名称。直到你彻底 放弃 学习的想法。 真要是按照他们的要求,按部就班去学,没有个几年功夫,你连数学和编程基础都打不完。 可到那时候,许多“低垂的果实”还在吗? 其实,Sylvain Gugger (数学专业出身,自学深度学习,一年时间成为 fast.ai 的研究科学家)说了一段真话(链接在 这里 )。 把我常用的那个例子,再给你举一遍。 如果你想 造汽车 ,恐怕要有多少年的理论功底,以及技术实践。 但如果你只是想 开汽车 ,却是很快就能学会。 当个司机,你需要去了解汽油发动机原理吗? 不需要。 因为你开的车,甚至有可能根本就用不上汽油发动机(电动车)。 深度学习,底层实际结构很复杂。 上图还只是模块示意图哦。 然而,作为应用者,你只需要一两行代码,就能实现上述神经网络。加上数据读取和模型训练,也不过十行左右的代码。 不信? 你可以参考我的《 如何用 Python 和 fast.ai 做图像深度迁移学习? 》 感谢科技的进步,深度学习的用户接口,越来越像 搭积木 。 只要你投入适当的学习成本,就总是能很快学会的。 这种成本,究竟要投入多少呢? 成本 Jeremy Howard 的答案,是 7 节课。 我在《 如何用 Python 和深度迁移学习做文本分类? 》一文中,给你介绍过他的研究论文“用于文本分类的通用语言模型微调(ULMFiT)”。 与其说他是研究人员,倒不如说他是个老师。 Jeremy 看到许多普通人,被深度学习的高门槛拦在外面,很不愉快。 于是他研发了基于 Pytorch 的 fast.ai 深度学习框架 。 这个框架的特点是:几条语句,就能做出 前沿水平 (state of the art)的深度学习模型。 依据该框架,他还做了系列 MOOC ,现在在深度学习领域非常知名。 我给你写这一篇文章,是因为早上看见,Jeremy 发了一条消息,大家期待已久的2019版本 Practical Deep Learning for Coders 课程 终于 上线了。 按照课程要求,每周上一节课,视频看下来,大约需要2个多小时。 外加每周10个小时左右的练习时间。 7周之后,你就算结课了。 学这课程,需要的基础是什么? 机器学习?不需要。 深度学习?更不需要。 编程经验?这个确实需要,大概一年左右。如果你用的编程语言,恰好是 Python ,那就最好了。学的是其他语言也不要紧。因为 Python 是可以很快掌握的,就如同我在《 学 Python ,能提升你的竞争力吗? 》一文中跟你说的那样。 对了,还有数学呢? 只需要高中数学(对应美国教学大纲,你懂的)知识,就够了。 教学过程中,对于高等数学,如果需要,视频里会即时补充。 以上是你需要花费的时间成本和前导条件。 经济成本呢? 课程的教学视频是 免费 的。 内容 这一版的 MOOC ,都包括哪些内容呢? 在 这个页面 , Jeremy 做了介绍。 课程主要包含以下模块: 机器视觉(例如动物识别) 图片分类 图片分割 图片关键点 自然语言处理(例如影片评论情感分析) 语言模型 文档分类 表格数据分析(例如销售预测) 类别数据 连续数据 协同过滤(例如影片推荐) 下面,用几张截图,给你展示一下能学到什么。 这是对卷积神经网络工作原理的解释。 这是图片分割的效果。 你能学会如何对模糊图片进行增强。 以及如何训练语言模型和下游分类任务。 课程涵盖的知识点,包括但不限于以下内容: 怎么样?足够有用,也足够前沿吧? 效果 你可能很关心,花了7周时间学完之后,效果会怎么样? Jeremy 自己表示,课程里面有些前沿内容,还没有在学术期刊上发表。 如果你是学术圈人士,看了这句话,应该微微一笑——吹吧!怎么可能?傻吗? 但这个 Jeremy ,以前真这么干过。 前面提的他那篇 ULMfit 语言模型论文,你应该还有印象吧? 注意,Jeremy 不是像很多学者那样,先 发表 了论文, 然后 才把内容在课程中讲授的。 虽然是在旧金山大学教书,但是 Jeremy Howard 对于写论文的兴趣无限趋近于0. 他在上课的过程中,对于最新的机器学习研究旁征博引,带着一群初学者,游走在学科的边缘上。 他 直接 在自己的课程中讲了 ULMfit 这种方法,鼓励学生去试。 他展示的语言模型迁移学习分类效果,许多已经超过目前最优水平。 他发现许多显而易见的东西,居然都没有人尝试过,更没有人发表过。 于是,授课之余,他经常跑到人家深度学习圈儿里面,扔一两个想法和实践效果进去,不过基本上没人搭理他。 原因很简单,学术界也是有 路径依赖 的。 让人家专家学者放着大路不走,试你这野路子? 好在,具有真有一位自然语言处理领域的活跃学者,来找他聊天儿。说对他提的这种新自然语言处理深度学习方法,很感兴趣。 他挺开心的,俩人就聊,越聊越投机。 然后,这个叫做 Sebastian Ruder 的人,就提出来“既然你这想法,学术圈别人没试过,咱们合写论文吧!” 想起来了吧?我在知识星球里,曾经为你介绍过这家伙,以及他那份著名的 NLP 前沿进展汇总。 面对 Sebastian 伸过来的橄榄枝,Jeremy 如何表态呢? 他立即回答: No! 我才不写那玩意儿! Sebastian Ruder 于是使尽浑身解数,附加了以下条件: 你不需要给论文里面写一个字。只提供想法和代码就可以; 我帮你把它完整转换成为学术论文格式,用严谨的方式加以讨论; 咱们第一时间把论文放到预印本平台,并投稿自然语言处理领域的高水平会议,以便让更多人能免费阅读,并因此获得收益。 Jeremy 终于同意 了。 这篇论文被 ACL 接收后,收获大量关注。 更有趣的是,当初无人问津的方法,人们真的严肃尝试后,获得的奖项一个接一个。 我在《 如何用 Python 和深度迁移学习做文本分类? 》一文中,给你讲到过,Czapla 等人,就利用这种方法,轻松赢得了波兰语信息检索比赛 PolEval'18 的第一名,他们的模型效果,领先第二名 35% 。 这时候,回过头来,再看 Jeremy 那句“课程里面有些前沿内容,还没有在学术期刊上发表”,你明白意味着什么了吧? 资源 笃定决心要学的话,我们来说说如何上这门免费 MOOC 吧。 如果你使用笔记本电脑,可以点击 这个链接 ,直接访问课程的视频。 有意思的是,这一版课程,包含了新的视频播放器。最大的特点是,你可以用内置内容搜索的功能,直接定位到感兴趣的段落。这样,找起内容和知识点来,方便多了吧? 如果你用移动设备学习,这个播放器可能无法正常使用。没关系,你可以访问 这个播放列表页面 ,直接看视频。 不仅如此,为了让你能够用上 GPU 来实践深度学习,课程还专门在配套网站上为你提供了详细的 分步教程 。 够贴心吧? 我个人比较推荐其中的 Google Colab 和 Google Cloud Platform。前者免费,后者虽然有开销(每小时需要 0.38 美元),但如果你是新用户,Google 会先送给你 300美金 ,1年内有效。足够你学完这门课了。 我专门写了个步骤详细的教程,教你如何用 Google Cloud Platform 跑 fast.ai 课程的练习,你可以访问 这个链接 查看。 多嘱咐一句,课程的 论坛 ,一定要经常查看。 上面各路高手经常就课程相关内容,有些甚至是非常前沿的技术进行切磋。你在一边观看,都可以获益良多。 如果你有问题,也不妨抛出来。论坛活跃度很高,“同学们”会很乐意帮助你的。 激励 不少人试图去了解 fast.ai 的商业模式,于是问 Jeremy 。 他直接告诉大家:我们的商业模式,是花 自己的钱 做事,帮人们学深度学习。连资助我们都不要。 顺便说一句,fast.ai 的 slogan 是这样的: 翻译过来就是,让神经网络变得不再酷。 在别人刻意制造信息与技术的鸿沟时,偏偏有人认为,人工智能应该能帮助更多人,而不是只让少数技术领先者和巨头获益。 说到这里,你可能会疑惑,这个 Jeremy Howard 怎么这么奇怪? 世人一直追逐的两件事,不就是名和利吗? 论文发表,就是 名 ,多少人每天想的,不就是论文、论文、论文吗? 人家都关心怎么知识变现,也就是 利 ,他为什么不拿资助,不赚钱,还搭上自己的钱来做这件事? 他这么兢兢业业,为了课程设计和 fast.ai 框架演进,真是做到了废寝忘食,殚精竭虑。 2018的 Cutting Edge Deep Learning for Coders 里,经常有这样的情况。晚上要上课, Jeremy 中午饭都没吃,一直在尝试最前沿的方法,以便能把最新的技能传授给学生。 看得出来,他很疲惫。但是课上他的笑容,是满足而真诚的。 为什么面对名利,Jeremy 如此拒绝呢? 给你半分钟,思考一下。 …… 以下是答案公布时间。 不要名利,是因为他 不缺 那些东西。 在 Wikipedia 上面,有好几个 Jeremy Howard 。其中咱们提到的这位,页面是这样的: 他最为人知的身份,是企业家。 再看看这段早年经历: 19岁,别人才刚开始上大学的年纪,Jeremy 已经在麦肯锡年入20万美元了。 再看这段,更为传奇: 一个管理咨询界的人物,跑去 Kaggle 参赛,结果因为成绩太好,一年后就成了 Kaggle 的主席和首席科学家。 至于名声,你看看 这段 2014年的 TED 演讲,就知道他到底有多知名。 详细介绍在 这里 。感兴趣的话,你可以自己去看看,励志一下。 我们总以为,要用足够的激励,让人们做出最大的产出贡献。 但是,许多最有影响力的 优质 产出,恰恰是那些根本对外部激励无感的人做出的。 这是不是值得制度设计领域的研究者,以及大型组织机构的管理者们思考一下呢? 关于英语 没错,课程是英文的。 别抱怨了。 没用。 你在抱怨的时候,那些花时间学英语的人,已经悄悄跑到你前面去了。 学吧。 我给自己的研究生,写过一篇英语学习方法介绍文章,叫做《 写给我即将入学的研究生(英语学习篇) 》。你要是感兴趣的话,不妨读读。希望对你学英语有帮助。 祝深度学习愉快! 喜欢请点赞。还可以微信关注和置顶我的公众号 “玉树芝兰”(nkwangshuyi) 。 如果你对 Python 与数据科学感兴趣,不妨阅读我的系列教程索引贴《 如何高效入门数据科学? 》,里面还有更多的有趣问题及解法。 如果你有疑问,欢迎进入 知识星球 上咱们的专属社区。
12423 次阅读|8 个评论
如何做到教学质量可持续的稳步提升?
geneculture 2018-12-30 09:40
在双字棋盘内,做教学大数据处理和基于统计的机器学习乃至基于神经网络的深度学习都是很好的一系列课题及项目选择。 这样可做到成千上万所学校教学质量稳步提升而且都是可持续的。 真正发挥了大数据和AI双重优势。 做到了智力劳动解放暨合理分配。 这即融智学与文化基因系统工程。
个人分类: 高等教育学|1458 次阅读|0 个评论
基于变分自编码器的单细胞转录组低维表示与可视化
jgu 2018-12-28 14:31
近年来,单细胞RNA测序技术(scRNA-seq)的迅速发展使得研究人员能够在单细胞层次上研究生物系统的转录异质性,这种信息通常难以通过传统的组学数据获得。然而,在单细胞层次上,转录组的随机波动会远远大于细胞群体的平均行为,另一方面,单个细胞的RNA总量极低,使得其准确测量极具挑战,因此目前的单细胞测序数据存在很大的噪声。其中,dropout现象是一种主要的噪声,即很多表达的mRNA没有被捕捉到,导致检测出来的表达量为0。有效的低维表示可以降低scRNA-seq数据中的噪声,从而使得我们能够更好的分析细胞类型与状态,并实现细胞分布的可视化展示。 本研究中,我们提出了一种基于深度变分自编码器的scRNA-seq数据分析方法——VASC,有效实现scRNA-seq数据的非监督降维与可视化。VASC对dropout现象进行了建模,并通过深度神经网络发现数据中复杂的非线性模式、降低数据噪声,从而做到可靠的数据降维与可视化。我们在超过20个数据集上(包含目前主流的scRNA-seq技术,例如SMART-Seq,inDrop,10X等)测试了VASC的低维表示性能,结果表明在大多数数据集中,VASC都能更好的提取细胞类型或者细胞分化过程的信息,体现了VASC广泛的适应性。 VASC代码可以从 https://github.com/wang-research/VASC/ 免费获得。 论文引用: Dongfang Wang, Jin Gu#. VASC: dimension reduction and visualization of single cell RNA sequencing data by deep variational autoencoder. Genomics, Proteomics Bioinformatics 2018, Accepted.
个人分类: 科研笔记|4817 次阅读|0 个评论
《抛石机攻城》:一个STEM项目 ——以深度学习的视角来浅析
热度 1 wangxianbang 2018-12-24 23:09
《抛石机攻城》:一个 STEM 项目 ——以深度学习的视角来浅析 王 鹏 引言:深度学习的基本特质有:一是深层动机;二是切身体验-高阶思维;三是深度理解-实践创新。本文利用文字、图片和视频等回顾了《抛石机攻城》项目的整个教学过程,尝试与深度学习的特征对接以期带来一些教学启示与实践反思。 关键词:深度学习;抛石机;教学启示;实践反思 \0 “ 趣味科技探究”兴趣选修课上,我给学生的项目任务是制作完成一个具有一定发射远度和精度的抛石机。目标是将子弹(螺母)发射出去,击倒对面桌子上代表不同分值的小兵偶。为获得高分,学生需要设计一定的瞄准装置,同时运用战术策略来出奇制胜。当然,由于存在一枚子弹连击的情况,让比赛充满了变数与惊险。 完成这个小工程的过程中,学生在科学(Science)、技术(Technology)、工程(Engineering)和数学(Mathematics)等方面都有所发展,教师的角色也在发生着变化。本文将回顾自己在小学阶段对此项目的实施过程,尽管教学实践并不完美,但希望能以深度学习的视角来浅析这一项目的教学过程,以期对读者有借鉴意义,为更多想进行综合实践性课程开发的老师带来参考。 教学过程: 这个活动来源于“兴华国际青少年科技运动会”中的一个竞技项目,要求选手利用一次性筷子、塑料小勺、螺母、钩码、棉线、小纸杯等材料以及尖嘴钳、剪刀、热熔胶枪和胶棒等工具来制作抛石机。原本对筷子的数量和装置的空间大小等有一定要求,但现在的小孩儿都是有想法的一代,虽然只是四年级和五年级的小学生。为了让他们能尽情施展想象力,满足其创作欲望,在开始制作活动后,我没有再提这些限制,给他们一次学习的自主权。 第一次课上,让学生观看了阿基米德保卫西西里岛时使用抛石机的卡通片(或者新版《杨家将》中的片断)后,我对这项活动进行了介绍,并让其观看了兴华科技运动会几届比赛中的精彩场面。 特别值得一提的是,广西师大附属外国语学校的周晓庆老师录制的情节跌宕起伏的《抛石机经典对决——东梧大战》,让学生们看得情绪高涨,个个摩拳擦掌,跃跃欲试。(后附视频链接) https://mp.weixin.qq.com/s?__biz=MzU0NDY2NjczOA%3D%3Didx=1mid=2247483655sn=247be6820e2ce71877a669dcb0e5d5ae 随后,我让学生对照着 PPT 中的几个样本进行组内讨论和设计。 他们就开始了头脑风暴,讨论起自己小组的设计。据家长的反馈,许多学生回到家中就开始了制作。看来,项目本身蕴含着魔力,能让学生内在的深层学习动机迸发出来! 图 1. 学生在家中设计与制作 第二次兴趣课上,就已经有小组带来了作品。下面是两件作品 图 2. 学生在课前的制作 左边的主创者是一位五年级的女生,右侧的主人是四年级的男生。对比来看,女生的作品在结构上更有对称性,底座上还画有线条,可见其规范细致。而男生的略显粗糙,能看出有些地方是边制作边改动,增加筷子的数量来换取稳定性的提高。他们试图以高度获利,但没有想到重物下落的甩动空间却减小了。尽管模仿视屏中的作品,增加了红光瞄准器,但可惜的是,不加思考地将其固定在了转动杆上。 各小组的组长领了材料与工具后,大家就热火朝天地行动起来。这之后,我就不再干涉他们的活动,而更多地像是一个服务者的角色。比如,给各个小组调配一下筷子、吸管、剪刀、尖嘴钳、尺子、钩码;监督他们安全地使用热熔胶枪;应他们的要求,将 PPT 翻到他们需要看的图片或视频;偶尔也会讲“可能会选拔表现好的同学参加兴华科技运动会”的比赛之类的话来激励一下,提升小组成员的参与度。因此,除了巡视和提醒安全事项之外,我的指导更多只是守在讲台上,看着学生安全地使用胶枪。看着学生们投入的样子,我感到自己好像是撒了一把种子到田野里,他们就各自竞相疯狂生长! 图 3. 学生加工 每个组的设计重点与作品质量显然是有差别的。有的设计想以高度取胜,但实际测试时子弹却高高越过对岸敌军阵地;有的稳固是靠底盘厚重,而有的则是在结构对称上面下功夫,却没考虑重物落下的空间;有的安装好了,准备试射时才发现勺子安反了…… 冠军作品 亚军作品 第三次课,在给了二十分钟的加工制作时间后,我安排一些已经初步完成作品的小组在教室里或走廊里进行轮流测试,要求至少2米的射程(约四块地板砖的距离)。 在学生测试出现问题时,我才开始适当地指导学生注意诸如结构的稳定性、转轴滑动的影响、重物的下降空间、配重与射程的关系、子弹出射角度、角速度与线速度的关系、子弹的弹道轨迹弧线与落点关系等问题,提醒他们要考虑作品的整体性结构设计,同时开始设计瞄准装置。 这次,我允许学生进行组间交流观摩,吸收别的小组好的方法。比如,第一小组用到的筷子数量少,但是稳固,因为结构对称,多处三角形结构的运用恰到好处;第五组高大,射程已经不是问题;第七组作品虽然不高大,但阻力臂(勺子端)长度大于动力臂(配重端),提高了发射时的速度(同轴转动,半径越大,线速度越大),依然射得远;第九组在结构的中间部位放置了一个胶带,似乎有瞄准器的意味…… 相互参观完,多数小组都重新进行了设计。 第四次课,各个组基本上都完成了作品。在二十分钟的最后一次集中加工之后,开始了第一轮选拔赛。 总共有九组,我进行了这样的安排: 1. 各个小组发射十发子弹,击中2米外(约四块地板砖的距离)的桌面上的小兵偶。以击中次数排名选出前六名。 2. 各组出一名裁判,进行交叉记录。(下面为裁判记录单) 参赛小组: 第 组 裁判员: 总成绩: 投射次数 1 2 3 4 5 6 7 8 9 10 发射次序 (击中则打对勾为记) 3 .如果不足六组,则余下的小组重新比赛,竞争入选名额。 第一轮选拔赛 第一轮选拔赛视频: https://v.qq.com/x/page/p08052130dv.html 果然不出所料,第一轮选拔后,只有三个组打中了小兵偶,从而直接晋级,其他均打空。余下六个组又进行了一次比赛,才又有一个小组晋级。 3. 进入下一轮比赛的小组,下节课将进行“对攻赛”,对手通过抽签产生。 而余下的小组,为了不打击学生的活动的积极性,也安排进行一次友谊性质的“对攻体验赛”。 第五次课,友谊体验赛与前四排名赛。为了能让晋级小组表现更好,我将友谊体验赛安排在前面。在被淘汰组进行比赛时,四强小组在走廊里进行模拟训练。一次课的时间只有60分钟,为节省时间,友谊赛只打一局(这些组战绩不佳,能打倒一个兵偶已属不易)。 这次的兵偶数量增加到三个:桌面倒扣水槽作为障碍物。一侧的大兵偶为一分,另一侧一个小兵偶为2分,在水槽后面只露出上半身的大兵偶也为2分。一颗子弹连续地击中兵偶算分,但水槽或桌面振动导致兵偶倒下则不算得分(这就为比赛带来了一定的悬念:选手需要打中的同时,也要考虑战术选则,反败为胜也是有可能)。每局的发射次数也增加到20次。 友谊赛结束,开始了前四名的排位赛。排名将决定决赛对手是谁。由于时间紧,只进行了一局。最后的结果是以打倒小兵偶的分值确定了前二名(下节课进行冠亚军决赛),后两名争夺第三名。 第六次课,三四名争夺与冠亚军之争。三四名由于双方选手及作品水平不太好,只进行了一局。更多时间还是留给了后面的压轴大赛。果然,这两个组没有让我们失望:三局打平后,只好以类似点球大战的方式决战——谁先打中小人谁胜出。所以,比赛的结果是没有失败者,学生们都很高兴! 冠亚军决赛视频: https://v.qq.com/x/page/b0800wfo2vc.html 第三名获奖 第三名分享经验——结构改进与发射效果 https://v.qq.com/x/page/s0817kxoruz.html 亚军获奖 亚军分享经验:比较腼腆的小组 https://v.qq.com/x/page/e0817tlwa4l.html 冠军获奖 冠军经验分享 https://v.qq.com/x/page/i08170s4vj0.html 讨论与反思: 从 STEM 方面讲,在这个教学活动以让学生利用筷子完成一个古代兵器——抛石机作为 工程 目标。前期学生进行了图纸的粗略设计(包括实践中的改进),实施过程中熟练使用了工具,灵活利用了材料的特性,这些是 技术 的核心(设计与操作)。重量(质量)、碰撞、能量、速度、重心、结构稳定性等,这些是 科学 概念(尽管学生尚处于经验层面,但他们能理解这些术语的含义)。底面积、半径、转动角度、抛物线、三角形稳定性等,都是 数学 工具性的体现。而在指导学生使用热熔胶时如何美观、整体结构要对称而非盲目堆砌等等,一定程度上也涉及到了 艺术 的美感培养。在项目实施过程中,我们并没有刻意去做出这样的划分,但其实这就是在真实任务完成(或问题解决)情境中的自然融合。 我们从深度学习的视角来审视这个项目教学活动。 我国学者李松林等将“深度学习”界定为“借助具有整合作用的实际问题激活深层动机,展开切身体验和高阶思维,促进深度理解和实践创新,进而对学习者产生深远影响的学习样态”。 他们认为,深度学习的内涵是指触及心灵深处的学习、是深入知识内核的学习、是展开问题解决的学习。而展开问题解决的学习有两种方式:课题研究式学习与项目创作式学习。(《抛石机攻城》项目显然属于后一种方式。) 深度学习的几个基本特质是:一是深层动机;二是切身体验-高阶思维;三是深度理解-实践创新。(李松林 贺慧 张燕 2018) 我们的教学活动属于项目创作式学习,可以依据深度学习的三个特质来对照分析一下。 学生的学习动机有没有被激活呢?从学生的课堂参与程度以及课后在家主动制作作品的行为来看,确实激发起了内心的欢喜。学生学习的动机类型是内在的,是源于对动手实践的自然渴望,而外部的激励只是教师给定的一个小目标。有效学习的前提就是学习者感兴趣,愿意参与进来。 学生是否有切身体验?是否进行了高阶思维? 显而易见,教学活动就是以学生为中心来展开的,特别是以动手实践与合作学习为主。教学活动体现了阶段性特点。首先,要保证开放性。不过多添加教师的指令,留出更多时间给学生自主活动,这是对学生自主性和创造力的尊重。其次,要体现生成性。把握好师生交流与教师集中指导的时机。先给学生一些经历(包括犯错的机会),问题的呈现与解决办法的提出才更显自然和真实。再者,教师的角色发生转换。在这个项目教学中,学生是中心,教师提供给学生创作所需要的心理安全环境,成为教学活动的组织者,学习进度的促进者、筹备各种资源的服务者……在这个项目教学活动中,教师不再是高高在上的权威,而仅是平等的首席参与者。 从结果上看,这项小工程带给这些小制作者们快乐,让他们学会了合作、专注,体验了从设计到作品的完整流程。 因此,学生的切身体验是充分的,在时间和空间上以及教师的管理上都得到了保证。 什么是高阶思维?所谓高阶思维,是指发生在较高认知水平层次上的心智活动或认知能力。新版的布鲁姆教育目标分类学的框架中将学习的认知过程维度分为六个层级:记忆/回忆、理解、应用、分析、评价、创造等。 后面三种认知方式属于高层次的心智活动,运用这样的方式进行的学习可以称之为高阶思维。 因为授课对象是小学生,我们在教学活动中并没有过分强调知识的记忆与理解。但肯定他们会 应用 已经有的经验来创作,如杠杆原理的应用、数学课上学习过的三角形的稳定性等; 分析 问题的难度与突破的办法,如小兵偶的距离不同,发射时拉下的勺子的角度不同、瞄准装置或参考物设计、子弹盒的设计;在分享环节可以看到他们是如何 评价 自己作品以及参考对手作品来改进;有些小组增加了瞄准装置、有些设计出了角度控制以及不断总结出自己的射击操作妙招,有些则在比赛过程中学会主动更改策略……这些都体现了学生的 创造性 。因此,问题解决始终牵引着学生发挥主动性,让思维处于高层次,不断进行着实践创新。 学生的学习有深度理解吗?他们的学习是否深入知识内核? 这个项目的核心知识块是“杠杆原理”。在苏教版小学科学的编排中,这一知识的教学是在五年级下册。兴趣班里的学生都是四、五年级的孩子,大多数还没有接触过这个概念。那是否就意味着要等到五年级学完杠杆原理再开展这个项目的呢?显然,这即是所谓的先学后教,教学思想的出发点是理论先于实践。然而,在依据课程标准而编写的不同版本的小学科学教材中,这一内容的编排位置是很不同的。广东省的一个版本就将其编写在了六年级上册。从这一点说明,杠杆原理的知识教学呈现与思维能力阶段性匹配并没有得到论证。另一方面讲,学生并不是脑袋空空来到教室,他们有过玩跷跷板的经历尽管这并不能对本次任务挑战带来多大帮助,但至少是教学的一个基点。因此,我们可以尝试“提前”教学。实践与理论并没有优先级之分,甚至可以说实践应当在理论之前才更符合人的认知心理过程。 同时,我们一直在反思“知识”的本源问题。知识的产生源于人类解决生产生活中的问题,知识及知识体系的建构也是在切身实践与理论总结中完成的。如果学生仅仅是学习书本上抽象化后的符号概念以及以缺少真实情境的习题演算来完成知识的获得,显然是无法深刻理解知识的内核并实现灵活应用,单调的教学形式也让知识的学习变得枯燥无味。 当我们的学生在把杠杆两端调整比例或者与别的小组作品比照时,他们可能发现效果的大不同;当他们把“子弹”射出时,也许明白了杠杆的实际用途;当他们为了精准打击“兵偶”而不断调节配重、发射角度或是研究“子弹”落地点与飞行弧线轨迹关系时……我们可以设想,在学生眼里杠杆已经不再只是一架装置,而是一套涉及多方面因素的工程体系。就是在这样的实践操作与不断反思调试中,学生可以体悟到力矩、半径与转动角度、发射点出射速度与射出角度的关系,也能理解能量的转换、结构稳定性与重心的关系等。这样建构的知识是生动的,更是源于实践的。(当然,我们也得承认在实际的教学中不能保证所有的学生都能学习到这些或全部理解到位。但我们应当相信,活动体验必然为学生将来学习那些定义完整的概念打下了情境基础。) 结语: 最后,尽管小学生的作品大多不美观,但就像爱因斯坦的小板凳,我们不可小觑其中所蕴藏的潜力。麦克斯韦曾说,实验的教育价值与仪器的复杂性成反比。融合式的 STEM 课程能带给学生制作这些“小板凳”的机会,更真实地促进学生发展。 因此,我们更应当关注的是这些作品背后的课程价值,教与学的过程让学生成长了什么。当然, 在本项目的教学中,很多方面还很不到位,比如原本想增设学生反思与相互评价的环节,但发觉学生的兴致已过,而且项目开展的时间过长,也就只能简单完结,期待下次活动设计中能把创作与反思穿插进行,使教学环节能更紧凑与合理。 如何具体设计,就需要我们在课程设计与教学实施中多去思考、提炼和实践创新! 李松林,贺慧 ,张燕.深度学习究竟是什么样的学习 .教育科学研究,2018,(10). Lorin W.Anderson 等编著,蒋小平,张琴美,罗晶晶等译,罗星凯审校. 《布卢姆教育目标分类学——分类学视野下的学与教及其测评(完整版)》【M】.北京:外语教学与研究出版社,2009. 李松林,贺慧 ,张燕. 深度学习究竟是什么样的学习 .教育科学研究,2018,(10). Lorin W.Anderson 等著,蒋小平,张琴美,罗晶晶等译,罗星凯审校 . 《布卢姆教育目标分类学——分类学视野下的学与教及其测评(完整版)》【 M 】 . 北京:外语教学与研究出版社 ,2009.
个人分类: 科技教育|9243 次阅读|3 个评论
[转载]深度学习及其在医学中的应用【摘要】
chinapubmed 2018-12-12 21:54
生物和医学技术的进展正在为我们提供大量生物和生理数据,例如医学图像,脑电图,基因组和蛋白质序列。从这些数据中学习促进了对人类健康和疾病的理解。深度学习是从人工神经网络中发展而来的,基于深度学习的算法在从复杂数据中提取特征和学习模式中大有前途。这篇论文的目的是提供深度学习技术及其在生物医学领域中一些最新应用的一个概述。我们首先介绍了人工神经网络和深度学习的发展。然后,我们描述了深度学习的两个主要组件,即:深度学习架构和模型优化。随后,展示了一些深度学习应用例子,包括医学图像分类,基因组序列分析以及蛋白质结构分类和预测。最后,我们提供了我们对深度学习领域未来方向的观点。 查看原文 医学图像分析,图像分割找肿瘤,器官,软骨,海马区等等,好像各大互联网公司都有相应的API了,估计不好用。脑电图,癫痫预测等等。 测序及表达分析,基因表达,特征序列(cis区,增强子,miRNA靶)预测,功能预测(变异,非编码)等等。 蛋白质结构预测:见最近的新闻。 例子太多了,自己看原文吧。里边有100多篇reference,难啃!
个人分类: 生物信息|1139 次阅读|0 个评论
如何用 Python 和循环神经网络预测严重交通拥堵?
热度 8 wshuyi 2018-12-12 12:09
本文为你介绍,如何从 Waze 交通事件开放数据中,利用序列模型找到规律,进行分类预测。以便相关部门可以未雨绸缪,提前有效干预可能发生的严重拥堵。 寻找 之前在《 文科生如何理解循环神经网络(RNN)? 》一文中,我为你讲解过循环神经网络的含义。《 如何用 Python 和循环神经网络做中文文本分类? 》一文,我又为你介绍了如何用循环神经网络对文本做分类。 我不希望给你一种错误的简单关联,即“循环神经网络 只能 用来处理文本数据”。 事实上,只要是序列数据,你都可以考虑一下循环神经网络。 我一直打算找个其他序列数据的样例,给你展示循环神经网络的更多应用场景。 但是这个数据不太好选择。 目前一个热门的应用场景,就是金融产品的价格预测。 每时每秒,金融产品的价格都在变动。把它汇集起来,是个典型的序列数据。 但是我一直不看好这种应用。因为金融产品的定价,应该是面向未来的。基于历史价格信息寻找波动规律,并对未来价格进行预测,实际上如同看着后视镜开车一般危险。 但是,还有很多人依然乐此不疲地尝试。很多时候,他们也能尝到成功的甜头。 这是为什么? 原因在于,金融市场的参与者,并非理性的机器,而是由人组成的群体。从行为金融学的角度来看,进化给人类思考与行为带来了一些“快捷方式”,你可以利用它们从中渔利。 陆蓉教授的《行为金融学》栏目,对此有详细介绍。 例如,人们追涨杀跌,认为历史会重演; 例如,吸引大众关注到事件,总会带来买入; 例如,人们会倾向于投资于自己熟悉的标的; 例如,人们会购买下跌的已持仓标的,来摊薄成本。 …… 如果没有大风浪,这种对市场参与者行为规律的洞察,确实可以帮你赚钱。你可以从价格的历史波动中,挖掘出这些规律的影响。但是这对 没有模型可用 的人来说,不公平。教你建模,就如同教你考试作弊。 如果遇到黑天鹅事件,其影响大概率会 超过 市场参与者行为偏误带来的历史价格波动规律。那么你,可能会因为应用模型,而遭遇 亏损 。你大约不会认为这是自己的错误,而直接把我当做骗子,朝我扔鸡蛋。 理性权衡后,我决定 不用 金融产品价格趋势分析,作为循环神经网络的应用样例。 其他开放的序列数据,当然也有很多。例如共享单车租用数据、气温变化数据等。 不过这些应用,一来别人都写过了,不新鲜。二来,气温变化,你看天气预报就好了。共享单车租用数量……你真的关心这里的规律吗? 正在我犹豫的时候,一次偶然的机会,我接触到了一个新的序列数据样例——交通事件数据。我觉得,把它作为应用案例分享给你,可能更合适一些。 比赛 拿到这个数据,是因为我参与了一次编程马拉松(hackathon)比赛。 比赛在 Frisco 的 UNT Inspire Park 举办。从早上8点开始,一直到晚上9点多才结束。中间可以自由吃免费提供的点心和水果,也可以到院子里晒晒太阳放放风。大家还可以自由交流和组队。 主办方为参赛者提供了若干种开放数据,也提了一些问题供大家参考解答。当然,实际参赛的时候,你也可以自己拟定新的题目。 这其中,就包括了 Waze 数据。 我在中国开车,平时用的都是高德导航,对于 Waze 这款 App 不大熟悉。 简而言之,这个 Waze 应用除了提供一般的导航功能之外,还有一个类似于众包的功能——让司机们自由提交路况信息。 这样一来,Waze 就利用群体智慧形成了一个眼观六路耳听八方的巨大网络,随时依据用户提供的情况,汇总成实时交通参考。并且汇报给用户,以便于大家调整自己的行车路线。 我觉得最有用的特点是,在堵车的时候,你可以了解到前面究竟发生了什么。其他导航也有实时交通状况提示,但是你对前面的情况一无所知。道路半幅施工?交通事故? 信息的对称,可以在很大程度上,让司机避免焦虑。 Waze 从几年前开始,就和政府部门合作,进行数据开放共享。这样一来,政府可以通过 Waze 的数据了解交通实时状况,对于问题进行快速的响应处理;与此同时, Waze 用户也因为可以获取整合其他相关类型的政府开放数据(例如道路规划等),更加有效合理安排出行。 这次比赛,主办方提供的数据,是 DFW (达拉斯-沃斯堡都会区)区域,11月1日到29日的 Waze 交通事件(Incidents)开放数据,这是政府开放数据的一部分。这些数据基本都是来自于 Waze 用户的提交。 原始的数据,接近 300 MB。每一条事件信息,都包含了提交的经纬度,以及时间。因此在探索性数据分析阶段,我做了几个可视化图形。 这是我当天跟新认识的编程高手 Jesse 学的 QGIS 分析结果。 看看图上的点,每一个都对应一次事件汇报。这叫一个密密麻麻啊。 因为 QGIS 初学,用得不熟,我还是用 Python 进行了分类绘图。 这只是前 3000 条数据中部分类型的可视化。其中红色代表交通拥堵,黄色代表事故发生,蓝色代表有车停在了路肩上。 可以看到,红色的数据量最大。这说明交通拥堵是个大问题。 我把全部的数据都拿了出来,提炼出包含的事件类型,包括以下这些类: 我看到,其中单是交通阻塞,也是分为若干级别的。其中最严重的,分别是“大型交通拥堵”(large traffic jam)和“超大型交通拥堵”(huge traffic jam)。 于是,我把所有这两种严重交通拥堵事件,合并成一个集合;其他剩余事件,作为另一个集合。 对于每一个严重拥堵事件,我追溯30分钟,把之前同一条道路上,发生的事件,按照顺序存成一个列表。这样的列表,有987个;但是,其中有一些,是骤然发生的,30分钟的区间里面,没有任何其他事件作为先兆。这样的空列表,我进行了清除。剩下了861个有效序列。 同样,从剩余事件集合中,我们随机找到了861个非空有效序列。这些序列,后续紧随事件,都 不是 严重拥堵。 我们对严重拥堵之前30分钟的事件序列,标记为1;对于 非 严重拥堵之前30分钟的事件序列,标记为0。 于是,我们就把问题转换成了,能否利用事件序列,进行分类,预测后续是否会发生严重拥堵。 靠着这个模型,我们团队(UNT IIA lab代表队,昵称 watch-dumpling )在这次比赛中,获得第一名。 这是 HackNTX 官网的报道( http://t.cn/EUbS9m5 ) 。 UNT 网站也正式发布了 这则新闻 ( http://t.cn/EUbS127 ),于是我周围尽人皆知。我才刚拿到手的奖金,立即就因为请客被扫荡一空了。 夺冠纯属是个意外,幸运占得比重很大。但是我觉得我们做的这个模型,还是有些应用价值的。 下面,我就以这组 Waze 交通事件数据,详细给你讲解一下,如何用 Python, Keras 和循环神经网络,来实现这个序列数据分类模型。 环境 要运行深度学习,你需要有 GPU 或者 TPU 的支持,否则会累坏你的笔记本电脑的。Google Colab 是个不错的实验平台,可以让你免费使用 TPU 来进行深度学习训练。你可以阅读《 如何免费云端运行Python深度学习框架? 》一文,查询更为详细的介绍。 这里,请你使用 Chrome 浏览器,点击 这个链接 ,安装一个插件 Colaboratory 。 把它添加到 Google Chrome 之后,你会在浏览器的扩展工具栏里面,看见下图中间的图标: 然后,请到本范例的 github repo 主页面 。 打开其中的 demo.ipynb 文件。 点击 Colaboratory 扩展图标。Google Chrome 会自动帮你开启 Google Colab,并且装载这个 ipynb 文件。 点击上图中红色标出的“复制到云端硬盘”按钮。Google 会为你新建一个 属于你自己的 副本。 点击菜单栏里面的“代码执行程序”,选择“更改运行时类型”。 在出现的对话框中,确认选项如下图所示。 点击“保存”即可。 下面,你就可以依次执行每一个代码段落了。 注意第一次执行的时候,可能会有警告提示。 出现上面这个警告的时候,点击“仍然运行”就可以继续了。 如果再次出现警告提示,反勾选“在运行前充值所有代码执行程序”选项,再次点击“仍然运行”即可。 环境准备好了,下面我们来一步步运行代码。 代码 首先,我们读入 Pandas 软件包,以便进行结构化数据的处理。 import pandas as pd 这次还要读入的一个软件包,是 Python 中间进行数据存取的利器,叫做 pickle 。 import pickle 它可以把 Python 数据,甚至是许多组数据,一起存储到指定文件。然后读出的时候,可以完全恢复原先数据的格式。这一点上,它比用 csv 进行数据存储和交换的效果更好,效率也更高。 下面我们从本文配套的 github 项目中,把数据传递过来。 !gitclonehttps://github.com/wshuyi/demo_traffic_jam_prediction.git 数据的下载,很快就可以完成。 Cloninginto 'demo_traffic_jam_prediction' ... remote:Enumeratingobjects:6, done . =pickle.load(f) 先看其中的事件词典 event_dict : event_dict 以下就是全部的事件类型。 {1: 'roadclosedduetoconstruction' , 2: 'trafficjam' , 3: 'stoppedcarontheshoulder' , 4: 'roadclosed' , 5: 'other' , 6: 'objectonroadway' , 7: 'majorevent' , 8: 'pothole' , 9: 'trafficheavierthannormal' , 10: 'roadconstruction' , 11: 'fog' , 12: 'accident' , 13: 'slowdown' , 14: 'stoppedcar' , 15: 'smalltrafficjam' , 16: 'stoppedtraffic' , 17: 'heavytraffic' , 18: 'minoraccident' , 19: 'mediumtrafficjam' , 20: 'malfunctioningtrafficlight' , 21: 'missingsignontheshoulder' , 22: 'animalontheshoulder' , 23: 'animalstruck' , 24: 'largetrafficjam' , 25: 'hazardontheshoulder' , 26: 'hazardonroad' , 27: 'iceonroadway' , 28: 'weatherhazard' , 29: 'flooding' , 30: 'roadclosedduetohazard' , 31: 'hail' , 32: 'hugetrafficjam' } 同样,我们来看看存储事件序列的数据框。 先看前10个: df.head( 10 ) 注意,每一行,都包含了标记。 再看结尾部分: df.tail( 10 ) 读取无误。 下面我们来看看,最长的一个序列,编号是多少。 这里,我们利用的是 Pandas 的一个函数,叫做 idxmax() ,它可以帮助我们,把最大值对应的索引编号,传递回来。 max_len_event_id=df.events.apply(len).idxmax() max_len_event_id 结果为: 105 我们来看看,这个编号对应的事件序列,是什么样子的: max_len_event=df.iloc max_len_event.events 下面是长长的反馈结果: 读一遍,你就会发现,在超级拥堵发生之前,确实还是有一些先兆的。当然,这是由人来阅读后,获得的观感。我们下面需要做的,是让机器自动把握这些列表的特征,并且做出区别分类。 我们看看,这个最长列表的长度。 maxlen=len(max_len_event.events) maxlen 结果为: 84 这里的前导事件,还真是不少啊。 下面我们要做的,是把事件转换成数字编号,这样后面更容易处理。 我们使用以下的一个小技巧,把原先的事件词典倒置,即变“序号:事件名称”,为“事件名称:序号”。这样,以事件名称查询起来,效率会高很多。 reversed_dict={} for k,v in event_dict.items(): reversed_dict =k 我们看看倒置的结果词典: reversed_dict 这是反馈结果: { 'accident' :12, 'animalontheshoulder' :22, 'animalstruck' :23, 'flooding' :29, 'fog' :11, 'hail' :31, 'hazardonroad' :26, 'hazardontheshoulder' :25, 'heavytraffic' :17, 'hugetrafficjam' :32, 'iceonroadway' :27, 'largetrafficjam' :24, 'majorevent' :7, 'malfunctioningtrafficlight' :20, 'mediumtrafficjam' :19, 'minoraccident' :18, 'missingsignontheshoulder' :21, 'objectonroadway' :6, 'other' :5, 'pothole' :8, 'roadclosed' :4, 'roadclosedduetoconstruction' :1, 'roadclosedduetohazard' :30, 'roadconstruction' :10, 'slowdown' :13, 'smalltrafficjam' :15, 'stoppedcar' :14, 'stoppedcarontheshoulder' :3, 'stoppedtraffic' :16, 'trafficheavierthannormal' :9, 'trafficjam' :2, 'weatherhazard' :28} 成功了。 下面我们编写一个函数,输入一个事件列表,返回对应的事件编号列表。 def map_event_list_to_idxs (event_list) : list_idxs= list_idxs.append(idx) return list_idxs 然后,我们在刚才是找到的最长列表上,实验一下: map_event_list_to_idxs(max_len_event.events) 结果是这样的: 看来功能实现上,没问题。 读入 numpy 和 Keras 的一些工具。 import numpy as np from keras.utils import to_categorical from keras.preprocessing.sequence import pad_sequences 系统自动提示我们,Keras 使用了 Tensorflow 作为后端框架。 Using TensorFlowbackend. 我们需要弄清楚,一共有多少种事件类型。 len(event_dict) 结果是: 32 因此,我们需要对32种不同的事件类型,进行转换和处理。 我们把整个数据集里面的事件类型,都变成事件编号。 df.events.apply(map_event_list_to_idxs) 结果如下: 0 2 3 4 5 6 7 8 9 10 12 13 14 15 16 19 20 21 22 23 24 25 26 27 28 29 ... 831 832 833 834 835 836 837 838 840 841 842 844 845 846 847 848 850 851 852 853 854 855 857 858 859 860 下面是结果: , , , , ] 注意,第一行,明显比后几行都要长。 对于输入序列,我们希望它的长度都是一样的。因此,下面我们就用最长的序列长度作为标准,用 0 来填充其他短序列。 data=pad_sequences(sequences,maxlen=maxlen) data 这是结果: array( , , , ... , , , ],dtype=int32) 注意,所有的0,都补充到了序列的最前端。序列都一样长了。 下面,我们把全部的分类标记,存储到 labels 变量里面。 labels=np.array(df.label) 后面,我们有好几个函数,需要用到随机变量。 为了咱们运行结果的一致性。我这里指定随机种子数值。你第一次尝试运行的时候,不要动它。但是后面自己动手操作的时候,可以任意修改它。 np.random.seed( 12 ) 好了,下面我们“洗牌”。打乱数据的顺序,但是注意序列和对应标记之间,要保持一致性。 indices=np.arange(data.shape ) np.random.shuffle(indices) data=data labels=labels 然后,我们取 80% 的数据,作为训练;另外 20% 的数据,作为验证。 training_samples=int(len(indices)* .8 ) validation_samples=len(indices)-training_samples 我们正式划分训练集和验证集。 X_train=data y_train=labels X_valid=data y_valid=labels 看看训练集的内容。 X_train 结果为: array( , , , ... , , , ],dtype=int32) 注意由于我们补充了“0”,作为填充,因此原先的32种事件类型的基础上,又加了一种。 这就是我们新的事件类型数量: num_events=len(event_dict)+ 1 我们使用嵌入层,把事件标号,转换成一系列数字组成的向量。这样,可以避免模型把事件序号,当成数值型数据来处理。 这里,我们指定每一个标号,转换成 20 个数字组成的向量。 embedding_dim= 20 利用事件类型数量,和事件向量长度,我们随机构造初始的嵌入矩阵。 embedding_matrix=np.random.rand(num_events,embedding_dim) 下面我们搭建一个循环神经网络模型。其中的 LSTM 层,包含了32位输出数字。 from keras.models import Sequential from keras.layers import Embedding,Flatten,Dense,LSTM units= 32 model=Sequential() model.add(Embedding(num_events,embedding_dim)) model.add(LSTM(units)) model.add(Dense( 1 ,activation= 'sigmoid' )) 这里,我假设你已经看过了《 如何用 Python 和循环神经网络做中文文本分类? 》一文,所以就不对细节进行讲述了。如果你没有看过,或者已经遗忘,可以点击 这个链接 复习一下。 如果你对 Keras 的使用方法还不熟悉,我再次向你推荐 François Chollet 的《Deep Learning with Python》。 下面,是处理其中的嵌入层参数。我们直接把刚才随机生成的嵌入矩阵挪进来。而且,不让模型在训练中对嵌入层参数进行修改。 model.layers .set_weights( ) model.layers .trainable= False 下面,我们开始训练。并且把模型运行结果保存起来。 model.compile(optimizer= 'rmsprop' , loss= 'binary_crossentropy' , metrics= ) history=model.fit(X_train,y_train, epochs= 50 , batch_size= 32 , validation_data=(X_valid,y_valid)) model.save( mymodel_embedding_untrainable.h5 ) 可以看到,因为有 TPU 的强力支持,程序在欢快地运行中。 训练过程结束之后,我们利用 matplotlib 绘图功能,看一下训练中,准确率和损失值的变化。 import matplotlib.pyplot as plt acc=history.history val_acc=history.history loss=history.history val_loss=history.history epochs=range( 1 ,len(acc)+ 1 ) plt.plot(epochs,acc, 'bo' ,label= 'Trainingacc' ) plt.plot(epochs,val_acc, 'b' ,label= 'Validationacc' ) plt.title( 'Trainingandvalidationaccuracy' ) plt.legend() plt.figure() plt.plot(epochs,loss, 'bo' ,label= 'Trainingloss' ) plt.plot(epochs,val_loss, 'b' ,label= 'Validationloss' ) plt.title( 'Trainingandvalidationloss' ) plt.legend() plt.show() 这是准确率变化曲线。 可以看到,效果还是不错的。因为我们数据中,不同标记各占一半。因此如果构建一个 dummy model 作为标准线的话,对所有的输入都猜测0或者1,准确率应该只有50%。 这里的准确率,已经达到了65%-75%之间,证明我们的模型是有意义的。只不过,抖动比较厉害,稳定性差。 这是损失值变化曲线。 这个图看起来,就不是很美妙了。因为虽然训练集上面的损失值一路下降,但是验证集上,这个效果并不是很明显,一直剧烈波动。 看到结果,不是最重要的。关键是我们得分析出目前遇到问题,原因是什么。 注意我们前面使用了嵌入矩阵。它随机生成,却又没有真正进行训练调整,这可能是个问题。 因此,我们这里再次构建和跑一下模型。唯一改动的地方,在于让嵌入矩阵的参数也可以随着训练进行自动调整。 from keras.models import Sequential from keras.layers import Embedding,Flatten,Dense,LSTM units= 32 model=Sequential() model.add(Embedding(num_events,embedding_dim)) model.add(LSTM(units)) model.add(Dense( 1 ,activation= 'sigmoid' )) 注意这里的差别,就是 trainable 设置为真值。 model.layers .set_weights( ) model.layers .trainable= True 构建模型,再次运行。 model.compile(optimizer= 'rmsprop' , loss= 'binary_crossentropy' , metrics= ) history=model.fit(X_train,y_train, epochs= 50 , batch_size= 32 , validation_data=(X_valid,y_valid)) model.save( mymodel_embedding_trainable.h5 ) 绘图看看。 import matplotlib.pyplot as plt acc=history.history val_acc=history.history loss=history.history val_loss=history.history epochs=range( 1 ,len(acc)+ 1 ) plt.plot(epochs,acc, 'bo' ,label= 'Trainingacc' ) plt.plot(epochs,val_acc, 'b' ,label= 'Validationacc' ) plt.title( 'Trainingandvalidationaccuracy' ) plt.legend() plt.figure() plt.plot(epochs,loss, 'bo' ,label= 'Trainingloss' ) plt.plot(epochs,val_loss, 'b' ,label= 'Validationloss' ) plt.title( 'Trainingandvalidationloss' ) plt.legend() plt.show() 这次的准确率曲线,看起来好多了。验证集波动没有这么剧烈,模型稳定性好了许多。而且,准确率的取值,也获得了提升。后半程稳定在了75%以上。这样的模型,就有应用价值了。 但是我们看看损失值曲线,可能就不这么乐观了。 注意从半程之后,训练集和验证集的损失值变化,就发生了分叉。 这是典型的过拟合(over-fitting)。 发生过拟合,主要原因就是相对于复杂的模型,训练数据不够用。 这时候,要么增加训练数据,要么降低模型复杂度。 立即增加数据,不太现实。因为我们手中,目前只有那29天里积攒的数据。 但是降低模型复杂度,是可以利用 Dropout 来尝试完成的。 Dropout 的实现机理,是在 训练 的时候,每次随机把一定比例的模型中神经元对应权重参数,设置为0,让它不起作用。这样,模型的复杂度,就会降低。 下面,我们轻微修改一下,在 LSTM 层上,加入 dropout=0.2, recurrent_dropout=0.2 这两个参数。 from keras.models import Sequential from keras.layers import Embedding,Flatten,Dense,LSTM units= 32 model=Sequential() model.add(Embedding(num_events,embedding_dim)) model.add(LSTM(units,dropout= 0.2 ,recurrent_dropout= 0.2 )) model.add(Dense( 1 ,activation= 'sigmoid' )) 依然保持嵌入层可以被训练。 model.layers .set_weights( ) model.layers .trainable= True 再次运行。 model.compile(optimizer= 'rmsprop' , loss= 'binary_crossentropy' , metrics= ) history=model.fit(X_train,y_train, epochs= 50 , batch_size= 32 , validation_data=(X_valid,y_valid)) model.save( mymodel_embedding_trainable_with_dropout.h5 ) 绘制图形的函数跟之前两次完全一致。 import matplotlib.pyplot as plt acc=history.history val_acc=history.history loss=history.history val_loss=history.history epochs=range( 1 ,len(acc)+ 1 ) plt.plot(epochs,acc, 'bo' ,label= 'Trainingacc' ) plt.plot(epochs,val_acc, 'b' ,label= 'Validationacc' ) plt.title( 'Trainingandvalidationaccuracy' ) plt.legend() plt.figure() plt.plot(epochs,loss, 'bo' ,label= 'Trainingloss' ) plt.plot(epochs,val_loss, 'b' ,label= 'Validationloss' ) plt.title( 'Trainingandvalidationloss' ) plt.legend() plt.show() 这次的准确率曲线,看起来达到的数值,跟没有加入 Dropout 的差不多。 然而,我们可以感受到训练集和验证集达到的准确率更加贴近。曲线更加平滑。 下面我们看看损失值曲线的变化。 这个曲线上,过拟合的去除效果就更为明显了。可以看到训练集和验证集两条曲线的波动基本保持了一致。这样我们更可以确信,模型预测能力是稳定的,对外界新的输入信息,适应性更好。 如果把咱们的模型放在交通管理部门那里,可以期望它根据 Waze 获得的新序列数据,能以大约 75% 的准确率,预测严重交通拥堵的发生。这样,交管部门就可以未雨绸缪,提前做出干预了。 用序列模型,欺负金融市场的散户,属于零和博弈。然而这种在交通管理上的应用,大概更能造福社会,体现科技的价值吧。 小结 通过本文的学习和实际上手操作,希望你已了解了以下知识点: 不只是文本,其他序列数据,也可以利用循环神经网络来进行分类预测。 对定类数据(categorical data)进行嵌入表示,如果用随机数初始,那么在建模过程中把嵌入层一起训练,效果会更好。 数据量不够的情况下,深度学习很可能会发生过拟合。使用 Dropout ,可以降低过拟合的影响,让模型具有更好的稳定性和可扩展性。 希望这篇文章,可以帮助你了解循环神经网络的更多应用场景。在实际的工作和学习中,灵活运用它来处理序列数据的分类等任务。 祝(深度)学习愉快! 喜欢请点赞和打赏。还可以微信关注和置顶我的公众号 “玉树芝兰”(nkwangshuyi) 。 如果你对 Python 与数据科学感兴趣,不妨阅读我的系列教程索引贴《 如何高效入门数据科学? 》,里面还有更多的有趣问题及解法。
10306 次阅读|20 个评论
蛋白质结构预测最新进展和DeepMind
热度 1 xjb 2018-12-8 10:39
CASP 是两年一度的蛋白质结构预测评比,主要用来衡量这个既困难又重要的领域的进展。 CASP 是完全 blind 的评比,也就是说参赛者在进行预测的时候真实的蛋白质结构可能还没有用实验技术解出来。 CASP 比赛有很多类别,最流行的是接触图( contact map )预测和三维结构预测。接触图预测是三维结构预测的关键一步,可以用来直接衡量所使用的人工智能技术的好坏。每一类别又有两种参赛者:人工组和服务器组。这两种参赛者都依赖于计算机软件,没有谁会真正去手工预测的。他们的区别在于: 1 )对每一个测试蛋白质,服务器有三天时间而人工组有三个礼拜; 2 )人工组可以看到和使用所有服务器组的结果,而服务器组是看不到其他组的结果的。因为这样,最好的人工组总是要好于最好的服务器组的。 DeepMind 在 CASP13 中取得了骄人的成绩,他们的新闻宣传提高我们这个领域在公众里面的知名度,但在某些地方也误导了公众。比如 有些报道宣传人工智能战胜人类; 误导公众以为他们使用的人工智能技术是完全原创的, 以为只有他们在这个领域取得进展,其他参赛者不堪一击; 误导公众以为这个问题已经被他们解决了。 DeepMind 参赛的类别是三维结构预测人工组,宣传战胜人类既不符合实际也毫无意义。 DeepMind 没有参加接触图预测,所以无法直接衡量他们的人工智能技术到底有多好。他们团队口头告诉我的是他们的精度跟我的服务器 RaptorX-Contact 差不多。 在三维结构预测人工组中,如果按总成绩排名, DeepMind 大概是第三名。 DeepMind 最擅长的是用来预测比较难的蛋白质,在这一类确实是最好的。在 32 个最难的测试蛋白质上, DeepMind 和第二名人工组的第一模型的平均 TM 得分分别是 0.5836 和 0.5208 (满分是 1 分)。这个结果并不能表明其他参赛者不堪一击,特别是考虑到 DeepMind 团队一共有 17 个训练有素的人员(有些不是全职做这个项目的,他们方法摘要上写了 10 个人的名字),远超其他团队的力量。那么是不是只有 DeepMind 取得进展呢?情况完全不是这样的。由于 CASP13 的测试蛋白质的难度与 CASP12 相当,我们可以通过比较这两次的预测精度来估计这个领域的进展。 在接触图预测中,所有排名靠前的组都取得远超 CASP12 的成绩,比如两次正式排名第一的 RaptorX-Contact 在 CASP12 和 CASP13 的得分 (L/5 远程精度 ) 分别是 47% 和 70% 。在三维结构预测中,两家最好的服务器 RaptorX-Contact (RaptorX-DeepModeller) 和 Zhang-Server (Quark) 在难的蛋白质上远远好于 CASP12 最好的人工组。基本上来说,大部分参赛者都取得了比 CASP12 好的成绩。这说明这个领域取得了非常大的进展,那么进展的真实原因是什么呢?肯定不是 DeepMind, 因为他们的方法到现在还没发表呢,大家在比赛前不可能知道他们的方法。其实看看 CASP13 参赛者提交的方法摘要就清楚了。基本上所有成绩好的组都使用了一个叫做全局性的深度卷积残差神经网络( Deep Convolutional Residual Neural Network )的方法去预测接触图或者距离图。而我刚好是第一个提出这个方法的,第一篇描述这个方法的论文《 Accurate De Novo Prediction of Protein Contact Map by Ultra-Deep Learning Model 》我于 2016 年 9 月份就贴在网上了, 2017 年 1 月 5 号正式发表于国际计算生物学协会的官方杂志《 PLoS Computational Biology 》,并于 2018 年获得了《 PLoS Computational Biology 》的突破 / 创新奖。这篇论文用了大量的结果(包括第三方 CAMEO 严格的测试结果)表明深度卷积残差神经网络可以极大提高蛋白质结构预测的性能。我于 2017 年在细胞子刊《 Cell Systems 》上发表了另外一篇论文指出这个方法也可以用来预测膜蛋白的结构。膜蛋白对制药很重要,但是用实验技术解膜蛋白的结构很困难,所以针对膜蛋白的预测技术尤其重要。 那么 DeepMind 在难的蛋白质上表现为什么是最好的呢? DeepMind 当然也实现了深度卷积残差神经网络,并且使用了更多层数和训练数据。但是不知道他们的神经网络到底比我的 RaptorX-Contact 改进了多少。另外,他们比我多做了一步,他们把深度卷积残差神经网络预测出来的信息输入到当前一个最强大的蛋白质建模软件 Rosetta 里面去构建三维结构。而我因为人太少(去年基本上是一个人在做)还没来得及使用 Rosetta 。 Rosetta 并不是 DeepMind 开发的,它是 David Baker 教授历经 20 多年开发出来的一个软件。 Rosetta 可以把一个差不多的三维结构优化得非常好。可以看出, DeepMind 真正赢的原因并不是方法上有很大的创新,主要在于工程上的整合,他们把每一个关键步骤都调试和优化地非常好。而大学或者研究所的团队一般是没有这么多人进行这方面的工作 , 今后要跟 DeepMind 竞争光靠一个小的研究组在工程上的优化是很困难的,一定要有一个新的非常好的想法。 这个领域在最近几年取得了比较大的进展主要在于两个方法: 1 )基于共进化的预测蛋白质接触图的全局分析方法。这个方法 1999 年在网上非正式发表,但是直到大概 10 年前才被重新注意到; 2 )基于深度卷积神经网络的蛋白质接触图或者距离图的全局预测方法。第一个方法对于真正难的蛋白质效果不好,一般只能作为第二个方法的输入。没有第一个方法作为输入,第二个方法也能做得不错。 DeepMind 的成绩进一步证实了这两个方法特别是后者的有效性。尽管进展很大,但是大部分预测结果的精度离实验技术还有点远,所以做实验的不用担心失业,刚买不久的电镜也不用担心浪费了。
7239 次阅读|1 个评论
爱犯错的智能体(十七):灵光一闪与认知错觉
热度 3 heruspex 2018-11-20 07:35
公元前 245 年,古希腊叙拉古城的赫农王命令工匠制作一顶纯金的王冠。工匠完工后,国王感觉不放心,对着重量没变的王冠左看看,右看看,总怀疑工匠把里面的金子换成其他材料了。可是,没证据又不好明说。跟大臣们说起此事,他们也只能面面相觑。于是,国王按一大臣的建议,请来了当时最有名的数学家阿基米德帮助鉴定。阿基米德看了半天,也没弄明白要怎么测。又冥思苦想了多日,还是没看出一丝端倪,便想泡个澡舒缓下心情。跨进装满水的浴盆后,他发现水的涨落似乎和他的站起坐下有关,而且坐下时还能感受到水向上对身体的托力,身体也随之变轻了。他恍然大悟,原来可以用测量固体在水中排水量的办法,来检测物体的体积。那也就能根据王冠的密度与体积之间的关系,来推测王冠是否造假了。 一瞬间他豁然开朗,跳出了澡盆,连衣服都忘记 穿 了,一路大声喊着 ” 尤里卡!尤里卡” (Eureka ,希腊语: εύρηκα ,意思是我知道了 ) 。阿基米德由此破解了王冠称重的难题,发现了工匠欺骗了国王。更重要的是,他因此发现了浮力定律,即物体在液体中得到的浮力,等于物体排出液体的重量。 图:阿基米德与浮力定律 科学发现靠什么呢?有不少重大的发现靠的是灵光一闪,如阿基米德洗澡时想到的浮力定律或阿基米德定律,俄国化学家门捷列夫玩扑克牌时发现的元素周期表。这种感觉可以用宋朝夏元鼎《绝句》中的“踏破铁鞋无觅处,得来全不费工夫”来形容。我国管灵光一闪叫“顿悟”,西方则把它称之为 Eureka effect( 尤里卡效应,或称为 Aha Moment 和 Eureka Moment) 。 与人皆有之的、来自潜意识自然反映的直觉不同,顿悟虽然也是潜意识的反映,但相对神秘。目前在学术界,关于顿悟的发生仍然争论不休。一是其在脑区发生的精确位置未知,一是在何种环境下能发生也未知。所以,阿基米德只好泡澡来启发思考,而量子电动力学的创始人之一费恩曼则爱在泡酒吧的同时顺便做研究。 从文献的总结来看,顿悟这种思维方式包括两个部分:首先是在某一问题上已经经过进行了长时间的思考,但陷入了困境。尽管尝试了能想到的各种可能性,仍不得其门而入。突然某一天在某地,令人意想不到的就有了灵感,并快速找到了问题的答案。而且,该灵感不必要依赖于原来已经僵化的解题逻辑或结构,甚至需要“跳出三界外”,才有可能获得。 一般认为,它有四个特点: 1 )它是突然出现的; 2 )对该问题的求解是流畅、平滑的; 3 )通常有正面效应; 4 )经历顿悟的人相信它的解是真实和正确的。这四个特点往往需要组合在一起才能见效,如果分开了就很难获得灵感或顿悟 。 尽管关于灵感仍无合理的解释,但可以推测它的形成机制不是突然凭空在大脑中加速形成的,应该与人类已经学习好的某些结构具有关联性。那么,它和我们哪种思维方式比较相似呢?如果能找到其中的关联,也许我们就能设计具有类似创造能力的人工智能体。 我们不妨了解下人类认知中普遍采用的两种思维方式:快思维和慢思维,以及快思维中存在的直觉统计错觉 。 一、认知错觉 人类经历了长时间的演化,发明了语言、制造了工具、 建立了几尽完备的数学理论体系,并通过其他智能体不可能具备的、长时间的学习来帮助提高知识水平。然而, 很多高阶能力并不见得会在日常生活中起主导作用。比如,我们虽然会在大学学习微积分,但绝大多数情况下,我们只需要知道用电子表格填下数字就行了。甚至在需要缜密计算时,有时候人类还是会凭自己的经验或直觉来优先进行判断。 举个极端情况的例子, 为什么在股市中专家的建议经常不怎么管用呢?实际上,多数专家在做分析时,都是按《经济学原理》来指导和建议的,目的是对投资组合进行利益最大化。总不能说经过了千锤百炼的经济学原理有严重不足吧,可为什么股民很多还是很容易被割韭菜呢?因为实际上偏好理性决策或慢思维的人并不多,尤其在股市瞬息万变的时候,能做深层次思考、计算的机会也少,股民往往会凭自己的直觉或快思维来做快速决策。可是,这些决策很多时候是远离了专家建议的最优决策。 美国普林斯顿大学的心理学教授卡纳曼和其前同事特沃斯基对人的两种思维方式进行了深入研究。他们从 直觉统计学 (Intuitive Statistics) 的角度出发,发现了一系列有趣的现象,于 1974 年在 Science 发表了一篇社会科学领域引用最高的关于不确定性判断的论文 ,后进一步形成了 展望理论 (Prospect Theory ,也有称前景理论 ) ,并因为这些成果卡纳曼于 2002 年获得诺贝尔经济学奖 ( 注:特沃斯基过早去世,因而没能获奖 ) 。尽管获得的是经济学奖,但其理论体系详细地是阐述了智能体在认知上存在的认识误区。 他们发现人在做很多复杂任务判断时,并不会用缜密的思维去计算每个事件的概率,反而会借助于少量的启发式技巧来做更为简单、快速的判断。这些判断策略在绝大多数情况下是有效的,不然人很快就会在自然进化中被淘汰。但是,这种判断策略有时会导致严重和系统性的错误,而人类却不见得会意识到,即使是受过训练的专家也是如此。 比如我们在判定物理量如距离和大小的,常通过启发式的规则来做主观的概率评估。看得越清楚的物品通常会被认为距离更近,反之更远。虽然这种规则在一定情况下是有效的,但也可能会带来系统性误差。如在“立霾”后,就很容易把距离估得远一些,以致于有可能需要依赖听觉来辅助识路。而类似的系统性偏差在概率意义的直观、启发式判断中广泛存在着。 根据卡纳曼和特沃斯基的理论,人类在快思维中,会有三种评估概率的启发式策略: 1 ) 代表性 (representativeness) ,常用于“当人被询问要判断一个目标或事件 A 属于类别或过程 B 的概率”的情形。 2 )实例或场景的 可用性 (Availability) ,常用于“当人被询问要评估一个类的频率或者一个特定发展的可能性”时。 3) 从锚点的调整 (Adjustment from an anchor) ,常用于“当一个相关值可用时的数值预测”。这三种启发式策略高度的经济,一般也有效,但它们容易产生 系统偏差 和 预测偏差 。具体来说: 1 )代表性 (representativeness) : 当测试者被给予不同的概率比例暗示时,比如做问卷调查时,告诉测试者,某人是图书馆员的概率是 60% ,农夫为 40% 。在无其它信息时,测试者会使用这些概率来判定一个人的职业;但在缺乏概率信息时,如果引入某段毫无价值但却有代表性的描述时,比如告知平时常见的图书馆员的衣着打扮,测试者就很容易被这个暗示影响,导致不正确的结论。这是由于人对于 结果的先验概率的不敏感性 形成的。 另外,由于人们对事件发生的可能性进行评估时往往依赖于直觉,因此很少考虑事件的样本数量影响。如小样本情况下产生的波动性要明显大于大样本。但人直觉上却很容易认为两者的波动性是一致的。这是人对于 样本规模存在不敏感性 引起的。 对于机会,人类也存在误解,常以为远离随机性的事件不是太可信。事实上局部有规律的行为并不会否定全局随机性,但它却会误导人们形成不合逻辑的推理。这种误解被称为 赌徒谬误 (gambler’s fallacy) ,它让人们以为一系列事件的结果会隐含某种自相关的关系。比如 A 事件的结果影响了 B 事件,就推测 B 是依赖于 A 的。比如最近天气转晴,连续几天大太阳就会让人高概率担心周末会下大雨。而赌徒则认为如果一直手气不好时,则会以为再过几把就能翻盘回本甚至赚钱。 不仅如此,在做预测时,人类更多会偏好用自己选择的材料做判断,而非真正需要预测的结果,即 对可预测性不敏感 。比如在招聘时面试官容易受面试表现影响,即使面试者的材料准备得更充实可信,但面试官还是会过分相信自己的判断, 形成验证性错觉 (Illusory of Validity) 。而这种错觉最终会被 均值回归 (Regression toward the mean) 检验并现形。其原因在于,人的表现容易受运气成份影响,导致某个时刻的发挥异常精彩或失常。但时间一长,就会回到正常的表现上去。这也能解释为什么现在上海和一些地方的中考要考察初二开始的月考和期中期末成绩,本质上是为了避免“一锤子买卖”引起的验证性错觉。 2 )可用性 (Availability) : 我们评估事件的概率或某类别发生的频率时,会根据曾经经历过或知道的事情和例子来联想。比如我们会根据在新闻中报道的飞机失事,来判断飞机失事率的高低,而较少考虑飞机与其他交通工具的实际失事比例。又比如,我们会根据周边的同龄人或熟人有心脏病出意外的情况,来评估自己可能得心脏病的风险。这种判断的启发式称为 可用性 。然而,可用性往往受频率或概率以外的因素影响,如搜索集的有效性、可想象性 (imaginability) 、错觉相关性 (illusory correlation) 和示例的可遍历性 (retrievability) ,导致产生 预测偏差 。 关于 搜索集有效性 ,卡纳曼和特沃斯基曾做过一个实验。他们询问测试者英文字母 r 或 k 在第 1 个字母还是第 3 个字母出现的次数更多。多数人回答是前者,因为直觉上更容易想到第 1 个字母为 r 或 k 开始的单词,而要想到第 3 个出现的单词时,则需要费点脑筋。而实际上作为辅音, r 或 k 会更多出现在第 3 个字母上 。 在 可想象性 方面 , 如果评估示例不在记忆中的类别的概率,此时人则需要按某个规则来估计。这种情况下,人会生成多个示例,然后评估其可能性。比如,我们在做商业计划时,会想象可能碰到的各种风险以评估其失败的概率。由于想象的信息并非真实情况,所以会引起偏差。 人也在产生 错觉相关性, 如对两件共同发生的事情。卡纳曼和特沃斯基曾让几个假装的精神病人画画,然后让测试者根据诊断结果判断他们是否有偏执狂或疑心病,以及判断画的画有没有独特的视角。从测试者判断结果来看,测试者大概率会形成有相关性的判断,如认为疑心病与独特视角之间存在相关性。这称为 错觉相关性 。其原因是因为之前形成的成对相关性的印象,会导致了随后产生预测偏差。 3 )调整和锚定效应 (Anchoring Effect) : 当我们在做决策时,会将某些特定的数值或状态作为起始点,而后的调整会因为此起始点而受限,从而影响到最终的决策方案。其原因在于我们给了最初的信息或起始点,比如给予那些明显的、难忘的证据过多的权重和重视,就容易产生歪曲的认识。比如我们常说的第一印象就是一种锚定效应。《唐逸史》中所说的唐明皇时期,钟馗为终南山人(镇宅赐福圣君)因为相貌丑陋应举不中,羞愧之下触殿阶而死。这是为第一印象所累。正面的锚定效应也有,比如光环效应,一个帅哥和自信的讲者,总能让人听报告时觉得物超所值,当然也更容易被报告忽悠。这还是为第一印象形成的锚定效应所累。 为了证实锚定效应, 1974 年卡纳曼和特沃斯基曾做了一个有名的实验。他们要求测试者估计非洲国家在联合国的席位百分比。首先,测试者需要旋转一个有 0-100 数字的罗盘,根据停下来的数字做初始决定。测试者将被告知所选择的数字比实际值大或小,然后测试者可以向上或向下调整估计值。结果,他们发现这些随机选择的数字对最终结果有明显影响。初始值为 10 和 65 的两个小组,最终调整的平均值为 25 和 45 。由此可见,初始状态设定后,确实会引起锚定效应,限制人解决问题的范围。 因此,深入理解这些启发式规则,有助于改进在不确定情形时人的决策和判断能力。也需要注意,这些不足并不是否定我们人类的直觉能力。正如大部分时间我们都是健康的,但偶尔也会生病。 直觉也是如此,并非一直都是对的。即使统计学家也不见得会是一个好的直觉统计学家。近年的研究表明,除了这些启发式规则外,技能也有助于形成直觉判断和选择,如专家更依赖于其长期的训练获得的经验,而会相对少的依赖启发式规则。有的时候,技能和启发式规则会交替产生影响,促进人们形成快思维方式 。 尽管在很多情况下,直觉都是由个人的偏好如喜欢不喜欢、而不是精细的思考或推理来驱动。但当直觉思维得不到解决方案时,人类会自然转向一种更缜密、需要点努力的慢思维方式,或称之为理性思维阶段。此时,通过漫长学习期获得的知识才会更多地派上用场。 总之,在实际生活中,人类更习惯于快思维,只在困难问题才考虑慢思维,两者经常在无缝地交替使用着,但很少会思考其中的差异和潜在的风险。 二、认知错觉与顿悟 既然人类智能体普遍具有快和慢两种思维方式,人类还有独特的顿悟能力。而且顿悟的最终迸发似乎又是一种接近快思维的方式。那么,我们现有的人工智能模型有没可能复制这些机制呢? 如果只考虑预测性能,人工智能模型的“慢”的思维方式在某些领域确实已经占了上风。 2017 年以来各大人工智能顶会上的论文投稿数量巨增,人脸识别、图像检索领域的识别率已优于人类的能力,这些都可以佐证人工智能在利用复杂模型进行预测的方面有了明显的突破。但是,“快”的思维方式这块则还有明显的差距。 其原因一是缺乏人类学习的可塑性。结果,人工智能模型只能沿着固化的模型结构来完成指定任务。二是缺乏对“不同结构、不同模态的网络之间的联系”的学习。三是未考虑认知错觉或直觉统计学的可借鉴性。 如果以现有的深度学习模型作比拟,也许可以将认知错觉当成一种浅层思维方式。即在深度模型被充分训练和拟合后,在做快速判断时,并不一定需要经过深层次的结构来实现判断。而是像现在深度模型一样,在训练好的浅层区有一个直接联到输出端的跳连接 (skip connect) 。换个角度来说,如果假定人类构建的模型具有由粗到细的结构,当大脑中枢认为在比如 80% 的识别率也能保证其正常生存时,就会直接从相对粗糙的浅层位置跳连接到最终的结论输出端,以促进快思维的形成。 另外,要实现顿悟式的学习,也许可以考虑利用不同结构间的相似性。比如 AlphaGo 下围棋时,就不是完全依赖常规的规则判断,而是创新性地借助了图像处理和计算机视觉的办法来帮助分析围棋棋局的胜负。这从某种意义来看,这是一种 跨模态的结构学习 。那么,一个自然的问题是,这种结构迥然不同、却面向相同任务的模型之间有没有可能通过自动学习来获得呢?如果可能,也许人工智能体实现顿悟就有希望了。 当然,我们也不能忽视梦可能对顿悟形成的作用。数学家 Henri Poincare 庞加莱曾说过“作为一种无意识的思考方式,它却能帮助形成突破困境的结果。” 除了顿悟和认知错觉,智能体还有什么感觉也可能以浅层思维或快思维模式为主呢? 参考文献: 1. https://en.wikipedia.org/wiki/Eureka_effect 2. Kahneman, Daniel. Thinking, Fast and Slow. Farrar, Straus and Giroux, 2011 3 . Amos Tversky, Daniel Kahneman. Judgment under Uncertainty: Heuristics and Biases. Science, 185(4157):1124-1131, 1974. 4 . Daniel Kahneman; Amos Tversky. Prospect Theory: An Analysis of Decision under Risk Econometrica, Vol. 47, No. 2. (Mar., 1979), pp. 263-292 张军平 2018 年 11 月 20 日 延伸阅读: 19. 爱犯错的智能体 (十六):庄周梦蝶与梦境学习 18. 爱犯错的智能体 --- 语言篇:可塑与多义 17. 爱犯错的智能体 – 体感篇:我思故我在? 16. 爱犯错的智能体 --- 听觉篇(二):视听错觉与无限音阶的拓扑 15. 爱犯错的智能体 -- 听觉篇(一):听觉错觉与语音、歌唱的智能分析 14. 爱犯错的智能体 – 视觉篇(十一):主观时间与运动错觉 13. 爱犯错的智能体 -- 视觉篇(十):自举的视觉与心智 12. 爱犯错的智能体 -- 视觉篇(九): 抽象的颜色 11. 爱犯错的智能体--视觉篇(八):由粗到细、大范围优先的视觉 10. 爱犯错的智能体 -- 视觉篇(七):眼中的黎曼流形 9. 爱犯错的智能体--视觉篇(六):外国的月亮比较圆? 8、 爱犯错的智能体 - 视觉篇(五):火星人脸的阴影 7、 爱犯错的智能体 - 视觉篇(四):看得见的斑点狗 6、 爱犯错的智能体 - 视觉篇 (三):看不见的萨摩耶 5、 爱犯错的智能体 - 视觉篇 (二):颠倒的视界 4、 爱犯错的智能体 - 视觉篇(一): 视觉倒像 3、 AI版“双手互搏”有多牛? 浅谈对抗性神经网络 2、 童话(同化)世界的人工智能 1、 深度学习,你就是那位116岁的长寿老奶奶! � 张军平,复旦大学计算机科学技术学院,教授、博士生导师,中国自动化学会混合智能专委会副主任。主要研究方向包括人工智能、机器学习、图像处理、生物认证及智能交通。至今发表论文近100篇,其中IEEE Transactions系列18篇,包括IEEE TPAMI, TNNLS, ToC, TITS, TAC等。学术谷歌引用2800余次,ESI高被引一篇,H指数27.
9285 次阅读|7 个评论
目标检测网络学习研究笔记(RCNN-SPPnet-Fast/Faster RCNN)
mhaoyang 2018-11-17 19:10
一 、RCNN:Rich feature hierarchies for accurate object detection and semantic segmentation Tech report (v5) Ross Girshick Jeff Donahue Trevor Darrell Jitendra Malik 2014 原理: 训练一个CNN分类网络,固定输入图像尺寸,将最后一层FC的输出作特征向量送给SVM分类器,训练1001个分类器,多的那个为背景。 识别时采用selective search(选择性搜索)方法每张图像上得到2000多个目标候选框,然后将候选框对应的物体缩放成CNN输入图像大小,分别送到CNN以及SVM分类器,找到概率最大的候选框,然后采用非极大值抑制去掉重复的框,再使用线性回归输出目标准确位置(从selective search 得到的proposal变换为接近groundtruth的box)。 训练SVM时,采用hard negative mining方法,将IOU界于0.1-0.3之间的随机选取都作为背景,IOU大于0.5的做正例,具体CNN训练和SVM优化见论文,有很多技巧性的操作。 一张图像需要13s GPU 本方法mAP 53.7% PASCAL VOC2010 HOG based DPM 33.4% 本方法31.4% OverFeat 24.3% ILSVRC2013 二、SPPnet:Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition Kaiming He, Xiangyu Zhang, Shaoqing Ren, and Jian Sun 2015 原理: 本文主要解决了输入CNN图像必须为固定尺寸的问题。 采用一个多分辨率的池化层,将特征图归一化为固定尺寸的输出,再接FC分类层。 具体做法,最后一层Conv输出例如为14x14x256,即14x14分辨率,256通道。 将这个特征图,平均划分为1x1,2x2, 3x3, 6x6大小(以2x2为例,每一块得到7x7大小的特征图,共4块),再分别对每一块施加Max pooling 从而得到1x1,2x2, 3x3, 6x6 一共50个向量,每个向量都对应256维(因为输入为256通道),因此最后得到50*256维向量,为固定尺寸。 输入图像大小变化,则划分SPP时,步长对应改变即可,在数据集上分类准确度比一般的CNN高1-2% 在进行目标检测时,原图输入SPP网络得到特征图,使用Selective search得到候选框,并将每个候选框映射到特征图上,再对每个对应区域的特征图数据使用SPP 归一化,送给SVM分类,得到概率最大的那个region,采用非极大值抑制得到准确位置,再使用回归方法调整selective search的region输出准确位置。具体训练细节,样本选择见原文。 其中为了更好的处理不同大小的目标,使得特征图尺寸最合适。本文是将输入图像进行不同尺度缩放,使候选框大小接近224x224,然后再进行后续处理。因此本文需要在几个不同尺度上进行CNN特征提取。 mAP 59.2% Pascal VOC 2007 三、 Fast RCNN Ross Girshick 2015 原理: 核心思想与SPP没有本质差异,不过在SPPnet基础上进行了若干架构合并。 例如最后输出候选区域类别时,连同候选区域回归region一起输出(分类与位置回归进行了整合),SVM分类器舍弃不用,直接使用与FC layer良好对接的softmax分类器;训练过程相对SPPnet也更加简化,只需要一次训练(SPP需要训练CNN网络,训练SVM分类器,训练region回归网络),输入图像包含类别、位置信息,网络同时计算分类与位置回归部分。 正向推理时:输入图像得到特征图,用selective search得到2000多个候选框,然后在对应特征图区域上进行分类和位置信息的输出。与SPP不同的是,Fast RCNN没有对原图进行多个scale缩放,而是使用一种固定尺寸做输入,通过在训练样本加入大量不同尺度的缩放的目标使网络可以识别不同大小的物体。 另外,FastRCNN对最后的FC层进行了SVD分解,降低计算量,大大降低了遍历2000多个proposal的时间(0.4s降到0.1s),推理速度明显提升。 mAP 66% PASCAL VOC2010 四、 Faster RCNN Shaoqing Ren, Kaiming He, Ross Girshick, and Jian Sun 2016 原理: 在Fast RCNN基础上,提出了RPN网络,将目标候选区域的生成性能进行了大幅度提升,后续处理同Fast RCNN。 RPN Region Proposal Network区域提案网络,工作时,在特征图上进行逐点搜索,每个点进行9个尺度的候选位置匹配,每个位置输出cls与reg信息,遍历结束后,通过对数万region的cls信息排序,选出cls最大的N笔数据,经过reg微调后成为正式proposal,送给Fast RCNN进行分类识别…… 五、 四种网络综合分析: 经过比较RCNN,SPPnet,Fast RCNN, Faster RCNN的原理和创新,不难看出,这些网络都是继承并发展了前一种网络而来。 RCNN在这些里面是最原始,通过Selective search算法得到2000多候选区域,然后逐个区域进行CNN分类网络的识别,CNN输出可能性最高的为真实目标。RCNN的贡献在于利用了selective search而不是暴力枚举所有的区域(以200x200图像为例,包含4万个搜索位置,每个位置如果使用9个尺度搜索(参考RPN),则有36万个proposal),虽然预测一张200分辨率左右的图像就需要13s GPU时间,但是如果是暴力枚举的话,则需要39分钟GPU时间。 另外RCNN在训练SVM分类器时处理背景的方法(hard negative mining,以及挑选positive 和negtive的技巧和经验)值得借鉴,目前仍有很高实用价值。 综上所述,RCNN主要是融合了Selective search算法提升搜索水平,以及研究发现了CNN 卷积层特征可以代替传统HOG、SIFT等特征,并采用SVM分类器,结合hard negative mining等技巧对目标识别做了一次提升,做出这个成绩主要还是取决于2年前CNN分类能力的巨大进步。 SPPnet分析了RCNN速度慢的原因是由于密集使用conv层做特征提取导致大量重复计算,于是开动脑筋,从SPM(Spatial Pyramid Matching)思想中借鉴了化整为零的思路,将一个目标特征进行多尺度组合,并实现归一化,解决了输入图像尺度和比例无法保持原样的问题;此举不仅提升了特征提取的准确性,而且创造性的将region区域的筛选从image段转移到了feature map端,尽管后续也需要做大量的遍历和筛选,但是conv特征提取仅需要一次,解决了RCNN重复计算的问题,把正向推理时间降到了0.38s,是一个巨大的进步。 另外,SPPnet为了最大程度保持不同尺度的特征,在输入端将原图缩放5个不同尺度,根据selective search生成的proposal大小不同,相应选择对应的尺度做处理,提高了检测的准确性从RCNN 53% mAP(PASCAL VOC2010)提升到59%mAP( Pascal VOC 2007) Fast RCNN在SPPnet基础上,没有提出太多新思想,主要是进行架构整合,把分类,位置回归进行了整合,使网络训练上工作量减少很多,系统架构更工整。同时把输入图像多尺度变换的做法抛弃了,采用暴力学习的方法在样本里添加目标的不同尺度图像,使网络识别具有尺度不变性。另外,在FC层采用了SVD奇异值分解算法,将FC计算量降低30%,很大程度上改进了多proposal的FC计算密集问题。 以上三种算法都是基于selective search算法从原图得到目标候选区域,此算法准确性很高,但计算量大,并且因为逻辑复杂,只能在CPU端完成,无法放到GPU。selective search在一张500x500的图像上,需要大约1-2s时间,已经大大超过了识别的时间,因此这个环节成为了目标检测的主要瓶颈。 Faster RCNN针对这个痛点,做了一个大创新,把生成region proposal的工作使用CNN网络来实现,其实RPN网络的提出也并非石破天惊的创举,而是通过分析featuremap每个点对应原图的reception field,找到了一个合适的遍历的尺度,本质上说,这种思想是selectve search的退化,退化成了原始的暴力搜索(枚举);只不过feature map毕竟大小有限,另外这个工作可以由GPU矩阵运算实现,所以速度还是超级快的,生成region proposal 只需要3ms(ZF网络5层卷积,feature map是原图的1/16,在宽与高两个方面),并且RPN生成的几千proposal里面都带有类别概率,可以排除掉大量的非目标物体,因此在后续识别的工作上也减少了无效计算。 对于featuremap上暴力搜索所有点的方法,其实可以改进。例如通过分析只搜索可疑的点,这样对于减少RPN计算量是有帮助的,同时这样一来,对于训练样本的制作也可进一步简化,不过鉴于现在速度已经很快,而且有cls的评价指标做筛选,做如此改进可能也只能提升一点点,没有太大实际意义。 以上为学习笔记和研究心得,欢迎各位同道中人提出不同意见探讨、学习。 未经许可,禁止转载
3301 次阅读|0 个评论
文科生如何理解循环神经网络(RNN)?
wshuyi 2018-11-15 21:05
这一份视频教程中,我会用简明的例子和手绘图,为你讲解循环神经网络(Recurrent Neural Network, RNN)的原理和使用方法。 关于深度学习,我已经为你讲解了不少内容了。 咱们简单回顾一下。常见的深度学习任务,面对的 数据类型 主要是三类: 第一类,是结构化数据,也就是样本和属性组成的表格。例如《 如何用Python和深度神经网络锁定即将流失的客户? 》一文中,我们用到的表格: 这种数据格式,最为简单。你也很容易理解深度神经网络的结构和处理方法。 第二类,是图像数据。《 如何用 Python 和 fast.ai 做图像深度迁移学习? 》一文中,我给你详细介绍过如何用卷积神经网络来处理它。 第三类,是序列数据,例如文本。《 如何用 Python 和深度迁移学习做文本分类? 》一文里面,咱们已经展示了如何使用 fast.ai 提供的语言模型对其进行处理。 其中,图像和序列数据,处理起来更需要你对深度神经网络结构的理解。 作为文科生,你在学习卷积神经网络和循环神经网络的时候,可能会遇到一些问题。因为它们大多采用比较复杂的结构图和公式进行描述。 当然,你看到了,即便你对于循环神经网络不了解,把它当成一个黑箱,你依然可以用高阶的深度学习框架,例如 fast.ai ,执行自然语言处理任务,而且效果还很突出。 François Chollet 在他的 Deep Learning with Python 一书中,也提到过这种观点(注意这里说的是 RNN 的一个变种,叫做 LSTM): you don’t need to understand anything about the specific architecture of an LSTM cell; as a human, it shouldn’t be your job to understand it. 但是注意, François Chollet 后面还有一句话: Just keep in mind what the LSTM cell is meant to do. 也就是说,它的实现细节,你不需要考虑。 当然,它的作用,你还是得了解的。 如果你需要做研究,就得针对具体的任务,对神经网络中的各种模块进行调整、拼装和整合。 这时候,如果你对深度神经网络的理解,基本上等同于黑箱,那么你甚至都不知道该如何把它的输出和其他模块拼接起来。 之前,我给你做了个视频讲解《 文科生如何理解卷积神经网络? 》,为你把卷积神经网络的原理进行了拆解剖析。 从读者和观众们的反馈来看,许多人觉得有帮助。 有不少人留言,希望我以同样通俗易懂的讲法,讲讲用于处理序列数据(例如文本)的循环神经网络(Recurrent Neural Network, RNN)的原理。 其实,我也早就想为你讲解这一部分的知识。无奈序列是个动态的概念,所以用文字来给你讲解循环神经网络模型,效率不高。 好在,我最近刚刚学会,如何在录制视频的时候,使用手写输入。于是我立即把这一技术,纳入到咱们的教程制作中来。 我花了一个晚上的时间,为你做了这份视频教程。已发布到了腾讯视频,链接在 这里 。 从我们耳熟能详的一个故事讲起,触类旁通,让你更容易理解循环神经网络的作用、特点和结构。 除了前文提到的一些材料,视频中还提及了词嵌入(word embedding)的相关知识。这一部分,你可以参考《 如何用Python处理自然语言?(Spacy与Word Embedding) 》和《 如何用 Python 和 gensim 调用中文词嵌入预训练模型? 》。 希望这份视频教程,对你了解循环神经网络能有帮助。 祝(深度)学习愉快! 喜欢请点赞。还可以微信关注和置顶我的公众号 “玉树芝兰”(nkwangshuyi) 。 如果你对 Python 与数据科学感兴趣,不妨阅读我的系列教程索引贴《 如何高效入门数据科学? 》,里面还有更多的有趣问题及解法。
9438 次阅读|0 个评论
地理栅格计算器(Raster Calculator in Geography)——功能更新:深度学习遥感分类和遥感反演
热度 1 zhangch3348 2018-10-5 13:40
地理栅格计算器(Raster Calculator in Geography) ——功能更新:深度学习遥感分类和遥感反演 本程序以 MATLAB 的编程语言为基础,主要通过大量分析方法和多种栅格数据,从多角度考虑,初步设计出适合于栅格数据的程序包;提高数以万计的栅格的运算效率;建立适合于不同地域数据的多种分析方法的程序包;最终实现地理栅格数据的智能化处理,提高了数据的处理效率。期望可以将地理信息系统与 MATLAB 的数据处理系统紧密联系起来,对其他地学问题的处理有重要的应用价值和启发意义。 更新功能:基于卷积神经网络的遥感分类和遥感反演,提供分类网络:自定义、 UNet 、 Vgg16 和 Vgg19 。 \0 \0 一、常用工具( Utility ) 1 、批量裁剪( Extract ) 2 、数据形式转换( Data Transfer ) 3 、谐波分析( Harmonic Analysis of Time Series, HANTS ) 4 、 Whittaker 平滑( Whittaker Smooth, WS ) 5 、读入 TIFF ( Read from ) 6 、保存为 TIFF ( Save to ) 二、相关分析( Correlation ) 1 、相关系数( Correlation Coefficient, CC ) 2 、偏相关系数( Partial Correlation Coefficient, PCC ) 3 、时滞互相关系数( Lag-time Correlation Coefficient, LCC ) 4 、时滞偏相关系数( Lag-time Partial Correlation Coefficient, LPCC ) 三、变化特征( Change Characteristics ) 1 、线性趋势( Linear trend ) 2 、 Sen 趋势( Theil-Sen trend ) 3 、单调趋势( Kendall-tau ) 4 、 MK 检验( Mann-Kendall test ) 5 、分段线性回归( Piecewise Linear Regression ) 6 、 Hurst 指数( Hurst ) 7 、标准差( Standard Deviation, STD ) 8 、变异系数( Coefficient of Variation, CV ) 9 、经验正交函数( Empirical Orthogonal Function, EOF ) 10 、复经验正交函数( Complex Empirical Orthogonal Function, CEOF ) 11 、奇异值分解( Singular value decomposition, SVD ) 四、模型( Model ) 1 、土壤侵蚀( Soil Erosion ) 2 、单个栅格温度植被干旱指数( TVDI ) 3 、多个栅格温度植被干旱指数( TVDIs ) 五、 CNN 遥感分类 1 、预处理 2 、遥感影像采样 3 、网络构建和样本训练 4 、遥感分类 5 、中值滤波 6 、分类精度 六、 CNN 遥感反演 1 、遥感影像采样 2 、网络构建和样本训练 3 、遥感反演 图 1 地理栅格计算器菜单界面 图 2 基于卷积神经网络的网络构建和样本训练界面 图 3 基于 4 种不同网络结构的遥感分类结果 表 1 遥感影像分类误差矩阵 注:混淆矩阵、类别精度与总体精度单位均为 % 。 附注: 深度学习网络包括卷积神经网络(CNN)、循环神经网络(RNN)、深度信念网络(DNN)等。其中,卷积神经网络(Convolutional Neural Network,CNN)是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有出色表现。它包括卷积层(convolutional layer)和池化层(pooling layer)。卷积神经网络是近年发展起来,并引起广泛重视的一种高效识别方法。20世纪60年代,Hubel和Wiesel在研究猫脑皮层中用于局部敏感和方向选择的神经元时发现其独特的网络结构可以有效地降低反馈神经网络的复杂性,继而提出了卷积神经网络。现在,CNN已经成为众多科学领域的研究热点之一,特别是在模式分类领域,由于该网络避免了对图像的复杂前期预处理,可以直接输入原始图像,因而得到了更为广泛的应用。 鉴于地物反射特性与地类关系的复杂性以及传统方法的缺陷,拟采用CNN方法,提出基于深度学习网络的遥感影像解译方法,通过抽取更抽象的特征来建立遥感数据与地类之间的最优模型,从而提高遥感影像解译精度。该程序主要根据CNN的三种图像处理方法进行遥感解译,分别为语义分割(Semantic Segmentation, SS)、图像分类(Image Classification, IC)和序列分类(Sequence Classification, SC)。
个人分类: 深度学习|8972 次阅读|1 个评论
从端到端到平行智能 -- 人工智能前瞻
热度 8 heruspex 2018-9-13 06:43
在人工智能第三波热潮中,深度学习的端到端理念被广泛采用,在后续研究中还有什么方向值得去尝试呢? 从端到端到平行智能 ----- 人工智能前瞻 张军平、陈德旺 如果把人工智能的终极目标看成是模仿人类的大脑,那么神经网络研究的兴衰,至少在目前来看,就几乎等同于人工智能的大半个发展史。 一、现在:端到端 从 20 世纪中叶人工智能界的先驱 McColluch 和 Pitts 发现了神经元的“兴奋”、“抑制”算起,到 1956 年 Rosenblatt 提出感知机模型,可称其为盛世,再到 Marvin Minsky ( 马尔文 明斯基 )1969 年出版的 Perceptron 引发的衰败,算是第一次高潮。这轮高潮主要是学术圈的自嗨。 从 1986 年 Remulhart 反向传播 (BP) 的提出,到 1989 年 Hornik 和 Cybenko 等 万能近似定理( universal approximation theorem )的推出,到各种较深层的非线性神经网络的流行,再到 1995 的统计学习理论开始一统江山。 BP 算法被认为只是把大家的视野又重新吸引回神经网络,算是人工智能的第二次高潮。这仍是以学术圈的自娱自乐为主。 从 2006 年 Geoffrey Hinton 首次在《 Science 》杂志上发表深度伯兹曼机模型、研究者对神经网络的十年怕井绳的观望心态,到 2012 年深度模型 AlexNet 首次在 ImageNet 大规模图像识别竞赛中大获全胜,再到各类考虑深度、宽度、多尺度、多模态、对抗、自编码、注意力的深度模型的提出。学术圈和产业界都进入了深度狂欢状态,这是第三波高潮。虽然在技术层面,并没有非常明显的理论上的突破,更多的是由于大数据或数据增广带来的模型描述能力以及硬件 GPU 算力的提升。虽然,因为前二次热潮的教训,相关人员都清楚过度吹嘘人工智能前景可能带来的风险。但是,人在江湖,身不由已。学者、学生、资金都已经前赴后继地投身到人工智能产业化的道路上,希望能抢先一步能形成垄断优势、行业壁垒。最好能成江湖三足鼎立之势,再谋独孤求败之实 。各大人工智能公司开出的诱人高薪真应了那句话“ 21 世纪什么最重要,人才!” 这一波热潮中,人才的背后其实是端到端的概念在支撑着。一如人工智能上一波低潮时,但凡提到自己是做“神经”,就容易发生类似于基金项目直接被枪毙、被鄙视为缺乏统计意义等各种杯具一样。现下如果不提到“端到端 ”,就很难让神经网络占了大半壁江山的科研人员认可你成果的意义了。端到端也成了近几年人工智能最时髦的名词。 一方面,端到端确实解决了一个大的问题,即对领域知识的掌握程度。以往在不同领域的应用,必须有专业的人员参与。而端到端的模式,将这些知识的学习都化归为网络权值的自学习,从而大幅度减少了对专业知识的依赖。直接后果就是产业界和学术界的同化现象。我在之前写的文章中“ 童话 ( 同化 ) 世界的人工智能 ”中分析过这一现象。 可是,端到端的设计理念也引来了不少的吐槽,比如模型的可推广性问题、以及对人类强人工智能的不可企及问题等。 人们也在思考,如果要延续这一拨热潮,得敢问路在何方呢?仍然是迷一般的、人类的思维该如何引入呢?除了端到端,还有什么方向值得去尝试呢?不妨回头看下大约在第二波人工智能热潮时期甚至更早期的一些大家的思考。 二、过去:思维科学 谈到思维,不妨先想想我们认人的习惯。当人在远处时,有多少人是先看人脸的呢?尤其在距离非常远的时候。对于熟悉的人,我们实际上会很自然地可以根据他或她走路的轮廓变化来判断。这与多数深度学习看重非常精细的特征是不同的,是一种整体认知的方式。 图 1 步态轮廓图 研究人类整体认知行为的理论和方法都挺多的,比如格式塔心理学、比如中科院心理所的陈霖院士提到的大范围优先理论,甚至中国的阴阳八卦、易经中多少也包含了这样的思想。据我所知,以阴阳八卦来研究的有香港中文大学的徐雷教授,基于易经研究的有 IEEE Fellow 、澳门大学的讲座教授陈俊龙。不过,整体认知有个比较普通、难以克服的问题,就是如何量化、程序化。 除了整体论的思考外, 90 年代初期钱学森院士曾指出,要研究人的智能,也许可以从逻辑、形象、创造这三个递进的层次去着手研究思维科学 (Noetic Science) 。他认为通过思维科学中的递进性的研究,有可能实现 20 世纪初期哲学家怀海德在与其学生罗素合著书籍《数学原理》中的思想。后来怀海德又将其思想进一步升华,提出了“过程哲学”观点。在 1929 年出版的、著名的形成上学书籍或“过程哲学”经典书籍《 Process and Reality 》(过程与实在)中,怀海德曾指出,人的认知、社会的认知最终可以上升到一种自我成长、自我成熟的阶段,正如现在的宇宙演化。在这一“过程”思想中,他将哲学的考虑转到对科学与技术的考虑上, 提出了虚实共存形成过程的概念。换句话说,就是虚实平行,永恒的不断纠缠、不断演绎的过程,而算法的实现就可以考虑平行智能体系。 图 2 : 左:《过程与实在》 ( 怀海德 ) ; 右:《哥德尔 - 逻辑的生活》 (John L. CASTI, Werner DePauli) 在思维科学的研究中,还有一位西方的智者也必须提一下,那就是哥德尔。他最著名的是打破了早期“怀海德思想”的、为人工智能奠定基础的“哥德尔不完备定理”。简单来说,就是没有一个定理是完备的,不能证明其为真,也不能证明为伪。这个定理写得非常的聪明,因为你说它不完备,那它就是对的;如果你说它是完备的,那也表明了他是对的。和他这个定理类似的还有波普的科学证伪理解。他从另一个侧面说明了,能称之为科学的东西必然是存在解释不了的现象。否则就是伪科学。 除了这不完备定理,哥德尔在晚年一直想证明更为“广义的不完备定理”,即他认为要么人类是能超过所有计算机的、要么数学不可能是由人类创造的,要么两者都成立。后来他将注意力集中到第一条。 他认为在人类思维超越计算机这事上,存在两个可以比较的不等式;最高的是想象智能,这一智能只有部分可以通过语言的形成表达,即想象智能大于语言智能;而在现有的计算机体系结构上,又只有部分的语言智能能够通过算法呈现,即语言智能大于算法智能。比较巧的是,我国哲学家老子写的《道德经》中“道、可道、非常道” 似乎也表达了同样的哲理;“道”是敢干,是创业的基础,是算法智能;“可道”是敢说,是创新的基础,是语言智能;“非常道”是敢想,是革命的基础,也是想象智能。 � 图 3 :左:道德经; 右:钱学森书摘录 钱学森在 1995 年指出,逻辑智能是机器可以完全完成的,比如吴文俊的机器证明便是如此。后两者则需要人或完全只能人来完成。但它们的提升都不开信息网络的支持。不仅如此,爱因斯坦也表达过他对智能观的认识,认为“智能的真正标识不是知识,而而是想象”。 时间飞快,从钱学森提出思维科学已经过了近三十年,从怀海德的过程哲学理念甚至已经提出了一百多年了。在人工智能如此热火的今天,有没有可能基于现在的软硬件条件来部分实现他们的观点呢? 三、未来:平行? 回顾怀海德提出过程哲学的历史,可以发现其主要出发点是来源于 20 世纪初物理学界的两朵乌云所导致的牛顿经典力学的颠覆。那么,在数据世界、在人工智能领域,会不会发生类似的情况呢?我们来做些分析和比较。 在百年前完全没见过大数据的时代,人们分析世界、观察世界往往是基于很少甚至个例的样本集,但却能形成非常重要的普适定律、大定律。比如牛顿被掉下的苹果砸出的万有引力定律。虽然只是科学史上的传奇故事,但多少也反映了数据量并不需要太多。当然以当时的情况,也无法获取多少。 图 4 :牛顿、苹果、万有引力 随着时代的变迁,数据的规模也在不断增加,于是我们发现世界的发展变得不再像牛顿物理学时代那么确定了。再也无法出现阿基米德所说的,给个杠杆,就能把地球撬起来的情况了。世界的不确定性在增加,要模拟真实世界的变化也变得有些代沟了。 到了 21 世纪,随着采集设备的廉价化,数据也因此能相当方便和便宜的获取。丰富的数据也使得模型刻画世界的不确定性,从 certainty 变到 probable ,再变到了现在的 possible 。而在深度学习与大数据的双重推动下,我们可以看到在人工智能及相关研究领域呈现了一个非常明显的特点,就是大数据、小规律。 深度学习的模型在特定问题的预测优异性,较传统学习方面很明显,但往往在参数寻优收敛后,就只适用于模型训练所对应的特定问题,而不具备推广性。究其原因,我在“ 深度学习,你就是 116 岁的长寿老奶奶 ”和“ 童话 ( 同化 ) 世界的人工智能 ”中有过探讨。从某种意义来看,这一现象也正是大数据、小规律的表现。 图 5 :小数据大定律 vs 大数据小定律 另外,现今人工智能的发展趋势与一位经济学家默顿 · 米勒的观点也很契合,即默顿定律 (Merton Laws) 。该定律认为,人最理想的情况是自我预言,自我实习。举个不恰当的例子,据说杨振宁约 12 岁的时候,就喜欢看很多物理学方面的书籍。有次在上学的时候,他从艾迪顿的《神秘的宇宙》里看到了一些新的物理学现象与理论,便表现了极大的兴趣。回家后就跟父母开玩笑说,将来要拿诺贝尔奖。结果梦想真的实现了。这就是默顿定律的体现,是一种自我预言、自我激励、自我实现。另外,默顿定律里还有一个重要的观点,即人必须参与到循环中,机器智能与人类智能协同、混合。 那我们在大数据环境下,其实也可以看到这样一种可能,即大数据背景下的默顿定律,或者说通过大数据来将模型世界封闭,形成对实际世界的逼近,从而可以完成对无穷多小规律的生成演绎。 要实现这样的封闭,最直接的策略就是利用大数据来建立一个与实际社会平行的人工社会,从而填补模型世界与实际世界的代沟。 这样的系统构造模型与两位管理学大家的想法是一致的。一位是 Deming , 他曾说过“非上帝不信,非数据不认”的名言。他认为现今人类的决策有 85% 是不合理的,因为缺乏数据。如果数据充分,那计算对世界的指导将会有三个递进的层次:描述、预测和引导,分别对应于以数据来说话、预测未来、引导未来。而 Drucker 则认为“最好的预测世界的方式就是创造它”。那么,通过生成大量数据来建立平行系统,正吻合了这两位的观点。 不过,要让两者得到有机的混合,实现两位大家的思想,还得再构造三套额外的系统来支撑。一套用于管理和控制虚实之间的差异,一套用于实验与评估虚实之间的差异系统,一套用于学习和训练虚实系统。 这样,就形成了平行系统或平行智能的基本框架。 图 6 : 平行智能的框架 大致来说,这套平行系统可以利用数据驱动来实现描述性的计算,利用预测和分析实现预测式计算,利用引导式计算来引导未来。对应三个子系统,我们可以构造人工社会 (A) 来实现描述性计算,通过计算实验 (C) 来预测分析,并构造平行执行 (P) 来学习和自适应。并在信息化、自动化、智能化的驱动下,形成具有敏捷性、可聚焦特定小规律、易于发现规律能收敛的人在回路的混合系统。最终实现 Deming 所想要达到的目标,即描述智能、预测智能和引导智能,也就可以将钱学森想刻画的递进思维科学、甚至《道德经》中的道、可道、非常道进行完美呈现。 图 7 :描述、预测与引导智能 有没有人想过呢?王飞跃教授在 2004 年就有过这样的思想,并提出了基本的框架。而 LeCun Yan 在 2016 年预测学习 (Predictive Learning) 的报告中,也提到了引入人工环境的想法。另外,关于如何实现构造复杂大世界, Ian GoodFellow2014 年提出的 生成式对抗网 事实上已经是这么处理。它正是在一个封闭的网络中,通过判别器和生成器的反复对抗,来不断地自我预言、自我完善、自我实现中。 图 8 :左: Lecun Yan 的平行观; 右 : Ian GoodFellow 的数据虚拟生成对抗 Lecun Yan 和 Ian GoodFellow 提供了一个可实现的渠道。那还有其他可行的方案吗?基于现在环境,我们推测有几种可能。一是建立虚拟环境,这一环境的建立可以考虑基于现在成熟的游戏引擎来构造,也可以考虑虚拟现实技术;二是混合,目前有的增强现实技术,可以认为是人机混合的一种方式,在此基础上再构造人工社会,那会就可以形成混合的闭环境。数据、平行、混合,在这一平行系统中,有可能过程哲学一样,系统能自我预言,自我成长,自我完美。也就可能实现从最初的牛顿定律向默顿定律的突破,从 UDC(不确定性、多样性、复杂性) 到 AFC(灵活性、聚焦性、收敛性) 的突破,为今后能发现超越深度学习的小规律作更强的准备。 图 9 :左:从 UDC 到 AFC ; 右:实际系统与人工系统 这一方法也不是在分布式系统中常采用的分治,因为它意味着要将复杂数据简单化和分拆。平行智能则不同,是希望在实际系统的基础上引入大量虚拟系统,实现对混合系统的复杂化,这样才有可能在理论上保证默顿定律的有效和可实现。在此基础上,将波普尔 (Karl Popper) 认为的三重世界 --- 物理世界、心理世界、人工世界 --- 通过物理空间和网络空间虚实混合,将人在回路的混合智能有机地体现在社会物理网络系统 (CPSS) 中,并通过 ACP 的平行认知系统来实现。 图 10 :复杂系统的分治 ( 并行 ) vs 平行 图 11 社会物理网络系统与平行认知系统 事实上,我们现在已经在一些系统上能看到这一框架的端倪。比如 AlphaGo 的围棋系统,一方面,他目前的战绩对人类是接近全胜,另一方面,你还能从中看到另一层信息,即他正通过巨量虚拟数据的训练来获得少量的规律。这些规律突破了围棋界近 300 年的既成棋谱,也让很多高段位棋手开始重新思考围棋的下法,甚至开始采用 AlphaGo 、 AllphaZero 归纳出来的少量规律来下棋。而这些策略其实和我们上面提到的大数据小定律的发展是吻合的。 图 12 : Alpha 从大数据中获得的小规律 不过,我们还得自问一句,平行智能能实现吗?我觉得有可能,但一定有山一般的难题在等着解决,比如复杂系统中的协调问题、实验评估问题等。不过鲁迅也说过“世界上本来没有路,走的人多了,也就变成了路”。 张军平 2018 年 9 月 13 日 后记: 2018 年 9 月 7 日到 9 日,中国自动化学会混合增强智能专委会在西安交通大学举办了首届混合增强智能讲习班,主题是“人在回路的混合智能”。讲习班邀请 了 11 位国内在混合智能方面的著名专家。其中王飞跃教授安排在 9 月 9 日上午,做平行智能方面的报告。比较遗憾的是,教授讲习班开班日感冒,嗓子完全不能发声,便委托我来代讲。我虽然听过好几次教授的报告,但毕竟台上台下是不一样的,始终是一知半解。所以,晚上便和王教授以前的博士生、也是我的同学 --- 福州大学的陈德旺教授,一起分析和解读了教授发过来的 PPT 内容。因为怕讲不好,我便结合了我自己的研究方向,改题目为“从端到端到平行”来讲了。本文是根据报告内容整理后的文章。 算下来,好象有很长时间没跟德旺合作写文章了。我记得第一面见他的时候,是在中科院自动化所博士入学考试的时候。他年轻,一幅挺不可一世的样子。不过后来入学后,住同一层久了,大家熟悉了,就玩得开了。有过一次,他跑我寝室,两人一起唱歌,结果他的歌声让走廊对面的同学出离愤怒,过来敲门抗议了。再后来,我发现高维非线性数据降维问题很有意思,而交通方面也没有相关的研究。王教授听说了,便鼓励我和德旺一起合作,最后形成了流形学习(Manifold Learning)在智能交通的第一篇应用文章 (Chen et al., 2004) ,是基于一维流形、即主曲线来分析交通流问题。毕业后,虽然各奔东西,不过合作的文章还是有一些 ( 附于后,算是纪念 ) 。 2010 年的时候,我在北京见过王教授一面,两人一起在北京王府井的一个店吃了顿饭。教授跟我说,数据驱动的智能交通应该是未来的发展方向,建议我写一篇综述。我爽快地答应了,然后花了至少十个月的时间完成了这项工作 (Zhang et al, 2011) 。认真的事呢,总是有好的回报的,这篇文章现在是 ESI 高倍引。后来有回我还跟教授说过,如果当时在“ Data-Driven ”前加个 Big ,说不定会更受重视,因为论文发表后,大数据的热潮就兴起了。 参考文献: 1. Junping Zhang, Fei-Yue Wang, Kunfeng Wang, Wei-Hua Lin, Xin Xu, Cheng Chen, Data-Driven Intelligent Transportation Systems: A Survey, IEEE Transactions on Intelligent Transportation Systems, vol. 12, no. 4, pp. 1624-1639, 2011. 2. Junping Zhang, Xiaodan Wang, Uwe Kruger, Fei-Yue Wang, Principal Curve Algorithms for Partitioning High-Dimensional Data Spaces, IEEE Transactions on Neural Networks, vol. 22, no. 3, pp. 367-380, 2011. 3. Junping Zhang, Uwe Kruger, Xiaodan Wang, Dewang Chen, A Riemannian Distance Approach for Constructing Principal Curves, International Journal of Neural Systems, vol. 20, no. 3, pp. 209-218, 2010. 4. Junping Zhang, Dewang Chen, Uwe Kruger, Adaptive Constraint K-segment Principal Curves For Intelligent Transportation Systems, IEEE Transactions on Intelligent Transportation Systems, vol. 9, no. 4, pp. 666-677, 2008. 5. Dewang Chen, Junping Zhang, Shuming Tang, Jue Wang, Freeway Traffic Stream Modelling based on Principal Curves and its Analysis, IEEE Transactions on Intelligent Transportation Systems, vol. 5, no. 4, pp: 246-258, 2004. 延伸阅读: 1、 深度学习,你就是那位116岁的长寿老奶奶! 2、 童话(同化)世界的人工智能 3、 AI版“双手互搏”有多牛? 浅谈对抗性神经网络 4、 爱犯错的智能体 – 视觉篇(一): 视觉倒像 5、 爱犯错的智能体 - 视觉篇 (二):颠倒的视界 6、 爱犯错的智能体 - 视觉篇 (三):看不见的萨摩耶 7、 爱犯错的智能体 - 视觉篇(四):看得见的斑点狗 8、 爱犯错的智能体 – 视觉篇(五):火星人脸的阴影
12634 次阅读|18 个评论
从傅里叶分析角度解读深度学习的泛化能力
xuzhiqin1990 2018-8-24 19:03
深度学习成功地应用在很多领域,但对它的理论理解却非常缺乏。这两年,很多理论学家把关注点放在一个关于深度学习与传统学习理论的悖论上。在传统学习理论中,模型的参数越多,模型一般会更好地拟合训练数据,但模型的泛化能力(拟合测试数据集的能力)会变差。在深度学习中,参数的数目比训练数据集要大得多,但深度网络( DNN)却通常既能拟合好训练数据,又保持良好的泛化能力。这个违反直觉的现象被大家称为“明显悖论” (apparent paradox). ▲ 文献 1 ▲ 文献 2 ▲ 文献 3 频率原则(F-Principle) 最近有几篇文章 从傅里叶分析的角度,在实验和理论上揭示了该悖论背后的一种机制。 一般来说,在深度学习中,大家用来测试结论的例子或者是手写数字集(MNIST),或者是图像分类集(CIFAR)。这两类数据集相对实际应用的数据集确实已经足够简单,但在分析上,它们仍是非常复杂的,因为它们的输入维度仍然非常高(像素点的个数)。 我们可以从拟合一维函数出发考虑这个问题。训练数据集是少数几个均匀采样数据点,如果用多项式去拟合,阶数很高的时候(大于数据点个数),拟合的结果通常是一个能够精确刻画训练数据但振荡厉害的函数。但如果用 DNN,无论多大规模,通常学习到的曲线都是相对平坦的。因为是一维函数,所以很容易想到,振荡和平坦可用傅里叶分析定量地刻画。于是就自然能猜想到,DNN 在学习的时候可能更加偏爱低频成分。 下面是一个一维函数的例子 (图 1a 中的黑点),对数据作离散傅里叶变换后如图 1b 所示,考虑图 1b 中的频率峰值(黑点)在训练中的相对误差,如图 1c,频率越高,收敛越慢(蓝色表示相对误差大,红色表示相对误差小)。频率原则可以粗糙地表述成: DNN 在拟合目标函数的过程中,有从低频到高频的先后顺序。 (Frequency Principle or F-Principle in , or spectral bias in ) ▲ 图1 F-Principle 并不是一个陌生的概念,而是我们日常生活中经常都在用的一个原则。想象一下,如果让一个人去记住一个没见过的东西,一般比较粗糙的轮廓信息会先被记住,然后再是很多细节。没错,DNN 也正是使用了这样的一个学习过程。举一个例子,我们来训练一个 DNN 来记住一张图片。DNN 的输入是一个位置坐标 (x,y),我们希望它输出这个位置对应的灰度值。图 2 的一系列图展示了不同训练步数,DNN 学习到的图像,正如我们前面所猜测的从粗糙的轮廓到细节的学习过程。 ▲ 图2 经验上理解深度学习的泛化能力 一般来说,“平坦”简单的函数会比振荡复杂的函数有更好的泛化能力。DNN 从目标函数的低频成分开始学习。当它学到训练数据的最高频率的时候,此时频率空间误差趋近于零。因为频率空间的误差等于实域空间的误差,所以它的学习也基本停止了。这样深度学习学到的函数的最高频率能够被训练数据给限制住。对于小的初始化,激活函数的光滑性很高,高频成分衰减很快,从而使学习到的函数有更好的泛化能力。 对于低频占优的目标函数,小幅度的高频成分很容易受到噪音的影响。基于频率原则,提前停止训练(early-stopping)就能在实践中提高 DNN 的泛化能力。 理论上理解深度学习的泛化能力 从低频到高频的学习原则并不总是对的,比如在文献 中讨论到的,如果目标函数是随机数据点(频率空间没有低频占优的特性),或者 DNN 的参数的初始化的值比较大,这个原则就会失效。特别是在大初始化的情况下,DNN 的泛化能力也会变差。 文献 对 DNN 学习到的函数的频率幅度的估计并不能解释这些现象。特别地,对于层数和神经元数目足够多的 DNN,文献 给出的理论不能解释为什么 DNN 从低频开始学习。在文献 中,DNN 的拟合函数的高频成分受权重(weights)的谱范数(spectral norm)控制。对于小规模的DNN,可以经常观察到,权重的范数随训练而增长,从而允许小规模的 DNN 去拟合目标函数中的高频成分。因此,文献 在理论上给出频率原则的一种可能解释。 但如文献 的一个例子所示(下图,图 3a 为目标函数,图 3b 为其离散傅里叶变换),对于层数和神经元数目足够多的 DNN,权重的谱范数(图 3c)基本不变。但如图 3d 所示的频率成分的相对误差,四个重要的频率峰值(图 3b 的黑点)仍然是从低频开始收敛。对于这种情况,文献 对 DNN 的拟合函数的高频成分的上限估计在训练过程中基本不变,从而不能看出低频到高频学习的频率原则。 ▲ 图3. 说明:(d) 展示 (b) 中四个频率峰值在训练中的相对误差 文献 给出了能够解释这些问题的理论框架。从只有一层隐藏层的 DNN(sigmoid 作为激活函数)开始,在傅里叶空间分析梯度下降算法,文献 得到损失函数 ω 在任一频率分量上对任一参数 的导数。 其中,a_j 是 Θ_jk 对应神经元的权重(weight),G_jk (Θ_j,ω) 是关于对应神经元所有参数和频率 ω的一个多项式,A(ω) 是学习到的函数与目标函数的差的幅度。文献 论述了这个表达式如何定性的推广到一般 DNN。 上面这个式子显示地定量地说明了 在梯度下降过程中低频成分会有更高的优先级 。但同时需要注意的是, 这个优先级不只是由频率决定,它也依赖于拟合函数与目标函数的差的幅度。 这个理论分析揭示了对于低频占优的目标函数,当 DNN 的参数是很小的数时,低频成分会先收敛,并且在低频成分收敛的时候,DNN 的高频成分仍然很小。而当 DNN 拟合高频成分的时候,已经收敛的低频成分只会受到很小的干扰。对高频占优的函数,整个训练过程就会变得复杂。低频容易受到高频的影响,所以低频是振荡式的收敛,每振荡一次,偏离的最大幅度就会下降。并且频率越低,振荡越频繁(如下图 4 所示)。 ▲ 图4 对于初始化的问题,这个理论框架也给出了解释。如果初始化权重很大,由于上式中的 很大,低频不再占优,所以频率原则就很容易失效。并且,激活函数的高频成分也会变大。对于那些频率高到训练数据也看不到的成分,因为训练过程不能限制它们,所以在训练完成后,它们仍然有比较大的幅度而导致 DNN 的泛化能力变差。 总结 傅里叶分析的理论框架非常好地解释了 DNN 为什么在拥有大量参数的情况下既能学好训练数据,又能保持好的泛化能力,简单地说, 由于频率原则,DNN 学习到的函数的频率范围是根据训练数据的需要而达到 。对于那些比训练数据的最高频率还高的频率成分,DNN 能保持它们幅度很小。 用傅里叶分析的角度来研究 DNN 的学习问题仍处于开始的阶段,有很多有趣的问题值得继续深入,比如更加定量地分析 DNN 的学习过程,理解层数和每层宽度对训练的不同贡献等等。 致谢: 感谢张耀宇对本文初稿的校正和修改。感谢paperweekly将本文发布在其公众号。 参考文献 . Zhi-Qin J. Xu, Yaoyu Zhang, Yanyang Xiao. Training behavior of deep neural network in frequency domain, arXiv preprint arXiv: 1807.01251. (May 18, 2018 submitted to NIPS, first submitted to arXiv on Jul 3, 2018) . Nasim Rahaman, Devansh Arpit, Aristide Baratin, Felix Draxler, Min Lin, Fred A. Hamprecht, Yoshua Bengio, Aaron Courville. On the spectral bias of deep neural networks, arXiv preprint arXiv:1806.08734. (First submitted to arXiv Jun 22, 2018) . Zhi-Qin J. Xu. Understanding training and generalization in deep learning by Fourier analysis, arXiv preprint arXiv: 1808.04295. (First submitted to arXiv on Aug 14, 2018)
个人分类: 深度学习|3385 次阅读|0 个评论
什么是机器学习
热度 3 xying 2018-8-6 10:13
2016 年开启了人工智能的时代。 AlphaGo 围棋胜了人类,轰动地冲击了人类的自信;微软 ASR 语音识别结果好过专业速记员;斯坦福大学 ImageNet 的机器已能读出图里的场景; IBM 机器沃森在日本只花 10 分钟完成 41 名病人的诊断,救了医者束手的白血病人,2017年2月还在中国天津给 20 个癌症病人义诊;特斯拉自动驾驶汽车已挤进车流;机器创作歌曲、绘画、诗歌、小说、电影也有了不俗的成绩。现在的人工智能,已经不是几十年前哲学家争论的,影视让大家熟悉的,那种按规则推理的木讷机器。它更像是我们培养的智慧生物,与我们有着同源的智力,其核心是机器学习。我们不告诉它怎么做,而是喂给它样本,让它从中汲取知识,以此自作判断。 这篇文章给学理工的人介绍机器学习。希望只要略懂线性代数和最小二乘法的读者,可以通过数学模型和具体的事例,了解其机制,对涌现在我们身边的人工智能有所认识。 机器学习 什么是机器学习?简单地说,计算机利用输入的样本,调整一个通用数学模型的参数,经过这样调整后,使得这模型能正确地回应新的输入。这个原理在几十年前就用在模式识别,现在计算机能力强了,能使用巨量的模型参数和训练样本,让机器展现出令人惊异的智能,被称为机器学习。 测试人的 IQ ,是让人回答几十道题,每道题列出几张图形,或几组数字,或几个词作为样本,让你从一组可能的选项中挑出一个最“合理”的答案,以此来评估人的智商。这与你拥有的知识无关,测定的是以样本作类比判断的能力。计算机的学习算法,模仿这种类比能力,赋予机器智商。人类具有智商,可以通过学习获得知识。计算机用调整数学模型参数的算法,实现学习的能力。样本的数据潜藏着大量的信息,通过训练给予了机器相关的知识,让机器拥有判断这类数据的智能。 先看一个机器学习的例子。计算机模拟 400 个输入节点 x , 10 个输出节点,具有 25 个隐含层节点的神经网络。 这可以表示成一个 400 维到 10 维实数值向量的函数 F: R 400 → R 10 如下: 神经元联接权重和阈值 w 共有 10285 个,它们是函数的可调参数。式中的 S 是一个 Sigmoid 作用函数 S(z)=1/(1+exp(-z)) ,让函数值饱和在 0 或 1 两端。 机器用它学习识别手写体字时,输入 5000 个各种形态图片的像素矩阵作为样本数据,每个样本是一张 400 个像素的手写数字图片,每个像素对应着一个输入节点,每个输出节点代表输入图片被辨识为的一个类别,输出值表示图片属于这节点类别的相似度。图片中手写表示的数字称为样本的标记,预期对应着具有最大函数值 F i 的那个输出节点 i 的类别。不难想到可以用最小二乘法来计算可调参数 w ,使得机器分类与这些样本标记的误差最小。然后我们可以用这训练好的神经网络,来辨识手写体数字的图片。 机器学习的过程 机器的学习过程是用反向传播误差算法( Backpropagation ),来迭代调整这 10285 个参数,这算法由最小二乘法导出,使得输入样本的标记与对应的输出节点类别判断的平均误差最小。实验通过 50 次迭代取得了 95.26% 的准确率。然后用这个调整好参数的神经网络,来识别新输入的手写体数字,也取得超过 90% 的预测准确率。注意,这个数学模型,即它所描述的这个神经网络功能,是通用的。同一个神经网络的机器,可以用它来学习识别手写体字,也可以用来区分债卷的等级等等,对债卷需要的是描述债卷属性的训练样本,来供给机器学习债卷的知识。同一个算法的机器,用不同的样本数据,赋予机器不同的知识和智能。机器的学习能力,即智商,只受数学模型对数据不同模式的表达能力所限,越多的参数具有越强的表达能力。 通常用多元线性函数和非线性作用函数的简单组合来表示数值规律和划分类别模式,实用中的线性函数参数是以万计到百亿计的数量。这样的数学模型虽然很简单,却因参数数量的巨大能够实现复杂的功能,足以涵盖各种预测和辨识情况。在数学上,这调整模型参数减少误差和应用模型预测的算法,都是精确有效的,但也因变量个数的巨大,难以分析由输入到输出每一步的变化规则,无从归纳成像物理规律那样简单明晰的因果性机制,无法用人脑跟踪逻辑推演的角度来直观理解它的功能。 也许有人认为计算机里的软件是人写的,机器不过实现人给予的功能,怎么算是机器学习? 这混淆了人赋予的功能和机器自己获得的功能。五十年代的感知器( Perceptron )是纯粹用硬件实现的机器学习,那用不上计算机更谈不上软件,那时用了 400 个光学传感器,电动机、滑动电阻和控制电路来实现,它学会辨识猫、狗、鱼的简单图像。这个感知器相当于神经网络中的一个神经元,现代神经网络具有千万个神经元,可以实现非常复杂的辨识问题,计算机和软件只是方便地用来模拟神经网络的硬件功能的手段。现在的训练样本也还是人供给的,但机器通过传感器和网络自己收集样本数据,在原则上并没有什么不可克服的障碍。例如自动汽车驾驶的机器学习,就是机器通过记录车速、油门、刹车、方向盘转角和路况的视频,作为训练机器的样本数据。尽管如此,确实,机器的学习功能是人给予的,但给予的只是学习的能力,机器通过训练的样本自己获得相关的专门知识和由此而来的智能。这就像人类小孩是父母生养的,但知识和能力却是自己通过学习获得的。 机器学习算法 下面介绍几种典型的机器学习基础算法和事例,让大家能够想象它的功能。 无监督学习和监督学习 无监督学习和监督学习是机器学习最基本的两类,其他的类似于它们的综合。最常用的无监督学习是从样本数据分布中,按它们的聚集来分类,例如用一堆新旧不同的人民币硬币尺寸和重量作为样本的数据,它们在 2 维空间的分布聚集在几个地方。人们看了知道它们是分成几类,依此知识可以判断送来的硬币类别。机器也可以这样做,它通过数据点相互距离的计算( K-means ),将相近的数据点的聚集按距离自动分割成几组。得到各组的中心和分布范围后,以此判别新输入硬币所对应的组别。许多事物看来杂乱无章,其实分属不同类别,例如学生潜力,绘画风格,生物分类等等,只要用足够多特征属性来描述,就可以把它们区分,但对于许多的特征属性,人类只能抽取能理解含义的少量特征,很难利用非常多的特征属性来分类,机器却很容易做到。在你现在的工作中,也可能应用现成的 N 维自动分类程序,在已经拥有数据中发现潜藏的分类。 无监督学习就像无师自通的领悟,效率较差,有些情况难以做到。有老师教学就会快得多。监督学习是最成功广泛应用的机器学习,用我们知识来标记样本的正确答案,去“教”机器学会应用。 线性回归 对于数值答案的问题,线性回归是最基础的算法,几百年前人们就用它从实验数据中导出经验公式。采用最小二乘法,求出与这些数据误差最小的直线或超平面。 这里 j 是输入属性的下标, i 是输出向量数值分量的下标, (k) 指第 k 个样本。它有公式解,在线性代数上称为“正规方程( Normal Equation )”的线性方程解。然而,商业应用中的机器学习模型未知参数 的数量巨大,公式解要求非常大的计算机内存和计算量来实现,通常是用梯度法迭代求出近似解。这是被应用最广泛的数值预测的学习方法。 数据关系不能用一个线性式子表示 ​ 怎么办?这可以通过增加一些与输入属性 x 是非线性关系的项,例如令 x 1 =x, x 2 =x 2 , x 3 =x 3 ,… ,有可能把它们表达成一个线性式子 ​ ,即高维空间里这些点可能放在一个超平面上,在样条函数逼近理论上,这已许多有数学研究。在应用上,它相应于选取足够多的输入属性表达。例如房价的估值,所在的地区和房子的面积是基本的属性,当它用线性回归预测误差较大时,加入邻居平均房价,房间卫浴个数,装修等级等等,用这些与已有属性不是线性关系的特征,来扩充属性空间的维数,有可能取得较好的模型精度。 逻辑回归 对于分类模式的判断,逻辑回归是基础的算法。在直观上是用一个超平面把输入属性空间分成两半,逻辑上对应着 0 和 1 。超平面用一个线性函数表示,输出对应于这线性函数值是否大于 0 。多个的超平面将属性空间分成多类。能够这样归类的数据称为是线性可分的。上世纪五十年代 AI 热潮中的感知器( Perceptron ),用一个 Sigmoid 作用函数加在线性函数之后, 让输出结果基本饱和在 0 或 1 ,并且易于用最小二乘法导出减少误差的梯度。它模拟了神经元的功能,它们一列组成的单层神经网络,能很好处理线性可分的模式识别。对于不是线性可分的模式,可以采用上述增加输入特征属性的方法,让它在高维空间上线性可分。 支持向量机 支持向量机( SVM )在单层神经网络基础上,采用非线性变换 φ 将输入的数据向量 x 映射到特征属性空间,让这些 φ (x) 在特征属性空间是线性可分的。它使得线性分类器可以用在非线性分类的问题。这个非线性变换不需要明确给出,它的实现是通过直接构造与特征属性空间中内积相等的“核函数( Kernel function )”来简化计算。支持向量机用分段线性函数代替神经元里的 Sigmoid 作用函数,这样调整间隔分类超平面的参数,就只跟较少的支持点有关了,既可以大大减少计算量,又把计算转化成二次函数在线性约束下求极值的问题。实践中的应用,涉及到巨大稀疏矩阵的计算。 1998 年 Microsoft Research 的 John C. Platt 提出 SMO 算法,可以高效地处理巨量的变量和样本数据,这使得支持向量机获得广泛的应用。支持向量机包含单层感知器作为特例,它有清晰数学理论的支持,能有效地控制训练结果,现在已有许多语言实现的软件包可用,相对于多层神经网络,它所要求的机器资源较少,是非常实用的学习算法。但它要求有应用领域知识的人力合作,来选取合适的核函数。它成功地应用在许多分类领域,如文本、图像、蛋白质、垃圾邮件分类和手写体字识别等等。 神经网络是多层感知器的网络,对每一层输入都用线性来分类,由于 sigmoid 作用函数,每层的输入和输出是个非线性变换,因此不需要人为设计属性变换,便能通用地实现各种数据的分类。文中最初介绍的就是三层神经网络的一个例子。理论上三层神经网络可以实现任何分类问题,但随着复杂程度的增加,要求中间隐藏层的神经元数会急剧地增加。每层神经网络实现一个线性分类函数,多层神经网络则实现了多重的复合函数,能用大大提高学习功能,用较少的神经元解决复杂的问题。但多于三层的神经网络,采用反向传播误差的梯度法来统一训练,较难控制学习的结果,所以兴起深度学习的研究。 深度学习 相对于前面单纯机制的机器学习数学模型,深度学习像是一种综合的工程设计,它基本架构是深层的神经网络,具有处理非常复杂模式的能力。为了提高训练的效果和效率,设计不同层次的网络构造,例如在计算机视觉广泛应用的卷积神经网络( CNN ),便是在低层先采用几个卷积核层和联营层来抽取特征和压缩信息,它们是 “先天”预设功能的神经网络层,具有较少可调的联接参数,能自动获取局部特征,且易于控制训练的效果。在深层网络中有的还采用分层采用无监督的预先学习和随后的监督学习,来提高学习效率。如何构造深度网络和控制训练是深度学习的研究内容。今天深度学习的神经网络已有百亿个神经联接参数,具有极强的智商,它需要巨大的计算机资源和信息数据的支持,多在大公司研究突破性的应用和探索人工智能的未来。 上世纪 80 年代,计算机的功能还不及现在的手机。手写体字识别的研究,应用上述例子中的神经网络来学习,限于计算机的功能和数据的收集能力,用几百个样本逐个迭代更新参数来学习,无论算多少小时,结果都不理想。现在用了 5000 个样本,同一个神经网络模型用批量计算更新参数,经过 50 轮迭代, PC 运行不到 10 分钟就训练好了模型。注意这里用的只是简单 400x25x10 节点的三层网络,已经有了 1 万多个待定的参数,输入样本是 400x5000 的矩阵。这个辨识 10 个数字图像的小项目,过去实现不容易,现在却很轻松。现在机器学习进入了与人类智能相较的时代。斯坦福 ImageNet 的机器学习,用了 1500 万张照片的数据库,涵盖 22000 种物品,对 2400 万个节点, 150 亿个联接的神经网络进行训练,能够让计算机看懂了照片,描述图里的场景。这些成绩证明了在巨量的样本数据和强大的计算能力支持下,凭借着上述非常简单的数学模型的学习机制,便能够使得机器通过训练,从白痴到了具备令人惊异的辨识认知能力。现在深度学习的成就还只是验证概念的破冰式探索,如何构造深度神经网络,怎么更有效地利用数据和利用已有知识更聪明的学习,例如具有长期、短期记忆的神经网络,“一次性的学习( One-shot learning )”等等,正在竞争研究中。 机器学习强大的功能来自巨量的可调参数,它的学习算法并不难理解,基本是向量和矩阵的线性运算,关键之处是巨量的样本数据获取,和支持巨量计算的硬件特别是 GPU 等技术进步。这就是为什么机器学习的突破,一直到了大数据时代才出现。 我们已经用数学模型介绍了机器学习的机制,不难想象它是怎么工作的。实践已经证明,这种学习机制非常成功地让机器获得辨识预测的智能。 但是进一步深思,可能会疑惑,学习算法所得的是与样本误差最小的数学模型,为什么能用它来预测判断样本之外的世界?下一篇《为什么机器能学习》将解答这个问题。 【说明】去年应《中国计算机学会通讯》特邀撰写专栏,我在那里发表些关于AI的系列文章。因为发现有些网站未经同意转载了部分内容,非学会会员不能阅读原版全文,造成一些混淆。所以我将在博客陆续贴出这些文章,以觞有兴趣的读者。这篇文章曾在 2007年4月 《中国计算机学会通讯》上发表,部分文字略有修改。
个人分类: 科普|6229 次阅读|9 个评论
如何在 GPU 深度学习云服务里,使用自己的数据集?
wshuyi 2018-7-4 06:48
本文为你介绍,如何在 GPU 深度学习云服务里,上传和使用自己的数据集。 疑问 《 如何用云端 GPU 为你的 Python 深度学习加速? 》一文里,我为你介绍了深度学习环境服务 FloydHub 。 文章发布后,有读者在后台提出来两个问题: 我没有外币信用卡,免费时长用完后,无法续费。请问有没有类似的国内服务? 我想使用自己的数据集进行训练,该怎么做? 第一个问题,有读者替我解答了。 我看了一下,这里的 Russell Cloud ,确实是一款跟 FloydHub 类似的 GPU 深度学习云服务。 可是感谢之后,我才发现原来他是 Russell Cloud 的开发人员。 于是这几天,使用中一遇到问题,我就直接找他答疑了。 因为有这种绿色通道,响应一直非常迅速。用户体验很好。 这款国内服务的优势,有以下几点: 首先是可以支付宝与微信付款,无需 Visa 或者 Mastercard 信用卡,很方便; 其次是 Russell Cloud 基于阿里云,访问速度比较快,而且连接稳定。在上传下载较大规模数据的时候,优势比较明显。与之相比,FloydHub 上传500MB左右数据的时候,发生了两次中断。 第三是文档全部用中文撰写,答疑也用中文进行。对英语不好的同学,更友好。 第四是开发团队做了微创新。例如可以在微信小程序里面随时查看运行结果,以及查询剩余时长信息。 解决了第一个问题后,我用 Russell Cloud 为你演示,如何上传你自己的数据集,并且进行深度学习训练。 注册 使用之前,请你先到 Russell Cloud 上 注册 一个免费账号。 因为都是中文界面,具体步骤我就不赘述了。 注册成功后,你就拥有了1个小时的免费 GPU 使用时长。 如果你用我的邀请链接注册,可以多获得4个小时免费 GPU 使用时间。 我手里只有这5个可用的邀请链接。你如果需要,可以直接输入。 看谁手快吧。 注册之后,进入控制台,你可以看到自己的相关信息。 其中有个 Token 栏目,是你的登录信息。下面我给你讲讲怎么用。 你需要下载命令行工具,方法是进入终端,执行: pipinstall-Urussell-cli 然后你需要登录: russelllogin 这时候根据提示,把刚才的 Token 输入进去,登录就完成了。 与 FloydHub 不同,大多数情况下 Russell Cloud 的身份与项目验证,用的都是这种 Token 的方式。 如果你对终端命令行操作还不是很熟悉,欢迎参考我的《 如何安装Python运行环境Anaconda?(视频教程) 》,里面有终端基本功能详细执行步骤的视频讲解。 环境 下文用到的数据和执行脚本,我都已经放到了 这个 gitlab 链接 。 你可以直接点击 这里 下载压缩包,之后解压。 解压后的目录里,包含两个子文件夹。 cats_dogs_small_vgg16 包含我们的运行脚本。只有一个文件。 它的使用方法,我们后面会介绍。 先说说,你最关心的数据集上传问题。 数据 解压后目录中的另一个文件夹, cats_and_dogs_small ,就包含了我们要使用和上传的数据集。 如上图所示,图像数据被分成了3类。 这也是 Keras 默认使用的图像数据分类标准规范。 打开训练集合 train ,下面包含两个目录,分别是“猫”和“狗”。 当你使用 Keras 的图片处理工具时,拥有这样的目录结构,你就可以直接调用 ImageDataGenerator 下的 flow_from_directory 功能,把目录里的图片数据,直接转化成为模型可以利用的张量(tensor)。 打开 test 和 validation 目录,你会看到的目录结构和 train 相同。 请你先在 Russell Cloud 上建立自己的第一个数据集。 主页上,点击“控制台”按钮。 在“数据集”栏目中选择“创建数据集”。 如上图,填写数据集名称为“ cats_and_dogs_small ”。 这里会出现数据集的 ID ,我们需要用它,将云端的数据集,跟本地目录连接起来。 回到终端下面,利用 cd 命令进入到解压后文件夹的 cats_and_dogs_small 目录下,执行: russelldatainit--id你的数据集ID russelldataupload 请把上面“你的数据集ID”替换成你真正的数据集ID。 执行这两条命令,数据就被上传到了 Russell Cloud。 上传成功后,回到 Russell Cloud 的数据集页面,你可以看到“版本”标签页下面,出现了1个新生成的版本。 注意上图右侧,有一个“复制”按钮,点击它,复制数据集该版本的 Token 。 一定要注意,是从这里复制信息,而不是数据集首页的 ID 那里。 之前因为搞错了这个事儿,浪费了我很长时间。 运行 要执行你自己的深度学习代码,你需要在 Russell Cloud 上面,新建一个项目。 你得给项目起个名称。 可以直接叫做 cats_dog_small_vgg16 。 其他项保持默认即可,点击“创建项目”。 出现下面这个页面,就证明项目新建成功。 同样,你需要把本地的代码文件夹,和刚刚新建的项目连接起来。 方法是这样的: 复制上图页面的 ID 信息。 回到终端下,利用 cd 命令进入到解压后文件夹的 cats_dogs_small_vgg16 目录下,执行: russellinit--id你刚才复制的ID 这样,你在本地的修改,就可以被 Russell Cloud 记录,并且更新任务运行配置了。 执行下面这条命令,你就可以利用 Russell Cloud 远端的 GPU ,运行卷积神经网络训练脚本了。 russellrun pythoncats_dogs_small_vgg16_augmentation_freeze_russell.py --gpu--data 92e239 eca8e649928610d95d54bb3602:cats_and_dogs_small--envtensorflow -1.4 解释一下这条命令中的参数: run 后面的引号包括部分,是实际执行的命令; gpu 是告诉 Russell Cloud,你选择 GPU 运行环境,而不是 CPU; data 后面的数字串(冒号之前),是你刚刚生成的数据集版本的对应标识;冒号后面,是你给这个数据集挂载目录起的名字。假设这里挂载目录名字叫“potato”,那么在代码里面,你的数据集位置就是“/input/potato”; env 是集成深度学习库环境名称。我们这里指定的是 Tensorflow 1.4。更多选项,可以参考 文档说明 。 输入上述命令后, Russell Cloud 就会把你的项目代码同步到云端,然后根据你指定的参数执行代码。 你在本地,是看不到执行结果的。 你需要到网页上,查看“任务”下“运行日志”,在系统提供的模拟终端下,查看运行输出结果。 为了把好不容易深度学习获得的结果保存下来,你需要用如下语句保存模型: saved_model=output_dir/ 'cats_and_dogs_small_finetune.h5' model.save(saved_model) history.history 对象里,包含了训练过程中的一些评估数据,例如准确率(acc)和损失值(loss),也需要保存。 这里你可以采用 pickle 来完成: import pickle with open(Path(output_dir, 'data.pickle' ), 'wb' ) as f: pickle.dump(history.history,f) 细心的你,一定发现了上述代码中,出现了一个 output_dir , 它的真实路径是 output/ 。 它是 Russell Cloud 为我们提供的默认输出路径。存在这里面的数据,在运行结束后,也会在云端存储空间中保存下来。 你可以在“任务记录”的“输出”项目下看到保存的数据。它们已被保存成为一个压缩包。 下载下来并解压后,你就可以享受云端 GPU 的劳动果实了。 你可以用 history 保存的内容绘图,或者进一步载入训练好的模型,对新的数据做分类。 改进 在实际使用Russell Cloud中,你可能会遇到一些问题。 我这里把自己遇到的问题列出来,以免你踩进我踩过的坑。 首先,深度学习环境版本更新不够及时。 本文写作时 Tensorflow 稳定版本已经是 1.8 版,而 Russell Cloud 最高支持的版本依然只有 1.6。文档里面的最高版本,更是还停留在 1.4。默认的 Keras,居然用的还是 Python 3.5 + Tensorflow 1.1。 注意千万别直接用这个默认的 Keras ,否则 Python 3.6 后版本出现的一些优秀特性无法使用。例如你将 PosixPath 路径(而非字符串)作为文件地址参数,传入到一些函数中时,会报错。那不是你代码的错,是运行环境过于老旧。 其次,屏幕输出内容过多的时候(例如我跑了 100 个 epoch, 每个显示 100 条训练进度),“运行日志”网页上模拟终端往下拉,就容易出现不响应的情况。变通的方法,是直接下载 log 文件,阅读和分析。 第三,Keras 和 Tensorflow 的许多代码库(例如使用预训练模型),都会自动调用下载功能,从 github 下载数据。但是,因为国内的服务器到 github 之间连接不够稳定,因此不时会出现无法下载,导致程序超时,异常退出。 上述问题,我都已经反馈给开发者团队。对方已表示,会尽快加以解决。 如果你看到这篇文章时,上面这些坑都不存在了,那就再好不过了。 小结 本文为你推荐了一款国内 GPU 深度学习云服务 Russell Cloud 。如果你更喜欢读中文文档,没有外币信用卡,或是访问 FloydHub 和 Google Colab 不是很顺畅,都可以尝试一下。 通过一个实际的深度学习模型训练过程,我为你展示了如何把自己的数据集上传到云环境,并且在训练过程中挂载和调用它。 你可以利用平台赠送的 GPU 时间,跑一两个自己的深度学习任务,并对比一下与本地 CPU 运行的差别。 喜欢请点赞。还可以微信关注和置顶我的公众号 “玉树芝兰”(nkwangshuyi) 。 如果你对数据科学感兴趣,不妨阅读我的系列教程索引贴《 如何高效入门数据科学? 》,里面还有更多的有趣问题及解法。
10649 次阅读|0 个评论
科研四境界
热度 16 dwchen 2018-6-26 09:46
王国维在《人间词话》指出:“古今之成大事业、大学问者,必须经过三种境界:“昨夜西风凋碧树,独上高楼,望尽天涯路”此第一境界也;“衣带渐宽终不悔,为伊消得人憔悴”,此第二境也;“众里寻他千百度,蓦然回首,那人却在灯火阑珊处”,此第三境也” 。王国维是国学大师,他提出的研究三境界主要指的是文科方面的研究,主要以查文献,阅读文献,然后提出新见解。 文科研究有时辅之以考据,这有点类似于今天的科研实验 ,胡适研究《红楼梦》就是一个很好的例子。在考证曹雪芹的生平之后,胡适得出结论:贾宝玉的原型就是曹雪芹,《红楼梦》就是曹雪芹家族生活的描述。当然,古代文科考据与今天科研实验还是有一些差距。在今天,科研活动日益复杂与分工精细,科研阶段历时不断增长。 在宋代,苏东坡 21 岁就中进士了,在文科研究方面已经历时多年,卓有建树。而今天约 22 岁读研究生才刚刚开始从事科学研究,要出一流的研究成果,还得需多年的磨练。 因此,王国维提出的做学问的三境界已经难以全面概括和反映今天的科研活动了。 结合我自身的科研经历和人工智能算法的发展,我认为科研活动可以分为四个境界,分别与人工智能的四大算法相对应。 首先,第一境界为监督科研,对应于人工智能的监督学习算法( Supervised Learning ) 。第一境界基本发生在我们的研究生阶段,以硕士生阶段为主,也经常发生在博士生的前半阶段。我们有导师指导,在导师的监督下开展科研。如何做由导师指导,做的效果好坏有导师评价。导师根据我们做的效果与他期望结果之间的偏差,进行指导,以尽可能减少误差,这与监督学习算法的工作模式类似。 第二境界为半监督科研,对应于人工智能的半监督学习算法 (Semi-Supervised Learning ) 。 该境界主要发生在博士后阶段,也有时发生在博士生阶段的后半段。随着我们研究问题的深入和研究能力的提高,导师不必要也没法给予太精细全面的指导,只能指导部分环节,这与半监督学习的工作方式比较类似。 前两个境界做科研是为了拿到学位,为了找到一份工作,也是满足人的基本需求。做科研的第三境界为强化科研,对应于人工智能的强化学习算法 (Reinforcement Learning ) 。 该境界主要发生在博士(博士后)毕业参加工作后较长的时间,一般从讲师到教授阶段,也包括为了获得各类学术帽子的科研阶段。在该阶段,科研主要为职称、帽子等奖励目标去搞项目,表现好业绩突出的会得到这些奖励。奖励刺激大家不断努力搞科研,最终达成一个又一个目标。这类 似强化学习的奖 励刺激原 理,算法的目标就是最大化奖励函数 。 第三境界主要是为名利而努力。其实,职称也是一种类型的帽子,对应一定的名利。 第四境界就是深度科研,对应人工智能的深度学习算法( Deep Learning )。 该境界主要发生在正教授职称拿到之后,或者是带上了各类学者、杰青的帽子之后,具体要看各人的设定的目标。一般来说, 该阶段在该实现的目标都实现之后,更难的目标(比如院士或诺贝尔奖等)已经不可能获得的情况下 。俗话说:“曲高和寡”、“高处不胜寒”,很多科研人员很难到达这个境界。 在该境界,科研已经不是获取名利的工具,而是一种爱好和生活。随着研究的不断深入,将获得更多的成就感,研究功力日益深厚,思考深度不断深入,能解决复杂的科研难题 。这类似与深度学习的网络层次不断加深,能更好地解决复杂的人工智能问题 。国外的终身教授大都处于深度科研这个境界,而国内的年度考核等制度使得深度科研较难实现,大家都忙于搞项目写论文应对年度考核, 出短平快的成果较多,科研的深度和有深度的科研则很少 。如今炙手可热的深度学习算法的发明人之一的 Hinton 教授执着于多层神经网络的深度研究 20 年,终于想出来了深度学习算法 。他于 2006 年在 Science 上发布有关深度学习的标志性论文,一文成名天下知,从而引发深度学习热潮。
个人分类: 科技创新|17243 次阅读|33 个评论
深度学习的一些思考
luchangli 2018-6-20 15:38
最近一年来,超分辨定位成像领域陆续有多篇结合深度学习的工作,做出了一些很吸引人结果。中间的一些也被Nature methods杂志 highlight。有一些感想如下: 这样一个长期依赖于严谨的数学物理模型的学科也被深度学习攻下,有喜有忧。一方面这个 未来的技术 势必无可阻挡的被应用在各行各业;但另一方面,如果牛顿会用,满足于用深度学习,他还能发现万有引力公式吗? 作为一个拿来即可用的工具,深度学习对于大多数数学物理非顶尖的研究者应该是件好事,但对本质规律长期深入的探索可能非常有害! 虽然大家有跟风,蹭热点之嫌,但不管怎么样,我觉得这个风还是很值得跟。毕竟它也是一个工具,少一个工具,就少一项解决问题的能力和看问题的角度。有一些问题,不用这个方法确实还不好做。前面也提到,我也相信它将会是一个未来普遍使用的技术。
2571 次阅读|0 个评论
人工智能与未来
热度 1 iggcas010 2018-6-18 23:50
今天我没有准备好相应的博文信息,在自己学习中总是遇到这样或那样的问题,不知道问谁,向谁请教。一直在寻找人工智能方向(包括机器学习、深度学习、数据挖掘、大数据等)的老师,然而在意料之中的是不顺利,因而自己建了个QQ群,欢迎对人工智能有极大兴趣的博士、专家、学者加入!希望能够在这个群里讨论热门问题,交流遇到的问题,共同进步,未来让我们一起AI ! QQ群号:156737288 名称:人工智能与未来 加群请填写实际信息,并修改群名片,方便交流!
2609 次阅读|2 个评论
“啤酒尿布”模型管用,说不清因果又怎样?
wshuyi 2018-6-15 16:42
好的模型,为什么非得是 人能够理解 的? 有的人,对深度学习(deep learning)模型,很不以为然。 说根本没有搞清楚因果关系,只是拿出相关性来说事儿。 尤其是模型无法清楚解释——即不能像牛顿力学一样,用简单优美的数学公式刻画。 奇怪,为什么模型一定要简单到清清楚楚? 复杂系统已经被研究了这么多年,却还有人恨不得回归前信息化时代。 总不能因为你只学过文科班高中物理,就得让全世界的科学研究退回到1800年之前吧? 人是通过大脑,对信息进行加工的。 连这个加工工具,至今都没有完全搞清楚,不是吗? 那为何要对机器们在大数据上,辛辛苦苦构造出的模型,如此苛刻? 一个模型,可以准确做分类预测。而且反复在新的、没有训练的数据上尝试过,好用,那不就好了? 虽然不能排除纯是因为运气,但是这种可能概率很小。 好的模型,为什么非得是 人能够理解 的? 人对于宏观世界,至今缺乏理解。大爆炸只是假说。 人对于微观世界,同样缺乏理解。什么叫“测不准”来着? 人对于暗物质,意见不一。找不到证据,成为了“最好的证据”。 人连时间是什么,还说不清楚。要不然哪儿来的这么多穿越剧? 那凭什么,一个好用的模型,只是因为层数多、结构复杂、无法用数学语言解释给听众,就被鄙视? 其实原因也不难理解。 都在于人类社会协作中的共识。 大家都认同的,很有价值。 例如美元、黄金和一线城市的房地产。 极少数人才认同的,价值没有这么高。 例如2012年的比特币。 大部分人都无法理解,自然难以达成共识。 这时候有人出来批评复杂模型,看不懂的人就觉得很爽。 看,我不理解的东西,就一定是不靠谱的,哈哈。 站队的结果,就是大部分连讨论对象是啥,都没有搞清楚的人,跟随主流意见,人云亦云而已。 然而…… 共识是会发生变化的,即所谓“范式转移”嘛。
7329 次阅读|0 个评论
分层集合与标志(特征/属性)集合均有深度学习的很好基础
geneculture 2018-6-4 18:09
分层集合与标志(特征/属性)集合均有深度学习的很好基础。-邹晓辉(中美塞尔研究中心主任研究员)
个人分类: 学术研究|2180 次阅读|3 个评论
卷积神经网络(CNN)引导:物理机制和算法结构
热度 4 zoumouyan 2018-6-4 16:33
卷积神经网络(CNN)引导:物理机制和算法结构 邹谋炎 中国科学院大学 “现代数字信号处理”课程讲座 2018年6月1日 在人工智能(AI)发展中,卷积神经网络(Convolutional Neural Networks)是实现深度学习的一种重要神经网络结构。人们通过互联网可以找到许多学习资料,介绍CNN的构造、算法和结果。CNN能够完成图像识别和理解,对初学者和研究者来说最基本的需要知道最底层的物理机制。了解物理机制才有把握知识的自由度,是透析各种结构不同CNN的关键,也是获得创造自由的起点。本讲座致力于对CNN的物理机制进行解说。同时介绍相关的背景知识,希望对有兴趣者起到入门引导的作用。 可以用图示方式解说有限离散卷积的计算方法,由“卷积”计算引出对应的“点积”计算;由“点积”定义两个数组的“相似度”。而一个局部图像和一个核(模板)的点积等价于以局部图像为输入的一个神经元,该神经元的各个权值正是核(模板)的各个值。局部图像与模板相似或匹配时,该神经元将产生出最大的输出。一幅输入图像的每个局部通过各自的神经元产生出输出图像,与输入图像和核进行卷积产生输出图像,其结果是等价的。这种情况下,输入图像中如果有与核的图样相匹配的局部图样,在输出图像中将被增强而凸显出来。这是隐藏在CNN中的底层机制。这个机制对一维或高维CNN都是基本的。在神经元的构造中除了点积部分外还引入了置偏和非线性激活函数,有助于加强因匹配得到增强的特征。 一幅输入图像的每个局部通过各自的神经元产生出输出图像,这和输入图像与核进行卷积产生输出图像,其结果等价,从神经网络的角度看,产生出一幅输出图像的各个神经元,其运算是并行的,其权值是共享的,这是CNN的一个特点。通过模板匹配方式能够增强图像中的一类特征,不需要事先进行图像分割,这是CNN的另一个特点。 使用许多个不同的卷积核和同一幅图像进行卷积,就可能凸现和增强该图像与不同模板匹配的特征,这些特征表现在不同卷积核对应的不同输出图像上,这些不同输出图像形成一个有“厚度”的图像组,一起作为CNN构造的一个层。 对有厚度的CNN层进行尺寸缩减是CNN构造的重要步骤。其目的不仅仅是为了减小最终判读的工作量,而更有意义的是为了便于获取图像中更“宏观”或更“综合”的结构特征。尺寸缩减的主要方法是下采样,称为“池化”(Pooling)。例如让图像每4个单元缩减成1个单元,整个图像尺寸就缩减成原来的1/4。有两种典型的下采样方法:在4个单元中取最大值为缩减后的单元值,称为Max-pooling;取4个单元的平均值为缩减后单元值,称为Mean-pooling。 可以想象,在一次Convolution-Pooling后再重复几次Convolution –Pooling 过程,被处理的图像分辨率越来越低,结构特征越来越“粗犷”或更具综合性。为了匹配越来越具综合性的特征,卷积核或模板的图样应该做适应性变化。这样,随着CNN层数增加,原图像中的结构特征,从初级的线条、棱边,到高级的外形和复杂图样,都有可能在CNN中形成一个匹配从初级到高级的图像特征链。如果CNN中原来没有这样一个表征(识别)某个图像的特征链,通过CNN的学习算法我们总是可能建立起这样一个特征链。 很明显,为了CNN能够识别大量不同的图像,在CNN各个层中就必须有若干权(卷积核)能够匹配从初级到综合的、不同的特征,并形成一个表征输入图像特征的一列图像特征链。因此,不同卷积核的数量和图样越丰富、CNN的层数越多,CNN的识别能力就越强。 讲座中包含了便于物理机制解说的若干示意图,包含了多层CNN的结构例子;Softmax分布和图像判读方法;卷积核的选取和生成;CNN学习算法等内容。 必须指出,本讲座以下内容具有 创新性 (未见文献报道):(1)引入 相似度、特征链的概念 ,据此对CNN物理机制进行清晰解说;(2) 卷积核的生成算法 。请引用者注明出处。 本讲座适合于初入者和研究者。 CNN引导:物理机制和算法结构2018.pdf
7908 次阅读|5 个评论
双语平行语料与深度神经网络及其匹配算法之间的相互关系
geneculture 2018-4-29 12:49
4月27号(前天)冯志伟教授应邀在北大理科一号楼1303学术交流大讨论班上的报告系统回顾了机器翻译的历程,其中以上三幅ppt截图(最后一幅是邹晓辉昨天与林建祥教授林老远程回顾的时候用彩色线条和三个红苹果🍎做了标注说明的,由此不仅可见双语平行语料与深度神经网络及其匹配算法之间的相互关系,而且还可以知道我们正在做的国家自然科学基金项目与它们之间的相互关系) 2018-4-27上午的报告(冯志伟与邹晓辉) www.webmeeting.com.cn:8800/pub_recording_view_ecard.php?id=76 下午的报告(马蔼乃与邹晓辉) www.webmeeting.com.cn:8800/pub_recording_view_ecard.php?id=77 第二天即28号林建祥与邹晓辉的对话 www.webmeeting.com.cn:8800/pub_recording_view_ecard.php?id=78
个人分类: 学术研究|2057 次阅读|0 个评论
专题讨论班:深度学习(三)(周池春)
GrandFT 2018-4-19 20:55
题目:深度学习简介(三) 主讲:周池春 时间:2018年4月20日(星期五)上午10:15 地点:天津大学新校区32教学楼302室 提纲: 1 深度学习中的正则化。关键词: 参数范数惩罚、数据集增强、噪声鲁棒性、提前终止、稀疏表示、对抗训练等。 2 深度模型中的优化。关键词:批量算法、梯度爆炸、Nesterov动量、AdaGrad、RMSProp、Adam、监督预训练等。 3 Linux系统下tenserflow 环境搭建。 参考书:Ian Goodfellow, Yoshua Bengio, Aaron Courville《DEEP LEARNING》
个人分类: 专题讨论班|2191 次阅读|0 个评论
专题讨论班:深度学习(二)(周池春)
GrandFT 2018-4-18 21:13
题目:深度学习(二) 主讲:周池春 时间:2018年4月19日(星期四)上午10:15 地点:天津大学新校区32教学楼302室 提纲: 1 BP算法的python编程实现例子。 2 信息论。 3 RNN 模型以及其变形模型。 参考书: Ian Goodfellow, Yoshua Bengio, Aaron Courville《DEEP LEARNING》; 周志华《机器学习》; 吴军 《数学之美》。
个人分类: 专题讨论班|1826 次阅读|0 个评论
专题讨论班:深度学习(一)(周池春)
GrandFT 2018-4-17 16:50
题目:深度学习 主讲:周池春 时间:2018年4月18日(星期三)上午8:00 地点:天津大学新校区32教学楼302室 提纲: 1. 应用数学与深度学习基础。关键词:主成分分析、信息论、概率论的频率学派与贝叶斯学派。 2. 数值计算。关键词:梯度下降法。 3. 机器学习基础。关键词:容量、超参数、交叉验证、最大似然估计、最大后验估计、监督学习、无监督学习等。 4. 深度前馈网络。关键词:激活函数、反向传播算法。 参考书:Ian Goodfellow, Yoshua Bengio, Aaron Courville《DEEP LEARNING》
个人分类: 专题讨论班|2305 次阅读|0 个评论
[转载]DeepMind黄士杰:深度学习有创造性,正参与星际2项目
Kara0807 2018-3-30 23:08
本文转载自公众号“量子位” 最近,AlphaGo“人肉臂”黄士杰回到台北参加了Google举办的一次人工智能论坛。并且发表了《AlphaGo与AI的黄金时代》演讲。 从小就喜欢围棋的黄士杰,求学期间就一直对围棋软件感兴趣。他在博士班期间开发了Erica,这个单机版本的围棋软件,当时打败了围棋领域最强的AI、使用了六台机器的Zen。 也正是如此,DeepMind的核心人物David Silver力邀黄士杰加盟,而后者也成为DeepMind第40号员工。 不过,他第一次踏进DeepMind那天,这家公司的创始人就跟他说,DeepMind并不打算朝围棋方向发展,因为他们的目标不是在特定领域成为最佳,而是希望搞出通用人工智能,让AI解决人类无法解决的问题。 但是,随着深度学习等技术的不断进步,DeepMind最后还是决定启动围棋项目。 为了研发出AlphaGo,DeepMind团队尝试过上百个想法,发展过程就是不停的实验、实验、实验,不停学习新理论。 实际上,在击败李世乭之后,DeepMind就曾打算终止AlphaGo项目,但是考虑到第四局犯下的错误,他们还是决定仍然使用神经网络把这个问题修正掉,毕竟有缺陷的AI会失去他人的信任。 这就有了后续AlphaGo的继续进步。 黄士杰表示,AlphaGo在围棋领域做出了很多令人震撼的下法,在国际象棋领域也是如此。黄士杰认为,这些都是深度学习具有“创造性”的表现。 目前AlphaGo项目已经正式终结,黄士杰透露DeepMind正在研发能打《星际争霸2》的AI,而他本人也参与了这个项目。 很多人认为在即时战略游戏中,AI的反应速度会成为极大的优势,但事实并非如此。 黄士杰解释称,围棋只有361个落子点,对AI来说全部游戏内容都是可见的。但《星际争霸2》游戏有大量全黑的地图,玩家需要探索地图以及侦查对手动向,才能制定相应的策略。 几乎每次鼠标移动,都能视为一次落子。这种不确定性让《星际争霸2》对AI来说,难度比围棋要高很多。 长期研究人工智能的黄士杰认为,人类还是最聪明,AI会成为一种协助工具,帮助人类解决一些实际问题,例如早期癌症的诊断。 📚 往期文章推荐 AI+区块链丨区块链如何解锁人工智能新领域 🔗 北大黄铁军专访:“新一代人工智能产业技术创新战略联盟”成立8个月做了哪些事? 🔗 人工智能荣登《自然》杂志:超级AI系统可用于诊断近100种脑癌 🔗 这里有一个免费查看学术期刊的小程序,了解一下? 🔗 【NSR特别专题】香港科技大学杨强:多任务学习概述 🔗 【NSR特别专题】清华大学朱军:关于图的表达学习 🔗 【NSR特别专题】CMU张坤:学习因果关系和基于因果关系的学习 🔗 中科院王飞跃:第三轴心时代的智能产业,创立发展智能科技的新“直道” 🔗 【大国重器】2018国家机器人发展论坛为何花落柯桥? 🔗 中国工程院院士何友:工业大数据及其应用 🔗 2018年度国家科技奖提名公示,信息科学组获47项提名(附提名项目)
个人分类: 德先生|1223 次阅读|0 个评论
【尼沙龙笔记:从AI那点事儿聊到知识图谱】
liwei999 2017-12-24 04:11
洪: 老尼八卦真是勤快: 红利扑克:王劲其人-好色、背信、拍马屁 陈: 到了百度,他带去了得意手下Alex(新加坡人),某丽(美籍华人),还有旧部某栋,还接管了金牌得主大牛戴某渊。他咋啥都知道。还好没说洪爷。 洪: 的确道听途说,许多因果都颠倒了。某栋是我拉进去做凤巢,老王来了就跑路了 陈: 你也是坏淫啊 洪: 老尼八卦忒勤奋, 道听途说扒某劲。 天地或真显冥冥, 有绳有网施报应。 行: 老尼看来就主要对x劲来劲 李: 老尼不是尼克吗? AI那点事儿,非尼老莫属,有道是: 尼老老尼拧不清, AI 八卦两争雄。 一神一鬼一冰冰, 老道洪爷说分明。 洪: 我以前跟人总结说,某栋来助一臂之力做凤巢(其实他原来是edward chang下面做social network机器学习推荐算法的,也不是做广告的),某度尝到了招谷里人的技术甜头。过了一年凤巢都上线了。隔壁老王带俩管理的人他们才来,本来老王允诺要来的技术专家某Paul被腾讯截胡抢走了。就这样,技术甜头成了管理毒药。 “尼”真是好字,谁粘谁 李: 洪爷不出山写本英雄传,正本清源,可惜了。看尼克形单影只孤身奋战,谣言比八卦远行 ---- 唯冰冰永存。 洪: 都是江湖破事,不值得写书。悠悠万事,唯此为大,还是AI为重。 李: 认真说,我对历史八卦兴趣不大,倒是非常好奇这一波AI热如何收场,我们都是不同程度的吹鼓手。泼冷水偶尔为之,但总体大多推波助澜,可三年、五年、八年之后究竟如何呢?有点害怕。“谨慎乐观”感觉上甚至都太乐观了一点。万一历史循环,AI 打入冷宫,不受人待见,我们这拨人要想等下一波的AI热,是没戏了。到时候,我们人人都可以学个星座,做八卦家,把酒话桑麻,对着资深女神冰老太,哼着AI小曲儿:商女不知亡国恨,隔江犹唱后庭花. ..... 唐: 以中国干大跃进的精神,这次AI肯定吹过了。 李: 问题是:这次大跃进可以不可以软着陆?省得鸡飞蛋打,大家伙儿都成了殉葬品。 张: 现在政府把AI作为政绩,如果谁谁引进国际知名专家(比如太湖洗澡蟹从阳澄湖捞出来)然后成立一个联合研究中心,各大园区可以给几千万到一个亿。各位大咖赶脚的,过这村没这店了。 洪: AI落到实处就跟数据库似的,休要担惊少要害怕@wei 唐: AI都经历过两次寒冬了,第三次来了也不怕。尤其是打算做AI芯片的,寒冬时做才能踏在前人的血迹上前进。 洪: 年轻人挣房钱奶粉钱,院士们挣名利,政客挣中国梦,……,各得其所 尼: @唐 寒冬时也没见你做啊。 唐: 我上次做的也是NPU。 洪: NP了您啊。 李: @洪 AI落到实处就是知识图谱,可不就跟数据库似的。我心戚戚呀。洪爷火眼。 董: @洪 真正的明白人,深刻、看得透。 唐: 知识图谱不是很难表达有条件的知识吗?要想快速落地,我觉得还是规则库靠谱。 李: 那就结合呗,横竖都是库。 库啊、谱啊就是个筐,啥 AI 都可以往里装。 唐: 关键还是几个数据库之间的join比较难做?在工程实践当中还是有点难度处理的。 李: 现如今图谱好听,就叫图谱,里面可以有 unigram 知识,bigram 的关系,if then productions (所谓产生式),甚至 prolog backtracking,...... 董: 如今流行的“知识图谱”是怎么告诉计算机:“什么是‘有/‘have’’? 唐: Prolog缺的是现在大数据最擅长的统计学知识。很多知识是动态的。例如:过去五天工作日的平均值,这个知识图谱无法表示,需要动态地计算。 李: 唐老师的视角还是太技术细节,太工程,技术上的实现与打通终归是可行的,只要哲学不错,实现上有的是能人。认真说,从万米高空俯瞰知识表达,没结构的知识就是传统词典,里面除了入口词,output就是各种features,那是通向ontology的门票。有结构的知识统统可以叫图谱(graph,广义),包括 svo(open domain 的碎片事件),包括 ontology,里面分常识 (HowNet,cyc)与领域知识(譬如“产品目录手册”),再里面可以区分简单知识,与经验型推理知识,后者也可以涵盖从大数据挖掘出来的 if then scenario,以及 hidden links,它们不再是碎片化情报,也不是大数据显性表达的事实(已知信息),而是蕴含在千千万万事实里面的 correlations,是 derived 出来的新知识,积淀为领域场景经验的形式化,这是对领域本体知识的一个动态补充,可算是图谱事业最前沿的研究了。大数据挖掘出来的过往trends,可以是对未来预测的很好的输入。 最后,也是最核心最基础的,就是情报类知识(知识图谱的本义,或窄义),也是静态语汇为基础,不过入口词大多为实体名(named entities),里面就是实体间关系(relationships),然后就是事件(events),事件串起来就成了story ...... 唐: 大体上就是这些知识。 综合起来是一项复杂的工程实践。 李: 有了story 就好说事儿了。有句名言(到处都是这大标语),云:抬头讲故事,低头思故乡 ...... oops 低头干实事儿。 唐: 我们现在就在做。领域知识+安全情报的结合。 发现这主要是数据清理的活。 李: 清理极端重要。不过听上去不够高大上,给人感觉就是个扫大街的。唐老师是实干家。 唐: 被逼无奈,以解决问题为主。 李: 知识(图谱)的事儿 的确是一个巨大的系统工程。这方面 还真应该赞佩一下 IBM,他们懂得怎么把混杂的知识捏在一起,成就一个计算机博物馆里的里程碑事件(博物馆有几个AI里程碑展厅,其中一个就是IBM花生系统在知识问答TV竞赛中击败人类)。当然 人家也有那个财力和底气。 洪: @wei 这两天我献给你一个打油偈子。 李: 打油在哪儿?我不怕打油 ..... or 被打油。 洪: @wei 我还在酝酿啊,从你翻译的ken church的钟摆开始说起。 李: 从来没有耐性做翻译,但那篇太经典,是@董振东老师给我特别推荐的,最后下定决心翻译出来。以对经典的虔敬心理,字斟句酌,旬月踯躅,有些细节反复与 Church 电邮请教商榷。董老师也做了审阅 ,终于成篇。【计算机通讯】发了后,貌似没有动静,毕竟与主流的调子不合拍。后来被一个叫《机器之心》的转载,才似乎传播开一点。人智八卦大师尼克也点了赞,NLP 的钟摆,就是 AI 起落的实例。 NLP主流反思的扛鼎之作: 立委译《Church:钟摆摆得太远》(全) 郭: @wei 这篇现在看,写的早了些,缺乏对深度神经的洞察,因而现如今不容易触动人心,还不如一句“炼丹术”激起千层浪。 李: 天不变道不变,天变了道亦不变,是为经典。 其实 Church 写完后颇落寞,根本没啥动静呀。新锐不理他(机器学习老一辈不吃香了,新一代深度学习小牛成长起来,此一时彼一时,长江后浪推前浪啊)。他是统计派老革命家,我写信问他深度神经与AI钟摆的关系,他回说:看样子钟摆的理性主义回摆还要延宕10年,这波深度神经热潮够他们忙一阵子了。 是啊,人类本性,不触礁,不回船。现在呼吁两派革命大团结的,大多是老司机了。他们辉煌过,也触过礁,知道AI和NLP的深浅,而且忧国忧民,不像初生牛犊那样高歌猛进无暇他看。 写这句结语的时候,在我心中,老司机就是李航这样的,而初生牛犊 我也见过几个 那真是满满正能量,AI 乐观主义,很感染人:新锐AI技术领军,单气势就招人喜爱。在他们面前,老朽不知道说啥好了,先道天凉好个冬,再道冬至饺子香(南湾有个同同手工水饺,昨晚去那叫一个门庭若市)。 在最近的中文信息学会年会上,李航和我都被特邀做了报告,我谈中文NLP的迷思及其化解之道,顺带批判乔姆斯基搞砸了符号逻辑和规则系统,李航强调的是知识记忆,觉得这是AI的未来,因为目前AI主流大多是端到端,老熊掰棒子,没有知识积累,知识都是从带标大数据现学的,换一个项目,一切重来。李航 argue 说,这不是人类的知识学习方式。我问他,难道知识图谱不是知识积累和记忆吗?他说,也许我说没有记忆和积累是 overstatement,知识图谱的确是积累并且可以跨项目重复使用的。但他又 added 说,但大多数系统是不用知识图谱的。他说得对,知识图谱作为话题虽然很热,但真正用知识图谱做系统应用的人目前很少。但我个人认为,未来应该是个大方向。 【相关】 【语义计算:李白对话录系列】 【置顶:立委NLP博文一览】 《朝华午拾》总目录
个人分类: 立委科普|3042 次阅读|0 个评论
[转载]NIPS 2017经典论文奖获得者机器学习「炼金术」说引热议。。。
fanlixin 2017-12-11 10:17
转评:Ali Rahimi 的炼金术 (或者按中国传统,炼丹术)评论并不是无的放矢, 特别地, 他举了 batch-normalization 的例子来说明,没有理论支持的各种tricks很可能会误导研究的方向。无独有偶,我的NIPS文章 也说明了batch-normalization并不是本质性的和必不可少的。 但是,学界必须鼓励以实验为导向的研究。 类似于地理大发现,早期的探索者们并不会有完整的理论 ( 地图 ) ,但他们的发现极大地延伸了我们的视野,将为理论的建立奠定基础。 Revisit Fuzzy Neural Network: Demystifying Batch Normalization and ReLU with Generalized Hamming Network http://papers.nips.cc/paper/6788-revisit-fuzzy-neural-network-demystifying-batch-normalization-and-relu-with-generalized-hamming-network ========== 观点 | NIPS 2017经典论文奖获得者机器学习「炼金术」说引热议,LeCun发起反驳 2017-12-08 机器之心 机器之心报道 参与: 路雪、刘晓坤、李泽南 去年的 NIPS 曾因 GAN 引发了一场风波 ,而今年的 NIPS 同样有着不同思想的碰撞,而这场机器学习「炼金术」讨论竟是从大会颁奖典礼上开始的。 谷歌研究员,MIT 博士 Ali Rahimi 获得了今年 NIPS Test of Time 大奖,他在颁奖时上做了一番演讲,主要介绍之前的研究成果,他在演讲中还打了个比方「机器学习是炼金术」,但这一言论遭到了 Yann LeCun 的反驳。在这篇文章中我们将看到不同思想的碰撞。 Ali Rahimi 的完整演讲视频 Ali Rahimi 在演讲中说道: 「吴恩达曾说过, 机器学习就像是新时代的电力 。我却认为,机器学习正在变成新时代的炼金术。炼金术本身并不坏,它引出了冶金、纺织、玻璃制造,也推动了人类医疗科技的发展;但与此同时,炼金术师还用水蛭来给人治病,希望让其他金属变成金子。」 「对于 18 世纪的物理学和化学而言,想要理解宇宙的法则,科学家们需要努力抵抗有两千年历史的炼金术的不利影响。」 「现在,如果我们想要做一个图片分享系统,『炼金术』是可以奏效的。但我们的需求早已不止这些了。我们正在试图构建基于人工智能的医疗服务系统、对话系统,我们的机器学习系统甚至影响了大选结果。我希望我所生活的世界是基于非常稳固、有规律的、理论性的知识之上的——而不是炼金术之上。」 「过去 NIPS 大会上经常出现的『学术警察』在哪里?我非常怀念他们。」 …… 「我们现在是这样构建新知识的:我们应用最好的工具,简单地分析自己做的设置,我们学习现象,然后在自己不理解背后原理的情况下完成了研究。就这么完成了。」 Yann LeCun 对此番言论表示道: Ali Rahimi 在 NIPS 上的演讲很好,很有意思,但是我不同意他的观点。他的主要观点是机器学习的当前实践就像「炼金术」(alchemy)。 这种观点具有侮辱性,而且也是错误的! Ali 抱怨当前机器学习尤其是深度学习使用的很多方法缺少(理论)理解。(理论或其他方面的)理解当然重要。这正是我们很多人参加 NIPS 大会的目的。但另一个重要目标是发明新方法、新技术和新技巧。 在科技发展史上,工程的发展几乎总是先于理论理解:镜头和望远镜的发展早于光学理论、蒸汽机的发展超越热动力学、飞机的发展快于空气力学、无线电和数据通信的发展快于信息理论、计算机的发展早于计算机科学。 原因何在?因为理论家本能地研究「简单的」现象,不主动研究复杂现象,除非它具备很重要的实践意义。 仅仅因为理论没有追赶上实践的水平,就批评整个机器学习社区使用「炼金术」,这种言论是危险的。 为什么危险?正是这种态度使机器学习社区放弃神经网络 10 年有余,尽管大量实证研究证明神经网络在很多情况下非常有效。 之前,神经网络和非凸损失函数不确保一定会收敛,不过它们在实践中是奏效的(和现在一样)。但是人们就这样不分良莠地将它舍弃,转而专注于「可证明」的凸方法或「被夸大的」模板匹配方法(甚至 1957 年的随机特征方法)。 坚持一套方法仅仅因为它的理论比较充分,并因此忽视另一套实践效果更好的方法,仅仅因为缺乏理论理解,这种做法何异于缘木求鱼(原文:就像你在街灯下找丢失的车钥匙,虽然心里明明知道丢钥匙的地方并不在这)。 是的,我们需要更好地理解方法。但是正确的态度是尝试改变现状,而不是因为现状没有得到改变而去侮辱整个社区。 我组织和参加过很多深度学习研究者和理论家参与的 workshop,有些 workshop 由 IPAM 举办。作为 IPAM 科学顾问委员会的一员,我的使命就是使深度学习获得数学社区的注意。事实上,我作为联合组织者组织了一场将于 2018 年 2 月举办的 workshop(http://www.ipam.ucla.edu/…/wo…/new-deep-learning-techniques/)。 如果你不满意我们对你们日常使用方法的理解,那么就去改变它:研究深度学习理论,而不是抱怨别人不去做这件事,也不是认为如果仅使用「理论正确」的方法,NIPS 会变得更好。并不是这样。 Ali Rahimi 的回复: Yann,感谢你的理智回应。「If you don't like what's happening, fix it」正是 Moritz Hardt 一年前告诉我的话。仅靠一个小群体是很难做出重大成果的,说实话,我已经被这个任务的巨大规模所淹没而不知所措。我这次演讲的目的就是请求他人的帮助。 我认为问题并不在于理论,而在于教育。我呼吁的是简单的定理和简单的实验,从而让所有人能无障碍地交流各自的见解。你很擅长构建深度学习模型,是因为你运行实验的经验比多数人都丰富。想象一下新手的困惑处境吧。我们做的事情的确看起来像魔法,因为我们并不讨论技术细节,而是模型整体。入门的过程太神秘了。 我同意炼金术式的方法很重要,正是它们使我们加快速度。这些方法解决了很多紧迫的问题。 我很尊重那些能快速在大脑中构建直觉和可行系统的人。你和我在谷歌的大多数同事都具备这种能力,但你们只是少数。 我希望你们传授一些技术细节,帮助我们也能达到你们级别的生产能力。而这就需要:简单的实验,简单的理论。 Yan LeCun 的回复: 简单而通用的理论当然很好。 热力学理论告诉我们不要浪费时间寻找拥有 100% 效率的热机或者永动机。 机器学习中也已经有这样适用于所有学习机器包括神经网络的理论(例如,VC theory consistency/capacity、没有免费午餐定理等)。 但我们很可能不会有具体到神经网络的「简单」理论,就像纳维-斯托克斯方程和三体问题也没有解析解。 虽然目前机器学习的部分工具还存在「黑箱」区域,但这项技术毫无疑问正处在越来越快的发展过程中,正如 Ali Rahimi 在演讲中所说的,希望随着人们的努力,我们能够最终将「炼金术」转化为真正的「电力」。 本文为机器之心报道, 转载请联系本公众号获得授权 。 ✄------------------------------------------------
1960 次阅读|1 个评论
如何用Python和深度神经网络发现即将流失的客户?
热度 1 wshuyi 2017-11-19 19:08
想不想了解如何用Python快速搭建深度神经网络,完成数据分类任务?本文一步步为你展示这一过程,让你初步领略深度学习模型的强大和易用。 烦恼 作为一名数据分析师,你来到这家跨国银行工作已经半年了。 今天上午,老板把你叫到办公室,面色凝重。 你心里直打鼓,以为自己捅了什么篓子。幸好老板的话让你很快打消了顾虑。 他发愁,是因为最近欧洲区的客户流失严重,许多客户都跑到了竞争对手那里接受服务了。老板问你该怎么办? 你脱口而出“做好客户关系管理啊!” 老板看了你一眼,缓慢地说“我们想知道哪些客户最可能在近期流失”。 没错,在有鱼的地方钓鱼,才是上策。 你明白了自己的任务——通过数据锁定即将流失的客户。这个工作,确实是你这个数据分析师分内的事儿。 你很庆幸,这半年做了很多的数据动态采集和整理工作,使得你手头就有一个比较完备的客户数据集。 下面你需要做的,就是如何从数据中“沙里淘金”,找到那些最可能流失的客户。 可是,该怎么做呢? 你拿出欧洲区客户的数据,端详起来。 客户主要分布在法国、德国和西班牙。 你手里掌握的信息,包括他们的年龄、性别、信用、办卡信息等。客户是否已流失的信息在最后一列(Exited)。 怎么用这些数据来判断顾客是否会流失呢? 以你的专业素养,很容易就判断出这是一个分类问题,属于机器学习中的监督式学习。但是,你之前并没有做过实际项目,该如何着手呢? 别发愁,我一步步给你演示如何用Python和深度神经网络(或者叫“深度学习”)来完成这个分类任务,帮你锁定那些即将流失的客户。 环境 工欲善其事,必先利其器。我们先来安装和搭建环境。 首先是安装Python。 请到 这个网址 下载Anaconda的最新版本。 请选择左侧的Python 3.6版本下载安装。 其次是新建文件夹,起名为demo-customer-churn-ann,并且从 这个链接 下载数据,放到该文件夹下。 (注:样例数据来自于匿名化处理后的真实数据集,下载自 superdatascience官网 。) 打开终端(或者命令行工具),进入demo-customer-churn-ann目录,执行以下命令: jupyter notebook 浏览器中会显示如下界面: 点击界面右上方的New按钮,新建一个Python 3 Notebook,起名为customer-churn-ann。 准备工作结束,下面我们开始清理数据。 清理 首先,读入数据清理最常用的pandas和numpy包。 import numpy as np import pandas as pd 从 customer_churn.csv 里读入数据: df = pd.read_csv( 'customer_churn.csv' ) 看看读入效果如何: df.head() 这里我们使用了 head() 函数,只显示前5行。 可以看到,数据完整无误读入。但是并非所有的列都对我们预测用户流失有作用。我们一一甄别一下: RowNumber:行号,这个肯定没用,删除 CustomerID:用户编号,这个是顺序发放的,删除 Surname:用户姓名,对流失没有影响,删除 CreditScore:信用分数,这个很重要,保留 Geography:用户所在国家/地区,这个有影响,保留 Gender:用户性别,可能有影响,保留 Age:年龄,影响很大,年轻人更容易切换银行,保留 Tenure:当了本银行多少年用户,很重要,保留 Balance:存贷款情况,很重要,保留 NumOfProducts:使用产品数量,很重要,保留 HasCrCard:是否有本行信用卡,很重要,保留 IsActiveMember:是否活跃用户,很重要,保留 EstimatedSalary:估计收入,很重要,保留 Exited:是否已流失,这将作为我们的标签数据 上述数据列甄别过程,就叫做“特征工程”(Feature Engineering),这是机器学习里面最常用的数据预处理方法。如果我们的数据量足够大,机器学习模型足够复杂,是可以跳过这一步的。但是由于我们的数据只有10000条,还需要手动筛选特征。 选定了特征之后,我们来生成特征矩阵X,把刚才我们决定保留的特征都写进来。 X = df.loc ] 看看特征矩阵的前几行: X.head() 显示结果如下: 特征矩阵构建准确无误,下面我们构建目标数据y,也就是用户是否流失。 y = df.Exited! (http://upload-images.jianshu.io/upload_images/ 64542 -a15e6d0d91c8b28e.jpg?imageMogr2/auto-orient/strip% 7 CimageView2/ 2 /w/ 1240 ) y.head() 0 1 1 0 2 1 3 0 4 0 Name: Exited, dtype: int64 此时我们需要的数据基本上齐全了。但是我们发现其中有几列数据还不符合我们的要求。 要做机器学习,只能给机器提供数值,而不能是字符串。可是看看我们的特征矩阵: X.head() 显然其中的Geography和Gender两项数据都不符合要求。它们都是分类数据。我们需要做转换,把它们变成数值。 在Scikit-learn工具包里面,专门提供了方便的工具 LabelEncoder ,让我们可以方便地将类别信息变成数值。 from sklearn.preprocessing import LabelEncoder, OneHotEncoder labelencoder1 = LabelEncoder() X.Geography= labelencoder1.fit_transform(X.Geography) labelencoder2 = LabelEncoder() X.Gender = labelencoder2.fit_transform(X.Gender) 我们需要转换两列,所以建立了两个不同的labelencoder。转换的函数叫做 fit_transform 。 经过转换,此时我们再来看看特征矩阵的样子: X.head() 显然,Geography和Gender这两列都从原先描述类别的字符串,变成了数字。 这样是不是就完事大吉了呢? 不对,Gender还好说,只有两种取值方式,要么是男,要么是女。我们可以把“是男性”定义为1,那么女性就取值为0。两种取值只是描述类别不同,没有歧义。 而Geography就不同了。因为数据集里面可能的国家地区取值有3种,所以就转换成了0(法国)、1(德国)、2(西班牙)。问题是,这三者之间真的有序列(大小)关系吗? 答案自然是否定的。我们其实还是打算用数值描述分类而已。但是取值有数量的序列差异,就会给机器带来歧义。它并不清楚不同的取值只是某个国家的代码,可能会把这种大小关系带入模型计算,从而产生错误的结果。 解决这个问题,我们就需要引入 OneHotEncoder 。它也是Scikit-learn提供的一个类,可以帮助我们把类别的取值转变为多个变量组合表示。 咱们这个数据集里,可以把3个国家分别用3个数字组合来表示。例如法国从原先的0,变成 (1, 0, 0) ,德国从1变成 (0, 1, 0) ,而西班牙从2变成 (0, 0, 1) 。 这样,再也不会出现0和1之外的数字来描述类别,从而避免机器产生误会,错把类别数字当成大小来计算了。 特征矩阵里面,我们只需要转换国别这一列。因为它在第1列的位置(从0开始计数),因而 categorical_features 只填写它的位置信息。 onehotencoder = OneHotEncoder(categorical_features = ) X = onehotencoder.fit_transform(X).toarray() 这时候,我们的特征矩阵数据框就被转换成了一个数组。注意所有被OneHotEncoder转换的列会排在最前面,然后才是那些保持原样的数据列。 我们只看转换后的第一行: X array ( ) 这样,总算转换完毕了吧? 没有。 因为本例中,OneHotEncoder转换出来的3列数字,实际上是不独立的。给定其中两列的信息,你自己都可以计算出其中的第3列取值。 好比说,某一行的前两列数字是 (0, 0) ,那么第三列肯定是1。因为这是转换规则决定的。3列里只能有1个是1,其余都是0。 如果你做过多元线性回归,应该知道这种情况下,我们是需要去掉其中一列,才能继续分析的。不然会落入 “虚拟变量陷阱” (dummy variable trap)。 我们删掉第0列,避免掉进坑里。 X = np.delete(X, , 1 ) 再次打印第一行: X array ( ) 检查完毕,现在咱们的特征矩阵处理基本完成。 但是监督式学习,最重要的是有标签(label)数据。本例中的标签就是用户是否流失。我们目前的标签数据框,是这个样子的。 y.head() 0 1 1 0 2 1 3 0 4 0 Name: Exited, dtype: int64 它是一个行向量,我们需要把它先转换成为列向量。你可以想象成把它“竖过来”。 y = y y array ( , , , ..., , , ]) 这样在后面训练的时候,他就可以和前面的特征矩阵一一对应来操作计算了。 既然标签代表了类别,我们也把它用OneHotEncoder转换,这样方便我们后面做分类学习。 onehotencoder = OneHotEncoder() y = onehotencoder.fit_transform(y).toarray() 此时的标签变成两列数据,一列代表顾客存留,一列代表顾客流失。 y array ( , , , ..., , , ]) 总体的数据已经齐全了。但是我们 不能 把它们 都用来 训练。 这就好像老师不应该把考试题目拿来给学生做作业和练习一样。只有考学生没见过的题,才能区分学生是掌握了正确的解题方法,还是死记硬背了作业答案。 我们拿出20%的数据,放在一边,等着用来做测试。其余8000条数据用来训练机器学习模型。 from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2 , random_state = 0 ) 我们看看训练集的长度: len(X_train) 8000 再看看测试集的长度: len(X_test) 2000 确认无误。 是不是可以开始机器学习了? 可以,但是下面这一步也很关键。我们需要把数据进行标准化处理。因为原先每一列数字的取值范围都各不相同,因此有的列方差要远远大于其他列。这样对机器来说,也是很困扰的。数据的标准化处理,可以在保持列内数据多样性的同时,尽量减少不同类别之间差异的影响,可以让机器公平对待全部特征。 我们调用Scikit-learn的 StandardScaler 类来完成这一过程。 from sklearn.preprocessing import StandardScaler sc = StandardScaler() X_train = sc.fit_transform(X_train) X_test = sc.transform(X_test) 注意,我们只对特征矩阵做标准化,标签是不能动的。另外训练集和测试集需要按照 统一的标准 变化。所以你看,训练集上,我们用了 fit_transform 函数,先拟合后转换;而在测试集上,我们直接用训练集拟合的结果,只做转换。 X_train array ( , , , ..., , , ]) 你会发现,许多列的方差比原先小得多。机器学习起来,会更加方便。 数据清理和转换工作至此完成。 决策树 如果读过我的《 贷还是不贷:如何用Python和机器学习帮你决策? 》一文,你应该有一种感觉——这个问题和贷款审批决策很像啊!既然在该文中,决策树很好使,我们继续用决策树不就好了? 好的,我们先测试一下经典机器学习算法表现如何。 从Scikit-learn中,读入决策树工具。然后拟合训练集数据。 from sklearn import tree clf = tree.DecisionTreeClassifier() clf = clf.fit(X_train, y_train) 然后,利用我们建立的决策树模型做出预测。 y_pred = clf.predict(X_test) 打印预测结果: y_pred array ( , , , ..., , , ]) 这样看不出来什么。让我们调用Scikit-learn的 classification_report 模块,生成分析报告。 from sklearn.metrics import classification_report print(classification_report(y_test, y_pred)) precision recall f1-score support 0 0 . 89 0 . 86 0 . 87 1595 1 0 . 51 0 . 58 0 . 54 405 avg / total 0 . 81 0 . 80 0 . 81 2000 经检测,决策树在咱们的数据集上,表现得还是不错的。总体的准确率为0.81,召回率为0.80,f1分数为0.81,已经很高了。对10个客户做流失可能性判断,它有8次都能判断正确。 但是,这样是否足够? 我们或许可以调整决策树的参数做优化,尝试改进预测结果。 或者我们可以采用 深度学习 。 深度 深度学习的使用场景,往往是因为原有的模型经典机器学习模型过于简单,无法把握复杂数据特性。 我不准备给你讲一堆数学公式,咱们动手做个实验。 请你打开 这个网址 。 你会看到如下图所示的深度学习游乐场: 右侧的图形,里面是蓝色数据,外圈是黄色数据。你的任务就是要用模型分类两种不同数据。 你说那还不容易?我一眼就看出来了。 你看出来没有用。通过你的设置,让机器也能正确区分,才算数。 图中你看到许多加减号。咱们就通过操纵它们来玩儿一玩儿模型。 首先,点图中部上方的2 HIDDEN LAYERS左侧减号,把中间隐藏层数降低为1。 然后,点击2 neurons上面的减号,把神经元数量减少为1。 把页面上方的Activation函数下拉框打开,选择“Sigmoid”。 现在的模型,其实就是经典的逻辑回归(Logistic Regression)。 点击左上方的运行按钮,我们看看执行效果。 由于模型过于简单,所以机器绞尽脑汁,试图用一条直线切分二维平面上的两类节点。 损失(loss)居高不下。训练集和测试集损失都在0.4左右,显然不符合我们的分类需求。 下面我们试试增加层数和神经元数量。这次点击加号,把隐藏层数加回到2,两层神经元数量都取2。 再次点击运行。 经过一段时间,结果稳定了下来,你发现这次电脑用了两条线,把平面切分成了3部分。 测试集损失下降到了0.25左右,而训练集损失更是降低到了0.2以下。 模型复杂了,效果似乎更好一些。 再接再厉,我们把第一个隐藏层的神经元数量增加为4看看。 点击运行,不一会儿有趣的事情就发生了。 机器用一条近乎完美的曲线把平面分成了内外两个部分。测试集和训练集损失都极速下降,训练集损失甚至接近于0。 这告诉我们,许多时候模型过于简单带来的问题,可以通过加深隐藏层次、增加神经元的方法提升模型复杂度,加以改进。 目前流行的划分方法,是用隐藏层的数量多少来区分是否“深度”。当神经网络中隐藏层数量达到3层以上时,就被称为“深度神经网络”,或者“深度学习”。 久闻大名的深度学习,原来就是这么简单。 如果有时间的话,建议你自己在这个游乐场里多动手玩儿一玩儿。你会很快对神经网络和深度学习有个感性认识。 框架 游乐场背后使用的引擎,就是Google的深度学习框架Tensorflow。 所谓框架,就是别人帮你构造好的基础软件应用。你可以通过调用它们,避免自己重复发明轮子,大幅度节省时间,提升效率。 支持Python语言的深度学习的框架有很多,除了Tensorflow外,还有PyTorch, Theano和MXNet等。 我给你的建议是,找到一个你喜欢的软件包,深入学习使用,不断实践来提升自己的技能。 千万不要 跟别人争论哪个深度学习框架更好。一来萝卜白菜各有所爱,每个人都有自己的偏好;二来深度学习的江湖水很深,言多有失。说错了话,别的门派可能会不高兴哟。 我比较喜欢Tensorflow。但是Tensorflow本身是个底层库。虽然随着版本的更迭,界面越来越易用。但是对初学者来说,许多细节依然有些过于琐碎,不容易掌握。 初学者的耐心有限,挫折过多容易放弃。 幸好,还有几个高度抽象框架,是建立在Tensorflow之上的。如果你的任务是 应用 现成的深度学习模型,那么这些框架会给你带来非常大的便利。 这些框架包括Keras, TensorLayer等。咱们今天将要使用的,叫做TFlearn。 它的特点,就是长得很像Scikit-learn。这样如果你熟悉经典机器学习模型,学起来会特别轻松省力。 实战 闲话就说这么多,下面咱们继续写代码吧。 写代码之前,请回到终端下,运行以下命令,安装几个软件包: pip install tensorflow pip install tflearn 执行完毕后,回到Notebook里。 我们呼叫tflearn框架。 import tflearn 然后,我们开始搭积木一样,搭神经网络层。 首先是输入层。 net = tflearn.input_data(shape= ) 注意这里的写法,因为我们输入的数据,是特征矩阵。而经过我们处理后,特征矩阵现在有11列,因此shape的第二项写11。 shape的第一项,None,指的是我们要输入的特征矩阵行数。因为我们现在是搭建模型,后面特征矩阵有可能一次输入,有可能分成组块输入,长度可大可小,无法事先确定。所以这里填None。tflearn会在我们实际执行训练的时候,自己读入特征矩阵的尺寸,来处理这个数值。 下面我们搭建隐藏层。这里我们要使用深度学习,搭建3层。 net = tflearn.fully_connected(net, 6 , activation= 'relu' ) net = tflearn.fully_connected(net, 6 , activation= 'relu' ) net = tflearn.fully_connected(net, 6 , activation= 'relu' ) activation刚才在深度学习游乐场里面我们遇到过,代表激活函数。如果没有它,所有的输入输出都是线性关系。 Relu函数是激活函数的一种。它大概长这个样子。 如果你想了解激活函数的更多知识,请参考后文的学习资源部分。 隐藏层里,每一层我们都设置了6个神经元。其实至今为之,也不存在最优神经元数量的计算公式。工程界的一种做法,是把输入层的神经元数量,加上输出层神经元数量,除以2取整。咱们这里就是用的这种方法,得出6个。 搭好了3个中间隐藏层,下面我们来搭建输出层。 net = tflearn.fully_connected(net, 2 , activation= 'softmax' ) net = tflearn.regression(net) 这里我们用两个神经元做输出,并且说明使用回归方法。输出层选用的激活函数为softmax。处理分类任务的时候,softmax比较合适。它会告诉我们每一类的可能性,其中数值最高的,可以作为我们的分类结果。 积木搭完了,下面我们告诉TFlearn,以刚刚搭建的结构,生成模型。 model = tflearn.DNN(net) 有了模型,我们就可以使用拟合功能了。你看是不是跟Scikit-learn的使用方法很相似呢? model.fit(X_train, y_train, n_epoch= 30 , batch_size= 32 , show_metric= True ) 注意这里多了几个参数,我们来解释一下。 n_epoch :数据训练几个轮次。 batch_size :每一次输入给模型的数据行数。 show_metric :训练过程中要不要打印结果。 以下就是电脑输出的最终训练结果。其实中间运行过程看着更激动人心,你自己试一下就知道了。 Training Step: 7499 | total loss:  array ( ) 我们就用它来预测一下分类结果。 y_pred = model.predict(X_test) 打印出来看看: y_pred array ( , dtype=float32) 模型判断该客户不流失的可能性为0.70956731。 我们看看实际标签数据: y_test array ( ) 客户果然没有流失。这个预测是对的。 但是一个数据的预测正确与否,是无法说明问题的。我们下面跑整个测试集,并且使用evaluate函数评价模型。 score = model.evaluate(X_test, y_test) print( 'Test accuarcy: %0.4f%%' % (score * 100 )) Test accuarcy : 84 .1500 % 在测试集上,准确性达到84.15%,好样的! 希望在你的努力下,机器做出的准确判断可以帮助银行有效锁定可能流失的客户,降低客户的流失率,继续日进斗金。 说明 你可能觉得,深度学习也没有什么厉害的嘛。原先的决策树算法,那么简单就能实现,也可以达到80%以上的准确度。写了这么多语句,深度学习结果也无非只提升了几个百分点而已。 首先,准确度达到某种高度后,提升是不容易的。这就好像学生考试,从不及格到及格,付出的努力并不需要很高;从95分提升到100,却是许多人一辈子也没有完成的目标。 其次,在某些领域里,1%的提升意味着以百万美元计的利润,或者几千个人的生命因此得到拯救。 第三,深度学习的崛起,是因为大数据的环境。在许多情况下,数据越多,深度学习的优势就越明显。本例中只有10000条记录,与“大数据”的规模还相去甚远。 学习资源 如果你对深度学习感兴趣,推荐以下学习资源。 首先是教材。 第一本是 Deep Learning ,绝对的经典。 第二本是 Hands-On Machine Learning with Scikit-Learn and TensorFlow: Concepts, Tools, and Techniques to Build Intelligent Systems ,深入浅出,通俗易懂。 其次是MOOC。 推荐吴恩达(Andrew Ng)教授在Coursera上的两门课程。 一门是机器学习。这课推出有年头了,但是非常有趣和实用。具体的介绍请参考拙作《 机器学习哪里有这么玄? 》以及《 如何用MOOC组合掌握机器学习? 》。 一门是深度学习。这是个系列课程,包括5门子课程。今年推出的新课,自成体系,但是最好有前面那门课程作为基础。 讨论 你对深度学习感兴趣吗?之前有没有做过深度学习项目?你掌握了哪些深度学习框架?有没有什么建议给初学者?欢迎留言,把心得分享给大家,我们一起交流讨论。 如果你对我的文章感兴趣,欢迎点赞,并且微信关注和置顶我的公众号“玉树芝兰”(nkwangshuyi)。 如果本文可能对你身边的亲友有帮助,也欢迎你把本文通过微博或朋友圈分享给他们。让他们一起参与到我们的讨论中来。 延伸阅读 数据科学相关文章合集(玉树芝兰)
13607 次阅读|1 个评论
一篇文章讲清楚人工智能、机器学习和深度学习的区别和联系
热度 12 zsfreefly 2017-10-25 10:39
人工智能的浪潮正在席卷全球,诸多词汇时刻萦绕在我们耳边:人工智能(Artificial Intelligence)、机器学习(Machine Learning)、深度学习(Deep Learning)。不少人对这些高频词汇的含义及其背后的关系总是似懂非懂、一知半解。 为了帮助大家更好地理解人工智能,这篇文章用最简单的语言解释了这些词汇的含义,理清它们之间的关系,希望对刚入门的同行有所帮助。 图一 人工智能的应用 人工智能:从概念提出到走向繁荣 1956年,几个计算机科学家相聚在达特茅斯会议,提出了“人工智能”的概念,梦想着用当时刚刚出现的计算机来构造复杂的、拥有与人类智慧同样本质特性的机器。其后,人工智能就一直萦绕于人们的脑海之中,并在科研实验室中慢慢孵化。之后的几十年,人工智能一直在两极反转,或被称作人类文明耀眼未来的预言,或被当成技术疯子的狂想扔到垃圾堆里。直到2012年之前,这两种声音还在同时存在。 2012年以后,得益于数据量的上涨、运算力的提升和机器学习新算法(深度学习)的出现,人工智能开始大爆发。据领英近日发布的《全球AI领域人才报告》显示,截至2017年一季度,基于领英平台的全球AI(人工智能)领域技术人才数量超过190万,仅国内人工智能人才缺口达到500多万。 人工智能的研究领域也在不断扩大,图二展示了人工智能研究的各个分支,包括专家系统、机器学习、进化计算、模糊逻辑、计算机视觉、自然语言处理、推荐系统等。 图二 人工智能研究分支 但目前的科研工作都集中在弱人工智能这部分,并很有希望在近期取得重大突破,电影里的人工智能多半都是在描绘强人工智能,而这部分在目前的现实世界里难以真正实现(通常将人工智能分为弱人工智能和强人工智能,前者让机器具备观察和感知的能力,可以做到一定程度的理解和推理,而强人工智能让机器获得自适应能力,解决一些之前没有遇到过的问题)。 弱人工智能有希望取得突破,是如何实现的,“智能”又从何而来呢?这主要归功于一种实现人工智能的方法——机器学习。 学习人工智能相关技术知识,可了解一下在线教育平台—— 深蓝学院 。深蓝学院是致力于人工智能等前沿科技的在线教育平台。 机器学习:一种实现人工智能的方法 机器学习最基本的做法,是使用算法来解析数据、从中学习,然后对真实世界中的事件做出决策和预测。与传统的为解决特定任务、硬编码的软件程序不同,机器学习是用大量的数据来“训练”,通过各种算法从数据中学习如何完成任务。 举个简单的例子,当我们浏览网上商城时,经常会出现商品推荐的信息。这是商城根据你往期的购物记录和冗长的收藏清单,识别出这其中哪些是你真正感兴趣,并且愿意购买的产品。这样的决策模型,可以帮助商城为客户提供建议并鼓励产品消费。 机器学习直接来源于早期的人工智能领域,传统的算法包括决策树、聚类、贝叶斯分类、支持向量机、EM、Adaboost等等。从学习方法上来分,机器学习算法可以分为监督学习(如分类问题)、无监督学习(如聚类问题)、半监督学习、集成学习、深度学习和强化学习。 传统的机器学习算法在指纹识别、基于Haar的人脸检测、基于HoG特征的物体检测等领域的应用基本达到了商业化的要求或者特定场景的商业化水平,但每前进一步都异常艰难,直到深度学习算法的出现。 深度学习:一种实现机器学习的技术 深度学习本来并不是一种独立的学习方法,其本身也会用到有监督和无监督的学习方法来训练深度神经网络。但由于近几年该领域发展迅猛,一些特有的学习手段相继被提出(如残差网络),因此越来越多的人将其单独看作一种学习的方法。 最初的深度学习是利用深度神经网络来解决特征表达的一种学习过程。深度神经网络本身并不是一个全新的概念,可大致理解为包含多个隐含层的神经网络结构。为了提高深层神经网络的训练效果,人们对神经元的连接方法和激活函数等方面做出相应的调整。其实有不少想法早年间也曾有过,但由于当时训练数据量不足、计算能力落后,因此最终的效果不尽如人意。 深度学习摧枯拉朽般地实现了各种任务,使得似乎所有的机器辅助功能都变为可能。无人驾驶汽车,预防性医疗保健,甚至是更好的电影推荐,都近在眼前,或者即将实现。 三者的区别和联系 机器学习是一种实现人工智能的方法,深度学习是一种实现机器学习的技术。我们就用最简单的方法——同心圆,可视化地展现出它们三者的关系。 图三 三者关系示意图 目前,业界有一种错误的较为普遍的意识,即“ 深度学习最终可能会淘汰掉其他所有机器学习算法 ”。这种意识的产生主要是因为,当下深度学习在计算机视觉、自然语言处理领域的应用远超过传统的机器学习方法,并且媒体对深度学习进行了大肆夸大的报道。 深度学习,作为目前最热的机器学习方法,但并不意味着是机器学习的终点。起码目前存在以下问题: 1. 深度学习模型需要大量的训练数据,才能展现出神奇的效果,但现实生活中往往会遇到小样本问题,此时深度学习方法无法入手,传统的机器学习方法就可以处理; 2. 有些领域,采用传统的简单的机器学习方法,可以很好地解决了,没必要非得用复杂的深度学习方法; 3. 深度学习的思想,来源于人脑的启发,但绝不是人脑的模拟,举个例子,给一个三四岁的小孩看一辆自行车之后,再见到哪怕外观完全不同的自行车,小孩也十有八九能做出那是一辆自行车的判断,也就是说,人类的学习过程往往不需要大规模的训练数据,而现在的深度学习方法显然不是对人脑的模拟。 深度学习大佬 Yoshua Bengio 在 Quora 上回答一个类似的问题时,有一段话讲得特别好,这里引用一下,以回答上述问题: Science is NOT a battle, it is a collaboration. We all build on each other's ideas. Science is an act of love, not war. Love for the beauty in the world that surrounds us and love to share and build something together. That makes science a highly satisfying activity, emotionally speaking! 这段话的大致意思是,科学不是战争而是合作,任何学科的发展从来都不是一条路走到黑,而是同行之间互相学习、互相借鉴、博采众长、相得益彰,站在巨人的肩膀上不断前行。机器学习的研究也是一样,你死我活那是邪教,开放包容才是正道。 结合机器学习2000年以来的发展,再来看Bengio的这段话,深有感触。进入21世纪,纵观机器学习发展历程,研究热点可以简单总结为2000-2006年的流形学习、2006年-2011年的稀疏学习、2012年至今的深度学习。未来哪种机器学习算法会成为热点呢?深度学习三大巨头之一吴恩达曾表示,“在继深度学习之后,迁移学习将引领下一波机器学习技术”。但最终机器学习的下一个热点是什么,谁用能说得准呢。
24915 次阅读|11 个评论
众源测图与质量评定阶段性总结1
applefl 2017-9-6 11:10
1、论文总结 这段时间看的论文关键词主要是VGI、匹配、PPGIS、质量评定、道路测图等等。主要关注的是质量评定这一块的内容。 从匹配方法上来看,可以分为自动化的方法和人工的方法。自动化的质量评定,思路是先进行匹配,然后比较匹配上的要素之间的差异,比如形状一致性、内容完整性、语义准确性等等。人工方法是选取几个样本区域,对样本区域的要素进行人工匹配和比较。从质量评定的内容来看,大部分论文比较的都是要素的形状、语义、完整性等等。也有学者提出比较要素的节点数,贡献者的分布。有一篇论文是从年度的角度研究德国的OSM要素的质量发展趋势。另外我觉得新颖的一篇是提出了数据成熟度的概念,这个是针对VGI提出的,我觉得很好,当然评价数据成熟度的方法可以继续研究。 PPGIS这一块的研究,基本就是WebGIS2.0用于各行各业,介绍了公众参与的优势,不是我主要研究的内容。 对OSM的研究主要是在OSM刚出来那几年,研究的是OSM的机制、发展趋势、贡献者动机、法律机制等等。 对VGI的研究包括质量评定、融合、VGI数据管理(大数据量的动态道路线存储)、道路测图等等。 匹配这一块,也看到了一些新的方法,比如地标、邻近图、道路网眼、矢量道路转栅格、知识库规则等等。 另外还有一块内容是研究关联数据的,但是这几年关联数据好像并没有引起广泛的讨论,所以没深入去看。 2、深度学习和数据挖掘 看到大数据和人工智能这么火,所以这段时间还看了两本相关的书,《数据挖掘十大算法》和《深度学习方法及应用》。 2.1 数据挖掘 数据挖掘的十大算法分别是: C4.5:类似于决策树,通过学习属性到类别的映射,生成决策树,利用各种知识对树进行优化 k-means:用于聚类,设定初始聚类中心,分类,重新计算聚类中心,如此迭代收敛 SVM:用于分类,找到支持向量,生成决策函数,用来分类 Apriori:频繁模式挖掘,提出了频繁模式的几个定理,在此基础上建立的挖掘频繁模式的算法 EM:期望最大化算法,处理数据不完整问题的迭代算法,包括期望步骤和最大化步骤。知乎上有个通俗易懂的例子,刘总和小章的故事。简单来说就是先设定一个初始概率,计算在初始概率下,期望最大的结果,根据当前期望最大的结果去估计下一轮概率,迭代计算至收敛。 PageRank:基于链接的网页排序。将链接比作投票,链接数越多说明该网页越重要,以此计算网页权重。 Adaboost:将多个弱分类器,通过推举的方法生成强分类器。 kNN:从训练集中找出k个最接近测试对象的训练对象,从k个训练对象中找出主导类别,即为测试对象类别。 Naive Bayes:朴素贝叶斯,就是最简单的贝叶斯分类,找概率最大的类别 CART:分类和回归树,决策树中的一系列方法,如:缺失值处理、权重分配、剪枝、树选择等等。 2.2 深度学习 看了那本深度学习的书,结果并没怎么看懂,后来还是在网上百度到的各种深度学习入门总结,网页收藏里应该有。那天提到深度学习,老板说深度学习就是神经网络。在我看来,深度学习有几点不同: 1、训练样本一般都比较大,通过大量的样本训练能保证学习到尽可能多的情况。普通神经网络的方法存在过度训练的问题,而深度学习应该不会,因为深度学习网络的层数很多,因此参数很多。 2、训练方式,深度学习是一层一层的训练的,叫做wake-sleep算法,wake阶段是认知的过程,也就是“如果现实跟我想象的不一样,改变我的权重使得我想象的东西就是这样的”。sleep阶段是生成过程也就是“如果梦中的景象不是我脑中的相应概念,改变我的认知权重使得这种景象在我看来就是这个概念”。这样可以保证每一层都尽量不损失信息 在深度学习中还有一些概念必须知道。 自动编码器和解码器,这个就是把训练样本最原始的表达转换为计算机能理解的表达形式,拿图像来说,就是将图像转换为特征,第一层编码器将图像转为初级特征,高层编码器再将初级特征转换为高级特征。 稀疏编码,就是某个类别的样本只激活尽量少的神经元,模拟大脑的神经元激活方式。 卷积神经网络,图像中每个像元只与附近的像元有强关联,直接将像元灰度值输入神经元就忽略了这种联系,通过先做卷积的方式可以保持这种联系,而且可以大量减少神经网络的参数。
个人分类: 阶段性总结|1 次阅读|0 个评论
【IJAC热文】北京大学黄铁军:走向通用人工智能的“新”方法
热度 2 Chenfiona 2017-6-6 18:36
走向通用人工智能,到底是先“理解智能”还是先“制造智能”? 近期,在IJAC优先在线发表的几篇论文中, 北京大学黄铁军 教授的综述成为近两月优先发表论文中的亮点之一。 黄铁军教授在这篇综述中提出的“仿真主义”(Imitationalism)可谓人工智能方法中第五的流派! (熟悉人工智能的小伙伴可能都了解:人工智能的基本思想大致可划分为四个流派:符号主义、链接主义、行为主义和统计主义) 文章不仅阐述了如何打破走向通用人工智能的研究僵局、探索研制类脑神经计算机的新思路,还详细描述了类脑神经计算机三个重要技术层次和国内外研究进展。与IJAC 4月优先在线发表的麻省理工美国人文科学院院士Tomaso Poggio 教授关于深度学习机理的文章一样,本篇综述绝对是 行业宝典 !且此综述已在Twitter被相关学者转发数次。 通用人工智能(Artificial General Intelligence, AGI)指可以像人一样完成各种智能任务的类人智能机器,AGI又称为Srong AI或fullAI. 为了获得通用人工智能,到底是先“理解智能”? (即理解意识现象和功能背后的发生机理) 还是先“制造智能” (即研制类似人脑的具有自我意识的智能机器)? ——这是一个问题! 传统人工智能的思维定式是在“理解智能”机理的基础上设计制造人工智能系统,即先理解智能再模仿智能。然而人类对自身智能的认识还处在初级阶段,在对人类智能的理解还极其有限,“理解智能”这个终极性问题到底数十年还是数百年亦或数千年才能解决?都还是未知数。因此,把“制造智能”寄希望于“理解智能”,实质上把解决问题的方案建立在解决另一个更难问题的基础上,犯了本末倒置的错误。 (图片来自于网络) 如果我们跳出传统思维的窠臼,就会发现通向通用人工智能还有一条“ 新 ” 路线——构建 类脑神经计算机 ,这里称为“仿真主义”(Imitationalism)。说这是一条新路线,是因为它反转了“理解智能”和“制造智能”的前后关系:即我们不再寻求“理解智能”的解,而是先模仿脑,即设计更先进的探测分析工具, 从结构上解析大脑 ,再利用工程技术手段“照葫芦画瓢”式地 构造仿脑装置 ,最后 通过环境刺激和交互训练“仿真大脑”,实现类人智能 。 简言之: 先结构后功能 。 (图片来自于网络) 本篇文章阐述了“先结构后功能”的类脑计算的 三层技术路线 :结构层次模仿脑、器件层次逼近脑,智能层次超越脑;还分析了在获得通用人工智能时, 神经计算机相比传统计算机的优势、生物神经网络相比人工神经网络的优势 ,并综述了国际学者在神经计算机领域的研究进展 。 精彩内容请下载原文阅读,这正是: 人工智能一甲子,结构功能两相争; 符号系统Top down,神经网络向上攻; 进化主义玩互动,机器学习调模型; 欲破智能千古谜,先剖大脑再人工。 ——来源:《中国计算机学会通讯》2017年1月,作者黄铁军 文章免费下载信息: 【 Title 】 Imitatingthe brain with neurocomputer a “new” way towards artificial generalintelligence 【 Author 】 Tie-Jun Huang 【 Abstract 】 To achieve the artificial generalintelligence (AGI), imitate the intelligence? or imitate the brain? This is thequestion! …. To achieve AGI, a practical approach is to build the so-calledneurocomputer, which could be trained to produce autonomous intelligence andAGI. A neurocomputer imitates the biological neural network with neuromorphicdevices which emulate the bio-neurons, synapses and other essential neuralcomponents. The neurocomputer could perceive the environment via sensors andinteract with other entities via a physical body. The philosophy under the“new” approach, so-called as imitationalism in this paper, is the engineeringmethodology which has been practiced for thousands of years, and for manycases, such as the invention of the first airplane, succeeded. This papercompares the neurocomputer with the conventional computer. The major progressabout neurocomputer is also reviewed. 【 Keywords 】 Artificial general intelligence (AGI), neuromorphic computing, neurocomputer, brain-likeintelligence, imitationalism 【 Full Text 】 https://link.springer.com/article/10.1007/s11633-017-1082-y 5-6 月优先在线发表的计算方向论文还有如下,欢迎阅读 【 Title 】 Stability analysis of an underactuatedautonomous underwater vehicle using extended-Routh’s stability method 【 Author 】 Basant Kumar Sahu,Bidyadhar Subudhi, Madan Mohan Gupta 【 Keywords 】 Routh’s stability, extended-Routh’s stability, autonomousunderwater vehicle (AUV), underactuated system, underwater robots 【 Full Text 】 https://link.springer.com/article/10.1007/s11633-016-0992-4 【 Title 】 Layered software patterns for data analysisin big data environment 【 Author 】 Hossam Hakeem 【 Keywords 】 Big data, data analysis, patterns layered,structure data modelling 【 Full Text 】 https://link.springer.com/article/10.1007/s11633-016-1043-x 【 Title 】 Multi-sensor data fusion for wheelchairposition estimation with unscented Kalman filter 【 Author 】 Derradji Nada, MounirBousbia-Salah, Maamar Bettayeb 【 Keywords 】 Data fusion, unscented Kalman filter(UKF) , measurement fusion (MF), navigation, state vector fusion(SVF) , wheelchair 【 Full Text 】 https://link.springer.com/article/10.1007/s11633-017-1065-z 【 Title 】 Evaluation method of the gait motion based onself-organizing map using the gravity center fluctuation on the sole 【 Author 】 Koji Makino, MasahiroNakamura, Hidenori, Omori, et al. 【 Keywords 】 Gait motion, self-organizing map (SOM), rehabilitation, evaluationmethod, gravity center fluctuation (GCF) 【 Full Text 】 https://link.springer.com/article/10.1007/s11633-016-1045-8 【 Title 】 Low-latency data gathering with reliabilityguaranteeing in heterogeneous wireless sensor networks 【 Author 】 Tian-Yun Shi, Jian Li, Xin-ChunJia, et al. 【 Keywords 】 Heterogeneous wireless sensor networks (HWSNs), datagathering tree, multi-channel, power assignment, linkscheduling 【 Full Text 】 https://link.springer.com/article/10.1007/s11633-017-1074-y 【 Title 】 Recursive Bayesian algorithm foridentification of systems with non-uniformly sampled input data 【 Author 】 Shao-Xue Jing, Tian-HongPan, Zheng-Ming Li 【 Keywords 】 Parameter estimation, discrete time systems, Gaussiannoise, Bayesian algorithm, covariance resetting 【 Full Text 】 https://link.springer.com/article/10.1007/s11633-017-1073-z 点击阅读“人工智能”相关推文 【IJAC热文】MITTomaso Poggio教授探讨深度学习机理 http://mp.weixin.qq.com/s/AwmQyhREjpIew0beIuj6yA 【IJAC推文】周志华、吴建鑫等关于循环神经网络的最新研究成果 http://mp.weixin.qq.com/s/S_7TPZ-QiIHkki2l-KAtDg 【IJAC推文】颜水成团队解读“高智商”机器人的终极杀器——深度学习 http://mp.weixin.qq.com/s/KRBTTycNve3GY8T9AkvoSA
个人分类: 好文推荐|711 次阅读|2 个评论
1070+cuda8+cudnn5.1+opencv3.1+caffe+fasterrcnn配置文档
apollocv 2017-6-2 09:10
1070+cuda8+cudnn5.1+opencv3.1+caffe+fasterrcnn 配置文档 一、系统安装及联网 到 ununtu 官网上下载 ubuntu14.04.iso 文件,然后准备一个空的 u 盘,制作启动盘,百度怎么用 u 盘安装 ubuntu 。 安装时要注意分配硬盘空间,保证 home 目录尽量大,其他的参考百度。 安装时调到 bios 界面,选择从 usb 启动(就是从 u 盘启动) 安装完成后要联网:设置 ipv4 为: IP : 202.114.114.250 NetMask:255.255.255.0 Gateway:202.114.114.114 DNS Servers:202.114.96.1,202.103.24.68 部分安装过程中需要用到的软件包和链接地址在白色硬盘的 pack.zip 中。 第一部分 nVidiaCUDA Toolkit 的安装( *.deb 方法) PS :特别推荐 *.deb 的方法,目前已提供离线版的 deb 文件,该方法比较简单,不需要切换到 tty 模式,因此不再提供原来的 *.run 安装方法,这里以 CUDA 7.5 为例。 一、 CUDARepository 获取 CUDA 安装包 , 安装包请自行去 NVidia 官网下载。( https://developer.nvidia.com/cuda-downloads ) Installation Instructions: `sudo dpkg -i cuda-repo-ubuntu1404-8-0-local_8.0.44-1_amd64.deb` `sudo apt-get update` `sudo apt-get install cuda` 第二部分 Matlab 安装和调试(以 Matlab 2014a 为例) 1. 下载 由于该软件为商业软件,请大家自行寻找,安装学习,并确保不使用做商业目的,下载 24 小时删除 ...... 2. 预准备 选择 Mathworks.Matlab.R2014a.Unix.iso- 右键 - 使用磁盘映像挂载器打开 ” ,进入装载的虚拟光盘,拷贝全部文件至 home/Matlab 文件夹 (PS :我的原则是能 GUI 就 GUI ,喜欢 CMD 的可以参照执行 ) 复制 Crack/install.jar 至 home/Matlab/java/jar/ 并覆盖源文件 $ sudo cp install.jar /home/Matlab/java/jar/ 3. 授权安装文件夹 $ chmod a+x Matlab -R 4. 安装 $ sudo ./install 选项:不使用 Internet 安装 序列号: 12345-67890-12345-67890 默认路径: /usr/local/MATLAB/R2014a 勾选从默认启动路径创建符号链接(实现在任意位置运行 matlab 启动程序) 激活文件: license_405329_R2014a.lic 拷贝 libmwservices.so 至 /usr/local/MATLAB/R2014a/bin/glnxa64 $ sudo cp libmwservices.so/usr/local/MATLAB/R2014a/bin/glnxa64/ 5. 解决编译器 gcc/g++ 版本问题。 因为 Ubuntu15.04 的 gcc/g++ 版本是 4.9.2 ,而 Matlab 2014a ( 2015a )的版本是 4.7.x 所以在使用 matla 调用 mex 文件的时候,基本上都会报错,根据报错信息,考虑如下两步解决方案。 A. 降级安装 gcc/g++ 版本为 4.7.x (a). 下载 gcc/g++ 4.7.x $ sudo apt-get install -y gcc-4.7 $ sudo apt-get install -y g++-4.7 (b). 链接 gcc/g++ 实现降级 $ cd /usr/bin $ sudo rm gcc $ sudo ln -s gcc-4.7 gcc $ sudo rm g++ $ sudo ln -s g++-4.7 g++ B. 暴力引用新版本 GLIBCXX_3.4.20 $sudo cp /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.20/usr/local/MATLAB/R2014a/sys/os/glnxa64/libstdc++.so.6.0.20 ( libstdc++.so.6.0.20 的版本,可能因为系统不同而不同,使用最新的就可以了。) 目录切换到 /usr/local/MATLAB/R2014a/sys/os/glnxa64/ ,非常重要! $ sudo mv libstdc++.so.6libstdc++.so.6.backup (仅仅是备份,可以不备份,直接删除)。 $ sudo ln -s libstdc++.so.6.0.20libstdc++.so.6 $ sudo ldconfig -v 通过命令 “strings/usr/local/MATLAB/R2014a/sys/os/glnxa64/libstdc++.so.6 | grep GLIBCXX_” 可以看一下,是否已经成功包含了 GLIBCXX_3.4.21 ,如果已经存在,基本上就成功了。 6. 编译 Matlab 用到的 caffe 文件(见第五部分) 第三部分 Caffe-Master 的安装和测试 对于 Caffe 的安装严格遵照官网的要求来: http://caffe.berkeleyvision.org/installation.html 一、安装 BLAS 这里可以选择( ATLAS , MKL 或者 OpenBLAS ),我这里使用 MKL ,首先下载并安装英特尔 数学内核库 Linux* 版 MKL(Intel(R) Parallel Studio XECluster Edition for Linux 2016) ,下载链接是: https://software.intel.com/en-us/intel-education-offerings , 使用学生身份(邮件 + 学校)下载 Student 版,填好各种信息,可以直接下载,同时会给你一个邮件告知序列号( 2JXL-2VTGZM8R )。下载完之后,要把文件解压到 home 文件夹 ( 或直接把 tar.gz 文件拷贝到 home 文件夹 , 为了节省空间,安装完记得把压缩文件给删除喔~ ) ,或者其他的 ext4 的文件系统中。 很多人说,下载不了,本人于 2105 年 11 月 8 日使用该地址下载最新的 2016 版本,仍然没有问题,请大家细心操作 ^_^ 。 接下来是安装过程,先授权,然后安装: $ tar zxvf parallel_studio_xe_2016.tar.gz (如果你是直接拷贝压缩文件过来的) $ chmod a+x parallel_studio_xe_2016 -R $ sh install_GUI.sh PS: 安装的时候,建议使用 root 权限安装,过程中会要求输入 Linux 的 root 口令。(设置方法:命令行: $ sudo passwd ) 二、 MKL 与 CUDA 的环境设置 1. 新建 intel_mkl.conf , 并编辑之: $ sudo gedit/etc/ld.so.conf.d/intel_mkl.conf /opt/intel/lib/intel64 /opt/intel/mkl/lib/intel64 2. 新建 cuda.conf ,并编辑之: $ sudo gedit /etc/ld.so.conf.d/cuda.conf /usr/local/cuda/lib64 /lib 3. 完成 lib 文件的链接操作,执行: $ sudo ldconfig -v 三、安装 OpenCV 3.1.0 1. 下载并编译 OpenCV (官网原版 OpenCV : http://opencv.org/ ), 或者使用我提供的修改版的安装包 ( 前面的百度云下载 ) 安装 opencv3.1 sudo apt-get installlibprotobuf-dev libleveldb-dev libsnappy-dev libhdf5-serial-dev libgflags-dev libgoogle-glog-dev liblmdb-devprotobuf-compiler 1 1 去 官网 下载一个 opencv 。然后解压出来。 sudo /bin/bash -c 'echo/usr/local/lib /etc/ld.so.conf.d/opencv.conf' sudo ldconfig find / -name “cv2.so” gedit ~/.bashrc cv2.so /home/apollo/opencv/lib export PYTHONPATH=/home/apollo/opencv/lib:$PYTHONPATH source~/.bashrc 四、安装其他依赖项 1. Google Logging Library ( glog ),下载地址: https://code.google.com/p/google-glog/ ,然后解压安装: $ tar zxvf glog-0.3.3.tar.gz $ ./configure $ make $ sudo make install 如果没有权限就 chmoda+x glog-0.3.3 -R , 或者索性 chmod 777 glog-0.3.3 -R , 装完之后,这个文件夹就可以 kill 了。 2. 其他依赖项,确保都成功 $ sudo apt-get install -y libprotobuf-devlibleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-devlibgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compilerprotobuf-c-compiler protobuf-compiler 五、安装 Caffe 并测试 0. 安装 protobuf $wgethttps://github.com/google/protobuf/archive/v2 .6.1 .zip $unzip protobuf- 2.6.1 .zip $cd protobuf- 2.6.1 下载自 github 的代码需要首先执行 $ ./autogen.sh 生成 configure 文件 $ ./configure $ make $ make check $ make install 我使用的是 centos 系统 usr/local/bin usr/local/lib, usr/local/include 是也系统默认路径之一,所以到这一步就可以使用 protobuf 了 $ protoc - I =./ --cpp_out=./test.proto 到你的 test.proto 文件所在目录使用命令 protoc - I =./ --cpp_out=./ 生成 C ++ 版本的协议文件 一切 OK 的话,你回在当前目录看到 .h 和 .cc 文件 1. 安装 pycaffe 必须的一些依赖项: $ sudo apt-get install -y python-numpypython-scipy python-matplotlib python-sklearn python-skimage python-h5pypython-protobuf python-leveldb python-networkx python-nose python-pandaspython-gflags Cython ipython 2. 安装配置 nVidia cuDNN 加速 Caffe 模型运算 a. 安装前请去先官网下载最新的 cuDNN (cudnn-7.0-linux-x64-v4.0-prod) 。 $ sudo cp include/cudnn.h /usr/local/include $ sudo cp lib64/libcudnn.* /usr/local/lib b. 链接 cuDNN 的库文件 $sudo ln -sf /usr/local/lib/libcudnn.so.4.0.7 /usr/local/lib/libcudnn.so.4 $ sudo ln -sf /usr/local/lib/libcudnn.so.4/usr/local/lib/libcudnn.so $ sudo ldconfig -v 3. 切换到 Caffe-master 的文件夹,生成 Makefile.config 配置文件,执行: $ cp Makefile.config.example Makefile.config 4. 配置 Makefile.config 文件(仅列出修改部分) a. 启用 CUDNN ,去掉 # USE_CUDNN := 1 b. 配置一些引用文件(增加部分主要是解决新版本下, HDF5 的路径问题) INCLUDE_DIRS := $(PYTHON_INCLUDE)/usr/local/include /usr/lib/x86_64-linux-gnu/hdf5/serial/include LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib/usr/lib /usr/lib/x86_64-linux-gnu/hdf5/serial c. 启用 Intel Parallel Studio XE 2016 BLAS := mkl d. 配置路径,实现 caffe 对 Python 和 Matlab 接口的支持 PYTHON_LIB := /usr/local/lib MATLAB_DIR := /usr/local/MATLAB/R2014a c. 启用 OpenCV 3.0, 去掉 # OPENCV_VERSION =3 6. 编译 caffe-master !!! -j16 是使用 CPU 的多核进行编译,可以极大地加速编译的速度,建议使用。 $ make all -j16 $ maketest -j16 $ makeruntest -j16 编译 Python 和 Matlab 用到的 caffe 文件 $ makepycaffe -j16 $ make matcaffe -j16 六、使用 MNIST 数据集进行测试 Caffe 默认情况会安装在 $CAFFE_ROOT ,就是解压到那个目录,例如: $ home/username/caffe-master ,所以下面的工作,默认已经切换到了该工作目录。下面的工作主要是,用于测试 Caffe 是否工作正常,不做详细评估。具体设置请参考官网: http://caffe.berkeleyvision.org/gathered/examples/mnist.html 1. 数据预处理 $ sh data/mnist/get_mnist.sh 2. 重建 lmdb 文件。 Caffe 支持多种数据格式输入网络,包括 Image(.jpg, .png 等 ) , leveldb , lmdb , HDF5 等,根据自己需要选择不同输入吧。 $ sh examples/mnist/create_mnist.sh 生成 mnist-train-lmdb 和 mnist-train-lmdb 文件夹,这里包含了 lmdb 格式的数据集 3. 训练 mnist $ sh examples/mnist/train_lenet.sh 三、安装 faster-rcnn 复制 py-faster-rcnn-person 文件夹,然后要删除一些文件: 1 、 lib/datasets/ 里的 pascal_voc.pyc 和 imdb.pyc 2 、 output/ 里的 faster_rcnn_alt_opt 文件夹 3 、 data 里的 cache 文件夹 4 、如果不用行人的数据,而是换了数据的话,就要删除 data/vocdevkit2007 里的 annotations_cache 。 5 、把 model 文件夹删除,换成 py-faster-rcnn 文件夹(就是官网上下的没有换过数据的 faster-rcnn )里的那个 model 。 然后要把之前 caffe 里的那个 makefile.config 复制到 caffe_fast_rcnn 文件夹下面。 注意要把: WITH_PYTHON_LAYER:=1 放开 mkdirbuild cdbuild cmake.. make all -j16 makeruntest -j16 (报错也没关系) $ make pycaffe -j16 编译 Python 和 Matlab 用到的 caffe 文件 Sudo apt-get install python-pip Pip install easydict 一、修改调用文件 1 、 prototxt 配置文件 models/pascal_voc/ZF/faster_rcnn_alt_opt 文件夹下的 5 个文件,分别为 stage1_rpn_trainNaN 、 stage1_fast_rcnn_trainNaN 、 stage2_rpn_trainNaN 、 stage2_fast_rcnn_trainNaN 和 fast_rcnn_testNaN ,修改格式如下: (1)stage1_fast_rcnn_trainNaN 和 stage2_fast_rcnn_trainNaN 修改参数 num_class:2 (识别 1 类 + 背景 1 类), cls_score 中 num_output : 2 , bbox_pred 中 num_output : 8 。(只有这 3 个) (2)stage1_rpn_trainNaN 和 stage2_rpn_trainNaN 修改参数 num_class:2 (识别 1 类 + 背景 1 类) (3)fast_rcnn_testNaN 修改参数: cls_score 中 num_output : 2 , bbox_pred 中 num_output : 8 ( 只有这 2 个) 2 、 修改 lib/datasets/pascal_voc.py self._classes = ('__background__', # alwaysindex 0 'person' ) (只有这一类) 3 、修改 lib/datasets/imdb.py 数据整理,在一行代码为 boxes = widths - oldx1 - 1 下加入代码: for b in range(len(boxes)): if boxes boxes : boxes = 0 4 、修改完 pascal_voc.py 和 imdb.py 后进入 lib/datasets 目录下 删除 原来的 pascal_voc.pyc 和 imdb.pyc 文件, 重新生成 这两个文件,因为这两个文件是 python 编译后的文件,系统会直接调用。 终端进入 lib/datasets 文件目录输入: python ( 此处应出现 python 的版本 ) importpy_compile py_compile.compile(r'imdb.py') py_compile.compile(r'pascal_voc.py') 二、训练自己的数据 终端进入 py-faster-rcnn 下输入: ./experiments/scripts/faster_rcnn_alt_opt.sh0ZF pascal_voc 如果执行错: cv2 importERROR : apt-get installpython-opencv yaml importError: apt-get install python-yaml 三、 demo 自己刚刚生成的 ZF_models 1 、训练完成之后,将 output/faster_rcnn_alt_opt/voc_2007_trainval 中的最终模型 ZF_faster_rcnn_final.caffemodel 拷贝到 data/faster_rcnn_models (删除以前生成类似的 model )中。 2 、修改 /tools/demo.py 为: (1) CLASSES =('__background__', 'people' ) (只有这两类) (2) NETS ={'vgg16': ('VGG16', 'VGG16_faster_rcnn_final.caffemodel'), 'zf': ('ZF', 'ZF_faster_rcnn_final.caffemodel' )} (3) 在训练集图片中找一张出来放入 py-faster-rcnn/data/demo 文件夹中,命名为 000001.jpg 。 im_names = (只需这一类图片的一张,其他删除或注销) for im_name in im_names: print'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' print'Demo for data/demo/{}'.format(im_name) demo(net, im_name) 3 、运行 demo ,即在 py-faster-rcnn 文件夹下终端输入: ./tools/demo.py --net zf 结果如图: 四. Cpu 运行 faster rcnn 1. 在一切都正常的情况下,对 caffe-fast-rcnn 进行 make 和 make pycaffe 的结果如下: 编译好 caffe-fast-rcnn 后,在 py-faster-rcnn/lib 中执行 make 命令: bigtop@bigtop-SdcOS-Hypervisor:~/py-faster-rcnn/lib$ make python setup.py build_ext --inplace running build_ext skipping 'utils/bbox.c' Cython extension(up-to- date ) skipping 'nms/cpu_nms.c' Cython extension(up-to- date ) skipping 'pycocotools/_mask.c' Cython extension (up-to- date ) rm -rf build bigtop@bigtop-SdcOS-Hypervisor:~/py-faster-rcnn/lib$ 2 在安装配置好 caffe-fast-rcnn 后,修改 py-faster-rcnn 相关配置,让其模型可以在没有 GPU 的环境下运行: A 将 ~/py-faster-rcnn/lib/fast_rcnn/config.py 的如下内容: B 将 ~/py-faster-rcnn/tools/test_net.py 和 ~/py-faster-rcnn/tools/train_net.py 的 caffe.set_mode_gpu() 修改为 caffe.set_mode_cpu(). C 将 ~/py-faster-rcnn/lib/setup.py 中,含有 'nms.gpu_nms’ 的部分去掉,去掉后的内容如下: 112 ext_modules = , 116 extra_compile_args={ 'gcc' : }, 117 include_dirs = 118 ), 119 Extension( 120 nms.cpu_nms , 121 , 122 extra_compile_args={ 'gcc' : }, 123 include_dirs = 124 ), 125 Extension( 126 'pycocotools._mask' , 127 sources= , 128 include_dirs = , 129 extra_compile_args={ 130 'gcc' : }, 131 ), 132 ] D 做到上面三部后,还是不够的,还需要将: ../lib/fast_rcnn/nms_wrapper.py:9: #from nms.gpu_nms import gpu_nms 注释掉: 否则,会抛出如下的异常: Traceback (most recent call last ): File ./demo.py , line 18 , in from fast_rcnn.test import im_detect File .../py-faster-rcnn-master/tools/../lib/fast_rcnn/test.py , line 17 , in from fast_rcnn.nms_wrapper import nms File .../py-faster-rcnn-master/tools/../lib/fast_rcnn/nms_wrapper.py , line 11 , in from nms.gpu_nms import gpu_nms ImportError: No module named gpu_nms 3. 修改 train_faster_rcnn_alt_opt.py: 1 )下列语句: 修改为: 2 )下列语句 修改为: 4. 打开 faster_rcnn_alt_opt.sh 1) 找到下列语句: 修改为: 3. 训练 : 终端进入 py-faster-rcnn 下输入: ./experiments/scripts/faster_rcnn_alt_opt.sh ZF pascal_voc 五. ipython notebook for ubuntu14.04 安装步骤(真的超级简单) 1. 环境 操作系统: ubuntu 14.04 / 尤麒麟 2. 操作步骤 a) 安装 pip 工具 终端输入以下命令: sudo apt-get install python-pip b) 安装 ipython 终端输入以下命令: sudo apt-get install ipython c) 安装 ipython 终端输入以下命令: sudo apt-get install ipython-notebook d) 启动 ipython 终端输入以下命令: ipython notebook
3064 次阅读|0 个评论
1070+cuda8+cudnn5.1+opencv3.1+caffe+fasterrcnn配置文档
apollocv 2017-6-2 09:09
1070+cuda8+cudnn5.1+opencv3.1+caffe+fasterrcnn 配置文档 一、系统安装及联网 到 ununtu 官网上下载 ubuntu14.04.iso 文件,然后准备一个空的 u 盘,制作启动盘,百度怎么用 u 盘安装 ubuntu 。 安装时要注意分配硬盘空间,保证 home 目录尽量大,其他的参考百度。 安装时调到 bios 界面,选择从 usb 启动(就是从 u 盘启动) 安装完成后要联网:设置 ipv4 为: IP : 202.114.114.250 NetMask:255.255.255.0 Gateway:202.114.114.114 DNS Servers:202.114.96.1,202.103.24.68 部分安装过程中需要用到的软件包和链接地址在白色硬盘的 pack.zip 中。 第一部分 nVidiaCUDA Toolkit 的安装( *.deb 方法) PS :特别推荐 *.deb 的方法,目前已提供离线版的 deb 文件,该方法比较简单,不需要切换到 tty 模式,因此不再提供原来的 *.run 安装方法,这里以 CUDA 7.5 为例。 一、 CUDARepository 获取 CUDA 安装包 , 安装包请自行去 NVidia 官网下载。( https://developer.nvidia.com/cuda-downloads ) Installation Instructions: `sudo dpkg -i cuda-repo-ubuntu1404-8-0-local_8.0.44-1_amd64.deb` `sudo apt-get update` `sudo apt-get install cuda` 第二部分 Matlab 安装和调试(以 Matlab 2014a 为例) 1. 下载 由于该软件为商业软件,请大家自行寻找,安装学习,并确保不使用做商业目的,下载 24 小时删除 ...... 2. 预准备 选择 Mathworks.Matlab.R2014a.Unix.iso- 右键 - 使用磁盘映像挂载器打开 ” ,进入装载的虚拟光盘,拷贝全部文件至 home/Matlab 文件夹 (PS :我的原则是能 GUI 就 GUI ,喜欢 CMD 的可以参照执行 ) 复制 Crack/install.jar 至 home/Matlab/java/jar/ 并覆盖源文件 $ sudo cp install.jar /home/Matlab/java/jar/ 3. 授权安装文件夹 $ chmod a+x Matlab -R 4. 安装 $ sudo ./install 选项:不使用 Internet 安装 序列号: 12345-67890-12345-67890 默认路径: /usr/local/MATLAB/R2014a 勾选从默认启动路径创建符号链接(实现在任意位置运行 matlab 启动程序) 激活文件: license_405329_R2014a.lic 拷贝 libmwservices.so 至 /usr/local/MATLAB/R2014a/bin/glnxa64 $ sudo cp libmwservices.so/usr/local/MATLAB/R2014a/bin/glnxa64/ 5. 解决编译器 gcc/g++ 版本问题。 因为 Ubuntu15.04 的 gcc/g++ 版本是 4.9.2 ,而 Matlab 2014a ( 2015a )的版本是 4.7.x 所以在使用 matla 调用 mex 文件的时候,基本上都会报错,根据报错信息,考虑如下两步解决方案。 A. 降级安装 gcc/g++ 版本为 4.7.x (a). 下载 gcc/g++ 4.7.x $ sudo apt-get install -y gcc-4.7 $ sudo apt-get install -y g++-4.7 (b). 链接 gcc/g++ 实现降级 $ cd /usr/bin $ sudo rm gcc $ sudo ln -s gcc-4.7 gcc $ sudo rm g++ $ sudo ln -s g++-4.7 g++ B. 暴力引用新版本 GLIBCXX_3.4.20 $sudo cp /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.20/usr/local/MATLAB/R2014a/sys/os/glnxa64/libstdc++.so.6.0.20 ( libstdc++.so.6.0.20 的版本,可能因为系统不同而不同,使用最新的就可以了。) 目录切换到 /usr/local/MATLAB/R2014a/sys/os/glnxa64/ ,非常重要! $ sudo mv libstdc++.so.6libstdc++.so.6.backup (仅仅是备份,可以不备份,直接删除)。 $ sudo ln -s libstdc++.so.6.0.20libstdc++.so.6 $ sudo ldconfig -v 通过命令 “strings/usr/local/MATLAB/R2014a/sys/os/glnxa64/libstdc++.so.6 | grep GLIBCXX_” 可以看一下,是否已经成功包含了 GLIBCXX_3.4.21 ,如果已经存在,基本上就成功了。 6. 编译 Matlab 用到的 caffe 文件(见第五部分) 第三部分 Caffe-Master 的安装和测试 对于 Caffe 的安装严格遵照官网的要求来: http://caffe.berkeleyvision.org/installation.html 一、安装 BLAS 这里可以选择( ATLAS , MKL 或者 OpenBLAS ),我这里使用 MKL ,首先下载并安装英特尔 数学内核库 Linux* 版 MKL(Intel(R) Parallel Studio XECluster Edition for Linux 2016) ,下载链接是: https://software.intel.com/en-us/intel-education-offerings , 使用学生身份(邮件 + 学校)下载 Student 版,填好各种信息,可以直接下载,同时会给你一个邮件告知序列号( 2JXL-2VTGZM8R )。下载完之后,要把文件解压到 home 文件夹 ( 或直接把 tar.gz 文件拷贝到 home 文件夹 , 为了节省空间,安装完记得把压缩文件给删除喔~ ) ,或者其他的 ext4 的文件系统中。 很多人说,下载不了,本人于 2105 年 11 月 8 日使用该地址下载最新的 2016 版本,仍然没有问题,请大家细心操作 ^_^ 。 接下来是安装过程,先授权,然后安装: $ tar zxvf parallel_studio_xe_2016.tar.gz (如果你是直接拷贝压缩文件过来的) $ chmod a+x parallel_studio_xe_2016 -R $ sh install_GUI.sh PS: 安装的时候,建议使用 root 权限安装,过程中会要求输入 Linux 的 root 口令。(设置方法:命令行: $ sudo passwd ) 二、 MKL 与 CUDA 的环境设置 1. 新建 intel_mkl.conf , 并编辑之: $ sudo gedit/etc/ld.so.conf.d/intel_mkl.conf /opt/intel/lib/intel64 /opt/intel/mkl/lib/intel64 2. 新建 cuda.conf ,并编辑之: $ sudo gedit /etc/ld.so.conf.d/cuda.conf /usr/local/cuda/lib64 /lib 3. 完成 lib 文件的链接操作,执行: $ sudo ldconfig -v 三、安装 OpenCV 3.1.0 1. 下载并编译 OpenCV (官网原版 OpenCV : http://opencv.org/ ), 或者使用我提供的修改版的安装包 ( 前面的百度云下载 ) 安装 opencv3.1 sudo apt-get installlibprotobuf-dev libleveldb-dev libsnappy-dev libhdf5-serial-dev libgflags-dev libgoogle-glog-dev liblmdb-devprotobuf-compiler 1 1 去 官网 下载一个 opencv 。然后解压出来。 sudo /bin/bash -c 'echo/usr/local/lib /etc/ld.so.conf.d/opencv.conf' sudo ldconfig find / -name “cv2.so” gedit ~/.bashrc cv2.so /home/apollo/opencv/lib export PYTHONPATH=/home/apollo/opencv/lib:$PYTHONPATH source~/.bashrc 四、安装其他依赖项 1. Google Logging Library ( glog ),下载地址: https://code.google.com/p/google-glog/ ,然后解压安装: $ tar zxvf glog-0.3.3.tar.gz $ ./configure $ make $ sudo make install 如果没有权限就 chmoda+x glog-0.3.3 -R , 或者索性 chmod 777 glog-0.3.3 -R , 装完之后,这个文件夹就可以 kill 了。 2. 其他依赖项,确保都成功 $ sudo apt-get install -y libprotobuf-devlibleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-devlibgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compilerprotobuf-c-compiler protobuf-compiler 五、安装 Caffe 并测试 0. 安装 protobuf $wgethttps://github.com/google/protobuf/archive/v2 .6.1 .zip $unzip protobuf- 2.6.1 .zip $cd protobuf- 2.6.1 下载自 github 的代码需要首先执行 $ ./autogen.sh 生成 configure 文件 $ ./configure $ make $ make check $ make install 我使用的是 centos 系统 usr/local/bin usr/local/lib, usr/local/include 是也系统默认路径之一,所以到这一步就可以使用 protobuf 了 $ protoc - I =./ --cpp_out=./test.proto 到你的 test.proto 文件所在目录使用命令 protoc - I =./ --cpp_out=./ 生成 C ++ 版本的协议文件 一切 OK 的话,你回在当前目录看到 .h 和 .cc 文件 1. 安装 pycaffe 必须的一些依赖项: $ sudo apt-get install -y python-numpypython-scipy python-matplotlib python-sklearn python-skimage python-h5pypython-protobuf python-leveldb python-networkx python-nose python-pandaspython-gflags Cython ipython 2. 安装配置 nVidia cuDNN 加速 Caffe 模型运算 a. 安装前请去先官网下载最新的 cuDNN (cudnn-7.0-linux-x64-v4.0-prod) 。 $ sudo cp include/cudnn.h /usr/local/include $ sudo cp lib64/libcudnn.* /usr/local/lib b. 链接 cuDNN 的库文件 $sudo ln -sf /usr/local/lib/libcudnn.so.4.0.7 /usr/local/lib/libcudnn.so.4 $ sudo ln -sf /usr/local/lib/libcudnn.so.4/usr/local/lib/libcudnn.so $ sudo ldconfig -v 3. 切换到 Caffe-master 的文件夹,生成 Makefile.config 配置文件,执行: $ cp Makefile.config.example Makefile.config 4. 配置 Makefile.config 文件(仅列出修改部分) a. 启用 CUDNN ,去掉 # USE_CUDNN := 1 b. 配置一些引用文件(增加部分主要是解决新版本下, HDF5 的路径问题) INCLUDE_DIRS := $(PYTHON_INCLUDE)/usr/local/include /usr/lib/x86_64-linux-gnu/hdf5/serial/include LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib/usr/lib /usr/lib/x86_64-linux-gnu/hdf5/serial c. 启用 Intel Parallel Studio XE 2016 BLAS := mkl d. 配置路径,实现 caffe 对 Python 和 Matlab 接口的支持 PYTHON_LIB := /usr/local/lib MATLAB_DIR := /usr/local/MATLAB/R2014a c. 启用 OpenCV 3.0, 去掉 # OPENCV_VERSION =3 6. 编译 caffe-master !!! -j16 是使用 CPU 的多核进行编译,可以极大地加速编译的速度,建议使用。 $ make all -j16 $ maketest -j16 $ makeruntest -j16 编译 Python 和 Matlab 用到的 caffe 文件 $ makepycaffe -j16 $ make matcaffe -j16 六、使用 MNIST 数据集进行测试 Caffe 默认情况会安装在 $CAFFE_ROOT ,就是解压到那个目录,例如: $ home/username/caffe-master ,所以下面的工作,默认已经切换到了该工作目录。下面的工作主要是,用于测试 Caffe 是否工作正常,不做详细评估。具体设置请参考官网: http://caffe.berkeleyvision.org/gathered/examples/mnist.html 1. 数据预处理 $ sh data/mnist/get_mnist.sh 2. 重建 lmdb 文件。 Caffe 支持多种数据格式输入网络,包括 Image(.jpg, .png 等 ) , leveldb , lmdb , HDF5 等,根据自己需要选择不同输入吧。 $ sh examples/mnist/create_mnist.sh 生成 mnist-train-lmdb 和 mnist-train-lmdb 文件夹,这里包含了 lmdb 格式的数据集 3. 训练 mnist $ sh examples/mnist/train_lenet.sh 三、安装 faster-rcnn 复制 py-faster-rcnn-person 文件夹,然后要删除一些文件: 1 、 lib/datasets/ 里的 pascal_voc.pyc 和 imdb.pyc 2 、 output/ 里的 faster_rcnn_alt_opt 文件夹 3 、 data 里的 cache 文件夹 4 、如果不用行人的数据,而是换了数据的话,就要删除 data/vocdevkit2007 里的 annotations_cache 。 5 、把 model 文件夹删除,换成 py-faster-rcnn 文件夹(就是官网上下的没有换过数据的 faster-rcnn )里的那个 model 。 然后要把之前 caffe 里的那个 makefile.config 复制到 caffe_fast_rcnn 文件夹下面。 注意要把: WITH_PYTHON_LAYER:=1 放开 mkdirbuild cdbuild cmake.. make all -j16 makeruntest -j16 (报错也没关系) $ make pycaffe -j16 编译 Python 和 Matlab 用到的 caffe 文件 Sudo apt-get install python-pip Pip install easydict 一、修改调用文件 1 、 prototxt 配置文件 models/pascal_voc/ZF/faster_rcnn_alt_opt 文件夹下的 5 个文件,分别为 stage1_rpn_trainNaN 、 stage1_fast_rcnn_trainNaN 、 stage2_rpn_trainNaN 、 stage2_fast_rcnn_trainNaN 和 fast_rcnn_testNaN ,修改格式如下: (1)stage1_fast_rcnn_trainNaN 和 stage2_fast_rcnn_trainNaN 修改参数 num_class:2 (识别 1 类 + 背景 1 类), cls_score 中 num_output : 2 , bbox_pred 中 num_output : 8 。(只有这 3 个) (2)stage1_rpn_trainNaN 和 stage2_rpn_trainNaN 修改参数 num_class:2 (识别 1 类 + 背景 1 类) (3)fast_rcnn_testNaN 修改参数: cls_score 中 num_output : 2 , bbox_pred 中 num_output : 8 ( 只有这 2 个) 2 、 修改 lib/datasets/pascal_voc.py self._classes = ('__background__', # alwaysindex 0 'person' ) (只有这一类) 3 、修改 lib/datasets/imdb.py 数据整理,在一行代码为 boxes = widths - oldx1 - 1 下加入代码: for b in range(len(boxes)): if boxes boxes : boxes = 0 4 、修改完 pascal_voc.py 和 imdb.py 后进入 lib/datasets 目录下 删除 原来的 pascal_voc.pyc 和 imdb.pyc 文件, 重新生成 这两个文件,因为这两个文件是 python 编译后的文件,系统会直接调用。 终端进入 lib/datasets 文件目录输入: python ( 此处应出现 python 的版本 ) importpy_compile py_compile.compile(r'imdb.py') py_compile.compile(r'pascal_voc.py') 二、训练自己的数据 终端进入 py-faster-rcnn 下输入: ./experiments/scripts/faster_rcnn_alt_opt.sh0ZF pascal_voc 如果执行错: cv2 importERROR : apt-get installpython-opencv yaml importError: apt-get install python-yaml 三、 demo 自己刚刚生成的 ZF_models 1 、训练完成之后,将 output/faster_rcnn_alt_opt/voc_2007_trainval 中的最终模型 ZF_faster_rcnn_final.caffemodel 拷贝到 data/faster_rcnn_models (删除以前生成类似的 model )中。 2 、修改 /tools/demo.py 为: (1) CLASSES =('__background__', 'people' ) (只有这两类) (2) NETS ={'vgg16': ('VGG16', 'VGG16_faster_rcnn_final.caffemodel'), 'zf': ('ZF', 'ZF_faster_rcnn_final.caffemodel' )} (3) 在训练集图片中找一张出来放入 py-faster-rcnn/data/demo 文件夹中,命名为 000001.jpg 。 im_names = (只需这一类图片的一张,其他删除或注销) for im_name in im_names: print'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' print'Demo for data/demo/{}'.format(im_name) demo(net, im_name) 3 、运行 demo ,即在 py-faster-rcnn 文件夹下终端输入: ./tools/demo.py --net zf 结果如图: 四. Cpu 运行 faster rcnn 1. 在一切都正常的情况下,对 caffe-fast-rcnn 进行 make 和 make pycaffe 的结果如下: 编译好 caffe-fast-rcnn 后,在 py-faster-rcnn/lib 中执行 make 命令: bigtop@bigtop-SdcOS-Hypervisor:~/py-faster-rcnn/lib$ make python setup.py build_ext --inplace running build_ext skipping 'utils/bbox.c' Cython extension(up-to- date ) skipping 'nms/cpu_nms.c' Cython extension(up-to- date ) skipping 'pycocotools/_mask.c' Cython extension (up-to- date ) rm -rf build bigtop@bigtop-SdcOS-Hypervisor:~/py-faster-rcnn/lib$ 2 在安装配置好 caffe-fast-rcnn 后,修改 py-faster-rcnn 相关配置,让其模型可以在没有 GPU 的环境下运行: A 将 ~/py-faster-rcnn/lib/fast_rcnn/config.py 的如下内容: B 将 ~/py-faster-rcnn/tools/test_net.py 和 ~/py-faster-rcnn/tools/train_net.py 的 caffe.set_mode_gpu() 修改为 caffe.set_mode_cpu(). C 将 ~/py-faster-rcnn/lib/setup.py 中,含有 'nms.gpu_nms’ 的部分去掉,去掉后的内容如下: 112 ext_modules = , 116 extra_compile_args={ 'gcc' : }, 117 include_dirs = 118 ), 119 Extension( 120 nms.cpu_nms , 121 , 122 extra_compile_args={ 'gcc' : }, 123 include_dirs = 124 ), 125 Extension( 126 'pycocotools._mask' , 127 sources= , 128 include_dirs = , 129 extra_compile_args={ 130 'gcc' : }, 131 ), 132 ] D 做到上面三部后,还是不够的,还需要将: ../lib/fast_rcnn/nms_wrapper.py:9: #from nms.gpu_nms import gpu_nms 注释掉: 否则,会抛出如下的异常: Traceback (most recent call last ): File ./demo.py , line 18 , in from fast_rcnn.test import im_detect File .../py-faster-rcnn-master/tools/../lib/fast_rcnn/test.py , line 17 , in from fast_rcnn.nms_wrapper import nms File .../py-faster-rcnn-master/tools/../lib/fast_rcnn/nms_wrapper.py , line 11 , in from nms.gpu_nms import gpu_nms ImportError: No module named gpu_nms 3. 修改 train_faster_rcnn_alt_opt.py: 1 )下列语句: 修改为: 2 )下列语句 修改为: 4. 打开 faster_rcnn_alt_opt.sh 1) 找到下列语句: 修改为: 3. 训练 : 终端进入 py-faster-rcnn 下输入: ./experiments/scripts/faster_rcnn_alt_opt.sh ZF pascal_voc 五. ipython notebook for ubuntu14.04 安装步骤(真的超级简单) 1. 环境 操作系统: ubuntu 14.04 / 尤麒麟 2. 操作步骤 a) 安装 pip 工具 终端输入以下命令: sudo apt-get install python-pip b) 安装 ipython 终端输入以下命令: sudo apt-get install ipython c) 安装 ipython 终端输入以下命令: sudo apt-get install ipython-notebook d) 启动 ipython 终端输入以下命令: ipython notebook
3904 次阅读|0 个评论
神经网络和卷积神经网络的基础知识
热度 2 apollocv 2017-6-1 08:53
神经网络和卷积神经网络的基础知识 1, Michael Nielsen写的在线教程 http://neuralnetworksanddeeplearning.com/ 介绍了神经网络的基本结构,有例子展示为何神经网络可以学习任何函数,为什么传统的深度学习很慢等。还提供了基于Theano的用于MNIST手写数字的识别的例子代码。 2, 斯坦福大学的深度学习课程 http://cs231n.github.io/ 这是斯坦福大学李飞飞教授开的一门课。从图像分类的应用出发,介绍了线性分类器、随机梯度下降法等基本的 机器学习 中常用的概念。并且介绍了在使用神经网络、卷积神经网络和转移学习中的问题和例子。 3,《 Deep Learning in Neural Networks: An Overview 》 这是瑞士 人工智能 实验室 Jurgen Schmidhuber 写的最新版本《神经网络与深度学习综述》本综述的特点是以时间排序,从 1940 年开始讲起,到 60-80 年代,80-90 年代,一直讲到 2000 年后及最近几年的进展。涵盖了 deep learning 里各种 tricks,引用非常全面。 4, UFLDL -斯坦福大学 Andrew Ng 教授“Deep Learning”教程 本教程将阐述无监督特征学习和深度学习的主要思想。涵盖了稀疏编码、Softmax回归、用深度网络做图像分类等方面的应用。 CNN的应用 1, 目标检测 【基于深度学习的目标检测研究进展 】 http://chuansong.me/n/353443351445 这篇文章介绍了一系列基于CNN的目标检测算法,简述了传统目标检测的流程,介绍了以R-CNN为代表的结合region proposal和CNN分类的目标检测框架(R-CNN, SPP-NET, Fast R-CNN, Faster R-CNN)、以YOLO为代表的将目标检测转换为回归问题的目标检测框架(YOLO, SSD),并且介绍一些可以提高目标检测性能的技巧和方法。 2,图像分割 基于FCN的分割 http://blog.csdn.net/taigw/article/details/51401448 3, 目标跟踪 【深度学习在目标跟踪中的应用】 https://zhuanlan.zhihu.com/p/22334661 4, 其他 有待更新 更多资料: http://www.open-open.com/news/view/1621439
3715 次阅读|2 个评论
专题讨论班:深度学习简介(周池春)
GrandFT 2017-5-15 11:45
题目:深度学习简介以及神经网络的具体例子 Long Short-Term Memory 神经网络 主讲:周池春 时间:2017年5月15日 下午 2点 地点:天津大学北洋园校区32教343 提纲: 1.机器学习简介 2.深度学习简介 3.RNN神经网络 4.LSTM神经网络 参考书目: 1.“Deep Learning”作者 Ian Goodfellow, Yoshua Bengio, Aaron Courville 2.“Deep Learning with Python. A Hands-on Introduction”作者 Nikhil Ketkar
个人分类: 专题讨论班|2675 次阅读|0 个评论
深度学习时代的计算机视觉
热度 1 zsfreefly 2017-5-11 17:27
在上世纪50 年代,数学家图灵提出判断机器是否具有人工智能的标准:图灵测试。图灵测试是指测试者在与被测试者(一个人和一台机器)隔开的情况下,通过一些装置(如键盘)向被测试者随意提问。进行多次测试后,如果有超过 30% 的测试者不能确定出被测试者是人还是机器,那么这台机器就通过了测试,并被认为具有人类智能。 图灵测试一词来源于计算机科学和密码学的先驱阿兰·麦席森·图灵写于 1950 年的一篇论文《计算机器与智能》,其中 30% 是图灵对 2000 年时的机器思考能力的一个预测,但是从图灵测试提出来开始到本世纪初, 50 多年时间有无数科学家提出很多机器学习的算法,试图让计算机具有与人一样的智力水平,但直到 2006 年深度学习算法的成功,才带来了一丝解决的希望。 前深度学习时代的计算机视觉 为什么深度学习之前,传统计算机视觉算法在人脸识别、跟踪、目标检测等诸多领域没有达到深度学习的精度呢?回答这一问题,需要我们先了解传统算法的特点。 对于视觉算法来说,大致可以分为以下4 个步骤:图像预处理、特征提取、特征筛选、推理预测与识别。计算机视觉可以说是机器学习在视觉领域的应用,所以计算机视觉在采用这些机器学习方法的时候,不得不自己设计前面 3 个部分。但对任何人来说这都是一个比较难的任务。 传统的计算机识别方法把特征提取和分类器设计分开来做,然后在应用时再合在一起,比如如果输入是一个摩托车图像的话,首先要有一个特征表达或者特征提取的过程,然后把表达出来的特征放到学习算法中进行分类的学习。 过去20 年中出现了不少优秀的特征算子,比如最著名的 SIFT 算子,即所谓的对尺度旋转保持不变的算子。它被广泛地应用在图像比对,特别是所谓的 structure from motion 这些应用中,有一些成功的应用例子。另一个是 HoG 算子,它可以提取物体,比较鲁棒的物体边缘,在物体检测中扮演着重要的角色。 这些算子还包括Textons , Spin image , RIFT 和 GLOH ,都是在深度学习诞生之前或者深度学习真正的流行起来之前,占领视觉算法的主流。 这些特征和一些特定的分类器组合取得了一些成功或半成功的例子,基本达到了商业化的要求但还没有完全商业化。比如指纹识别算法、基于Haar 的人脸检测算法、基于 HoG 特征的物体检测。但这种成功例子太少了,因为 手工设计特征需要大量的经验,需要你对这个领域和数据特别了解,然后设计出来特征还需要大量的调试工作 。说白了就是需要一点运气。 另一个难点在于,你不只需要手工设计特征,还要 在此基础上有一个比较合适的分类器算法 。同时设计特征然后选择一个分类器,这两者合并达到最优的效果,几乎是不可能完成的任务。 深度学习时代的计算机视觉 深度学习的前世 深度学习网络的最初原型是人工智能领域的大牛Lecun 在 1998 年 ATT 的实验室时发明出来的,当时用这一网络进行字母识别,达到了非常好的效果。 我们不禁要问:似乎卷积神经网络设计也不是很复杂,98 年就已经有一个比较像样的雏形了。自由换算法和理论证明也没有太多进展。那为什么时隔 20 年,卷积神经网络才能卷土重来,占领主流? 这一问题与卷积神经网络本身的技术关系不太大,与其它一些客观因素有关。 首先,深度卷积神经网络需要大量数据进行训练。网络深度太浅的话,识别能力往往不如一般的浅层模型,比如SVM 或者 boosting ;如果做得很深,就需要 大量数据 进行训练,否则机器学习中的过拟合将不可避免。而2006 年开始,正好是互联网开始大量产生各种各样的图片数据的时候,即视觉大数据开始爆发式地增长。 另外一个条件是运算能力。卷积神经网络对计算机的运算要求比较高,需要大量重复可并行化的计算,在当时CPU 只有单核且运算能力比较低的情况下,不可能进行个很深的卷积神经网络的训练。随着 GPU 计算能力的增长,卷积神经网络结合大数据的训练才成为可能。 最后一点就是人和。卷积神经网络有一批一直在坚持的科学家(如Lecun )才没有被沉默,才没有被海量的浅层方法淹没。最后终于看到卷积神经网络占领主流的曙光。 深度学习的今生 深度学习的概念由Hinton 等人于 2006 年提出,具备天时地利人和的深度学习从此一发不可收拾,其在计算机视觉的诸多领域取得的效果远超传统机器学习算法,包括 人脸识别、图像问答、物体检测、物体跟踪 。 人脸识别方面,工作比较超前的是汤晓鸥教授,他们提出的DeepID 算法在 LWF 上做得比较好。最新的 DeepID-3 算法,在 LWF 达到了 99.53% 准确度,与肉眼识别结果相差无几。 物体检测方面,2014 年的 Region CNN 算法、 2015 年的 Faster R-CNN 方法、 FACEBOOK 提出来的 YOLO 网络、在 arXiv 上出现的最新算法叫 Single Shot MultiBox Detector 在识别精度和速度上均与较大提升。 物体跟踪方面,DeepTrack 算法是第一在线用深度学习进行跟踪的文章,当时超过了其它所有的浅层算法。此后越来越多的深度学习跟踪算法提出。
4292 次阅读|1 个评论
深度学习起源翻译0
热度 1 xianchaozhang 2017-5-11 16:12
近日,卡内基梅隆大学的 Haohan Wang 和 Bhiksha Raj 在 arXiv 上发布了一篇论文《 On the Origin of Deep Learning 》,详细地梳理了深度学习思想自亚里士多德时代以来的发展,尤其是现代随着计算机科学的兴起而出现的一些新的算法思想,很有参考价值。我们对该文进行了初步的翻译,以方面国内读者阅读。水平有限,翻译不够准确的地方敬请批评指正。有兴趣阅读原文的读者可在 https://arxiv.org/abs/1702.07800 查阅。
2401 次阅读|1 个评论
【IJAC上新闻】Poggio教授关于深度学习的综述已被MIT NEWS等报道
热度 2 Chenfiona 2017-5-10 17:53
还记的IJAC三月发表的一篇有关深度学习的综述吗?作者是麻省理工美国人文与科学院院士Tomaso Poggio 。 Poggio教授在这篇文章中阐述了有关神经网络深度学习的一个基本问题:为什么深层网络比浅层网络更好? 这篇论文在发表后近2个月,下载量已经超过1500次,Altmetric分数已达到57,该论文和IJAC期刊已被MIT News、ECN等5家国外媒体报道,此后被“机器之心”微信公众号等国内自媒体和网页翻译转载。 这么热的论文,你怎么能不看呢? Why and When Can Deep-but Not Shallow-networks Avoid theCurse of Dimensionality: A Review Author : Tomaso PoggioHrushikesh Mhaskar, Lorenzo Rosasco, Brando Miranda, Qianli Liao Institute : Massachusetts Institute of Technology, USA Keywords: Machine learning, neural networks, deep andshallow networks, convolutional neural networks, function approximation, deeplearning. Full Text: https://link.springer.com/article/10.1007/s11633-017-1054-2 http://news.mit.edu/2017/explained-neural-networks-deep-learning-0414
个人分类: 好文推荐|658 次阅读|2 个评论
【小编探会】之23:CSIG视觉大数据..暨第一届视觉大数据高峰论坛
Chenfiona 2017-5-10 16:44
5 月5日,中国图象图形学学会主办、视觉大数据专业委员会承办、图像视频大数据产业技术创新战略联盟协办的 “CSIG视觉大数据专委会成立大会暨第一届视觉大数据高峰论坛” 在中科院自动化所召开。 小编在会场推介了“Highlight Articles of IJAC in 2016-2017”,推荐的8篇文章中,有三篇是关于深度学习的综述和研究论文。一位老师说IJAC发文级别越来越高喽,呵呵! 本次论坛以“视觉大数据”为主题,邀请了旷视科技首席科学家孙剑博士、腾讯AI Lab计算机视觉中心总监刘威博士、商汤科技首席研发总监林倞教授、复旦大学姜育刚教授做主题报告。他们分别介绍了自己所从事的视觉大数据领域的研究工作,并就如何加快我国视觉大数据产业的发展,强化视觉大数据技术对智能产业的引领和支持,推动视觉大数据技术不断发展等方面提出了许多独到见解。 (部分文字与照片来源中科院自动化所新闻) Highlight Articlesof IJAC in 2016-2017 Why and When Can Deep-but Not Shallow-networks Avoid theCurse of Dimensionality: A Review Author : Tomaso PoggioHrushikesh Mhaskar, Lorenzo Rosasco, Brando Miranda, Qianli Liao Institute : Massachusetts Institute of Technology, USA Keywords: Machine learning, neural networks, deep andshallow networks, convolutional neural networks, function approximation, deeplearning. Full Text: https://link.springer.com/article/10.1007/s11633-017-1054-2 A Survey on Deep Learning-based Fine-grained ObjectClassification and SemanticSegmentation Author : Bo Zhao, Jiashi Feng, Xiao Wu, Shuicheng Yan Institute : National University of Singapore, Singapore Keywords: Deep learning, fine-grained imageclassification, semantic segmentation, convolutional neural network, recurrentneural network. Full Text: https://link.springer.com/article/10.1007/s11633-017-1053-3 http://www.ijac.net/EN/abstract/abstract1901.shtml Minimal Gated Unit for Recurrent Neural Networks Author : Guo-Bing Zhou, Jianxin Wu, Chen-Lin Zhang, Zhi-Hua Zhou Institute : Nanjing University, China Keywords: Recurrent neural network, minimal gated unit,gated unit, gate recurrent unit, long short-term memory, deep learning. Full Text: https://link.springer.com/article/10.1007/s11633-016-1006-2 http://www.ijac.net/EN/abstract/abstract1822.shtml Pinning Control and Controllability of Complex DynamicalNetworks Author : Guanrong Chen Institute : City University of Hong Kong, China Keywords: Complex network, pinning control,controllability, linear time-invariant system, temporally switching network,graph theory. Full Text: https://link.springer.com/article/10.1007/s11633-016-1052-9 http://www.ijac.net/EN/abstract/abstract1865.shtml Review of Some Advances and Applications in Real-timeHigh-speed Vision: Our Views and Experiences Author : Qing-Yi Gu, Idaku Ishii Institute : Hiroshima University, Japan Keywords: Real-timehigh-speed vision, target tracking, abnormal behavior detection, behaviormining, vibration analysis, 3D shape measurement, cell sorting. Full Text: https://link.springer.com/article/10.1007/s11633-016-1024-0 http://www.ijac.net/EN/abstract/abstract1808.shtml Cooperative Formation Control of Autonomous UnderwaterVehicles: An Overview Author : Bikramaditya Das, Bidyadhar Subudhi, Bibhuti Bhusan Pati Institute : Veer Surendra Sai University of Technology, India Keywords: Autonomous underwater vehicles, cooperativecontrol, formation control, tracking control, regulatory control. Full Text: https://link.springer.com/article/10.1007/s11633-016-1004-4 http://www.ijac.net/EN/abstract/abstract1821.shtml Optimal Feedback Control of OilReservoir Waterflooding Processes Author : A. S. Grema, Yi Cao Institute : Cranfield University, UK Keywords: Oil reservoir management,intelligent wells, optimal control theory, feedback control, geologicaluncertainty. Full Text: https://link.springer.com/article/10.1007/s11633-015-0909-7 http://www.ijac.net/EN/abstract/abstract1769.shtml Output Feedback Stabilization of Spacecraft AutonomousRendezvous Subject to Actuator Saturation Author : Qian Wang, Guang-Ren Duan Institute : Harbin Institute of Technology, China Keywords: Dynamic gain scheduling, output feedback,parametric Lyapunov equation, input saturation, spacecraft rendezvous. Full Text: https://link.springer.com/article/10.1007/s11633-016-0952-z http://www.ijac.net/EN/abstract/abstract1691.shtml
个人分类: 小编探会|603 次阅读|0 个评论
深度学习助力提升物种鉴别效率
热度 1 zhuchaodong 2017-4-14 07:31
分类学工作者采集到大量标本,可以研究物种的形态和遗传的变异范围,是一件非常令人兴奋的事情。但有时,大量小型标本的分拣也是令人头疼的事情。智能手机、数码相机和互联网时代,随时随地可能获得有趣的图片,便于专家进行识别。然而,当相同物种的图片增加到一定程度,专家也无法及时给予回复。这里面最大的问题,还在于物种图片鉴别速度和鉴别准确率的问题。我在上一篇博文中提到“开发识别技术,加速物种分类学研究进程”。分子生物学和分类学整合,在过去的几十年极大推动了物种界定和生物系统学的发展。在快速逼近的大数据时代和深度学习时代,物种图片识别技术是否能够得到快速发展?生物分类的过程,实际上是人类智力和时间高度参与人工图片识别和归类的过程。能否加速图片识别,降低人类对重复图片识别和归类的时间投入? 2012年,中国科学院网络中心的李健博士等就已经实现了鸟类的图片识别。该物种形态学鉴别系统基于 IT 技术,包括了 B/S 架构的 Web 端和手持设备端两部分。使得用户可直接访问专家数据库以判定个体从属的种类,同时也可以上传信息请求专家审核.此鉴别系统在为用户提供方便准确的物种鉴别手段的同时,也为分类学家提供了一个获取大量信息的平台(鸟类物种形态学鉴别系统设计与实现:http://escj.cnic.cn/CN/abstract/abstract12648.shtml)。目前,他的团队已经能够处理动态视频中的鸟类物种识别问题。这样的工作及其平台,能否移植到昆虫工作中? 今天早晨读到Nvidia网站上一篇关于野生动物图片自动鉴别的报道,同时阅读了昆虫图像识别的一篇综述。两者分别从硬件和软件的角度,提出了一些有价值的思路,值得参考。它们的共同点如下: 1、相机监测网络已经获得大量野生小型兽类、鸟类的图片; 2、像素得到极大提升的智能手机和数码相机已经非常普及,和植物图片一样,昆虫的图片数据也在不断增加; 3、室内分类学工作生成大量的专业级(专家级)图片; 4、野外相机监测、智能手机和数码相机获得图片不一定和室内的专业图片相同的大小、摆放位置和角度; 5、均可以引入深度学习的理念,在未来海量图片的基础上,整合专业级图片,加速图像识别和自动鉴别,并提高准确程度; 6、把分类学者从标本分拣的琐碎工作中解放出来,既能够获得物种的分布数据,又能够集中精力针对部分标本开展深入的物种研究工作。 下列3个图和1个表格均来自: A survey on image-based insect classification.pdf 。 图1、特征提取方式演变 图2、昆虫识别的特征分类策略 图3、分类策略 表1、综述中涉及的昆虫图像识别数据及文献 Automatically Identify Wild Animals in Camera-Trap Images April 11, 2017 A research team led by University of Wyoming developed a deep learning -based system to identify species in the Serengeti National Park in Tanzania that could make it easier for ecologists to track animals in the wild. Camera traps automatically take pictures of passing animals when triggered by heat and motion which produce millions of images and extracting knowledge from these camera-trap images is traditionally done by humans. According to their research paper , it currently takes two to three months for a group of thousands of people to manually label each 6-month batch of images. When lead researcher Jeff Clune at the University of Wyoming in Laramie heard about the project, he knew it was an ideal opportunity to leverage deep learning. Using a variety of GPUs including the NVIDIA DGX-1 AI supercomputer and CUDA , cuDNN and NCLL with the Torch deep learning framework, the researchers trained their deep convolutional neural network to recognize 48 species in 3.2 million images taken from the national park’s hidden camera-traps. They were able to train their neural networks to automatically identify the variety of animals with over 92% accuracy. A sample camera-trap image from the Snapshot Serengeti dataset. “This is very exciting,” says Chris Carbone at the Zoological Society of London. Automatic species recognition could help us learn more about the distribution of species and get a better idea of the impact humans are having on them, he says. Read more Tags: CUDA , cuDNN , GeForce , Higher Education / Academia , Image Recognition , Machine Learning Artificial Intelligence , Tesla
5656 次阅读|1 个评论
请大家协助揭露深度学习方面的欺诈
热度 8 gaoshannankai 2017-4-13 18:30
对于美国新一轮科技革命的深度思考 http://blog.sciencenet.cn/blog-907017-1042459.html 基于我多年在信息科学和生命科学的实际工作经验,我对本轮科技革命 做出如下研判,当然还请各位同领域大小同行给予批评指正。 现在,有些人为了骗取经费或坑害消费者,设计所谓针对神经网络的 各种专用服务器乃至芯片,也是我们大家应该可以预料到的。 现在有人叫卖的所谓深度学习服务器,自称可以扩展到100GPU, 我本人表示怀疑。当然我现在已经离开计算领域时间较长,但是据我的 不完全经验,貌似一块主板增加到8块显卡,就已经需要专业定制了, 而且IO有瓶颈,这个是不能无限增加的。 第二就是有人叫卖100万服务器配置,提供软硬件全套解决方案, 我个人认为这种专业配置,很难有一揽子解决方案,即使有个比较通用 的算法,比如神经网络深度学习,也只能干这个,所以这个软件有些虚。 最后就是,目前的算法,包括比较重要的数据预处理等,还都是 串行的,控制多个GPU的并行算法估计也是刚刚开展起来,真的有必要大家 都配置这种专用服务器么?我们南开大学动物系现在计算进化,确实需要 大量GPU加速,但是主要还是利用他的数据位数多(比如128或256)和 主频高,目前没有见到哪种算法可以驱动多个GPU,起码不常见。 当前的深度学习,基本上还是围绕人工神经网络展开,当然以后还会有 更多的发展,有无必要设计专门的CPU或GPU,这些都有待论证。 普通实验室,真的有那么大的数据,需要购置100万的深度学习服务器么? 我建议你先把你算法和数据放到普通服务器上跑一跑,估计一下时间,等需要的时候再买。 当然国家经费花不完除外,我这个主要是对真正有需要的人说的。 一块 NVIDIA ( 英伟达 )显卡,专业一点的刚出来3000元以上, 一年后折半,2-3年后,我去二手市场当萝卜白菜300元收一块,照样可以搞科研。 知道多黑了吧,人工智能,即使有智能的美国人骗没有智能的中国人的钱 关于多GPU并行计算等,我谈谈个人看法,请大家批评指正 GPU原本上适于并行计算(多CPU)对立的,就是因为有些领域不适合多个cpu工作,所以特意 找一个最快的GPU,充分发挥他主频高和数据位数多的优点,例如导弹里面的计算机,这个要高性能 实时计算,所以当初美国和日本禁止类似playstation的游戏机出口中国,就是怕他的128芯片系统被 中国拿去搞导弹。我知道有些人是搞了GPU并行计算算法之类的,特别是遇到一个国防科大校友, 他说他为了发文章搞过一个,在2个GPU服务器上测试了,但是为了发文章弄的,没有实际意义。 为了发论文,故意设计多个GPU并行计算,当然我们不知道是真并行和假并行,总之去解决 自己想象出来的课题,这既是伪科研。
2729 次阅读|12 个评论
【IJAC推文】“高智商”机器人的终极杀器---深度学习技术
Chenfiona 2017-4-11 19:48
一直以来,棋类游戏都被视为顶级人类智力的试金石。1997年,国际象棋机器人第一次打败人类顶尖高手;9年后,人类最后一次打败国际象棋机器人。 围棋,因其需要计算的变化数量远远超过宇宙中已观测到的原子数量,令一众企图借蛮力穷尽算法的研究者们望而却步。然好景不长,继去年阿法狗大败九段手李世石后,人机大战2.0版也将于今年5月在乌镇正式开打。而支撑“高智商”机器人征战南北的终极杀器,正是火遍全球的“深度学习”技术。 说起“深度学习”,不禁联想到各大互联网公司、智商完美碾压小编的首席科学家们,其中当然少不了AI界大神、360首席科学家、人工智能研究院院长颜水成。 “深度学习”技术的本质就在于特征分层不依赖于研究者的设计,而是机器本身基于一种通用的学习程序,借助数据,像人脑一样主动学习的过程。“深度学习”有大量不同的架构方法,其中就包括基于卷积神经网络的架构方法和基于递归神经网络的架构方法。 脑容量够大、觉得不过瘾的各位不妨继续深入读读颜水成团队关于“深度学习”的研究综述。他们回顾了基于“深度学习”的4种细粒度图像分类方法,以及基于“深度学习”的语义分割方法。如何让机器学会“认识”各种各样的鸟?如何让机器能够“看图说话”?答案就在文中~ 1. 收录信息: Bo Zhao, Jiashi Feng, Xiao Wu,Shuicheng Yan. A Survey on Deep Learning-based Fine-grained ObjectClassification and Semantic Segmentation. InternationalJournal of Automation and Computing , vol. 14, no. 2, pp. 119-135, 2017. 2. 全文链接: 1) Springer Link: https://link.springer.com/article/10.1007/s11633-017-1053-3 2) IJAC 官网: http://www.ijac.net/EN/abstract/abstract1901.shtml 3. 摘要: The deep learning technology hasshown impressive performance in various vision tasks such as image classification,object detection and semantic segmentation. In particular, recent advances ofdeep learning techniques bring encouraging performance to fine-grained imageclassification which aims to distinguish subordinate-level categories, such asbird species or dog breeds. This task is extremely challenging due to highintra-class and low inter-class variance. In this paper, we review four typesof deep learning based fine-grained image classification approaches, includingthe general convolutional neural networks (CNNs), part detection based,ensemble of networks based and visual attention based fine-grained imageclassification approaches. Besides, the deep learning based semanticsegmentation approaches are also covered in this paper. The region proposal basedand fully convolutional networks based approaches for semantic segmentation areintroduced respectively. 4. 关键词: Deep learning , fine-grained image classification , semanticsegmentation , convolutional neural network (CNN) , recurrent neural network (RNN). IJAC 近期发表的其他两篇深度学习热文如下 : TomasoPoggio, Hrushikesh Mhaskar, Lorenzo Rosasco, Brando Miranda, Qianli Liao. Why and When Can Deep-but NotShallow-networks Avoid the Curse of Dimensionality: A Review . International Journal of Automation andComputing , DOI: 10.1007/s11633-017-1054-2, 2017. 全文链接 : https://link.springer.com/article/10.1007/s11633-017-1054-2 Guo-BingZhou, Jianxin Wu,Chen-Lin, ZhangZhi-Hua Zhou. Minimal gated unit for recurrent neural networks . I nternational Journal of Automation andComputing , Vol.13, No.3, pp. 226-234, 2016. 全文链接 : https://link.springer.com/article/10.1007/s11633-016-1006-2 或 http://www.ijac.net/EN/abstract/abstract1822.shtml 5. 作者简介: 1 ) BoZhao received the B. Sc. degree in networking engineeringfrom Southwest Jiaotong University in 2010. He is a Ph.D. degree candidate atSchool of Information Science and Technology, Southwest Jiaotong University,China. Currently, he is at the Department of Electrical and ComputerEngineering, National University of Singapore, Singapore as a visiting scholar. His research interests includemultimedia, computer vision and machine learning. E-mail: zhaobo@my.swjtu.edu.cn ORCID iD: 0000-0002-2120-2571 2 ) JiashiFeng received the B.Eng. degree fromUniversity of Science and Technology, China in 2007, and the Ph.D. degree fromNational University of Singapore, Singapore in 2014. He was a postdocresearcher at University of California, USA from 2014 to 2015. He is currentlyan assistant professor at Department of Electrical and Computer Engineering,National University of Singapore, Singapore. His research interests includemachine learning and computer vision techniques for large-scale data analysis.Specifically, he has done work in object recognition, deep learning, machinelearning, high-dimensional statistics and big data analysis. E-mail: elefjia@nus.edu.sg 3 ) XiaoWu received the B.Eng. and M. Sc. degrees in computerscience from Yunnan University, China in 1999 and 2002, respectively, and thePh.D. degree in computer science from City University of Hong Kong, China in2008. He is an associate professor at Southwest Jiaotong University, China. Heis the assistant dean of School of Information Science and Technology, and thehead of Department of Computer Science and Technology. Currently, he is atSchool of Information and Computer Science, University of California, USA as avisiting associate professor. He was a research assistant and a senior researchassociate at the City University of Hong Kong, China from 2003 to 2004, and2007 to 2009, respectively. From 2006 to 2007, he was with the School ofComputer Science, Carnegie Mellon University, USA as a visiting scholar. He waswith the Institute of Software, Chinese Academy of Sciences, China, from 2001to 2002. He received the second prize of Natural Science Award of the Ministryof Education, China in 2015. His research interests includemultimedia information retrieval, image/video computing and data mining. E-mail: wuxiaohk@gmail.com (Corresponding author) ORCID iD: 0000-0002-8322-8558 4 ) ShuichengYan is currently an associate professor at theDepartment of Electrical and Computer Engineering, National University ofSingapore, Singapore, the founding lead of the Learning and Vision ResearchGroup (http://www.lvnus.org). He has authored/co-authored nearly 400 technicalpapers over a wide range of research topics, with Google Scholar citation12000 times. He is ISI highly-cited researcher 2014, and IAPR Fellow 2014. He hasbeen serving as an associate editor of IEEE Transactions on Knowledge and DataEngineering, Computer Vision and Image Understanding and IEEE Transactions onCircuits and Systems for Video Technology. He received the Best Paper Awardsfrom ACM MM’13 (Best paper and Best student paper), ACM MM’12 (Best demo),PCM’11, ACM MM’10, ICME’10 and ICIMCS’09, the runnerup prize of ILSVRC’13, thewinner prizes of the classification task in PASCAL VOC 2010–2012, the winnerprize of the segmentation task in PASCAL VOC 2012, the honorable mention prizeof the detection task in PASCAL VOC’10, 2010 TCSVT Best Associate Editor (BAE)Award, 2010 Young Faculty Research Award, 2011 Singapore Young Scientist Award,and 2012 NUS Young Researcher Award. His research interests includemachine learning, computer vision and multimedia. E-mail:eleyans@nus.edu.sg
个人分类: 好文推荐|592 次阅读|0 个评论
[转载]对偶学习的生成对抗网络 (DualGAN)
duxingren14 2017-4-10 23:17
原作:傅渥成 原链接: https://www.zhihu.com/people/fuwocheng/asks 作者:傅渥成 链接:https://zhuanlan.zhihu.com/p/26270773 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 近年来,生成对抗网络(Generative Adversarial Networks, GAN)成为了人工智能领域最为炙手可热的研究方向。GAN 的想法最早由 Ian Goodfellow 在 2014 年提出。GAN 用对抗的方法,同时训练了一个「生成模型(G)」与一个「判别模型(D)」,在学习的过程中,生成模型的优化目标是尽可能地去生成伪造的数据,从而获得真实数据的统计分布规律;而判别模型则用于判别给出的一个输入数据到底来源于真实数据还是生成模型。最终,当一个判别模型无法准确分辨生成模型所生成的数据是否为伪造时,此时我们认为判别模型与生成模型都已经提高到了较高的水平,生成模型所生成的数据足以模仿真实世界中的数据。因此,当我们使用 GAN 来「识别」图片时,我们不但识别了图片的内容,还可以生成各种不同内容的图片。费曼曾经说过:“What I cannot create, I do not understand.”生成模型为人工智能的研究提供了一种“create” 的可能性,因而引起了广泛的关注。 值得注意的是,生成模型所生成的结果并非是凭空来产生,更多的时候,很多图像处理和计算机视觉的问题都可以被看成是一种「图片翻译」的问题,例如一张人脸的照片以及与之对应的一张素描之间的相互转换就可以看成是从一张图片「翻译」为另外一张图片。事实上,更一般的,边界探测,图像分割,图片的风格化和抽象化等等都可以被视为是这样一种「翻译」问题。 而说到「翻译」,我们很容易会想到其在自然语言处理领域中的一些应用。近年来在机器翻译领域也有许多有意思的新进展。其中一种新的做法是对偶学习(dual learning),这种学习的方式为解决无监督学习中遇到的困难提供了新的思路。简要介绍一下这种学习方法的基本思路:假如现在小明只能讲中文, Alice 只会讲英文,他们两个人虽然都不懂对方的语言,但是他们希望能够可以中英文之间的两个翻译模型(中译英,英译中)。怎样可以实现他们的这个目的呢?首先,对于一个英文的句子,Alice 先用翻译工具将其翻译为中文,由于她并不懂中文,于是她直接把句子发给了小明;但小明又不懂英文,于是小明只能按照中文的语言习惯判断这个句子是否通顺,这可以帮助小明判断这个「英译中」的系统是否做得很好,随后,小明把他修改过的句子再用「中译英」的系统翻译成英文,并把英文句子发给 Alice。Alice 虽然不懂中文,但她能比较经过这一大圈的翻译之后,得到的新句子与最初的版本是否相似。这一信息可以帮助判断是否两个翻译模型都表现良好。随着「对偶学习」过程的持续进行,未标注的数据也得到了充分的利用,利用这些信息,可以帮助提高对偶任务中的两个翻译模型。这种对偶学习的想法为进一步改进现有的翻译模型提出了崭新的思路。 如果把这种对偶学习的方法也用到基于 GAN 的图片的「翻译」上,会得到怎样的效果呢?这会是一个非常有趣的问题。不久前,我的本科同学易子立( @Maoren Liu )和他的合作者们借用了对偶学习的思路,设计了一种名为对偶 GAN(DualGAN)的算法。说来有趣的是,我今年年初在写电子书《 人工智能是怎样设计的 》时,当时也与易子立讨论过电子书有关内容的选择和组织,在组织里面的内容时,考虑到这两种算法表现出的无监督特性,我有意地将对偶学习和 GAN 的介绍相邻排列在一起。 如果说原来的 GAN 是将图片的「识别」问题扩展为「生成」和「判别」两个问题,那么 DualGAN 算法就是将基本的 GAN 再进一步扩展为两个相互耦合的的 GAN,其中存在着两个生成器和两个判别器。以素描与照片之间的相互「翻译」为例进行说明,其中第一个生成器 可以将素描(U)翻译为照片(V), 所完成的任务正是我们最终想要完成的目的,与这个生成器对应的有一个判别器 。与此同时,构建与之对偶的另一个生成器 ,将照片转换为素描,与这个生成器所对应的同样有一个判别器 。 在这样的基本框架下,接下来我们来考虑怎样利用对偶学习的思路训练 GAN。首先我们介绍「生成」的思路,通过生成器 可以对素描图片 u 进行翻译,最终得到类似照片的图片,其中包含的噪声为 z,翻译的结果即为 ,把这个翻译的结果扔给另一个专门用于生成素描图片的生成器 ,得到的结果 即为对原有的素描图片的一次重构,这里的 z' 同样是噪声。接下来考虑与这一过程对偶的一个过程,首先将照片 v 用生成器 翻译为素描图 ,然后再用生成器 对生成的素描图进行翻译,得到 。 接下来介绍「判别」的思路,与生成器 对应的判别器 判断一张图片是否像一张照片,而与生成器 对应的判别器 则判断一张图片是否像一张素描图。对应于上面提到的对偶的生成过程,系统最终希望最小化重构误差,即希望最小化在两次迭代后得到的结果与原始图片之间的误差 和 。 根据这一基本思路,我们就可以真的来对图片做各种处理了。下面了展示这一算法得到的一些结果。这些相关结果分别与真实情况(ground truth)和其它算法得到的结果进行了比较,可以发现这一算法的确有着不错的表现。 (1)日景图片与夜景图片之间的转换 (2)图片和图片标签之间的相互「翻译」:对图片加标签和通过图片标签重建图片 (3)素描与照片之间的相互「翻译」 (4)地图与卫星图片之间的相互「翻译」 然而,还有一些情况,我们仅仅只能进行一些「翻译」,而无法找到正确的结果(ground truth)进行比较,例如图片风格的改变就属于这一类问题,然而这些问题本身就是一种没有正确答案的问题。这些问题尤为重要,因为这些问题涉及到真正的无监督学习。尽管「风格」的转换本身无法找到很好的度量方式,然而在某些特殊的问题上,仍然有一些检测的方法,例如用 AMT 材质感知测试,可以对图片中物品的材质进行一些「客观的」检验,这可以作为衡量「翻译」效果的一种度量。在这些应用方面,DualGAN 有着明显比 GAN 更好的无监督学习表现。 (5)中国画—油画之间的翻译 (6)金属、石头、木料、皮革、织物等材质之间的转换 这种基于对偶学习的 GAN 为图片与图片之间的「翻译」提供了新的思路,尤为重要的是,通过将 GAN 进一步进行扩充,这种方法把无监督学习的性质利用到了极致,因而在理论上具有很重要的意义。尽管这一算法目前的表现仍然有有待提高,然而与其它 GAN 的变形算法相比,例如与条件 GAN(conditional GAN, cGAN)相比,DualGAN 即使是面对完全没有加标签的数据,也可以产生足以与之相比的表现,这暗示了无监督学习的巨大潜力。考虑到 cGAN 等算法的训练需要引入大量的人工标签,DualGAN 等无监督学习的算法很可能可以大大降低加标签的成本,在进一步提高稳定性之后,值得相信其在未来有着重要的应用前景。 这篇论文的思路与最近很火的工作 Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks 非常类似,但其实是独立的、来源于不同出发点的工作。在看到那个工作的有关介绍后,我觉得应该特别有必要站出来介绍一下易子立的这个工作。目前,这篇关于 DualGAN 算法的论文已经投稿到 ICCV 会议,原论文的 arXiv 地址为: Unsupervised Dual Learning for Image-to-Image Translation ,这个项目的程序可以到以下 GitHub 链接获取: duxingren14/DualGAN
个人分类: 人工智能|1750 次阅读|0 个评论
[转载]对偶学习的生成对抗网络 (DualGAN)
duxingren14 2017-4-10 22:19
原作:傅渥成 原链接: https://zhuanlan.zhihu.com/p/26270773 近年来,生成对抗网络(Generative Adversarial Networks, GAN)成为了人工智能领域最为炙手可热的研究方向。GAN 的想法最早由 Ian Goodfellow 在 2014 年提出。GAN 用对抗的方法,同时训练了一个「生成模型(G)」与一个「判别模型(D)」,在学习的过程中,生成模型的优化目标是尽可能地去生成伪造的数据,从而获得真实数据的统计分布规律;而判别模型则用于判别给出的一个输入数据到底来源于真实数据还是生成模型。最终,当一个判别模型无法准确分辨生成模型所生成的数据是否为伪造时,此时我们认为判别模型与生成模型都已经提高到了较高的水平,生成模型所生成的数据足以模仿真实世界中的数据。因此,当我们使用 GAN 来「识别」图片时,我们不但识别了图片的内容,还可以生成各种不同内容的图片。费曼曾经说过:“What I cannot create, I do not understand.”生成模型为人工智能的研究提供了一种“create” 的可能性,因而引起了广泛的关注。 值得注意的是,生成模型所生成的结果并非是凭空来产生,更多的时候,很多图像处理和计算机视觉的问题都可以被看成是一种「图片翻译」的问题,例如一张人脸的照片以及与之对应的一张素描之间的相互转换就可以看成是从一张图片「翻译」为另外一张图片。事实上,更一般的,边界探测,图像分割,图片的风格化和抽象化等等都可以被视为是这样一种「翻译」问题。 而说到「翻译」,我们很容易会想到其在自然语言处理领域中的一些应用。近年来在机器翻译领域也有许多有意思的新进展。其中一种新的做法是对偶学习(dual learning),这种学习的方式为解决无监督学习中遇到的困难提供了新的思路。简要介绍一下这种学习方法的基本思路:假如现在小明只能讲中文, Alice 只会讲英文,他们两个人虽然都不懂对方的语言,但是他们希望能够可以中英文之间的两个翻译模型(中译英,英译中)。怎样可以实现他们的这个目的呢?首先,对于一个英文的句子,Alice 先用翻译工具将其翻译为中文,由于她并不懂中文,于是她直接把句子发给了小明;但小明又不懂英文,于是小明只能按照中文的语言习惯判断这个句子是否通顺,这可以帮助小明判断这个「英译中」的系统是否做得很好,随后,小明把他修改过的句子再用「中译英」的系统翻译成英文,并把英文句子发给 Alice。Alice 虽然不懂中文,但她能比较经过这一大圈的翻译之后,得到的新句子与最初的版本是否相似。这一信息可以帮助判断是否两个翻译模型都表现良好。随着「对偶学习」过程的持续进行,未标注的数据也得到了充分的利用,利用这些信息,可以帮助提高对偶任务中的两个翻译模型。这种对偶学习的想法为进一步改进现有的翻译模型提出了崭新的思路。 如果把这种对偶学习的方法也用到基于 GAN 的图片的「翻译」上,会得到怎样的效果呢?这会是一个非常有趣的问题。不久前,我的本科同学易子立( @Maoren Liu )和他的合作者们借用了对偶学习的思路,设计了一种名为对偶 GAN(DualGAN)的算法。说来有趣的是,我今年年初在写电子书《 人工智能是怎样设计的 》时,当时也与易子立讨论过电子书有关内容的选择和组织,在组织里面的内容时,考虑到这两种算法表现出的无监督特性,我有意地将对偶学习和 GAN 的介绍相邻排列在一起。 如果说原来的 GAN 是将图片的「识别」问题扩展为「生成」和「判别」两个问题,那么 DualGAN 算法就是将基本的 GAN 再进一步扩展为两个相互耦合的的 GAN,其中存在着两个生成器和两个判别器。以素描与照片之间的相互「翻译」为例进行说明,其中第一个生成器 可以将素描(U)翻译为照片(V), 所完成的任务正是我们最终想要完成的目的,与这个生成器对应的有一个判别器 。与此同时,构建与之对偶的另一个生成器 ,将照片转换为素描,与这个生成器所对应的同样有一个判别器 。 在这样的基本框架下,接下来我们来考虑怎样利用对偶学习的思路训练 GAN。首先我们介绍「生成」的思路,通过生成器 可以对素描图片 u 进行翻译,最终得到类似照片的图片,其中包含的噪声为 z,翻译的结果即为 ,把这个翻译的结果扔给另一个专门用于生成素描图片的生成器 ,得到的结果 即为对原有的素描图片的一次重构,这里的 z' 同样是噪声。接下来考虑与这一过程对偶的一个过程,首先将照片 v 用生成器 翻译为素描图 ,然后再用生成器 对生成的素描图进行翻译,得到 。 接下来介绍「判别」的思路,与生成器 对应的判别器 判断一张图片是否像一张照片,而与生成器 对应的判别器 则判断一张图片是否像一张素描图。对应于上面提到的对偶的生成过程,系统最终希望最小化重构误差,即希望最小化在两次迭代后得到的结果与原始图片之间的误差 和 。 根据这一基本思路,我们就可以真的来对图片做各种处理了。下面了展示这一算法得到的一些结果。这些相关结果分别与真实情况(ground truth)和其它算法得到的结果进行了比较,可以发现这一算法的确有着不错的表现。 (1)日景图片与夜景图片之间的转换 (2)图片和图片标签之间的相互「翻译」:对图片加标签和通过图片标签重建图片 (3)素描与照片之间的相互「翻译」 (4)地图与卫星图片之间的相互「翻译」 然而,还有一些情况,我们仅仅只能进行一些「翻译」,而无法找到正确的结果(ground truth)进行比较,例如图片风格的改变就属于这一类问题,然而这些问题本身就是一种没有正确答案的问题。这些问题尤为重要,因为这些问题涉及到真正的无监督学习。尽管「风格」的转换本身无法找到很好的度量方式,然而在某些特殊的问题上,仍然有一些检测的方法,例如用 AMT 材质感知测试,可以对图片中物品的材质进行一些「客观的」检验,这可以作为衡量「翻译」效果的一种度量。在这些应用方面,DualGAN 有着明显比 GAN 更好的无监督学习表现。 (5)中国画—油画之间的翻译 (6)金属、石头、木料、皮革、织物等材质之间的转换 这种基于对偶学习的 GAN 为图片与图片之间的「翻译」提供了新的思路,尤为重要的是,通过将 GAN 进一步进行扩充,这种方法把无监督学习的性质利用到了极致,因而在理论上具有很重要的意义。尽管这一算法目前的表现仍然有有待提高,然而与其它 GAN 的变形算法相比,例如与条件 GAN(conditional GAN, cGAN)相比,DualGAN 即使是面对完全没有加标签的数据,也可以产生足以与之相比的表现,这暗示了无监督学习的巨大潜力。考虑到 cGAN 等算法的训练需要引入大量的人工标签,DualGAN 等无监督学习的算法很可能可以大大降低加标签的成本,在进一步提高稳定性之后,值得相信其在未来有着重要的应用前景。 这篇论文的思路与最近很火的工作 Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks 非常类似,但其实是独立的、来源于不同出发点的工作。在看到那个工作的有关介绍后,我觉得应该特别有必要站出来介绍一下易子立的这个工作。目前,这篇关于 DualGAN 算法的论文已经投稿到 ICCV 会议,原论文的 arXiv 地址为: Unsupervised Dual Learning for Image-to-Image Translation ,这个项目的程序可以到以下 GitHub 链接获取: duxingren14/DualGAN
个人分类: 人工智能|5508 次阅读|0 个评论
IJAC4月最新出版:颜水成团队深度学习综述+多篇国重研究成果
Chenfiona 2017-4-6 18:10
刚刚挥泪告别清明小长假,小主们的内心是不是又多了一丝不舍和惆怅?小编教您一招,成功摆脱假期综合症。来,跟我一起大声念 :我爱学习,学习使我快乐! 那么,问题来了,该学点什么呢? 2017 年IJAC 第2 期正式发行,蓝皮大本纯干货,我们只登最热乎最大牛最有价值的研究! 这里有360 首席科学家关于“深度学习”的综述,有国家自然科学基金支持、国家重点实验室出身的最新成果,还有加拿大、突尼斯等国际学者带来的学神级研究 ,快来阅读! 【研究综述 + 国家自然科学基金项目】 作者: 360 首席科学家、新加坡国立大学颜水成副教授团队 题目: A survey on deep learning-basedfine-grained object classification and semantic segmentation 综述: 基于深度学习的细粒度图像分类方法( deep learning basedfine-grained image classification approaches )、语义分割方法( semantic segmentationapproaches ),基于区域方案和完全卷积网络的语义分割方法( the region proposal based and fully convolutional networksbased approaches for semantic segmentation ) 关键词: Deep learning, fine-grainedimage classification, semantic segmentation, convolutional neural network (CNN),recurrent neural network (RNN). 全文下载 : http://link.springer.com/article/10.1007/s11633-017-1053-3 Or: http://www.ijac.net/EN/abstract/abstract1901.shtml 【国家自然科学基金项目 + 国家重点实验室】 题目 : PLS-CCA heterogeneous features fusion-based low-resolutionhuman detection method for outdoor video surveillance 作者 : Hong-Kai Chen , Xiao-Guang Zhao , Shi-Ying Sun , Min Tan 关键词: Low-resolution human detection, partial least squares, canonical correlation analysis, heterogeneous features, outdoor video surveillance. 全文下载 : http://link.springer.com/article/10.1007/s11633-016-1029-8 Or: http://www.ijac.net/EN/abstract/abstract1902.shtml 【国家自然科学基金项目 + 国家重点实验室】 题目: Method for visual localizationof oil and gas wellhead based on distance function of projected features 作者 : Ying Xie , Xiang-Dong Yang , Zhi Liu , Shu-Nan Ren , Ken Chen 关键词 : Robot vision, visual localization, 3D object localization, model based pose estimation, distance function of projected features, nonlinear least squares, random sample consensus (RANSAC). 全文下载 : http://link.springer.com/article/10.1007/s11633-017-1063-1 Or: http://www.ijac.net/EN/abstract/abstract1903.shtml 【“ 863 计划” + 国家自然科学基金项目 + 国家重点实验室】 题目: A new monocular visionmeasurement method to estimate 3D positions of objects on floor 作者: Ling-Yi Xu , Zhi-Qiang Cao , Peng Zhao , Chao Zhou 关键词: Visual measurement, calibration, localization, position estimation, monocular vision. 全文下载: http://link.springer.com/article/10.1007/s11633-016-1047-6 Or: http://www.ijac.net/EN/abstract/abstract1904.shtml 【“ 973 计划” + 教育部新世纪优秀人才支持计划】 题目: Singularity robust pathplanning for real time base attitude adjustment of free-floating space robot 作者 : Cheng Zhou , Ming-He Jin , Ye-Chao Liu , Ze Zhang , Yu Liu , Hong Liu 关键词 : Space robot, path planning, base attitude adjustment, task priority, reaction null-space. 全文下载 : http://link.springer.com/article/10.1007/s11633-017-1055-1 Or: http://www.ijac.net/EN/abstract/abstract1905.shtml 【马来西亚高等教育部支持项目( MIRGS )】 题目 : Quasi-inverse pendulum model of12 DoF bipedal walking 作者 : M. Akhtaruzzaman , Amir A. Shafie , Md. Raisuddin Khan 关键词 : Humanoid robot, quasi-inverse pendulum, gait, trajectory planning, Anthropoid. 全文下载 : http://link.springer.com/article/10.1007/s11633-016-1023-1 Or: http://www.ijac.net/EN/abstract/abstract1906.shtml 【加拿大学者研究成果】 题目 : An adaptive full order slidingmode controller for mismatched uncertain systems 作者 : Sanjoy Mondal , Jawhar Ghommam , Maarouf Saad 关键词 : Full order sliding mode, adaptive sliding mode, finite time convergence, reference tracking, mismatched uncertainty. 全文下载 : http://link.springer.com/article/10.1007/s11633-017-1057-z Or: http://www.ijac.net/EN/abstract/abstract1907.shtml 【突尼斯学者研究成果】 题目 : A sliding mode observer foruncertain nonlinear systems based on multiple models approach 作者 : Kaïs Hfaïedh , Karim Dahech , Tarak Damak 关键词 : Uncertain nonlinear system, norm bounded uncertainty, multiple models approach, multiple observer, sliding mode observer. 全文下载 : http://link.springer.com/article/10.1007/s11633-016-0970-x Or: http://www.ijac.net/EN/abstract/abstract1908.shtml 【国家自然科学基金项目 + 泰山学者工程】 题目 : Regional stability of positiveswitched linear systems with multi-equilibrium points 作者 : Zhi Liu , Yu-Zhen Wang 关键词 : Regional stability, positive switched linear system, multi-equilibrium points, common linear Lyapunov function, multiple Lyapunov function. 全文下载 : http://link.springer.com/article/10.1007/s11633-016-1003-5 Or: http://www.ijac.net/EN/abstract/abstract1909.shtml 【国家自然科学基金项目 + 江西省重点实验室】 题目 : An adaptive regulation problemand its application 作者 : Yuan Jiang , Ji-Yang Dai 关键词 : Control theory, Lyapunov methods, internal model principle, modified FitzHugh-Nagumo model. 全文下载 : http://link.springer.com/article/10.1007/s11633-015-0900-3 Or: http://www.ijac.net/EN/abstract/abstract1910.shtml 【国家自然科学基金项目 + 中科院重点实验室】 题目 : Dynamics and stability ofpotential hyper-networked evolutionary games 作者 : Ting Liu , Yuan-Hua Wang , Dai-Zhan Cheng 关键词 : (Hyper-) Networked evolutionarygame (HNEG), potential, cascading myopic best response adjustment rule (MBRAR), Nash equilibrium, semi-tensor product of matrices. 全文下载 : http://link.springer.com/article/10.1007/s11633-017-1056-0 Or: http://www.ijac.net/EN/abstract/abstract1911.shtml ----------------------------------------------------------------------------------------------------------------- 【 IJAC Reviews and Highlight Articlesin 2016-2017 】: ----------------------------------------------------------------------------------------------------------------- 1. Why and when can deep-but not shallow-networks avoid thecurse of dimensionality: A review 【 Deep learning 】 Tomaso Poggio, HrushikeshMhaskar, Lorenzo Rosasco, Brando Miranda, Qianli Liao Full Text: https://link.springer.com/article/10.1007/s11633-017-1054-2 2. PinningControl and Controllability of Complex Dynamical Networks Guanrong Chen Full Text: https://link.springer.com/article/10.1007/s11633-016-1052-9 Or: http://www.ijac.net/EN/abstract/abstract1865.shtml 3. Advances invehicular ad-hoc networks (VANETs): Challenges and road-map for futuredevelopment Elias C. Eze, Si-Jing Zhang, En-Jie Liu, Joy C. Eze Full Text: http://link.springer.com/article/10.1007/s11633-015-0913-y Or: http://www.ijac.net/EN/abstract/abstract1803.shtml 4. CooperativeFormation Control of Autonomous Underwater Vehicles: An Overview BikramadityaDas, Bidyadhar Subudhi, Bibhuti Bhusan Pati Full Text: http://link.springer.com/article/10.1007/s11633-016-1004-4 Or: http://www.ijac.net/EN/abstract/abstract1821.shtml 5. Review of SomeAdvances and Applications in Real-time High-speed Vision: Our Views andExperiences Qing-Yi Gu,Idaku Ishii Full Text: http://link.springer.com/article/10.1007/s11633-016-1024-0 Or: http://www.ijac.net/EN/abstract/abstract1808.shtml 6. Minimal GatedUnit for Recurrent Neural Networks 【 Deep learning 】 Guo-Bing Zhou,Jianxin Wu, Chen-Lin Zhang, Zhi-Hua Zhou Full Text: http://link.springer.com/article/10.1007/s11633-016-1006-2 Or: http://www.ijac.net/EN/abstract/abstract1822.shtml ---------------------------------------------------------------------------------------------------------------- 【 IJAC Survey Papers in 2015 】 ---------------------------------------------------------------------------------------------------------------- 1. A Survey ofRecent Results in Quantized and Event-based Nonlinear Control Zhong-PingJiang, Teng-Fei Liu Full Text: http://link.springer.com/article/10.1007/s11633-015-0906-x Or: http://www.ijac.net/EN/abstract/abstract1774.shtml 2. RecentProgressin Networked Control Systems-A Survey Yuan-Qing Xia, Yu-Long Gao, Li-PingYan,Meng-Yin Fu Full Text: http://link.springer.com/article/10.1007/s11633-015-0894-x Or: http://www.ijac.net/EN/abstract/abstract1772.shtml 3. DistributedControl of Chemical Process Networks Michael J.Tippett, Jie Bao Full Text: http://link.springer.com/article/10.1007/s11633-015-0895-9 Or: http://www.ijac.net/EN/abstract/abstract1724.shtml 4. FeatureSelection and FeatureLearning for High-dimensional Batch ReinforcementLearning: A Survey De-Rong Liu,Hong-Liang, Li Ding Wang Full Text: http://link.springer.com/article/10.1007/s11633-015-0893-y Or: http://www.ijac.net/EN/abstract/abstract1704.shtml 5. ObserverDesign—A Survey Chia-Chi Tsui Full Text: http://link.springer.com/article/10.1007/s11633-014-0865-7 Or: http://www.ijac.net/EN/abstract/abstract1712.shtml ---------------------------------------------------------------------------------------------------------------------------- Available Online at: SpringerLink : http://link.springer.com/journal/11633 IJAC Website : http://www.ijac.net For Free 【 Accepted Articles published OnlineFirst on SpringerLink 】 : http://link.springer.com/journal/11633 【 Special Issue list in IJAC 】 : http://www.ijac.net/EN/column/column292.shtml -----------------------------------------------------------------
个人分类: 期刊目录|803 次阅读|0 个评论
【重磅推荐】MIT Tomaso Poggio关于深度学习机理的研究
Chenfiona 2017-3-16 16:31
上周,在IJAC优先在线发表的几篇论文中,麻省理工美国人文与科学院院士Tomaso Poggio的一篇有关深度学习的综述成为一大亮点。Poggio教授在这篇文章中阐述了有关神经网络深度学习的一个基本问题:为什么深层网络比浅层网络更好? 文章内容延续了Poggio教授在2016年8月在中国人工智能大会(2016CCAI)上的演讲报告《The Science and the Engineering ofIntelligence》。 图1 来源于2016 CCAI 演讲PPT 图2 来源于2016 CCAI 演讲PPT “ 深度学习架构和机器学习模式的搭建,来自于神经学方面的研究进展,换句话说,同样的架构是存在于大脑皮质当中的。 关于深度学习,已经有成千上万的研究者在不同领域进行这方面的研究,比如无人驾驶、语音识别等等。可是我们还不清楚,为什么深度学习在这些工程应用中会起作用,深度学习的机理是什么? 我们对这个问题很感兴趣另外一个原因是:探讨深度学习的机理也将有助于我们理解‘为什么大脑皮质会存在一些不同的层次?’ ” Poggio 教授在这篇文章中,将为您解读深度学习的关键理论、最新成果和开放式研究问题。 同时这篇文章也是IJAC即将发表的 Special Issue on Human Inspired Computing 中的一篇文章。该专题其他热文将陆续优先在线发表,敬请期待。 一点点题外话:小编在去年的CCAI大会上有幸拜访了Poggio教授,教授博学、谦逊而富有亲和力的形象给小编也留下深刻印象。他曾提到:期望能帮助年轻人更好的了解神经科学、理解机器学习。如果要在智能方面走得远,不能只靠计算机,还需要与人类本身的研究相互结合,才能碰撞出更多的东西。 接下来,小编将为您奉上这篇文章的具体信息,以及IJAC近期在线发表的其他文章链接,欢迎下载阅读 【 Title 】 Why and when can deep-but not shallow-networksavoid the curse of dimensionality: A review 【 Author 】 Tomaso Poggio, Hrushikesh Mhaskar, LorenzoRosasco, Brando Miranda, Qianli Liao 【 Abstract 】 The paper reviews and extends an emerging bodyof theoretical results on deep learning including the conditions under which itcan be exponentially better than shallow learning. A class of deepconvolutional networks represent an important special case of these conditions,though weight sharing is not the main reason for their exponential advantage.Implications of a few key theorems are discussed, together with new results,open problems and conjectures. 【 Keywords 】 Machine learning, neural networks, deep andshallow networks, convolutional neural networks, function approximation, deeplearning 【 Full Text 】 https://link.springer.com/article/10.1007/s11633-017-1054-2 【 Publish date 】 Published online March 14, 2017 The other recentlypublished online papers include: 【 Title 】 Improvement of wired drill pipe data qualityvia data validation and reconciliatio 【 Author 】 Dan Sui, Olha Sukhoboka, Bernt Sigve Aadnøy 【 Keywords 】 Data quality, wired drill pipe (WDP), datavalidation and reconciliation (DVR), drilling models 【 Full Text 】 https://link.springer.com/article/10.1007/s11633-017-1068-9 【 Publish date 】 Published online March 4, 2017 【 Title 】 Reaction torque control of redundantfree-floating space robot 【 Author 】 Ming-He Jin, Cheng Zhou, Ye-Chao Liu, Zi-QiLiu, Hong Liu 【 Keywords 】 Redundant space robot, reaction torque,reactionless control, base disturbance minimization, Linux/real timeapplication interface (RTAI) 【 Full Text 】 https://link.springer.com/article/10.1007/s11633-017-1067-x 【 Publish date 】 Published online March 4, 2017 【 Title 】 A piecewise switched linear approach fortraffic flow modeling 【 Author 】 Abdelhafid Zeroual,Nadhir Messai, SihemKechida, Fatiha Hamdi 【 Keywords 】 Switched systems, modeling, macroscopic,traffic flow, data calibration 【 Full Text 】 https://link.springer.com/article/10.1007/s11633-017-1060-4 【 Publish date 】 Published online March 4, 2017 【 Title 】 Navigation of non-holonomic mobile robot usingneuro-fuzzy logic with integrated safe boundary algorithm 【 Author 】 A. Mallikarjuna Rao, K. Ramji, B. S. K.Sundara Siva Rao, V. Vasu, C. Puneeth 【 Keywords 】 Robotics, autonomous mobile robot (AMR),navigation, fuzzy logic, neural networks, adaptive neuro-fuzzy inference system(ANFIS), safe boundary algorithm 【 Full Text 】 https://link.springer.com/article/10.1007/s11633-016-1042-y 【 Publish date 】 Published online March 4, 2017 【 Title 】 Method for visual localization of oil and gaswellhead based on distance function of projected features 【 Author 】 Ying Xie, Xiang-Dong Yang, Zhi Liu, Shu-NanRen, Ken Chen 【 Keywords 】 Robot vision, visual localization, 3D objectlocalization, model based pose estimation, distance function of projectedfeatures, nonlinear least squares, random sample consensus (RANSAC) 【 Full Text 】 https://link.springer.com/article/10.1007/s11633-017-1063-1 【 Publish date 】 Published online March 4, 2017 【 Title 】 Virtual plate based controlling strategy oftoy play for robots communication development in JA space 【 Author 】 Wei Wang, Xiao-Dan Huang 【 Keywords 】 Human robot cooperation, joint attention (JA)space, reachable space, toy play ability, a virtual plate 【 Full Text 】 https://link.springer.com/article/10.1007/s11633-016-1022-2 【 Publish date 】 Published online February 21, 2017   阅读更多IJAC优先在线出版论文: https://link.springer.com/journal/11633
个人分类: 好文推荐|712 次阅读|0 个评论
跨越种族的爱:Generalized Similarity Measure
jingyanwang 2017-2-8 14:07
微信公众号 readpami 求关注,求扩散,求打赏 Cross-Domain Visual Matching via Generalized Similarity Measure and Feature Learning Liang Lin; Guangrun Wang; Wangmeng Zuo; Feng Xiangchu; Lei Zhang IEEE Transactions on Pattern Analysis and Machine Intelligence Year: 2016, Volume: PP, Issue: 99 Pages: 1 - 1, DOI: 10.1109/TPAMI.2016.2567386 Generalized Similarity Measure:跨越种族的爱 red.pdf
个人分类: RED|4782 次阅读|0 个评论
【语言学家妄论深度学习和AI,旨在 invite questions】
liwei999 2016-12-10 07:27
与董老师调侃AI泡沫,不过泡沫归泡沫,这次ai热让我们看清了几点: 第一是 大数据里面有名堂 不全是虚的。 第二是 长远一点看 ai 和 nlp 在领域里可以解决实际问题 譬如 我们做的客户情报产品 虽然发现市场没有预想的那么大 但价值是确认了 第三是 深度神经是技术突破 真东西 虽然目前被神话了。至少在 nmt 中 我们看到了以前达不到的质量。语音方面已经提升了整个产业的水平。 第四是 nlp 与大数据结合 让我们看到很多可能。虽然并不是每一种可能都可以满足某种社会刚需 但nlp大规模实用的大门已经开启 就看谁的市场角度对路了。 有一位风头正健冲在世界最前沿的深度学习大牛好友,看了我 最新的博文 【 如何自动识别同一个意思千变万化的表达 】, 回说:李老师你还没有理解深度学习啊,深度学习做这件事儿(识别一个 statement 的千变万化的语言表达)其实比较简单。 我不懂深度学习,那是肯定的。说这件事儿很简单,我有点存疑。至少目前所有做 bots 和问答系统的人,都在 fight 这个挑战,不能说已经完美解决。当然,Siri 这类显示了在 apps 上的应用,令人印象深刻。 Anyway,我的回答是,我们属于同类,心态和世界观是一样的。手里有把得心应手的锤子,世界就变成了钉子。区别只是锤子的不同,我不懂你的锤子,你也未必使得了我的锤子。术业有专攻,隔锤如隔山。但我确认,我的锤子可以对付这个钉子。 咱们还是来个友谊赛吧,否则这个世界多么单调。 无监督学习除了 clustering 在某些特定场景可以得到应用外,基本还是 research 的探索性质吧,没人指望它能大规模应用。clustering 到 classification 还有不小的距离,总得有某种监督或人参与才靠谱吧。那天我说,学习界啥时把机器放到raw data 的语言大海里,机器就跟小孩一样学会了语言,那才是牛逼翻天了。否则的话,你有你的知识瓶颈(巨量带标数据),我有我的知识瓶颈(专家经验),谁的瓶颈更大难说着呢。 深度神经学习前,semi-supervised 的研究很热。至少从研究角度,那个领域是令人兴奋和期待的。说的是以最少的监督(种子啥的少量带标数据,或者人工的规则做引子),结合 raw data 去试图引导系统按照指定的方向做事儿。听上去在轨道上,至少不是所谓完全的无监督那种让人觉得不靠谱。还有就是白老师的语义计算主张,不必用带标数据,但要用丰富的词典信息,结合 raw data 做 parsing,也用到深度学习模型RNN啥的,听上去也是可行的。这是因为词典信息里面已经隐含了深入的人工监督(语言学知识和用法),各种 expectations 譬如 subcat,然后到大数据里面去定位。 微博上有人问除了图像和语音,文本NLP方面,深度学习有突破吗?我的记忆中,至少n月前,相当普遍有说,深度神经在文本遭遇瓶颈(by 看到瓶子有一半是空的人),或文本有待突破(by 看到瓶子有一半是满的人)。由于DL乐观主义流行加上全世界的CL牛人都憋足了劲儿地攻关努力,据说最近收到的答案是:文本也很突破了。 于是我正面反面各问了一下,拷贝于下,在此一并求教方家: 谁能给个神经在文本NLP中突破的清单就好了, 看 so far 到底哪些是真突破,哪些仍是瓶颈?先起个头,突破似乎表现在: 1 NMT,例如谷歌翻译,特别是中到英,的确突破性发展了 (百度声称更早神经了,但翻译质量远不如谷歌NMT令人印象深刻,虽然在前神经时代,百度的中文方面的SMT比谷歌强); 2 SyntaxNet 至少在新闻正规文本上,parsing 比前突破了,已经达到 94%,虽然 离应用还远 ,虽然 不是声称的世界第一 关于神经在文本NLP上的瓶颈也抛块砖: 1. 迄今的突破都是 supervised 的,倚赖的是 insatiable 的巨量带标数据: 带标数据于是成为知识瓶颈; 2 对于众多领域和文体,神经系统基本没有适应性,除非假设有海量领域数据可以重新训练成功; 3 几乎所有 unsupervised 尝试都是研究性质,离应用还远; 4 模型庞大带来的costs:训练和运行对计算资源的高要求 5. 迄今的端对端系统的神经应用,未见用到语言结构或理解,隐含层里的葫芦据说人也解不透; 6. 貌似黑箱子,有说 debug 不易(统计模型黑箱子不易debug的毛病以前是公认的痛点,不过最近有深度学习大牛一再强调,这个箱子一点也不黑,debug 也容易,此瓶颈存疑); 端对端除了 NMT,还有哪些投入大规模应用的文本处理系统?似乎还在探索中,成熟的不多。在IE和QA领域,不久应该会有某种突破,因为这两个领域的系统基本是端对端,只要somehow(人海战术?)得到了大量的带标数据,突破是可以期待的。不过,在这些方面,高明的规则系统已经有了很好很快的解决方案。不信,可以到时候拉出来遛遛。 【相关】 It is untrue that Google SyntaxNet is the world's most accurate parser ... 【李白对话录之八:有语义落地直通车的parser才是核武器】 【谷歌NMT,见证奇迹的时刻】 【泥沙龙笔记:语法工程派与统计学习派的总结】 【新智元笔记:两条路线上的NLP数据制导】 《立委随笔:语言自动分析的两个路子》 Comparison of Pros and Cons of Two NLP Approaches 中文处理 Parsing 【置顶:立委NLP博文一览】 《朝华午拾》总目录
个人分类: 立委科普|3198 次阅读|0 个评论
[转载]Google研究总监Peter Norvig:人工智能的另一面
Kara0807 2016-8-19 07:50
Google研究总监Peter Norvig:人工智能的另一面 Peter Norvig 是誉满全球的人工智能专家, Google 研究总监( Director of Research ),他同时也是经典书籍《人工智能编程范式: Common Lisp 案例研究》( Paradigms of AI Programming: Case Studies inCommon Lisp )和《人工智能:一种现代方法》( Artificial Intelligence: A Modern Approach )的作者 / 合著者。在本文中,我们将看到 Peter Norvig 对人工智能目前进展和未来发展的思考,对人工智能技术在 Google 应用的解读,以及对最新软件工程师在人工智能时代的成长的观点。 Peter Norvig 眼中的人工智能 问:人工智能领域在哪些方面发生了您未曾预料的演变? Peter Norvig : 在 1980 年我开始从事人工智能研究时人工智能意味着:一位研究生用说明性语言写下事实,然后拨弄这些事实和推理机制,直到从精心挑选的样本上得到不错的结果,然后写一篇关于它的论文。 虽然我接受并遵循这种工作模式,在我获得博士学位的过程中,我发现了这种方法的三个问题: 写下事实太慢了。 我们没有处理异常情况或模糊状态的良好方法。 这个过程不科学 —— 即使在选定的样本上它能工作,但是在其他样本上工作效果会如何呢? 整个领域的演变回答了这三个问题: 我们依靠机器学习,而不是研究生付出的辛苦努力。 我们使用概率推理,而不是布尔逻辑。 我们希望使用科学严格的方式;我们有训练数据和测试数据的概念,而且我们也有比较不同系统处理标准问题所得到的结果。 1950 年,阿兰图灵写道: “ 我们只能看到未来很短的一段距离,但是我们很清楚还有什么需要完成。 ” 自从 1950 年,我们已经得到许多发展并实现了许多目标,但图灵的话仍然成立。 问:对于机器学习研究,工业界与学术界有何不同呢? Peter Norvig : 我认为,在教育机构、商业机构还是政府机构并不是很重要 —— 我曾经在这三种机构都学到很多东西。 我建议你在有着一群出色同事和有趣问题的环境下工作。可以是工业界、学术界、政府或者非营利企业,甚至开源社区。在这些领域里,工业界往往有更多的资源(人、计算能力和数据),但如今有很多公开可用的数据供你使用,一个小团队,一台笔记本电脑,或者一个小而廉价的 GPU 集群,或者在云计算服务上租赁或捐献时间。 问:您对深度学习有什么看法? Peter Norvig : 我清楚地记得 80 年代初的那一天, Geoff Hinton 来到伯克利进行了关于玻尔兹曼机的讲座。对我来说,这是个了不起的视角 —— 他不赞同符号主义人工智能很强大很有用,而我了解到了一种机制,有三件令人兴奋的新(对我而言)事情:根据大脑模型得出的认知合理性;从经验而不是手工编码中学习的模型;还有表示是连续的,而不是布尔值,因此可以避免传统符号专家系统的一些脆弱问题。 事实证明,玻尔兹曼机在那个时代并没有广泛普及,相反, Hinton 、 LeCun 、 Bengio 、 Olshausen 、 Osindero 、 Sutskever 、 Courville 、 Ng 以及其他人设计的架构得到很好的普及。是什么造成了这种不同呢?是一次一层的训练技术吗?是 ReLU 激活函数?是需要更多的数据?还是使用 GPU 集群可以更快地训练?我不敢肯定,我希望持续的分析可以给我们带来更好的了解。但我可以说,在语音识别、计算机视觉识别物体、围棋和其他领域,这一差距是巨大的:使用深度学习可以降低错误率,这两个领域在过去几年都发生了彻底变化:基本上所有的团队都选择了深度学习,因为它管用。 许多问题依然存在。在计算机视觉里,我们好奇深度网络实际上在做什么:我们可以在一个级别上确定线条识别器,在更高层次确定眼睛和鼻子识别器,然后就是脸部识别器,最终就是整个人的识别器。但在其他领域,一直很难了解网络在做什么。是因为我们没有正确的分析和可视化工具吗?还是因为实际上表示不一致? 在有许多数据的时候,深度学习在各种应用中表现不错,但对于一次性或零次学习,需要将一个领域的知识转移并适应到当前领域又如何呢?深度网络形成了什么样的抽象,我们可以如何解释这些抽象并结合它们?网络会被对抗性输入愚弄;我们如何预防这些,它们代表了根本缺陷还是不相干的把戏? 我们如何处理一个领域中的结构?我们有循环网络( Recurrent Networks )来处理时间,递归网络( Recrsive Networks )来处理嵌套结构,但这些是否已经足够,现在讨论还为时过早。 我对深度学习感到兴奋,因为很多长期存在的领域也是如此。而且我有兴趣了解更多,因为还有许多剩余问题,而且这些问题的答案不仅会告诉我们更多关于深度学习的东西,还可以帮助我们大体理解学习、推理和表示。 问:在深度学习最近取得的成就之后,符号主义人工智能是否还有意义? Peter Norvig : 是的。我们围绕着符号主义人工智能开发了许多强大的原理:逻辑预测、约束满足问题、规划问题、自然语言处理,乃至概率预测。因为这些算法的出色表现,我们处理问题的能力比原来提升了几个数量级。放弃这一切是件可耻的事。我认为其中一个有意识的研究方向是回过头看每一种方法,探索非原子式符号被原子式符号取代的这个过程究竟发生了什么,诸如 Word2Vec 产生的 Word Embedding 之类的原理。 下面是一些例子。假设你有这些逻辑 “ 事实 ” : 1. 人会说话; 2. 除人以外的动物不会说话; 3. 卡通人物角色会说话; 4. 鱼会游泳; 5. 鱼是除人以外的动物; 6. Nemo 是一个卡通人物; 7. Nemo 是一条鱼; 8. 那么我们要问了: 9. Nemo 会说话吗? 10. Nemo 会游泳吗? 用逻辑来表述和解释这个场景的时候遇到了两个大问题。首先,这些事实都有例外,但是用逻辑很难穷举这些例外情况,而且当你逻辑出错的时候预测就会出问题了。其次,在相互矛盾的情况下则逻辑无能为力,就像这里的 Nemo 既会说话又不会说话。也许我们可以用 Word Embedding 技术来解决这些问题。我们还需要 Modus Ponens Embedding (分离规则,一种数学演绎推理规则)吗?不学习 “ 如果 A 且 A 暗示 B ,则 B” 这样一种抽象的规则,我们是否可以学习何时应用这种规则是恰当的?我觉得这是一个重要的研究领域。 再说一点:许多所谓的符号主意人工智能技术实际上还是优秀的计算机科学算法。举个例子,搜索算法,无论 A* 或是蚁群优化,或是其它任何东西,都是一种关键的算法,永远都会非常有用。即使是基于深度学习的 AlphaGo ,也包含了搜索模块。 问:我们哪儿做错了?为什么 Common Lisp 不能治愈世界? Peter Norvig : 我认为 Common Lisp 的思想确实能治愈这个世界。如果你回到 1981 年, Lisp 被视作是另类,因为它所具有的下面这些特性还不被 C 语言程序员所知: 1. 垃圾回收机制; 2. 丰富的容器类型及相应的操作; 3. 强大的对象系统,伴随着各种继承和原生函数; 4. 定义测试例子的亚语言( sublanguage )(并不属于官方版本的一部分,但我自己配置了一套); 5. 有交互式的读入 - 运算 - 打印循环; 6. 敏捷的、增量式的开发模式,而不是一步到位的模式; 7. 运行时对象和函数的自省; 8. 能自定义领域特定语言的宏。 如今,除了宏之外的所有这些特性都在主流编程语言里非常常见。所以说它的思想取胜了,而 Common Lisp 的实现却没有 —— 也许是因为 CL 还遗留了不少 1958 年编程语言的陋习;也许只是因为一些人不喜欢用大括号。 至于说宏,我也希望它能流行起来,但当用到宏的时候,你成为了一名语言设计者,而许多开发团队喜欢保持底层语言的稳定性,尤其是那些大团队。我想最好有一套使用宏的实用指南,而不是把它们全部抛弃(或是在 C 语言里严格限制的宏)。 问:在未来 10 年里,有没有哪些情况下软件工程师不需要学习人工智能或机器学习的,还是每个人都需要学习? Peter Norvig : 机器学习将会是(或许已经是)软件工程的一个重要部分,每个人都必须知道它的运用场景。但就像数据库管理员或用户界面设计一样,并不意味着每个工程师都必须成为机器学习专家 —— 和这个领域的专家共事也是可以的。但是你知道的机器学习知识越多,在构建解决方案方面的能力就越好。 我也认为机器学习专家和软件工程师聚在一起进行机器学习系统软件开发最佳实践将会很重要。目前我们有一套软件测试体制,你可以定义单元测试并在其中调用方法,比如 assertTrue 或者 assertEquals 。我们还需要新的测试过程,包括运行试验、分析结果、对比今天和历史结果来查看偏移、决定这种偏移是随机变化还是数据不平稳等。这是一个伟大的领域,软件工程师和机器学习人员一同协作,创建新的、更好的东西。 问:我想从软件工程师转行成为人工智能研究员,应该如何训练自己呢? Peter Norvig : 我认为这不是转行,而是一种技能上的提升。人工智能的关键点在于搭建系统,这正是你手头上的工作。所以你在处理系统复杂性和选择合适的抽象关系方面都有经验,参与过完整的设计、开发和测试流程;这些对于 AI 研究员和软件工程师来说都是基本要求。有句老话这样说,当一项人工智能技术成功之后,它就不再属于人工智能,而是成为了软件工程的一部分。人工智能工作者抱怨上述观点的意思就是他们的工作永远离成功有一步之遥,但你可以认为这表明你只是需要在已知的基础上再添加一些新概念和新技术。 人工智能在 Google 问: Google“ 没有更好的算法,只是多了点数据而已 ” 这种说法是真的吗? Peter Norvig : 我曾引用微软研究院 Michele Banko 和 Eric Brill 发表的一篇关于分析词性辨析算法的论文,他们发现增加训练数据得到的效果提升比更换算法更明显。我说过有些问题确实如此,而另一些问题则不见得。你可以认为这篇论文是 “ 大数据 ” 的功劳,但要注意,在这个领域十亿个单词规模的训练数据集就能看出效果 —— 在笔记本电脑的处理范围内 —— 还不到数据中心的量级。所以,如果你用不了数据中心,不必担心 —— 你拥有的计算资源和数据量几乎完胜任何一个上一代的人,你可以有更多的新发现。 所以没错,大量与任务相契合的高质量数据必然会有帮助。然而真正有挑战的工作在于发明新学习系统的研究和让其真正落实到产品中的工程实现。这个工作正是大多数机器学习成功案例的驱动力。正如 Pat Winston 所说: “ 人工智能就像葡萄干面包里的葡萄干,葡萄干面包的主要成分还是面包,人工智能软件主体也是常规的软件工程和产品开发。 ” 问:成为一家 “AI-first” 公司对 Google 意味着什么? Peter Norvig : “ 传统 ” 的 Google 是一个信息检索公司:你提供一个查询,我们快速返回 10 个相关网页结果,然后你负责找到与查询词相关的返回结果。 “ 现代 ” 的 Google , CEO Sundar Pichai 设定了愿景,它不仅基于相关信息建议,还基于通知和助理。通知,意味着当你需要时,我们提供你需要的信息。例如, Google Now 告诉你该去赴约了,或者你目前在一家杂货店,之前你设定了提醒要买牛奶。助理意味着帮助你实施行动 —— 如规划行程、预定房间。你在互联网上可以做的任何事情, Google 都应该可以帮你实现。 对于信息检索, 80% 以上的召回率和准确率是非常不错的 —— 不需要所有建议都完美,因为用户可以忽略坏的建议。对于助理,门槛就高了许多,你不会使用 20% 甚至 2% 的情形下都预定错房间的服务。所以助理必须更加精准,从而要求更智能、更了解情况。这就是我们所说的 “AI-first” 。 Peter Nervig 在 Google 问:你的职业生涯如何起步? Peter Nervig : 我很幸运地进入了一所既有计算机编程又有语言课程的高中(在马萨诸塞州牛顿县)。这激发了我将两者结合起来学习的兴趣。在高中阶段无法实现这个想法,但是到了大学我主修应用数学专业,得以研究这方面(当时,我们学校并没有真正的计算机专业。我开始是主修数学,但很快发现自己并不擅长数学证明,反而在编程方面如鱼得水)。 大学毕业后,我当了两年的程序员,不过仍旧一直在思考这些想法,最后还是申请了研究生回来继续从事科研(我过了四年才厌倦大学生活,而两年就厌倦了工作状态,所以我觉得我对学校的热爱是对工作的两倍)。研究生阶段为我学术生涯打下了基础,而我却迷上了今天所谓的 “ 大数据 ” (当时还没有这种叫法),我意识到在工业界更容易获得所需要的资源,因此放弃了高校里的职位。我感到幸运的是每个阶段都有优秀的合作伙伴和新的挑战。 问:你在 Google 具体做什么? Peter Norvig : 在 Google 最棒的事情之一就是总有新鲜事;你不会陷入例行公事之中。在快节奏的世界中每周都是如此,当我角色改变之后,每年更是如此。我管理的人员从两人变成了两百人,这意味着我有时候能深入到所参与项目的技术细节中,有时候因为管理的团队太大,只能提一些高层次的笼统看法,并且我相信我的团队正在做的事情是正确的。在那些项目里,我扮演的角色更多的是沟通者和媒介 —— 试图解释公司的发展方向,一个项目具体如何展开,将项目团队介绍给合适的合作伙伴、制造商和消费者,让团队制定出如何实现目标的细节。我在 Google 不写代码,但是如果我有一个想法,我可以使用内部工具写代码进行实验,看看这个想法是否值得尝试。我同样会进行代码审查,这样我就可以了解团队生产的代码,而且这也必须有人去做。 还有很多的会议、邮件、文档要处理。与其他我工作过的公司相比, Google 的官僚主义更少,但有时候是不可避免的。我也会花一些时间参加会议、去大学演讲、与客户交流,以及参与 Quora 问答。 问:在加入 Google 之前,你曾担任美国宇航局( NASA )计算科学部门的主要负责人,在美国宇航局的工作与 Google 的工作有何不同?有哪些文化的差异? Peter Norvig : 美国宇航局与 Google 有很多共同之处:它们都有一群优秀敬业并且充满激情的员工,这些人相信它们的工作使命。而且两者都在推动各自技术的上限。因此,他们在特定项目中的文化往往是相似的。 同时也存在一些差异。美国宇航局的 Gene Kranz 曾说过一句名言: “ 失败不是种选择( Failure is not an option )。 ” 美国宇航局经常会有几亿美元的使命任务,任何一个错误都有可能毁灭一切。因此,需要极其小心。 Google 的项目范围往往更接近 Adam Savage 的想法(与 Jeff Dean 相互呼应) “ 失败自古至今就是一种选择( Failure is always an option ) ” 。 Google 相信,单台计算机可能会发生故障,而设计网络系统可以从故障中恢复。在 Google ,有时我们可以在用户看到错误之前进行恢复纠正,而有时当一个错误曝光后,我们可以在简短的时间内纠正它,同时向受到影响的用户致歉,而这在美国宇航局是很少见的。 一方面是因为失败的预期成本存在差异,另一方面是由于空间硬件的成本巨大(参见我在那做的东西),再者就是政府与私人机构的差异,基于这一优势, Google 更容易启动新项目,并在已有的项目中迅速推动新项目的进展。 问:你是如何权衡新功能的开发与旧功能的维护呢? Peter Norvig : 尽你所能将任务做得最好,并且不断改进,这样就会得到提高。 我曾一次次地发现:团队的新员工说 “ 我们为什么不使用 X ? ” ,一位老员工回答说: “ 我们三年前就试过了 X ,结果证明它并不管用 ” 。此时的难题是:你是否接受那位老前辈的回答?或者说,现在的情况已经改变了,是时候重新审视 X 了?也许我们有新的数据,或者新的技术,又或者新员工将采取不同的方法,或者说世界改变了, X 将会比以往工作得更好。我无法告诉你该问题的答案,你必须权衡所有证据,并与其他类似问题进行比较。 程序员提升之道 问:《人工智能:一种现代方法》还会有新的版本吗? Peter Norvig : 是的,我正在为此努力。但至少还需要一年的时间。 问:我是一名研究生,我的人工智能课程使用《人工智能:一种现代方法》作为参考教材,我如何才能为人工智能编程项目做贡献? Peter Norvig : 现在正是时候:我正在为《人工智能:一种现代方法》这本书的下一个版本的配套代码工作,在 https://github.com/aimacode 上,你可以找到 Java 、 Python 和 JavaScript 子项目,我们一直在寻找好的贡献者。除了提供书中所有算法的代码实现,我们还希望提供 tutorial 材料和练习。此外, GitHub 上也还有其他好的人工智能项目,都希望有铁杆贡献者。 问:有没有像可汗学院( Khan Academy )和 Udacity 一样的在线资源,可以让人们在不到 “ 十年 ” 就精通一门学科呢? Peter Norvig : 精通可能需要十年,或者是 10000 个小时,这种时间会因任务、个体以及训练方法的不同而有所差异。但真正的精通并非易事。可汗学院和 Udacity 主要是提供了技术培训,让你不断努力地学习直到你真正地掌握它。在传统的学校教学当中,如果你在考试中获得的成绩是 “C” ,你就不会再去花更多的时间去学习并掌握它,你会继而专注于下一个学科,因为班集里每个人都是这样做的。在线资源不是万能的,精通它需要加倍努力地学习,而学习需要动力,动力则可以通过人与人之间的联系逐步提升,这在网上是很难学到的。因此,在一个领域,走上正轨,我们需要在社交、动机方面做更多的工作,我们需要对个人需求有针对性地做更多的定制培训,同时我们还需要做更多使实践审慎和有效的工作。我认为,在线资源主要的最终结果不是缩短精通的时长,而是增加更多学生实现精通的机会。 问:如果请你再次教授《计算机程序设计》( Udacity )这门课程,会做哪些改变呢? Peter Norvig : 我认为这门课程很好,反馈(不管是数量还是质量)大多都是好的。就个人而言,我希望有更多的实例程序和技术。我想修正之前我们犯下的一些错误(主要是因为课程进展太快,没有太多的时间去测试所有的东西)。我希望系统能够更加互动:让学生获得更多的反馈信息,不仅仅是 “ 你的程序不正确 ” ,同时可以让学生看到下一件要做的事情,让他们知道到目前为止已经做了什么。我认为对于学生而言,正则表达式和语言这部分进展速度过快了;另外,我还想添加更多的材料,让学生加快学习速度,同时给他们更多的机会去实践新想法。 备注:本文经CSDN授权转载,特此说明。
1685 次阅读|0 个评论
[转载]Google研究总监Peter Norvig:人工智能的另一面
王飞跃 2016-6-24 11:27
Google研究总监Peter Norvig:人工智能的另一面 Peter Norvig 是誉满全球的人工智能专家, Google 研究总监( Director of Research ),他同时也是经典书籍《人工智能编程范式: Common Lisp 案例研究》( Paradigms of AI Programming: Case Studies inCommon Lisp )和《人工智能:一种现代方法》( Artificial Intelligence: A Modern Approach )的作者 / 合著者。在本文中,我们将看到 Peter Norvig 对人工智能目前进展和未来发展的思考,对人工智能技术在 Google 应用的解读,以及对最新软件工程师在人工智能时代的成长的观点。 Peter Norvig 眼中的人工智能 问:人工智能领域在哪些方面发生了您未曾预料的演变? Peter Norvig : 在 1980 年我开始从事人工智能研究时人工智能意味着:一位研究生用说明性语言写下事实,然后拨弄这些事实和推理机制,直到从精心挑选的样本上得到不错的结果,然后写一篇关于它的论文。 虽然我接受并遵循这种工作模式,在我获得博士学位的过程中,我发现了这种方法的三个问题: 写下事实太慢了。 我们没有处理异常情况或模糊状态的良好方法。 这个过程不科学 —— 即使在选定的样本上它能工作,但是在其他样本上工作效果会如何呢? 整个领域的演变回答了这三个问题: 我们依靠机器学习,而不是研究生付出的辛苦努力。 我们使用概率推理,而不是布尔逻辑。 我们希望使用科学严格的方式;我们有训练数据和测试数据的概念,而且我们也有比较不同系统处理标准问题所得到的结果。 1950 年,阿兰图灵写道: “ 我们只能看到未来很短的一段距离,但是我们很清楚还有什么需要完成。 ” 自从 1950 年,我们已经得到许多发展并实现了许多目标,但图灵的话仍然成立。 问:对于机器学习研究,工业界与学术界有何不同呢? Peter Norvig : 我认为,在教育机构、商业机构还是政府机构并不是很重要 —— 我曾经在这三种机构都学到很多东西。 我建议你在有着一群出色同事和有趣问题的环境下工作。可以是工业界、学术界、政府或者非营利企业,甚至开源社区。在这些领域里,工业界往往有更多的资源(人、计算能力和数据),但如今有很多公开可用的数据供你使用,一个小团队,一台笔记本电脑,或者一个小而廉价的 GPU 集群,或者在云计算服务上租赁或捐献时间。 问:您对深度学习有什么看法? Peter Norvig : 我清楚地记得 80 年代初的那一天, Geoff Hinton 来到伯克利进行了关于玻尔兹曼机的讲座。对我来说,这是个了不起的视角 —— 他不赞同符号主义人工智能很强大很有用,而我了解到了一种机制,有三件令人兴奋的新(对我而言)事情:根据大脑模型得出的认知合理性;从经验而不是手工编码中学习的模型;还有表示是连续的,而不是布尔值,因此可以避免传统符号专家系统的一些脆弱问题。 事实证明,玻尔兹曼机在那个时代并没有广泛普及,相反, Hinton 、 LeCun 、 Bengio 、 Olshausen 、 Osindero 、 Sutskever 、 Courville 、 Ng 以及其他人设计的架构得到很好的普及。是什么造成了这种不同呢?是一次一层的训练技术吗?是 ReLU 激活函数?是需要更多的数据?还是使用 GPU 集群可以更快地训练?我不敢肯定,我希望持续的分析可以给我们带来更好的了解。但我可以说,在语音识别、计算机视觉识别物体、围棋和其他领域,这一差距是巨大的:使用深度学习可以降低错误率,这两个领域在过去几年都发生了彻底变化:基本上所有的团队都选择了深度学习,因为它管用。 许多问题依然存在。在计算机视觉里,我们好奇深度网络实际上在做什么:我们可以在一个级别上确定线条识别器,在更高层次确定眼睛和鼻子识别器,然后就是脸部识别器,最终就是整个人的识别器。但在其他领域,一直很难了解网络在做什么。是因为我们没有正确的分析和可视化工具吗?还是因为实际上表示不一致? 在有许多数据的时候,深度学习在各种应用中表现不错,但对于一次性或零次学习,需要将一个领域的知识转移并适应到当前领域又如何呢?深度网络形成了什么样的抽象,我们可以如何解释这些抽象并结合它们?网络会被对抗性输入愚弄;我们如何预防这些,它们代表了根本缺陷还是不相干的把戏? 我们如何处理一个领域中的结构?我们有循环网络( Recurrent Networks )来处理时间,递归网络( Recrsive Networks )来处理嵌套结构,但这些是否已经足够,现在讨论还为时过早。 我对深度学习感到兴奋,因为很多长期存在的领域也是如此。而且我有兴趣了解更多,因为还有许多剩余问题,而且这些问题的答案不仅会告诉我们更多关于深度学习的东西,还可以帮助我们大体理解学习、推理和表示。 问:在深度学习最近取得的成就之后,符号主义人工智能是否还有意义? Peter Norvig : 是的。我们围绕着符号主义人工智能开发了许多强大的原理:逻辑预测、约束满足问题、规划问题、自然语言处理,乃至概率预测。因为这些算法的出色表现,我们处理问题的能力比原来提升了几个数量级。放弃这一切是件可耻的事。我认为其中一个有意识的研究方向是回过头看每一种方法,探索非原子式符号被原子式符号取代的这个过程究竟发生了什么,诸如 Word2Vec 产生的 Word Embedding 之类的原理。 下面是一些例子。假设你有这些逻辑 “ 事实 ” : 1. 人会说话; 2. 除人以外的动物不会说话; 3. 卡通人物角色会说话; 4. 鱼会游泳; 5. 鱼是除人以外的动物; 6. Nemo 是一个卡通人物; 7. Nemo 是一条鱼; 8. 那么我们要问了: 9. Nemo 会说话吗? 10. Nemo 会游泳吗? 用逻辑来表述和解释这个场景的时候遇到了两个大问题。首先,这些事实都有例外,但是用逻辑很难穷举这些例外情况,而且当你逻辑出错的时候预测就会出问题了。其次,在相互矛盾的情况下则逻辑无能为力,就像这里的 Nemo 既会说话又不会说话。也许我们可以用 Word Embedding 技术来解决这些问题。我们还需要 Modus Ponens Embedding (分离规则,一种数学演绎推理规则)吗?不学习 “ 如果 A 且 A 暗示 B ,则 B” 这样一种抽象的规则,我们是否可以学习何时应用这种规则是恰当的?我觉得这是一个重要的研究领域。 再说一点:许多所谓的符号主意人工智能技术实际上还是优秀的计算机科学算法。举个例子,搜索算法,无论 A* 或是蚁群优化,或是其它任何东西,都是一种关键的算法,永远都会非常有用。即使是基于深度学习的 AlphaGo ,也包含了搜索模块。 问:我们哪儿做错了?为什么 Common Lisp 不能治愈世界? Peter Norvig : 我认为 Common Lisp 的思想确实能治愈这个世界。如果你回到 1981 年, Lisp 被视作是另类,因为它所具有的下面这些特性还不被 C 语言程序员所知: 1. 垃圾回收机制; 2. 丰富的容器类型及相应的操作; 3. 强大的对象系统,伴随着各种继承和原生函数; 4. 定义测试例子的亚语言( sublanguage )(并不属于官方版本的一部分,但我自己配置了一套); 5. 有交互式的读入 - 运算 - 打印循环; 6. 敏捷的、增量式的开发模式,而不是一步到位的模式; 7. 运行时对象和函数的自省; 8. 能自定义领域特定语言的宏。 如今,除了宏之外的所有这些特性都在主流编程语言里非常常见。所以说它的思想取胜了,而 Common Lisp 的实现却没有 —— 也许是因为 CL 还遗留了不少 1958 年编程语言的陋习;也许只是因为一些人不喜欢用大括号。 至于说宏,我也希望它能流行起来,但当用到宏的时候,你成为了一名语言设计者,而许多开发团队喜欢保持底层语言的稳定性,尤其是那些大团队。我想最好有一套使用宏的实用指南,而不是把它们全部抛弃(或是在 C 语言里严格限制的宏)。 问:在未来 10 年里,有没有哪些情况下软件工程师不需要学习人工智能或机器学习的,还是每个人都需要学习? Peter Norvig : 机器学习将会是(或许已经是)软件工程的一个重要部分,每个人都必须知道它的运用场景。但就像数据库管理员或用户界面设计一样,并不意味着每个工程师都必须成为机器学习专家 —— 和这个领域的专家共事也是可以的。但是你知道的机器学习知识越多,在构建解决方案方面的能力就越好。 我也认为机器学习专家和软件工程师聚在一起进行机器学习系统软件开发最佳实践将会很重要。目前我们有一套软件测试体制,你可以定义单元测试并在其中调用方法,比如 assertTrue 或者 assertEquals 。我们还需要新的测试过程,包括运行试验、分析结果、对比今天和历史结果来查看偏移、决定这种偏移是随机变化还是数据不平稳等。这是一个伟大的领域,软件工程师和机器学习人员一同协作,创建新的、更好的东西。 问:我想从软件工程师转行成为人工智能研究员,应该如何训练自己呢? Peter Norvig : 我认为这不是转行,而是一种技能上的提升。人工智能的关键点在于搭建系统,这正是你手头上的工作。所以你在处理系统复杂性和选择合适的抽象关系方面都有经验,参与过完整的设计、开发和测试流程;这些对于 AI 研究员和软件工程师来说都是基本要求。有句老话这样说,当一项人工智能技术成功之后,它就不再属于人工智能,而是成为了软件工程的一部分。人工智能工作者抱怨上述观点的意思就是他们的工作永远离成功有一步之遥,但你可以认为这表明你只是需要在已知的基础上再添加一些新概念和新技术。 人工智能在 Google 问: Google“ 没有更好的算法,只是多了点数据而已 ” 这种说法是真的吗? Peter Norvig : 我曾引用微软研究院 Michele Banko 和 Eric Brill 发表的一篇关于分析词性辨析算法的论文,他们发现增加训练数据得到的效果提升比更换算法更明显。我说过有些问题确实如此,而另一些问题则不见得。你可以认为这篇论文是 “ 大数据 ” 的功劳,但要注意,在这个领域十亿个单词规模的训练数据集就能看出效果 —— 在笔记本电脑的处理范围内 —— 还不到数据中心的量级。所以,如果你用不了数据中心,不必担心 —— 你拥有的计算资源和数据量几乎完胜任何一个上一代的人,你可以有更多的新发现。 所以没错,大量与任务相契合的高质量数据必然会有帮助。然而真正有挑战的工作在于发明新学习系统的研究和让其真正落实到产品中的工程实现。这个工作正是大多数机器学习成功案例的驱动力。正如 Pat Winston 所说: “ 人工智能就像葡萄干面包里的葡萄干,葡萄干面包的主要成分还是面包,人工智能软件主体也是常规的软件工程和产品开发。 ” 问:成为一家 “AI-first” 公司对 Google 意味着什么? Peter Norvig : “ 传统 ” 的 Google 是一个信息检索公司:你提供一个查询,我们快速返回 10 个相关网页结果,然后你负责找到与查询词相关的返回结果。 “ 现代 ” 的 Google , CEO Sundar Pichai 设定了愿景,它不仅基于相关信息建议,还基于通知和助理。通知,意味着当你需要时,我们提供你需要的信息。例如, Google Now 告诉你该去赴约了,或者你目前在一家杂货店,之前你设定了提醒要买牛奶。助理意味着帮助你实施行动 —— 如规划行程、预定房间。你在互联网上可以做的任何事情, Google 都应该可以帮你实现。 对于信息检索, 80% 以上的召回率和准确率是非常不错的 —— 不需要所有建议都完美,因为用户可以忽略坏的建议。对于助理,门槛就高了许多,你不会使用 20% 甚至 2% 的情形下都预定错房间的服务。所以助理必须更加精准,从而要求更智能、更了解情况。这就是我们所说的 “AI-first” 。 Peter Nervig 在 Google 问:你的职业生涯如何起步? Peter Nervig : 我很幸运地进入了一所既有计算机编程又有语言课程的高中(在马萨诸塞州牛顿县)。这激发了我将两者结合起来学习的兴趣。在高中阶段无法实现这个想法,但是到了大学我主修应用数学专业,得以研究这方面(当时,我们学校并没有真正的计算机专业。我开始是主修数学,但很快发现自己并不擅长数学证明,反而在编程方面如鱼得水)。 大学毕业后,我当了两年的程序员,不过仍旧一直在思考这些想法,最后还是申请了研究生回来继续从事科研(我过了四年才厌倦大学生活,而两年就厌倦了工作状态,所以我觉得我对学校的热爱是对工作的两倍)。研究生阶段为我学术生涯打下了基础,而我却迷上了今天所谓的 “ 大数据 ” (当时还没有这种叫法),我意识到在工业界更容易获得所需要的资源,因此放弃了高校里的职位。我感到幸运的是每个阶段都有优秀的合作伙伴和新的挑战。 问:你在 Google 具体做什么? Peter Norvig : 在 Google 最棒的事情之一就是总有新鲜事;你不会陷入例行公事之中。在快节奏的世界中每周都是如此,当我角色改变之后,每年更是如此。我管理的人员从两人变成了两百人,这意味着我有时候能深入到所参与项目的技术细节中,有时候因为管理的团队太大,只能提一些高层次的笼统看法,并且我相信我的团队正在做的事情是正确的。在那些项目里,我扮演的角色更多的是沟通者和媒介 —— 试图解释公司的发展方向,一个项目具体如何展开,将项目团队介绍给合适的合作伙伴、制造商和消费者,让团队制定出如何实现目标的细节。我在 Google 不写代码,但是如果我有一个想法,我可以使用内部工具写代码进行实验,看看这个想法是否值得尝试。我同样会进行代码审查,这样我就可以了解团队生产的代码,而且这也必须有人去做。 还有很多的会议、邮件、文档要处理。与其他我工作过的公司相比, Google 的官僚主义更少,但有时候是不可避免的。我也会花一些时间参加会议、去大学演讲、与客户交流,以及参与 Quora 问答。 问:在加入 Google 之前,你曾担任美国宇航局( NASA )计算科学部门的主要负责人,在美国宇航局的工作与 Google 的工作有何不同?有哪些文化的差异? Peter Norvig : 美国宇航局与 Google 有很多共同之处:它们都有一群优秀敬业并且充满激情的员工,这些人相信它们的工作使命。而且两者都在推动各自技术的上限。因此,他们在特定项目中的文化往往是相似的。 同时也存在一些差异。美国宇航局的 Gene Kranz 曾说过一句名言: “ 失败不是种选择( Failure is not an option )。 ” 美国宇航局经常会有几亿美元的使命任务,任何一个错误都有可能毁灭一切。因此,需要极其小心。 Google 的项目范围往往更接近 Adam Savage 的想法(与 Jeff Dean 相互呼应) “ 失败自古至今就是一种选择( Failure is always an option ) ” 。 Google 相信,单台计算机可能会发生故障,而设计网络系统可以从故障中恢复。在 Google ,有时我们可以在用户看到错误之前进行恢复纠正,而有时当一个错误曝光后,我们可以在简短的时间内纠正它,同时向受到影响的用户致歉,而这在美国宇航局是很少见的。 一方面是因为失败的预期成本存在差异,另一方面是由于空间硬件的成本巨大(参见我在那做的东西),再者就是政府与私人机构的差异,基于这一优势, Google 更容易启动新项目,并在已有的项目中迅速推动新项目的进展。 问:你是如何权衡新功能的开发与旧功能的维护呢? Peter Norvig : 尽你所能将任务做得最好,并且不断改进,这样就会得到提高。 我曾一次次地发现:团队的新员工说 “ 我们为什么不使用 X ? ” ,一位老员工回答说: “ 我们三年前就试过了 X ,结果证明它并不管用 ” 。此时的难题是:你是否接受那位老前辈的回答?或者说,现在的情况已经改变了,是时候重新审视 X 了?也许我们有新的数据,或者新的技术,又或者新员工将采取不同的方法,或者说世界改变了, X 将会比以往工作得更好。我无法告诉你该问题的答案,你必须权衡所有证据,并与其他类似问题进行比较。 程序员提升之道 问:《人工智能:一种现代方法》还会有新的版本吗? Peter Norvig : 是的,我正在为此努力。但至少还需要一年的时间。 问:我是一名研究生,我的人工智能课程使用《人工智能:一种现代方法》作为参考教材,我如何才能为人工智能编程项目做贡献? Peter Norvig : 现在正是时候:我正在为《人工智能:一种现代方法》这本书的下一个版本的配套代码工作,在 https://github.com/aimacode 上,你可以找到 Java 、 Python 和 JavaScript 子项目,我们一直在寻找好的贡献者。除了提供书中所有算法的代码实现,我们还希望提供 tutorial 材料和练习。此外, GitHub 上也还有其他好的人工智能项目,都希望有铁杆贡献者。 问:有没有像可汗学院( Khan Academy )和 Udacity 一样的在线资源,可以让人们在不到 “ 十年 ” 就精通一门学科呢? Peter Norvig : 精通可能需要十年,或者是 10000 个小时,这种时间会因任务、个体以及训练方法的不同而有所差异。但真正的精通并非易事。可汗学院和 Udacity 主要是提供了技术培训,让你不断努力地学习直到你真正地掌握它。在传统的学校教学当中,如果你在考试中获得的成绩是 “C” ,你就不会再去花更多的时间去学习并掌握它,你会继而专注于下一个学科,因为班集里每个人都是这样做的。在线资源不是万能的,精通它需要加倍努力地学习,而学习需要动力,动力则可以通过人与人之间的联系逐步提升,这在网上是很难学到的。因此,在一个领域,走上正轨,我们需要在社交、动机方面做更多的工作,我们需要对个人需求有针对性地做更多的定制培训,同时我们还需要做更多使实践审慎和有效的工作。我认为,在线资源主要的最终结果不是缩短精通的时长,而是增加更多学生实现精通的机会。 问:如果请你再次教授《计算机程序设计》( Udacity )这门课程,会做哪些改变呢? Peter Norvig : 我认为这门课程很好,反馈(不管是数量还是质量)大多都是好的。就个人而言,我希望有更多的实例程序和技术。我想修正之前我们犯下的一些错误(主要是因为课程进展太快,没有太多的时间去测试所有的东西)。我希望系统能够更加互动:让学生获得更多的反馈信息,不仅仅是 “ 你的程序不正确 ” ,同时可以让学生看到下一件要做的事情,让他们知道到目前为止已经做了什么。我认为对于学生而言,正则表达式和语言这部分进展速度过快了;另外,我还想添加更多的材料,让学生加快学习速度,同时给他们更多的机会去实践新想法。 备注:本文经CSDN授权转载,特此说明。
个人分类: 行业观察|4557 次阅读|0 个评论
【新智元笔记:工程语法与深度神经】
热度 2 liwei999 2016-5-29 13:45
我: 汉语的类后缀(quasi-suffix)有不同的造词程度,“-者” 比“-家”强。“ 者” 是 bound morpheme,“家(home)” 通常是 free morpheme,突然来个“冷笑家”,打了个措手不及 @白老师。 不敢轻易给这种常用的 free morpheme 增加做类后缀的可能性,怕弄巧成拙。即便是人,乍一听这句子中的“冷笑家”也有点怪怪的感觉,怎么这样用词呢?如果硬要去模拟人的造词和理解合成词的功能,倒是有 heuristics,不知道值得不值得 follow:“冷笑”是 human 做 S 的动词,-家 是表示 human 的可能的后缀(“者” 比 “家” 更宽泛一些,可以表示机构或法人),这就为“冷笑家”作为合成词增添了一点语义的搭配证据,但还不足以站住,于是还有另一个 heuristic:“冷笑”的 subcat 的 human 语义坑不仅仅是S,其 O 也是 human: “张三冷笑李四”。而另一条路径(上面输出的 parse)是:冷笑 的 O 是赞成“, 不搭。 这两个 heuristics (一个morphological,一个 syntactic)是如何在人脑里合力促成了正确的理解的,是一个可以想象但并不清晰的下意识过程。机器可以不可以模拟这个过程,利用这种合力做出逼近人类的语言理解呢?道理上当然可以。既然我都可以描述出来,那么硬做也可以做出它来。但是,在遇到这样的语料的时候,说句实话,通常选择不做。原因就是我以前说的:编制一个 NLU 系统,不能太精巧。【 科研笔记:系统不能太精巧,正如人不能太聪明 】 白: 赞成有俩坑,一个human,一个内容。就算被“的”强制为名词,这俩坑仍旧在。 我: 是,我还没来得及加上 “赞成” 的坑的考量进来,问题的复杂度更增加了。 精巧的路线是老 AI 的人和语言学家最容易陷入的泥潭。 老 AI 陷入精巧还不当紧,因为 老 AI 做的都是玩具,domain 极为狭窄,精巧不至于造成太大偏向。 白: “这本书的出版”和“冷笑家的赞成”异曲同工,都是用填坑成分限定有坑的临时名词。 所以,两个坑其中一个是human,会给“-家”结构加分。 这是系统性的现象,与精巧无关。 我: 我就怕聪明反被聪明误。在 data driven 的NLU开发过程中,对于偶然出现的“怪怪“ 的语词或句子, 我通常是无视它的存在(除非这个现象反复出现)。 白老师总说是系统性的现象, 但举出的例子常常是 “怪怪”的, 是那种介于人话与“超人话”之间的东西, 超人指的是,这类话常常是语言学家从头脑里想出来的, 或者是高级知识分子抖机灵的作品。 白老师宋老师,还有 yours truly 都擅长写出这样句子,可是普罗不这样说话。 用白老师自己的话说,就是这类现象处于毛毛虫的的边缘毛糙的地方。 虽然是毛毛虫的一个部分,没有它其实无碍。 我指的是 “家” 作为类后缀的现象。 白: 对付这种既没有截然的肯定也没有截然的否定,而只是“加分”/“减分”的逻辑,统计比规则更在行。关键是模式长啥样。 mei: Deep learning 死记硬背,套模式,有了training data,做第四层,第五层,做不出吗? 我: 我对这个统计的能力,好奇多于怀疑。统计或深度神经,真有这么神吗? 连毛毛虫的毛边、灰色地带、长尾,也都恰好能学出来? mei: 那就需要多run experiments,机器多。一部分靠知识,一部分靠实验。应该能的。 白: 模式过于稀松平常,深度学习或可用上,但效果很差。模式过于稀奇古怪,深度学习可能完全没有用武之地。 我: “家”作为后缀的产生性不强,基本属于长尾。而“家(home)”作为自由语素则是压倒性的。统计的系统不会看不见这一点。 白: 在找到合适的模式之前,过于乐观或过于悲观都是缺乏凭据的。 mei: 中文的data多啊。再sample一下 白: 都不知道模式长什么样,sample啥呢?我们的关键是看模式长什么样 mei: 做语音识别深度学习的,也是做很多实验,然后发现模式的。 白: 语音的结构是扁平的,拿来套语言,未必灵。假定了扁平再来发现模式,说不定已经误入歧途了。 mei: 不是100%灵,但有analogy 白: 实验不可能对所有模式一视同仁,一定有先验假设的。也许藏在心里没说出来,但是模型会说明这一切的。 我: 【 科研笔记:系统不能太精巧,正如人不能太聪明 】里面有 事不过三的原则。事不过三,无论是中心递归,还是我文中举的否定之否定之否定的叠加。表面上是程序猿的经验之谈,其实属于设计哲学。 mei: 哲学有用的 白: 如果藏在心里的先验假设是错的,多少数据也救不了你 mei: 先验假设 不是不好-立委的知识都可以用到深度学习上 白: 都能用上就好了。问题是他的知识长的样子,深度学习消化得了么? mei: 那就combine啊 白: 在使用深度学习对付语言结构这件事情上,1、有迷信;2、有办法;3、迷信的人多半不知道办法。 combine会引发什么问题,不做不知道 mei: 深度学习一点不迷信,又有定律,又有实践。 我: 哈,曾经遇到一个“超级”猎头,说超级是说的此女士居然对AI和NLU如数家珍的样子,包括人工智能符号逻辑派与统计学习派的两条路线斗争,不像一般的IT猎头简单地认为AI=DL。她的最大的问题就是(大体):你老人家是经验性的,骨灰级的砖家了,你能简单告诉我,你怎样用你的经验为深度学习服务呢? (哇塞)无语。语塞。 全世界都有一个假定,至少是目前的AI和NLP领域,就是深度神经必然成事。只有在这个假定下,才有这样的问题:你无论多牛,不靠神经的大船,必然没有前途。 白: 深度学习假定的空间是欧氏空间,充其量是欧氏空间的时间序列。万事俱备,只差参数。这个假定要套用到语言结构上,还不失真,谈何容易。其实就是把目标空间的判定问题转化为参数空间的优化问题。 mei: 没说容易啊。现在的深度学习当然有局限性。 还要懂data science,the science of data 白: 目标空间错了,参数空间再优化也没有意义。 我: 非常好奇,这么深奥的深度神经是怎样做的 AI marketing 洗脑了全社会,以致无论懂行的、不懂行的、半懂行的都在大谈深度神经之未来世界,把深度神经作为终极真理一样膜拜。 第一,我做工程语法(grammar engineering)的,句法分析和主要的语义落地场景都验证非常有效了,为什么要服务深度神经?本末倒置啊。他本来做得不如我,无论parsing还是抽取,为啥反倒要我服务他成就他呢?不带这样的,当年的希拉里就被奥巴马这么批评过:你不如我,为啥到处谈要选我做你的副总统搭档呢? 第二,深度神经也没要我支持,我自作多情什么,热脸贴冷屁股去?据说,只要有数据,一切就自动学会了,就好比孩子自动学会语言一样。哪里需要语言学家的出场呢? 最奇妙的是把一个软件工程界尽人皆知的毛病当成了奇迹。这个毛病就是,学出来的东西是不可理解的,很难 debug 。假设学出来的是一个完美系统,不容易 debug 当然可以,因为根本就没有 bugs。可是,有没有 bugs 最终还是人说了算,数据说了算,语义落地的应用说了算。如果发现了 bug,在规则系统中,我一般可以找到症结所在的模块,进去 debug,然后做 regressions,最后改进了系统,修理了 bug。可是到了神经系统,看到了 bugs,最多是隔靴搔痒。 张: 感同身受 我: 要指望在下一轮的训练中,通过 features 的调整,数据的增加等等。幸运的话,你的bugs解决了,也可能还是没解决。总之是雾里看花,隔靴搔痒。这么大的一个工程缺陷,这也是谷歌搜索为什么迄今基本是 heuristics 的调控,而不是机器学习的根本理由之一(见 为什么谷歌搜索并不像广泛相信的那样主要采用机器学习? ),现在被吹嘘成是深度学习的优点:你看,机器多牛,人那点脑量无论如何不能参透,学出来是啥就是啥, 你不认也得认。是缺点就是缺点。你已经那么多优点了,连个缺点也不敢承认?牛逼上天了。 mei: 不是这样的。内行的不否认深度学习的长处,但对其局限性都有认识的 我: @mei 这个是针对最近某个封面文章说的,白老师不屑置评的那篇:【 泥沙龙笔记:学习乐观主义的极致,奇文共欣赏 】 mei: 我的观点: There is nothing wrong with 1) and 2), in fact, they have helped advancing AI big time. But 3) is a serious problem . 我:赞。 宋: 自然语言处理 不同于图像处理和语音处理,相当一部分因素是远距离相关的。词语串的出现频率与其长度成倒指数关系,但语料数据的增加量只能是线性的,这是机器学习的天花板。 我: 宋老师的解释听上去很有调性。 image 不说它了,speech 与 text 还是大可以比较一下的, speech 的结构是扁平的?怎么个扁平法? text 的结构性和层级性,包括 long distance 以及所谓 recursion,这些是容易说清楚的,容易有共识的。 宋: @wei 什么叫“调性”? 我: 这是时髦的夸赞用语。:) 宋: tiao2 or diao4? 我: diao4,就是有腔调。 深度神经没能像在 speech 一样迅速取得期望中的全方位的突破,这是事实,是全领域都感觉困惑的东西。 全世界的 DLers 都憋着一股劲,要不负众望,取得突破。 终于 SyntaxNet 据说是突破了,但也不过是达到了我用 grammar engineering 四五年前就达到的质量而已,而且远远没有我的领域独立性(我的 deep parser 转移领域质量不会大幅度下滑),距离实用和落地为应用还很遥远。 宋: 在不知道结构的情况下,只能看成线性的。知道有结构,要把结构分析出来,还得先从线性的原始数据出发,除非另有外加的知识可以直接使用。 我: 这个 text 迄今没有大面积突破的困惑,白老师说的是模型长什么样可能没弄清楚,因此再怎么神经,再多的数据,都不可能真正突破。 宋老师的解释进一步指出这是结构的瓶颈,特别是long distance 的问题。 如果是这样,那就不复杂了。 将来先把数据结构化,然后再喂给深度神经做NLP的某个应用。 这个接口不难,但是到底能有多奏效? 宋: SyntaxNet宣称依存树的分析准确率达到94%。也就是说,100个依存弧,平均有6个错的。n个词的句子有n到2n个依存弧。因此,10几个词的句子(不算长),通常至少有一条弧是错的。即使不转移领域,这样的性能对于机器翻译之类的应用还是有很大的问题,因为每个句子都会有翻错的地方。 我: 错了一点弧,只要有backoff,对于多数应用是无关大局的, 至少不影响信息抽取, 这个最主要最广泛的NLP应用,对于不完美parsing是完全可以对付的, 几乎对抽取质量没有啥影响。 即便是 MT,也有应对 imperfect parsing 的种种办法。 宋: 这个数据的结构化不仅是clause层面的,而是必须进入clause complex层面。 首先需要人搞清楚clause complex中的结构是什么样子的。就好像分析clause内的结构,要让机器分析,先得让人搞清楚clauses 内的结构体系是什么,还需要给出生成这种结构的特征和规则,或者直接给出一批样例。 我: 现在的问题是,到底是是不是因为 text 的结构构成了深度神经的NLP应用瓶颈? 如果真是,那只要把结构带进去,今后几年的突破还是可以指望的。 结构其实也没啥神奇的。 不过是 (1) 用 shallow parsing 出来的 XPs 缩短了 tokens 之间的线性距离(部分结构化);(2)用 deep parsing 出来的 SVO 等句法关系(完全结构化),包括 reach 远距离。 这些都是清晰可见的,问题是深度神经是不是只要这个支持就可以创造NLP奇迹? 宋: 把结构带进去了再机器学习,当然是可能的。问题就是怎么把结构带进去。什么都不知道的基础上让机器去学习是不可能的。 我: 以前我们就做过初步实验做关系抽取,把结构带进ML去, 是有好处,但好处没那么明显。挑战之一就是结构的 features 与 原来的模型的 features 之间的 evidence overlapping 的平衡。 宋: clause complex的结构与clause的结构不一样。google把关系代词who、what往往翻译成谁、什么,就是没搞清楚层次区别。 【相关】 【 科研笔记:系统不能太精巧,正如人不能太聪明 】 【 泥沙龙笔记:学习乐观主义的极致,奇文共欣赏 】 【李白对话录:你波你的波,我粒我的粒】 【白硕- 穿越乔家大院寻找“毛毛虫”】 为什么谷歌搜索并不像广泛相信的那样主要采用机器学习? 《新智元笔记:再谈语言学手工编程与机器学习的自动编程》 《新智元笔记:对于 tractable tasks, 机器学习很难胜过专家》 《立委随笔:机器学习和自然语言处理》 《立委随笔:语言自动分析的两个路子》 【 why hybrid? on machine learning vs. hand-coded rules in NLP 】 钩沉:Early arguments for a hybrid model for NLP and IE 【置顶:立委科学网博客NLP博文一览(定期更新版)】 《朝华午拾》总目录
个人分类: 立委科普|5466 次阅读|2 个评论
谷歌研发出Tensor Processing Unit人工智能芯片
热度 1 swordbell 2016-5-20 10:15
我们都知道,谷歌去年发布了TensorFlow深度学习开源库,最近,谷歌宣布研发了用于深度学习的芯片Tensor Processing Unite。 据知情人士说,TPU已经在谷歌的数据中心运行了一年时间,由于谷歌严守TPU的秘密,所以TPU一直不为外界所知。这位知情人士说,从目前的运行效果来看,TPU每瓦能耗的学习效果和效率都比传统的CPU、GPU高出一个数量级,达到了摩尔定律预言的七年后的CPU的运行效果。这位知情人士不无煽情的说,请忘掉CPU、GPU、FPEG吧。 如此看来,在深度学习方面,TPU可以兼具桌面机与嵌入式设备的功能,也就是低能耗高速度。 据报道,TPU之所以具有良好的机器学习能力,是因为这种芯片具有比较宽的容错性,这就意味着,达到与通用芯片相同的学习效果,TPU不需要通用芯片那样多的晶体管,不需要通用芯片上那样多的程序操作步骤,也就是说,相同数量的晶体管,在TPU上能做更多的学习工作。 但是,前边知情人士的煽情并非谷歌的本意,谷歌研发TPU并非要取代CPU或者FPGE,谷歌认为,TPU是介于CPU和ASIC (application-specific integrated circuit:应用集成电路)之间的芯片。ASIC用于专门的任务,比如去除噪声的电路,播放视频的电路,但是ASIC明显的短板是不可更改任务。通用CPU可以通过编程来适应各种任务,但是效率能耗比就不如ASIC。一如前边所言,在机器学习方面,TPU同时具备了CPU与ADIC的特点,可编程,高效率,低能耗.
3809 次阅读|1 个评论
【泥沙龙笔记:学习乐观主义的极致,奇文共欣赏】
热度 1 liwei999 2016-5-20 05:58
洪: 大数据上火车跑, 告别编程规则搞。 garbage in garbage out, 烧脑码农被废掉。 AI不再需要“程序猿”,未来数据比代码重要-新智元-微头条(wtoutiao.com) 我: 最近心智元那篇深度学习要代替程序猿的译文很有看头,是学习(ML)乐观主义的极致,但又呈现了两条路线合流的某种迹象,有的可唠。白老师洪爷尼克一干人熟悉ai两条路线你死我活斗了半个多世纪的,跟我党10次路线斗争类似,看这篇的极端乐观主义,最终宣告斗争结束世界大同的架势,可以评评掐掐。抛几个玉看能不引来啥砖砸。 【1】 quote: 编程将会变成一种“元技能(meta skill)”,一种为机器学习创造“脚手架”的手段。就像量子力学的发现并未让牛顿力学失效,编程依旧是探索世界的一种有力工具。但是要快速推进特定的功能,机器学习将接管大部分工作。 这个说法听上去怎么与白老师前一阵说的有类似或平行的味道? 洪: 这种鸡血文,可别仔细读,否则@wei 你就前功尽弃邯郸学步了 我: 它代表了这股“热”的一种极致。还是比ai取代或消灭人类,更加“理性”一些,调子是乐观主义的。 洪: 老@wei 你还是要待价而沽,找机会当老黄忠,杀一回nlp夏侯渊啥的,抖抖威风。赶紧做benchmark,你为刀斧手,syntaxnet啥的为鱼肉。 我: 杀一回nlp夏侯渊根本不是问题。 现在说的是取代程序猿,凭什么他们成为劳工中的贵族。 【2】 谷歌搜索真地从规则和 heuristics 调控正在过度到深度学习吗?这是里面爆料的新发展? (benchmarking 我心里有数,稳操胜券:新闻媒体如果所报 94 为确,那么大家都已经登顶,基本不分伯仲,没多大余地了。一旦超越领域限制,哈哈) 我疑惑的是这个报料:quote 甚至,Google搜索引擎这座由人工规则建立起来的“大厦”也开始仰仗这些深度神经网络。2月份,Google用机器学习专家John Giannandrea替换掉了多年以来的搜索部门负责人,还开始启动一个针对工程师的“新技能”再培训项目。“通过培养学习机制,我们不一定非要去编写规则了。”Giannandrea告诉记者。 这个转移如果是真地,对于搜索这么大的一个产业,在根基上做这种转移,在这种热昏的大气候下,哈哈,是福不是祸,是祸躲不过,谷歌这座搜索大厦是不是面临倾覆的前兆?不过想来即便想在 existing 手工调控的搜索路线中夹带新货,management 也不会冒进,估计是逐渐渗透和试验,否则不是自杀? 关于这个,有一些背景,见我以前的博文:《 再谈机器学习和手工系统:人和机器谁更聪明能干? 》 还有 为什么谷歌搜索并不像广泛相信的那样主要采用机器学习? Nick: 我赶脚伟哥最近修改resume和google开源parser有关系。再不改嫁就真砸手里了。 说到两条路线斗争,最极端的符号派当属定理证明,我最近在写篇定理证明简史。你们想听啥,告我一声,我再加料。 白: 那篇不需要“程序猿”的文章,理论上是错的,懒得转也懒得评。 我: 谁能证实谷歌搜索要走深度学习取代规则调控的路线? Nick 真以为 SyntaxNet 对我是威胁吗?是一个 alert,是实。 南: Nick大师逗你玩呢 我: 威胁还太远。alert 是因为确实没想到这一路在新闻领域训练能这么快达到94的高度,因为这个高度在我四五年前达到的时候,我是以为登顶了,可以喘口气,不必再做了。从应用角度,确实也是 diminishing returns 了,没有再做的价值了。如果想争口气的话,有些已知的地方还可以再做圆,那还是等退休没事儿的时候玩儿比较合适。 问题不在那里,问题在这儿: 【3】 领域转移和语义落地 机器学习的系统天生地难以领域转移,SyntaxNet 恐非例外。你花费牛劲儿,把各种 features 设计好,优化了,加上真正海量的训练数据,在一个领域 譬如新闻媒体,达到了最优的 benchmark 譬如 94%,但是一旦转换领域,performance 直线下滑是常见的问题。除非 retrain,这个谈何容易,不论。 陈: 新闻能做到的话,在其他领域,无非就是积累数据 我: 你的说法是经典的。 quote 当然,还是要有人来训练这些系统。但是,至少在今天,这还是一种稀缺的技能。这种工作需要对数学有高层次的领悟,同时对于“有来有往”的教学技巧有一种直觉。“使这些系统达到最优效果的方法差不多是一门艺术”,Google Deepmind团队负责人Demis Hassabis说。“世界上只有寥寥数百人能出色地完成这件事。” (这么说来还不错,世界上还有几百号大牛可以玩转它。另一条路线断层了,能玩转的会有几十人吗?) 以前就不断听说,同一个算法,同一批数据,甚至基本相同的 feature design,不同人训练出来的结果大不相同。虽然科学上说这个现象不合理,科学的东西是可以完全重复的,但是如果参杂了艺术或某种 tricks,说不清道不明的经验因素啥的呢。不用说得那么玄,重新训练的确不是一个简单的过程重复。 Self-quote: 问题的另一方面是,机器学习是否真地移植性那么强,象吹嘘的那么神,系统无需变化,只要随着新数据重新训练一下就生成一个新领域的系统?其实,谈何容易。首先,新数据哪里来,这个知识瓶颈就不好过。再者,重新训练的过程也绝不是简单地按章办事即可大功告成。一个过得去的系统常常要经历一个不断调控优化的过程。 说到这里,想起一段亲历的真实故事。我以前拿过政府罗马实验室10多个小企业创新基金,率领研发组开发了一个以规则系统为主(机器学习为辅,主要是浅层专名标注那一块用的是机器学习)的信息抽取引擎。我们的政府资助人也同时资助另一家专事机器学习的信息抽取的团队(在美国也是做机器学习很牛的一家),其目的大概是鼓励竞争,不要吊死在一棵树上。不仅如此,罗马实验室还选助了一家系统集成商开发一套情报挖掘应用软件,提供给政府有关机构试用。这套应用的内核用的就是我们两家提供的信息抽取引擎作为技术支撑。在长达四年的合作中,我们与集成商有过多次接触,他们的技术主管告诉我,从移植性和质量改进方面看,我们的规则引擎比另一家的机器学习引擎好太多了。 我问,怎么会,他们有一流的机器学习专家,还常年配有一个手工标注的团队,引擎质量不会太差的。主管告诉我,也许在他们训练和测试的数据源上质量的确不错,可是集成商这边是用在另一套保密数据(classified data)上,移植过来用效果就差了。我说,那当然,训练的数据和使用现场的数据不同类型,机器学习怎么能指望出好结果呢,你们该重新训练(re-training)啊。你们用他们引擎五年来,重新训练过几次,效果如何?主管说:一次也没有重新训练成过。重新训练,谈何容易?我问:你们不可以组织人自己标注使用领域的数据,用他们的系统重新训练?主管说:理论上可行,实践上步步难行。首先,要想达到最优效果 ,当然是根据我们的数据重新标注一个与引擎出厂时候大体等量的训练文本集来。可那样大的数据标注,我们根本无力做成,标注过程的质量控制也没有经验。结果是我们只标注了部分数据。理论上讲,我们如果把这批自己的数据加到引擎提供者的训练数据中,重新训练可以把系统多少拉到我们的领域来,效果总会有 提高。但是我们不是信息抽取和机器学习专家,我们只擅长做系统集成。机器学习用新旧数据混合要想训练得好,要牵涉到一些技术细节(甚至tips和tricks) 和一些说明书和专业论文上不谈的微调和小秘密。尝试过,越训练效果反而越差。我问:那怎么办?遇到质量问题,怎样解决?他说:没什么好办法。你们不同,我们只要例示观察到的错误类型,你们下一次给我们 update 引擎时基本上就已经解决了。可我们把问题类型反馈给机器学习开发者就不能指望他们可以改正,因为他们见不到这边的数据。结果呢,我们只好自己在他们的引擎后面用简单模式匹配程序打补丁、擦屁股,可费劲了。 我当时的震惊可想而知。一个被NLP主流重复无数遍的重新训练、移植性好的神话,在使用现场竟然如此不堪。学习大牛做出来的引擎在用户手中四五年却连一次重新训练都实施不了。系统成为一个死物,完完全全的黑箱子。所有改进只能靠隔靴搔痒的补丁。 from 【科普随笔:NLP主流成见之二,所谓规则系统的移植性太差】 即便是同一个大厨,做了一锅好饭菜以后,下一锅饭菜是不是同样好,也不是铁定的。 【4】 这一点最重要,白老师批评。如果你的“模型”就不对,你怎么增加数据,怎么完善算法,你都不可能超越。这里说的是自然语言的“样子”,即白老师说的“毛毛虫”(见 【白硕- 穿越乔家大院寻找“毛毛虫”】 )。 整个自然语言的边界在哪里?不同语言的“样子”又有哪些需要不同调控的细节? 这些东西有很多体悟,并不是每一种都可以马上说清楚,但是它是的确存在的。无视它,或对它缺乏认识,最终要栽跟头的。 Nick: 那得看是什么餐馆,麦当劳每天味道都同样,路边馄饨摊每天各不相同。 我: exactly 麦当劳每天一样的代价是低品质,它要保持 consistency 就不可能同时保持高品质,只能永远在垃圾食品的标签下。 Nick: 我意思是你今能卖麦当劳的价钱,再不嫁,明就馄饨摊了。 我: 鼎泰丰来湾区了,小笼包子比他家贵出好几倍。前两天一尝,果然名不虚传。被宰认了,因为心甘情愿,谁叫它那么好吃呢。 我又饿不死,何苦卖麦当劳呢?怎么也得成为鼎泰丰吧。 最不抵,我开个咨询公司也有饭吃,没必要看贱自己。 现在就是,如何领域突破,如何语言突破?换一个语言,本质上也是换一个领域。因为只有这两项突破,才能真正NLP广泛落地为产品。94 很动听了,后两项还在未定之数。这种领域和语言的突破与毛毛虫什么关系 很值得思考。 洪爷说的“鸡血”文的最有意思的地方是,机器学习终于从过去遮遮掩掩的自动编程黑箱子,被鸡血到正式宣告和标榜为终极的自动编程。程序猿下岗,资料员上岗,在最上面的是几百号能玩转黑箱子魔术的超人。一切搞定,环球太平。一幅多么美妙的AI共产主义图景。 【相关】 AI不再需要“程序猿”,未来数据比代码重要-新智元-微头条(wtoutiao.com) 【新智元笔记:巨头谷歌昨天称句法分析极难,但他们最强】 《 再谈机器学习和手工系统:人和机器谁更聪明能干? 》 为什么谷歌搜索并不像广泛相信的那样主要采用机器学习? 【科普随笔:NLP主流成见之二,所谓规则系统的移植性太差】 【白硕- 穿越乔家大院寻找“毛毛虫”】 【科研笔记:NLP “毛毛虫” 笔记,从一维到二维】 Comparison of Pros and Cons of Two NLP Approaches 《立委随笔:语言自动分析的两个路子》 why hybrid? on machine learning vs. hand-coded rules in NLP 【科普随笔:NLP主流成见之二,所谓规则系统的移植性太差】 【科普随笔:NLP主流最大的偏见,规则系统的手工性】 【科普随笔:NLP主流的傲慢与偏见】 【科研笔记:系统不能太精巧,正如人不能太聪明】 【NLP主流的反思:Church - 钟摆摆得太远(1):历史回顾】 《立委随笔:机器学习和自然语言处理》 与老前辈谈 NLP 及其趋势 【置顶:立委科学网博客NLP博文一览(定期更新版)】
个人分类: 立委科普|2824 次阅读|1 个评论
“深,可测”——向阿法狗学习深度学习
热度 7 lvnaiji 2016-3-18 09:03
吕乃基 第一次工业革命后,技术开始了追赶人类的进程。在自然界的各种运动形式中从基本物理运动起步。 所谓“基本物理运动”也就是机械运动、热运动和电磁运动,自然界所有运动方式都包含基本物理运动并以此为基础。技术的发展同样如此,从各种机械、蒸汽机、内燃机和电机开始。在这一阶段,人类弯腰俯看技术,批判技术,是机械技术拉低了人的身段,让人成为机器,这就是卓别林在《摩登时代》的表演。由第二次工业革命到20世纪上半叶,随着染料、化纤和各种材料问世,技术进入化学运动阶段,人类既赞美技术,也憎恨由此带来的种种弊端。上世纪末,技术由基因工程等迈上生命运动的高度,与此同时,信息技术、电脑、互联网的发展意味着技术的发展正在开启意识运动的大门。在技术亦步亦趋接近人类之时,人类开始恐惧技术。而今,技术追赶人类的脚步不仅就在身后,而且在某种意义上已经与人并驾齐驱,在某些方面甚至有所超越,技术进入了与人之间你追我赶的局面。 值得注意的是,技术与人的你追我赶远不限于比试围棋,实际上,阿法狗战胜李世石只是一种标志和象征。技术的每一步发展对人类社会的影响都远远超过其直接的效果,阿法狗也是这样,其影响在围棋之外的第一步扩展是深度学习。 有网友称,人通常把有谁能够“理解”解释不了的东西就叫做有悟性,而只能理解解释了的东西就是没有悟性。这一说法十分形象。而“没有悟性”,基本上也就划定了一个人能力的边界。 在探索人类的学习过程中,人工智能发展出包含蒙特卡洛树在内的深度学习。第二局中阿法狗第37手“天外飞仙”,在职业棋手看来是神一样的悟性,而在阿法狗那里,可以条分缕析,化神奇为常理。而且,阿法狗所依据的算法具有极强的通用性,意味着它不经改写就可以应用于别的游戏或者工作。 在《三体》中,三维世界看四维世界叫做“方寸之间,深不见底”。随着人工智能一步步解析悟性、顿悟之类说不清道不明的心理过程,随着更多人向人工智能学习如何深度学习,以及在人工智能的协助下深度学习,那么以往难以理解的悟性等等,就有可能是“深,可测”。 人工智能自从降生以来,一直是在向人类学习如何学习,现在,人类可以向人工智能学习如何深度学习,以及可以合起来共同深度学习——这才是围棋大赛最重要的成果。 以往的悟性,是自为而非自觉,对于人类来说是“必然王国”而非“自由王国”。一旦由人工智能揭示悟性之奥秘,认识过程就可能由“必然王国”进入“自由王国”,成为人类自觉的行为。 人类的能力因此将获得前所未有的扩展与提升。
个人分类: 科技|4418 次阅读|18 个评论
智能的进化
热度 16 xying 2016-3-18 07:51
我们对世界的认知,对智慧的了解,一直摇摆在感性和理性的不同主导中。这不仅反映在艺术与科学的不同,传统思维和现代文化的冲突,人文主义和理性思考的矛盾上,即使在人工智能研究的几十年发展史上,也反映在符号主义和联接主义不同发展路线的竞争上。 在今日大数据热潮中,重新焕发青春的神经网络,模式识别,机器学习和人工智能,都始于 20 世纪 50 年代。 1957 年美国海军研究室 Frank Rosenblatt ,提出了一种模拟神经元的感知,有识别智能的数学模型—— Perceptron 。这个能够在线学习,具有图像识别功能的原型,在计算机模拟试验后,其硬件的实现, Mark 1 Perceptron ,由 400 个光学传感器,用变阻器作为电导的权重,随机连接到一组“神经元”而成。这里每个神经元电路对应于一个视觉的判断,神经元汇合传感来的电流,以是否超过域值来输出逻辑判断。它是可以通过样本来学习的,在训练中根据误差的反馈,用马达调节变阻器来改变神经元中联接的权重。这是只有输入输出无隐含层的人工神经元网络。当它连接有 n 个传感器的输入,每个神经元在数学上,实现了以一个 n 维空间的超平面,来区分样本点的数学模型。其学习的过程是用迭代的算法,调节这个超平面的参数,使得它对样本区分的误差为最小。这实际上也是一种统计分类,其收敛的算法,成为模式识别中线性分类法基础。这也是认知、心理和智能研究上联结主义的开端。 在 1958 年由美国海军组织的发布会上, Rosenblatt 公布了这个研究,在当时还是雏形的人工智能社区引发了热烈讨论和广泛联想。《纽约时报》报道说:“ Perceptron 将会是能够行走,会交谈,有视觉,能写作,自我繁殖,感知自身存在的电脑胚胎。”这种智能基于感知和联想,对输入的数据学习分类和类比判断,是在模拟动物的本能和应用经验的方式。 随后的年间,人们很快发现了它的局限性。对于许多模式, Perceptron 并不能通过训练来分辨,比如说,在二维平面 1 , 3 象限上同属一类的点与 2 , 4 象限上属另一类的点,无法用一条直线来划分,这意味着 Perceptron 不能识别 XOR 逻辑的模式。研究的热情在失望中消退。 1969 年,当时 AI 界的领军人物 Marvin Minsky 和 Seymour Papert 在《 Perceptrons 》书中总结说: Perceptron 神经网络只能区分线性可分的模式,它甚至不可能学习简单的 XOR 逻辑。尽管他们知道,这对多层网络并非如此,其后也有人发表了多层网络的 XOR 逻辑实现的研究,但人们对 AI 的研究已被新的方向所吸引, Perceptron 已是昨日黄花,大家都认为 Minsky 权威的论断,已经终结了人工神经元网络的前途。不幸地让这方向的研究停滞了十几年, AI 由此转入研究用逻辑的方法,搜索推理知识的轨道。 其实早在 Perceptron 之前,人们就开始探索采用机械化的方式,代替人类理性推想的可能性。笛卡尔希望把一切问题变为数学问题,用解析几何把几何问题化成代数问题。莱布尼茨开始研究符号思维,形式逻辑。希尔伯特设想建立一个公理化的体系,把一切数学问题,变成可以采用机械化的方式,进行形式逻辑推理。虽然哥德尔证明了这总体上是不可能的。但许多定理的机械化证明,不仅是可能的还是可行的。王浩在这方面做了先驱性的工作, 1959 年他用 IBM 704 型计算机上证明了罗素与怀特海《数学原理》中几百条有关命题逻辑的定理。吴文俊把几何命题转换成多项式,根据“多元多项式环中的理想都是有限生成的”,把几何证明问题变成计算机判定理想成员的运算。吴方法目前仍是机器证明研究的高峰。这些数学家的工作,只把计算机当作机械运算的工具,不认为有什么智能。 AI 这词是在 Perceptron 热潮中,研究社区的群体叫出来的。机器证明到了后来,因为专家系统才被宗为 AI 中符号主义的先驱。它实现的是人类逻辑推理的智能。 Feigenbaum 的 DENDRAL 专家系统和指导性的论文,正值人们对 Perceptron 失望之时,沿符号主义的思路出现。它根据给定的有机化合物分子式和质谱图数据,在保存有化学和质谱仪知识的数据库中,用逻辑推理的方法,从几千种可能组合中挑选出正确的分子结构。这是个能产生高端实用价值的计算机新用法。人们憬然而悟,为什么我们不参考理性人思考的方式,直接从成熟的知识系统中,用逻辑来猜测搜索求解?几百年发展的科学研究知识已是一个巨大的宝藏,科学用因果关系,构造了一个可以理解的世界模型,以此发现了许多的规律,作为站在智慧高端的人类,我们不必再模仿生物的低级智能了,只要模仿人类的理性,以谓词逻辑的运算和启发式的搜寻,就有了高级的智慧。如同机械放大了人力,我们可以用计算机来提高推理能力!这个基于科学推理和知识系统的计算主义智能研究路线,使得专家系统在 70 和 80 年代成为人工智能的代名词。人们相信,实现具有人类智慧的机器,只是一个工程问题了。 1981 年,日本投入了大量的资金,开始了雄心勃勃第五代计算机的研究。然而在专家系统长达十几年探索中,人们认识到有两个根本的问题绕不过去。一是互动( interaction )问题,专家系统只能模拟人类深思熟虑的理性,对于机器人最需要的是感知、移动、互动,而不是人类最无趣的抽象思维技能。二是放大( scaling up )问题,想象中无限美好的前景,只限于较窄一类问题的专家咨询,或小尺寸游戏问题的演示;将这些证明过原理的设计应用在实践时,各种复杂因素产生了组合爆炸。人类瞬间都能做出的判断,例如识别人脸,穿过有家具的房间,对计算机都艰难无比。这让 AI 的主流研究在 80 年代,虽然有些商业应用,但思想上沉闷乏味,终于进入冬天。 科学研究的激情也如新颖时装的热潮,不同的思路总要等到主流新奇穷尽、精彩衰竭之后,才会引人注目。人们早就知道一个人工神经元( Perceptron ),能在 n 维空间中确定一个超平面。不难证明两层的人工神经元网络,有能力进行任给的样本组分类,也可以实现输出输入任定的布尔值映射。这意味着任何分类和逻辑问题的答案,都可以通过网络中合适的联结权重来实现。关键是怎么通过样本的学习,自动地调节这些权重,来实现这个映射。这才是机器自己获得的,而不是设计者赋予的“智能”! 1982 年,美国加州工学院物理学家 J.J. Hopfield ,在有隐含层的神经网络上,用 Back Propagation 算法完成了 XOR 逻辑的学习,他解释学习算法收敛性的物理类比,直观易懂,又欣起了联结主义智能的热浪。其实多层神经网络能够实现 XOR 逻辑,早在 70 年代就有研究论文, 1974 年 Paul Werbos 也已给出如何训练一般网络的 BP 学习算法,当时却无人重视。直到 80 年代, BP 算法才被 David Rumelhart , Geoffrey Hinton , Ronald Williams , David Parker , Yann LeCun 重新发现。对具有可微的激励函数的多层神经网络, BP 对各层的误差梯度有简单的链式法则,因此最快地缩小误差的迭代计算便是个学习过程。 单层的 Perceptron ,只能辨识线性可分的模式,在输入输出之外具有隐层(多层)的神经网络,理论上能够识别任给的模式和实现逻辑推断, BP 算法奠定了它们学习算法的基础。经此突破后,得力于语音和手写体字的识别的市场需求和硬件支持成熟, 90 年代对人类智能模仿的研究,又回到以模式识别为主的路子上。但是 BP 算法虽然在理论上适用于任意多层的神经网络,其误差传播的梯度随着层数加多而弥散,对非凸目标函数容易陷入局部稳定平衡点而无法提高效益,或陷入“死记硬背”( Overfitting ),只记住样本而不会类推的局面。所以对这算法真正有效的还只有浅层的网络。许多的研究集中在多层神经网络学习算法的改进上。几年间,类比于统计热力学模拟退火技术,用波耳兹曼模型说明趋于全局稳定的学习算法,模拟进化过程能迅速收敛的遗传算法等等纷现。但是从 80 年代起近二十年间,各种效率较高模式识别模型,如向量机, Boosting 等也不过是与浅层神经网络相似的数学模型。 浅层的神经网络仅仅具有简单分类能力的低阶智能。模式辨识在技术上是用特征来分类的,通常依赖于人工选择辨识的特征。这对于复杂的情况,模糊的特征以及即时的需求有着极大的局限。而人类的大脑甚至动物的大脑都具有深层的网络结构,低层对感知的信号作出特征的抽象,高层对这些特征归纳再进一步抽象,逐层辨识抽象使得能够分析复杂的情况。学习的关键是如何将这深层的潜力变成功能。对深层神经网络的学习,在 2006 年 Hinton 等发表深度学习文章之前,都未能在理论上有突破。 每层神经元的映射也可以看成对输入属性的抽象。那么用某种反馈奖励机制的的方法来作预先学习,有可能在样本中自动地聚合出一些属性的抽象,而合适的抽象又能在后续样本训练中被强化,作为下一层模式识别所需要的特征。这作预习的前者是无监督学习( Unsupervised Learning ),类比于人的智商悟性;有目标训练的后者称为监督学习,好比是上课学习。 Hinton 的创意是深信度网( Deep Belief Nets ,简称 DBN )的深度学习,在深层网络中逐层采用无监督的预先学习和随后的监督学习,来提高学习效率。这在语音识别上获得很大的成功。另一方面,动物脑子在出生之始,并非是同质通用的构造,其低层如视神经,听觉神经都有遗传而来的分化结构,早在 60 年代 Hubel 和 Wiesel 就发现猫脑皮层中其独特的网络结构可以有效地降低学习的复杂性,于是人们提出了卷积神经网络( Convolutional Neural Networks- 简称 CNN )。具有局部联接和参数共享的卷积数学模型,含有较少的参数和位移,缩放扭曲等不变性,作为神经网络的低层很容易学习二维图像特征提取,可以用直接输入原始图像的监督训练,这种具有“先天”视觉低层结构的人工大脑很快地就在图像识别上放出异彩。 2014 年 Facebook ,应用 9 层神经网络的深度学习方法,对人脸的识别率可达到 97.25% ,而在电话答复系统, iPad 的 Siri 中,各种代替人力的语音辨识技术已被广泛地应用。机器在模拟视觉和听觉的辨识能力上已经非常接近于人类了。用人工智能技术创作的绘画和音乐作品,已经达到可以让人欣赏享受的水平了。 我们越来越难以理解其细节的机器智能在涌现,而我们能理解的世界必须有清晰的逻辑构造。 逻辑是用于形式语言精确交流的一种约定,逻辑和数学并不产生新的信息,不作任何(物理或其他科学的)新发现,它只是把已有的发现,做出新的表达,让你知道原来没理解到的部分。只不过,人类头脑是按照联想方式工作的,人们必须通过训练,才能充分运用逻辑和数学概念下的结果,所以科学需要用它,作为严谨表达和充分发掘拥有信息的工具。 客观世界并不是由逻辑驱动或构造的,它只因生物的智能而被感知。对智能而言,逻辑不过是一种对不同语句表达蕴含或否定等关系的辨识模式,生物对事物间的感知经验只有关联性( correlation ),而因果性( causality )则是建立在逻辑基础上的推理模式,它被认定、传播和学习后,成为现在人类理性认知结构的基础,对世界的认识就变成逻辑推理的运算。科学建立在使用因果关系结构模式,对世界描绘的图谱上,而真实的世界不一定都能很好地纳入这个模式的描述。我们理解的世界只不过是用象征符号,依逻辑和谐构造出来的幻象,它忽略了无数不能纳入这个图像的事实,以及我们理解能力之外的因素。 实际上,我们对音乐的感受,艺术的领会,情感的交流,人性的共鸣,直觉和灵感,同样是一种智能的表现,同样在学习中进步,同样在生存竞争中扮演着重要的角色,而这些不能被象征符号充分表达,难以纳入理性认识的模式,被排斥在科学之外,过去都被人们忽视了。 联结主义智能机器的到来,我们面临着一个 渐 渐难以理解的新世界。过去符号主义的 AI 只是帮助人类逻辑推理的忠实劳工,无论是机器证明还是专家系统,计算机只是严格按照设计者给定的规则,对人类的知识进行逻辑运算,不会产生逻辑之外的新结果,一切的举动和结果都在人类可以理解和希望的范畴。所以过去科幻谈到机器人的自我觉醒,都要借助于无法理解其机制的短路来实现。而联接主义的 AI ,其智能是由海量的联结参数决定的,这些联结参数不是设计者赋予的,而是通过对样本(数据)的学习自动调整形成的。 现在商业应用的人工神经网络的参数已经高达百亿数量级,拆开硬件,企图分析这些联结的数据来了解机器的功能,在原理上很简单,效用上很有限。就像我们通过核磁共振,查出某一活动的兴奋在人脑哪个区域,可以了解其功能区的拓扑,但想进一步通过分析几万个神经联接,推测他下一步要做什么是不可能的,海量参数的联结主义机器,也将有这样实践上莫测的“自由意志”。而这样的智能机器已经在我们的商业中,参与人类的日常活动,只是与我们综合智能相比现在还像雨人那样幼稚,但其智能与日俱增。我们将舒适地享受,越来越无法理解其所以然的技术服务。 互联网海量的数据,强大的并行计算能力,大量商机的即时应用需求,呼唤着大数据时代的到来,推动着工程师寻找新技术,技术渴望着智能研究的支持。传统科学那种从统计数据,总结规律,逻辑分析,先了解“为什么”,再得出“是什么”的理性方法,已经不敷这多变,复杂,即时的应用了。市场需要类似于动物的本能,基于经验及时反应的智能,现在大数据深度学习的智能,深植在联结主义模式识别和分布式计算的方向上。人工智能在大数据时代从理性科学方法,转向直接从数据中在线学习模式反应的“感性”方法。我们的工程师也已经成为这个联结网络庞大机器中的一环,以仅仅部分理解和猜测的方式,为 机器 涌现出来的智能工作。这让我们反思。人类能够坚持我们骄傲的理性掌控这世界吗?为什么不改变自己与其共进? 现在机器智能的进化,也许也正引导着人类思想模式的改变。 【说明】此文是我已发表在《中国计算机学会通讯》( P50 , 114 期, 2015 年 8 月)有关深度学习的专栏文章“智能的进化与博弈”的部分内容。这里略有补充修改。
个人分类: 科普|10994 次阅读|33 个评论
[转载]干货:深度学习 vs 概率图模型 vs 逻辑学
alaclp 2016-1-6 01:18
干货:深度学习 vs 概率图模型 vs 逻辑学 1,886 次阅读 - 2015.05.04 - 人工智能 - 小林子 在上个月发表博客文章《 深度学习 vs 机器学习 vs 模式识别 》之后,CMU博士、MIT博士后及vision.ai联合创始人Tomasz Malisiewicz这一次带领我们回顾50年来人工智能领域三大范式(逻辑学、概率方法和深度学习)的演变历程。通过本文我们能够更深入地理解人工智能和深度学习的现状与未来。 以下为正文: 今天,我们一起来回顾过去50年人工智能(AI)领域形成的三大范式:逻辑学、概率方法和深度学习。如今,无论依靠经验和“数据驱动”的方式,还是大数据、深度学习的概念,都已经深入人心,可是早期并非如此。很多早期的人工智能方法是基于逻辑,并且从基于逻辑到数据驱动方法的转变过程受到了概率论思想的深度影响,接下来我们就谈谈这个过程。 本文按时间顺序展开,先回顾逻辑学和概率图方法,然后就人工智能和机器学习的未来走向做出一些预测。 图片来源:Coursera的概率图模型课 1. 逻辑和算法 (常识性的“思考”机) 许多早期的人工智能工作都是关注逻辑、自动定理证明和操纵各种符号。John McCarthy于1959年写的那篇开创性论文取名为《常识编程》也是顺势而为。 如果翻开当下最流行的AI教材之一——《 人工智能:一种现代方法 》(AIMA),我们会直接注意到书本开篇就是介绍搜索、约束满足问题、一阶逻辑和规划。第三版封面(见下图)像一张大棋盘(因为棋艺精湛是人类智慧的标志),还印有阿兰·图灵(计算机理论之父)和亚里士多德(最伟大的古典哲学家之一,象征着智慧)的照片。 AIMA 的封面,它是CS专业本科AI课程的规范教材 然而,基于逻辑的AI遮掩了感知问题,而我很早之前就主张了解感知的原理是解开智能之谜的金钥匙。感知是属于那类对于人很容易而机器很难掌握的东西。(延伸阅读:《 计算机视觉当属人工智能 》,作者2011年的博文)逻辑是纯粹的,传统的象棋机器人也是纯粹算法化的,但现实世界却是丑陋的,肮脏的,充满了不确定性。 我想大多数当代人工智能研究者都认为基于逻辑的AI已经死了。万物都能完美观察、不存在测量误差的世界不是机器人和大数据所在的真实世界。我们生活在机器学习的时代,数字技术击败了一阶逻辑。站在2015年,我真是替那些死守肯定前件抛弃梯度下降的傻子们感到惋惜。 逻辑很适合在课堂上讲解,我怀疑一旦有足够的认知问题成为“本质上解决”,我们将看到逻辑学的复苏。未来存在着很多开放的认知问题,那么也就存在很多场景,在这些场景下社区不用再担心认知问题,并开始重新审视这些经典的想法。也许在2020年。 延伸阅读: 《逻辑与人工智能》斯坦福哲学百科全书 2. 概率,统计和图模型(“测量”机) 概率方法在人工智能是用来解决问题的不确定性。《人工智能:一种现代方法》一书的中间章节介绍“不确定知识与推理”,生动地介绍了这些方法。如果你第一次拿起AIMA,我建议你从本节开始阅读。如果你是一个刚刚接触AI的学生,不要吝啬在数学下功夫。 来自宾夕法尼亚州立大学的概率论与数理统计课程的PDF文件 大多数人在提到的概率方法时,都以为只是计数。外行人很容易想当然地认为概率方法就是花式计数方法。那么我们简要地回顾过去统计思维里这两种不相上下的方法。 频率论方法很依赖经验——这些方法是数据驱动且纯粹依靠数据做推论。贝叶斯方法更为复杂,并且它结合数据驱动似然和先验。这些先验往往来自第一原则或“直觉”,贝叶斯方法则善于把数据和启发式思维结合做出更聪明的算法——理性主义和经验主义世界观的完美组合。 最令人兴奋的,后来的频率论与贝叶斯之争,是一些被称为概率图模型的东西。该类技术来自计算机科学领域,尽管机器学习现在是CS和统计度的重要组成部分,统计和运算结合的时候它强大的能力才真正释放出来。 概率图模型是图论与概率方法的结合产物,2000年代中期它们都曾在机器学习研究人员中风靡一时。当年我在研究生院的时候(2005-2011),变分法、Gibbs抽样和置信传播算法被深深植入在每位CMU研究生的大脑中,并为我们提供了思考机器学习问题的一个极好的心理框架。我所知道大部分关于图模型的知识都是来自于Carlos Guestrin和Jonathan Huang。Carlos Guestrin现在是GraphLab公司(现改名为Dato)的CEO,这家公司生产大规模的产品用于图像的机器学习。Jonathan Huang现在是Google的高级研究员。 下面的视频尽管是GraphLab的概述,但它也完美地阐述了“图形化思维”,以及现代数据科学家如何得心应手地使用它。Carlos是一个优秀的讲师,他的演讲不局限于公司的产品,更多的是提供下一代机器学习系统的思路。 概率图模型的计算方法介绍( 视频和PPT下载 ) Dato CEO,Carlos Guestrin教授 如果你觉得深度学习能够解决所有机器学习问题,真得好好看看上面的视频。如果你正在构建一套推荐系统,一个健康数据分析平台,设计一个新的交易算法,或者开发下一代搜索引擎,图模型都是完美的起点。 延伸阅读: 置信传播算法维基百科 图模型变分法导论 Michael Jordan的技术主页 (Michael Jordan系推理和图模型的巨头之一) 3. 深度学习和机器学习(数据驱动机) 机器学习是从样本学习的过程,所以当前最先进的识别技术需要大量训练数据,还要用到深度神经网络和足够耐心。深度学习强调了如今那些成功的机器学习算法中的网络架构。这些方法都是基于包含很多隐藏层的“深”多层神经网络。注:我想强调的是深层结构如今(2015年)不再是什么新鲜事。只需看看下面这篇1998年的“深层”结构文章。 LeNet-5,Yann LeCun开创性的论文《基于梯度学习的文档识别方法》 你在阅读LeNet模型导读时,能看到以下条款声明: 要在GPU上运行这个示例,首先得有个性能良好的GPU。GPU内存至少要1GB。如果显示器连着GPU,可能需要更多内存。 当GPU和显示器相连时,每次GPU函数调用都有几秒钟的时限。这么做是必不可少的,因为目前的GPU在进行运算时无法继续为显示器服务。如果没有这个限制,显示器将会冻结太久,计算机看上去像是死机了。若用中等质量的GPU处理这个示例,就会遇到超过时限的问题。GPU不连接显示器时就不存在这个时间限制。你可以降低批处理大小来解决超时问题。 我真的十分好奇Yann究竟是如何早在1998年就把他的深度模型折腾出一些东西。毫不奇怪,我们大伙儿还得再花十年来消化这些内容。 更新: Yann说(通过Facebook的评论)ConvNet工作可以追溯到1989年。“它有大约400K连接,并且在一台SUN4机器上花了大约3个星期训练USPS数据集(8000个训练样本)。”——LeCun 深度网络,Yann1989年在贝尔实验室的成果 注:大概同一时期(1998年左右)加州有两个疯狂的家伙在车库里试图把整个互联网缓存到他们的电脑(他们创办了一家G打头的公司)。我不知道他们是如何做到的,但我想有时候需要超前做些并不大规模的事情才能取得大成就。世界最终将迎头赶上的。 延伸阅读: Y.LeCun, L.Bottou, Y.Bengio, and P.Haffner. Gradient-based learning applied to document recognition .Proceedings of the IEEE, November 1998. Y.LeCun, B.Boser, J.S.Denker, D.Henderson, R.E.Howard, W.Hubbard and L.D.Jackel: Backpropagation Applied to Handwritten Zip Code Recognition , Neural Computation, 1(4):541-551, Winter 1989 Deep Learning code: Modern LeNet implementation in Theano and docs. 结论 我没有看到传统的一阶逻辑很快卷土重来。虽然在深度学习背后有很多炒作,分布式系统和“图形思维”对数据科学的影响更可能比重度优化的CNN来的更深远。深度学习没有理由不和GraphLab-style架构结合,未来几十年机器学习领域的重大突破也很有可能来自这两部分的结合。 原文链接: Deep Learning vs Probabilistic Graphical Models vs Logic (翻译/zhyhooo 审校/王玮 责编/周建丁) 文章出处:http://www.csdn.net/article/2015-04-30/2824600 注:转载文章均来自于公开网络,仅供学习使用,不会用于任何商业用途,如果侵犯到原作者的权益,请您与我们联系删除或者授权事宜,联系邮箱:contact@dataunion.org。转载数盟网站文章请注明原文章作者,否则产生的任何版权纠纷与数盟无关。 来源:http://dataunion.org/16436.html
个人分类: 人工智能|2387 次阅读|0 个评论
[转载]一篇宏观关于深度学习的科普帖——必看,很轻松
alaclp 2016-1-6 01:04
这个必须赞!文科生也能读懂的 Deep Learning 科普帖 2,558 次阅读 - 2015.06.27 - 人工智能 - 小林子 出处:微信公众号_依图科技(yitutech) 注:转载文章均来自于公开网络,仅供学习使用,不会用于任何商业用途,如果侵犯到原作者的权益,请您与我们联系删除或者授权事宜,联系邮箱:contact@dataunion.org。转载数盟网站文章请注明原文章作者,否则产生的任何版权纠纷与数盟无关。 来源:http://dataunion.org/19812.html
个人分类: 人工智能|2081 次阅读|0 个评论
[转载]如何在Jetson TK1上安装Caffe深度学习库
alaclp 2015-12-3 13:53
Caffe 的创造者 Yangqing Jia ,最近花了些时间在NVIDIA Jetson 开发板上运行 caffe 框架。 Jetson TK1 有 192 个 CUDA 核,是非常适用于深度学习这种计算任务的。未来,如果我们想在移动设备上做一些事情的话, Jetson 是一个不错的选择,而且它预装 Ubuntu 操作系统,因此也是非常易于开发的。 Caffe内置了Alexnet模式,这是Imagenet-winning 架构的一个版本,可以识别1000 个不同种类的物体。用这个作为一种 benchmark , Jetson 可以在 34ms 里分析一个图像。 接下来,介绍如何在Jetson 上安装并运行 Caffe. 安装 你从盒子里拿到Jetson 的第一步是登录。你可以接一个显示器和键盘,但我倾向于你将它跟一个本地路由连接,然后 ssh 访问。 elinux.org/Jetson/Remote_Access 上有具体的步骤(不明白的地方可以在我们的QQ 技术群里询问) ,这时候在你的本地网络上会出现 tegra-ubuntu.local , username 是ubuntu: ssh ubuntu@tegra-ubuntu.local 默认密码是 ubuntu,接下来我们需要安装NVIDIA 的驱动,然后重启: sudo NVIDIA-INSTALLER/installer.sh sudo shutdown -r now 一旦开发板重启后,你可以登录进去,然后继续安装Caffe 所需的环境: ssh ubuntu@tegra-ubuntu.local sudo add-apt-repository universe sudo apt-get update sudo apt-get install libprotobuf-dev protobuf-compiler gfortran \ libboost-dev cmake libleveldb-dev libsnappy-dev \ libboost-thread-dev libboost-system-dev \ libatlas-base-dev libhdf5-serial-dev libgflags-dev \ libgoogle-glog-dev liblmdb-dev gcc-4.7 g++-4.7 你需要安装 Cuda SDK 以建立和运行GPU程序 ( CUDA 环境安装步骤都已经放在 QQ 技术群里,安装过程有任何问题,请随时在群里提出)。 如果一切顺利,你运行‘nvcc -V可以看到一个完整的编译器版本信息。这个时候你需要安装Tegra 版本的 OpenCV. ( 安装步骤同样在 QQ 群里找) 我们需要下载并安装Caffe sudo apt-get install -y git git clone https://github.com/BVLC/caffe.git cd caffe git checkout dev cp Makefile.config.example Makefile.config sed -i s/# CUSTOM_CXX := g++/CUSTOM_CXX := g++-4.7/ Makefile.config 我们必须使用gcc 4.7 版本,因为默认 4.8 会有一些问题。你应该可以完成整个安装。 make -j 8 all 一旦完成这可,你可以运行一下Caffe 的测试包来检查是否安装成功。这个可能需要花费一些时间,但希望一切顺利。 make -j 8 runtest 最后,你可以运行一下Caffe 的基准代码来检测一下性能。 build/tools/caffe time --model=models/bvlc_alexnet/deploy.prototxt --gpu=0 这个可能需要花费30 秒,输出一组统计数字。它运行 50 迭代的识别 pipleline 。每个分析 10 个不同的输入图像。因此看一下“‘ Average Forward pass ”时间,然后除以 10 就可以得到每个识别时间。我的结果是 337.86ms ,所以每个图像大概是 34ms 。你也可以把 -gpu=0 的标志去掉,看一下 CPU 的结果。在我这里看是大概 585ms ,所以你看 CUDA 还是起到作用了。 来源:http://www.gpus.cn/qianduan/front/getNewsArc?articleid=83
个人分类: GPU|3092 次阅读|0 个评论
[转载]深度学习和拓扑数据分析的六大惊人之举
alaclp 2015-11-30 03:16
来源:LinkedIn 作者:Edward Kibardin   假如你有一个一千列和一百万行的数据集。无论你从哪个角度看它——小型,中型或大型的数据——你不可能看到它的全貌。将它放大或缩小。使它能够在一个屏幕里显示完全。由于人的本质,如果能够看到事物的全局的话,我们就会有更好的理解。有没有办法把数据都放到一张图里,让你可以像观察地图一样观察数据呢?   将深度学习与拓扑数据分析结合在一起完全能够达到此目的,并且还绰绰有余。   1、它能在几分钟内创建一张数据图,其中每一个点都是一个数据项或一组类似的数据项。   基于数据项的相关性和学习模式,系统将类似的数据项组合在一起。这将使数据有唯一的表示方式,并且会让你更清晰地洞察数据。可视化图中的节点由一个或多个数据点构成,而点与点之间的链接则代表数据项之间高相似性。      2、它展示了数据中的模式,这是使用传统商业智能无法识别的。   下面是个案例,展示的是算法是如何仅仅通过分析用户行为来识别两组不同的人群。典型的特征区分,黄色和蓝色点:女性和男性。      如果我们分析行为类型,我们会发现,其中一组大部分是发送信息(男性),而另一组则多为接收信息(女性)。      3、它能在多层面上识别分段数据   分段数据表现在多种层面上——从高层次分类到具有相同数据项的分组。   在一个Netflix数据集的例子中,每个数据项是一部电影。最高层次的一组是音乐,孩子,外交和成人电影。中层次的部分包含不同分段:从印度片和港片到惊悚片和恐怖片。在低层次中是电视连续剧分组,比如“万能管家”,“办公室”,“神秘博士”等。      4、它能分析任何数据:文本,图像,传感器数据,甚至音频数据。   任何数据都可以被分段并理解,如果可以将它展现为数字矩阵,其中每一行是一个数据项,列是一个参数。下面这些是最常见的用例:      5、如果你引导它,它能学习更复杂的依赖关系。   选择一组数据项,将它们分组,算法就会发现所有相关或类似的数据项。重复这个过程数次,那么神经网络可以学习到它们之间的差异,比如Mac硬件,PC硬件和一般电子文本的差异。   对20000篇属于20个不同主题的文章进行了初步分析,得出一个密集的点云图(左图)。在使用深度学习迭代几次之后,算法会将它们进行分类,错误率仅仅1.2%(右图)。      6、即使没有监督它也能够学习   深度学习和自编码器模拟了人类大脑活动,并且能够在数据集中自动识别高层次的模式。例如,在谷歌大脑计划中,自编码器通过“观看”一千万条YouTube视频截取的数字图像,成功地学习并识别出人和猫脸:      我最近在使用拓扑数据分析和深度学习,并开发出一套工具,它将这些技术转换成了一个用户友好型界面,能够让人们观察数据并发现潜在联系。去这个网站看看,并让我知道你是否愿意创建你自己数据的地图。 来源:http://www.chinacloud.cn/show.aspx?id=22138cid=17
个人分类: 人工智能|1522 次阅读|0 个评论
2015机器学习--深度学习进展摘要
alaclp 2015-11-30 03:12
如今深度学习是AI和机器学习领域最热门的学习趋势。我们来审查为深度学习而开发的软件,包括Caffe,CUDA convnet,Deeplearning4j,Pylearn2,Theano和Torch。 深度学习是现在人工智能(Artificial Intelligence)和机器学习(Machine Learning)最热门的的趋势,每天的报刊都在报道令人惊异的新成就,比如在IQ测试中超越了人类( doing better than humans on IQ test )。 2015 KDnuggets Software Poll 中添加了一个深度学习工具的新类别,民意调查最流行的工具的结果显示如下。 Pylearn2 (55 users) 这里是一个 快速入门教程 来引导您完成Pylearn2的一些基本思路的学习。 Theano (50) 这里是Theano培训的一个 直观的例子 。 Caffe (29):评价--“Caffe是最快的可用的convnet实现工具。” Torch (27) Cuda-convnet (17) Deeplearning4j (12) ---是一种“基于Java的,聚焦工业,商业支持的,分布式的深度学习框架。” Other Deep Learning Tools (106) 原文链接: Popular Deep Learning Tools – a review
个人分类: 人工智能|2373 次阅读|0 个评论
《泥沙龙笔记:deep,情到深处仍孤独》
liwei999 2015-10-28 03:05
我: 《 泥沙龙铿锵三人行:句法语义纠缠论 》 且喷且整理。 白: 这篇语言学的味道太浓了,不知道的还以为我是文科生呢。 我:最近看到AI和deep learning顶尖大腕坐而论道,豪气冲天。可见行业之热,大数据带来的机遇和资源。只是一条,说模式匹配(pattern matching)是毒药,我就不明白,这个结论怎么这么快就下了。你得先把 deep learning 弄到 parsing 上成功了可以匹敌模式匹配以后再下断语吧,也让咱们吃了一辈子毒药已经五毒不侵了的人服气一点不是? 再说,模式匹配可以玩的花样多去了,绝不是乔姆斯基当年批判的单层的有限状态一样的东西了(正如在DL兴起之前 敏斯基 批判单层神经网络一样),怎么就能 jump to conclusion? speech 和 image,咱服输投降,不跟你玩,text 咱还要看两年,才知道这 deep 的家伙到底能做到多deep,是不是能超过多层模式匹配的deep? 如果这一仗 deep learning 真地功德圆满,就像当年统计MT 打败了规则MT一样,我就真地洗手不干NLP,乐见其成,回家专门整理家庭录像和老古董诗词校注去了。 白: 伟哥,淡定 洪: 别介!不过你可以让你女儿做 deep learning,万一要败,也败在女儿手下。 Philip: 好主意,不然伟哥难以释怀 我: good idea, 要败,也败在女儿手下。 Xinan: 我觉得做PARSING的人没有把当前的计算能力挖掘出来。人家都GPU用上了,你们能把多核用起来吗? 白: 我可以断定,统计思路向深层NLP发展的必由之路就是RNN。RNN的deep与视觉/图像用的CNN的deep,有本质差别。用RNN学出正则表达式或者更强表达力的东东是自然而然的事情。因为它考虑了一个更根本的东西,时序。做到相当于多层有限状态机的能力,毫不奇怪。如果工程上再做一些贴近实际的适配,会更好。此外,RNN天然可硬件级并行,做出的专用硬件比通用机上软件实现的FSA,性能只会更好。 我: 白老师,这 RNN 是不是姓 DL ? 白: 是这杆大旗下的一支。但是RNN用纯学习的方法获得,尚有难关,但用编译的方法获得,我已经走通了。在编译基础上再做小规模的学习,是make sense的。 我: 那么 training 的 corpus 怎么弄呢? 干脆我来提供 training corpus 要多少给多少。 白: 哈哈。 我: 为的就是:取法乎上仅得其中。 当然也可以想见,取法乎中可得其上,这不是科幻。 因为我自己就做过 “句法自学习”的实验,确实可以通过 self-learning 自我提高的,就是 overhead 太大,反正我没本事让它实用化,虽然理论上的路子在实验中是走通了。 白: 可以认为,之前,统计和浅层是同义词,规则和深层是同义词,但是,随着RNN/LSTM这些东东的出现,这同义词都是老黄历了。所以,复旦的美女教授教导我们说,不要一提统计就断定是浅层。是吧?  黄: 现在做浅层,发不了论文,所以越来越深。 我: 统计也的确在浅层里扎了太久。主要还是以前的低枝果实太多了。 在水牛城的时候,我的搭档牛博士尝试过做统计深层,他用我提供的parsing 做基础,去做 IE 抽取,试图突破关键词技术的质量瓶颈,当时的有限的试验是:(1) 很难, keywords are often hard to beat ;(2) 但不是完全没有希望。 白: 我说的编译算统计还是规则,我自己都糊涂,输入是规则,输出是权值。 雷: rnn是胡子眉毛一把抓吗? 白: 不是。很多是“可解释的”。 我: 白老师的编译 不就是 symbolic rule learning 的一种么?提供规则模板,让统计从数据中去学具体的规则。甚至 Brill 的那套也是这个思路。当然,设计规则模板里面牵涉到的语言学,比单纯加上一些简单的 features ,要深。 白: @wei 不是,我不学规则,只是把规则实现为RNN。 雷: 是不是一个矩阵呢? 白: 差不多。 雷: 内有各种特征,这些特征上上下下的都有? 白: 隐节点和FSA的状态有的一比。输入,输出节点都是可解释的。隐节点的可解释程度不差于有限状态自动机状态的可解释程度。 我: 还是不知道你的训练集从哪里来,如何扩大你的训练集?或者只需要有限的训练集,然后加上大量的没有labelled的数据? 白: 训练是下一步的事情。准确实现规则,regex已经可以了。 我: sparse data 会成为瓶颈么?不过你的起点就是规则的话,这个问题也许不那么严重 黄: @wei 是的,现有带标数据不够,严重不够。 白: 现在想的是,稍微把毛毛虫的身材再撑胖一点,覆盖力再强大一点。但是不允许突破线性复杂度。 @黄 所以不能白手起家学习。先有点啥垫底。 我: @黄 你要多少带标数据都可以给你,你赢了,给我一点儿 credit 就可以了。 阮: 如果能够用无监督的方法,在弱可用数据上学习就好了。 我: 无监督,除了做clustering,谈何容易。 黄: 您老有多少句parsed sentence?@wei 我: 没有上限,不过是让机器跑几天,输出grammar tree 的XML而已。 认真说来,用 我们的自动标注做底子是一个出路,就看能不能通过大数据青出于蓝了,不是不可能。 其实,我们的手工系统,有时候为了照顾 recall 是对 precision 做了牺牲的,我完全可以 cut 掉那些照顾性规则,做一个接近 100% precision 的标注来,漏掉的不算。这样我的已经标注的东西可以超过人工的水平,因为人会打瞌睡,系统不会。譬如我可以自动标注70%,准确率达到 95%,剩下的 30% 再去找人做标注,或者不管它,以后系统用缺省的办法或 smoothing 啥的来对付。这应该是可行的。 黄: 您正式release吧,我们引用您。 白: 伟哥,你这是拿规则系统训练统计系统,整下来,统计还是超不过规则。 我: 所以我说,你需要青出于蓝呀。 以前想过给 LDC , 后来就算了,毕竟还是需要 costs,公司也没看到好处(他们不懂学界,只要人家用了,用得多了,这就是 marketing 啊)。 雷: 现在目下公开的中文标注文本,除了penn的ctb,还有什么? ctb中还是有不少错误的。 黄: @wei 您就辛苦些,包装包装给LDC吧。 雷: ctb也是收费的。 白: 我是深度不学习,而是深度编译。 我: 我是不深度学习(DL),而是深度分析(deep parsing)。 雷: 学习没深度。 我: 咱这帮三教九流不同背景来的,成群口相声了。 雷: @白,编译=置换? 白: 不是置换 雷: 那是什么? 白: 从句法规则映射到权值。让相应的网络在实际跑起来的时候,做的动作恰好是分析。 雷:  再把权值映射到规则? 白: 不了。 雷: 画个图? Nick: @wei 你这篇码出来就叫情到深处仍孤独。 我:yeh, deep, 情到deep仍孤独 whether deep learning or deep parsing 【置顶:立委科学网博客NLP博文一览(定期更新版)】
个人分类: 立委科普|5085 次阅读|0 个评论
(译文)开始主义(Inceptionism):进入神经网络的内部
ywan 2015-9-20 04:17
下面是一篇对谷歌研发团队最新研究成果的博客(Inceptionism: Going Deeper into Neural Networks)的翻译。这项研究的主要目的是观察深度学习神经网络的某一个隐层都提取了哪些特征以及这些特征提取的的是否准确。但出人意料的是他们发现了这里面的创造性过程有可能揭示出人类大脑本身是如何进行创新的。(英文为图像版权信息) Images in this blog post are licensed by Google Inc. under a Creative Commons Attribution 4.0 International License . However, images based on places by MIT Computer Science and AI Laboratory require additional permissions from MIT for use. 人工神经网络技术引发了近期图像分类和语音识别领域的显著发展。但是即便这些都是基于大家普遍了解的数学方法之上的非常有用的工具,我们仍然对为什么某些神经网络模型有用但另外一些没有用知之甚少。下面让我们来看看用一些简单的技术来窥视一下这些神经网络的内部机制。 为了训练一个神经网络,我们通常展示给其以百万计的训练样本,并逐步调整其权重参数,直到它给了我们想要的分类结果。一个神经网络通常包含10-30个堆叠在一起的人工神经元层。每个图像首先由输入层导入,然后传递到下一层,直到到达最后的“输出”层。神经网络根据图像给出的“答案”就来源于最终输出层。 了解神经网络的挑战之一是再图像处理的每一层中都发生了些什么。我们知道经过训练的神经网络的每一层都逐步提取更抽象的图像特征,直到最后一层对图像显示的是什么做个决定。例如,第一层可能只查找图像中的物体边缘或角。中间层通过对前面收集的基本特征的理解来寻找更加整体的轮廓和构件,比如一扇门或者一片树叶。最后几层将这些整体轮廓和构件组合在一起形成对图像的完整解释 – 这些神经元只对非常复杂的对象呈现出激活反应,比如整栋建筑物或者树木。 将神经网络中每一层对图像的特征抽取进行可视化的方法之一是把该网络前后倒置,要求某一层将输入图像,以引发特定的解释。假设你想知道哪种图像会让该网络形成“香蕉”的结果,你可以一开始输入一个充满随机噪声数据的图像,然后逐渐调整该图像直到该神经网络认为它是香蕉(见相关文献 , , , )。这种方法本身效果不太显著,但是当我们加上一个限制,使整个过程中的像素分布与自然生成的图像具有相似的统计规律,比如相邻像素需要高度相关,那么效果就出来了。 所以这里有一个惊喜:经过训练后可以识别不同图像的神经网络也同时积累了可以产生图像的大量信息。看下面再不同类别的更多的例子: 为什么这很重要?好了,我们通过简单地展示给一个神经网络大量的我们希望它们学习的例子来训练它们,希望他们能够从中提取这些例子共性(例如,一把叉子由一个把柄和2-4叉齿组成),同时学会忽略不重要的东西(一个叉可以是任何形状,大小,颜色或放置方向)。但你如何检查一个神经网络是否正确学习到对象的共性特征?通过观察该神经网络对它形成的叉子的概念的展示可以有所帮助。 事实上,这种方法揭示出在某些情况下,我们认为神经网络已经找到的并不完全是我们想让它找到的东西。例如,这是我们设计的一个神经网络经过训练后认为的哑铃的样子: 没错这些图片里都有哑铃,但似乎没有一张图片里哑铃的是不带有一段充满肌肉的臂膀的。在这种情况下,该神经网络并没有完全参透哑铃的共性。也许它从来没有看到过没有一只胳膊抱着的哑铃。可视化可以帮助我们纠正类似的训练失误。 有时我们可以不去精确描述我们希望神经网络突出的特征,而是让神经网络自己做出决定。这时我们可以首先简单地给它任意图片或照片,并让它进行分析。然后,我们选择网络中的一个层,让它强调显示它抽取的特征。神经网络中的每一层抽取的特征的抽象度都不同,所以特征的抽象度取决于我们选取的层面。例如,较低层往往会产生特定笔画或简单装饰状图案,因为这些层面对边和边的方向等特征最为敏感。 Left: Original photo by Zachi Evenor . Right: processed by Günther Noack, Software Engineer Left: Original painting by G eorges Seurat . Right: processed images by Matthew McNaughton, Software Engineer 如果我们选择更高层,由于它们识别图像更复杂特征,这种方式可以使复杂特征甚至某个物体出现在画面中。这次我们仍然给我们的神经网络一张图像。我们要求它:“你如果看到了什么,就多给我一点你看到的!”这就创建了一个反馈循环:如果一朵云看起来有一点点像一只鸟,我们的网络就让使它看起来更像一只鸟。这样一来,重新读入的数据会让它更像一只鸟,直到一只看上去非常逼真的鸟好像凭空出现。 这一结果耐人寻味-即使是一个相对简单的神经网络都可用于对图像进行过渡解释,就像我们小时候喜欢看云并且喜欢将那些随机形状的云解释为我们熟悉的对象。该网络的主要训练对象是动物,所以它自然也容易将遇到的各种形状解释为动物。但是因为特征数据来自高抽象层,所以结果是这些特征的有趣混合。 当然,用这种技术我们可以做比看云更多的事情。我们可以把它适用于任何种类的图像,结果差别很大,因为强调的特征不同。例如,地平线线往往会被塔充满。岩石和树木变成建筑。鸟和昆虫出现在叶子里面.. 这一技术可以让我们了解神经网络中的某一层对图像特征的了解程度。根据我们使用的神经网络的架构,我们将其称为“开始主义 (Inceptionism)”。请参阅我们的开始注意画廊,里面有更多的图像和对它们的处理结果,还有一些很酷的视频动画。 我们必须更进一步:迭代 如果我们将该算法反复在每次输出的结果上进行迭代,并且每次在迭代前做一些放大,我们就可以得到层出不穷的新印象,探索该神经网络所了解的更多的特征。我们甚至可以从随机噪声图像开始该过程,使得最后结果成为某一个神经网络自己的作品,比如下面的图像: Neural net “dreams”— generated purely from random noise, using a network trained on places by MIT Computer Science and AI Laboratory . See our Inceptionism gallery for hi-res versions of the images above and more (Images marked “Places205-GoogLeNet” were made using this network). 这里介绍的技术可以帮助我们理解并视觉化神经网络如何进行复杂的图像分类任务,提高网络架构,并检查一下神经网络在训练期间学会了些什么东西。这也使我们联想到神经网络是否能成为一个艺术家的新工具 – 一种新的混合视觉体验的方式 – 亦或向我们揭示出一点一般性创新过程的根源所在。 原文链接
个人分类: 人工智能|6528 次阅读|0 个评论
人类会葬送在机器人手里吗
duxingren14 2015-7-31 23:35
《终结者》5正在热映,趁这个机会再聊聊这个问题。英明神武的人类一直在思考自身终结的问题,其中一个假设就是人类葬送在机器人手里。《终结者》描绘了一幅关于人类未来的悲惨景象,就是人类将来被机器人大量屠杀,被迫组建人类军队抵御机器人的围剿和绝杀。机器人会不会成为人类的威胁?这个问题自人工智能这个概念诞生之日起,就是社会和学界关注的焦点。特别是近十年来,神经网络重回生机,深度学习在图片识别、语音识别、自然语言处理等任务上的表现接近甚至超过人类,于是又引来了不少人的恐慌和忧虑。这其中包括著名的霍金和比尔盖茨。下面分享一下我个人对这个问题的看法。 我认为机器人并没有那么可怕,机器人要灭绝人类也没有那么容易,原因有三。 机器人变坏需要一定的条件,而且需要一定的过程 《终结者》当中描述的当时地球上最智能的机器人(也就是“天网”)从一开始就是以杀人和灭绝人类为目的,搞得人类防不胜防,这是一种很极端的状态,概率其实非常小。随着人工智能的发展,机器人可以产生与人类类似的动机、目的、意识、注意、情感、逻辑、想象等思维活动,机器人的行为会受这些思维活动的直接引导或者间接干预。机器人意识观念情感态度的改变,会受社会整体观念和大环境的影响,如果某一天产生了新奇的想法,也不一定就是仇恨人类,有可能是仇恨狗,仇恨其它机器人,或者讨厌超声波。即便某个机器人某天产生了仇恨人类的想法,但很小概率是最厉害的机器人。机器人也不会一开始或突然仇恨人类,而是存在一个循序渐进、思想观念渐变的过程,这个道理跟人类变坏是类似的。这个过程或快或慢,但只要有先兆,人类就有足够的时间提前预防。 有坏机器人也有好机器人, 机器之间能形成制衡 未来机器人进行智能决策的院里和人类是类似的,机器人大脑的逻辑结构也不外乎是神经网络,唯一的区别是机器人的生理基础和人类不一样,机器人是由人工材料组成、电供能、没有衰老但有死亡(因为软件过时,没人更新,性能跟不上就可能被淘汰)。人类当中有好人也有坏人,机器人当中也有好机器人和坏机器人,这个道理不难解释。人类当中的坏人给人类带来的威胁,丝毫不亚于机器人的威胁,但从历史经验来看,正义总能战胜邪恶。我觉得这个道理用到机器人也适合,机器人当中的好机器人必然能形成与坏机器人制衡的力量。何况,人类是站在好机器人一边的,人类和机器人取长补短,相互协作,必然能产生比单独机器人更大的威力。 机器人没有那么神通广大 现在机器人许多单项赛事上已经超过了人类,但在通用智能上离人类差距还有很大距离,机器人要么只会下棋,只会识别图片中的物体,只会知识竞赛,只会开车 或者只会在生产线上操作。以后发展的趋势是,机器人会在更多的单项上超过人类,而且在通用智能上越来越接近人类甚至超过人类的平均水平 (要超过人类当中的天才,需要更长时间,要以一敌百,那更不用说)。《终结者》当中的”天网“机器人要变成影片中描述的那样,与全人类为敌,需要过第一关(观念上要极端仇恨人类,没有恻隐之心),第二关(要有这个能耐,能把自己的观念克隆到其它机器,并迅速建立起一支由机器人组成的军队),听起来要比希特勒还绝。“天网”研制之初只是一个防御体系,专长在于防御,要成为“希特勒”,它得首先把自己训练成无敌黑客,这样它才能够入侵其它机器人的大脑来篡改他们的观念,然后它还得成为政治家、军事家,了解人类军事状况、了解人类动机、发现人类军队防御体系的弱点,制定相应的战争策略,指挥军队作战,再然后它还得把自己变成一个工程师,能研制和生产新的更具战斗力的机器人。好像在《终结者》当中,这三个重要的能力,”天网“都在瞬间得到(要知道,这对于人类,只有人类当中的天才花费毕生时间在反复实践中才能练就)。大家对于人工智能的一个误解是,计算机的速度如此快,机器人学新东西、获取新知识也应该是瞬间的。其实不是,机器人学习新事物、获取新技能新知识的过程也是受计算机运算速度、网速甚至能源的限制,运算速度限制了学习速率,网速限制了获取学习素材(训练样本)的速度,神经网络在训练过程中的耗能也是一个重要限制因素。现在谷歌微软百度训练的图像识别神经网络,使用了由数百台甚至数千台的带GPU的高性能计算机集群,在连续运行一周的情况下,才能训练出一个能识图的神经网络。而且,它们使用的训练数据都是人类提前给收集和标注好的(imageNet)。即便以后计算机运算速度越来越快(使用更好的GPU,或者专用芯片,甚至量子计算机),要让机器人完全凭一己之力获取 前面提到的三大技能之一,所需要的时间 、信息资源和功耗可见一斑,要制定机器人在得到这三个能力之前,这些资源都是人类给它提供的。机器人的学习效率、办事效率都受制于硬件条件和信息资源,就算集结全世界的计算机资源和信息资源来“服务”这个机器人,有些能力在纯虚拟的计算场景下也是获取不到的。 这篇文章的主要告诉大家人工智能其实没有那么可怕。但笔者仍然强调,人类还是有必要保持一颗忧患的心。人工智能技术的广泛应用是不可阻挡的潮流,我们在利用它为人类造福的同时,也应该把更多的精力放在如何更好地控制它、如何更好地让人机和谐相处、互敬互爱。
个人分类: 人工智能|3849 次阅读|0 个评论
文本分析总结
热度 1 leolin 2015-7-16 10:57
文本分析又称为观点挖掘,旨在通过对文本特征的选取并量化来实现文本信息表达。传统文本分析是通过对人们的观点、情绪、评论和态度进行有效挖掘的一项技术。主要内容包括文本信息分类、抽取和应用 。文本分析将文本从一个无结构的原始文本转化为结构化的计算机可以识别的矢量信息。通过对文本进行科学的抽象,建立它的数学模型,用以描述和代替文本,使计算机能够通过对这种模型的计算和操作来实现对文本的识别。由于文本是非结构化数据,要想从大量的文本中挖掘有用的信息就必须首先将文本转化为可处理的结构化形式。目前人们通常采用向量空间模型来结构化文本向量,即直接用分词算法和词频统计方法得到的特征项来表示文本向量中的各个维(向量的维度数目将高达几万维,造成“维度灾难”)。这种未经处理的文本矢量不仅给后续工作带来巨大的计算开销,使整个处理过程的效率非常低下,而且会损害分类、聚类算法的精确性,从而使所得到的结果很难令人满意。因此,除了对文本做预处理外,我们还通过卡方检测、词频逆文档和信息增益等方法来降维。之后再利用支持向量机、贝叶斯、最大熵和随机森林等机器学习方法构建合适的分类回归模型。 以上文本分析所用的机器学习策略,被称为浅层学习。针对浅层学习的研究最早由 Pang 等人 在由两个类别组成的电影评论领域进行了实验,结果表明借助于 naiveBayesian 和 SVM 都能取得较好的分类效果。 Bo Pang 等人 对文本分析的发展历史做出归纳,指出对认知系统的研究 可以作为文本分析的先驱。之后文本分析的研究主要集中在文本中隐喻、叙述的解释,文本的观念、情感和与之相关的领域实践。浅层学习在实际建模的过程中使用到的函数简单,计算方法容易实现,计算量小,在有限的样本和计算单元的条件下导致其对复杂函数的表达能力受到限制,同时对于复杂的分类问题的泛化能力也在一定程度上受到制约。 相对浅层机器学习, Hinton 等 提出了深度学习( Deep Learning )。深度学习概念是来自于对人工神经网络的研究(多层感知器( MLP , MultilayerPerceptron )就是一种前馈人工神经网络模型,属于一种深度学习结构 ) 。分布式的特征表示方式是深度学习相较于浅层学习的一个重大进步。深度学习通过将底层特征进行组合,形成更加抽象的高层特征形式,并在此基础上获得样本数据的分布式表示 。这些分布式特征通过深度学习神经网络结构中的多个隐层结构逐层计算获得。然而,深度学习的网络结构因其涉及到多个非线性的处理单元层而导致它的非凸目标的代价函数计算过程中普遍存在着局部最小的问题,优化的过程中极有可能在找到全局最小值之前因局部最小值的出现而终止了优化的计算,这也正是深度学习在训练上比较困难的主要原因。尽管深度学习有着这样的困难,但深度学习具有多层结构,且这些结构之间均是非线性映射的,这使得深度学习可以很好的完成复杂函数的逼近,这也是深度学习能够成功应用的优势之一,让很多研究者趋之若鹜,让深度学习成为当前机器学习研究的热点课题。 国内外关于文本分析研究现状如下: 目前,文本分析研究的方法可以分为采取基于规则的方法和基于统计学习的方法。就前者而言,大部分的工作集中于分析规则的制定,这部分工作需要消耗大量的人力和时间,而且当目标样本中的语言现象较多或者较为复杂的时候,规则的制定就是一项非常艰难的任务。而且这种方法与研究目标紧密关联,导致制定的规则的迁移性非常差。这种方法往往利用情感词典、领域词典以及文本中的组合评价单元来获取最终的文本情感极性、评价词抽取和评价词语判别 。目前,多数研究文本分析的学者采用基于统计学习的方法学习目标样本的特征,并根据特征的分布对文本做出类别的判断。文本分析根据研究的任务可划分为文本信息分类和文本信息抽取两类。文本信息分类又可以依据划分的类别分为二元分类,即褒贬分类,和多元分类,如褒义,贬义和中性三类。根据研究的粒度可划分为篇章级分析、段落级分析、句子级分析以及属性级分析四类(已有文献中大多数的研究成果都是篇章级或者是句子级的文本分析研究)。基于统计学习的方法,大致可以归纳为三类:有监督方法,无监督方法以及半监督方法。其中有监督学习方法以 pang 在 2002 年的文献 为代表,学习方法有朴素贝叶斯、支持向量机和最大熵。 文本分析除了情感分析外,还有情感文摘、实体抽取、新闻文摘和文本分类等其他运用。实质上,这些运用都是使用不同的文本特征提取方法,使用机器学习或者规则作为工具的分类任务。以观点持有者实体抽取为例:有学者 将句子分词序列化后借助于命名实体识别规则来获取观点持有者,也有学者 曾尝试借助语义角色规则标注来完成观点持有者的抽取。 还有学者将观点持有者的抽取定义为分类任务,这种方法的关键在于分类器和特征的选取。如 Choi 将其看作 一个序列标注问题 , 并使用 CRF (conditional random field) 模型融合各种特征来完成观点持有者的抽取。相似地, Kim 将所有名词短语都视为候选观点持有者,使用 ME(maximumentropy) 模型来进行计算。这些方法较为依赖自然语言处理的基础技术,语言覆盖低和领域适应性差。 随着技术的发展和科技的进步,人们对分类与回归任务的要求也随之增高。就在此时,深度学习兴起。深度学习的提出者 Hinton 曾经非正式的指出的:“机器学习的第一次浪潮是浅层学习,深度学习则是机器学习的第二次发展浪潮”。目前, Hinton 的观点越来越被人们所接受。人们将焦点转移到深度学习的研究上,掀起了深度学习的研究热潮。 早期的深度学习应用于文本分析围绕语言模型(语言模型即判别一句话是否符合人类语法要求和使用习惯的模型)进行。用神经网络训练语言模型的思想最早由百度 IDL 的徐伟 于 2000 提出,提出一种用神经网络构建二元语言模型的方法。 Bengio 等 在 2003 提出三层的神经网络来构建语言模型 , 同样也是 n-gram 模型 , 根据这已知的 ( n−1 )个词,预测下一个词 。整个模型中使用的是一套唯一的词向量,并使用随机梯度下降法把这个优化模型,得到的语言模型自带平滑,无需传统 n-gram 模型中那些复杂的平滑算法。 2006 年, GeoffreyHinton 在《 Science 》发表了文献,指出两个重要观点:其一,多隐层的人工神经网络具备着优异的学习特征的能力,它学习到的特征对样本数据有着更加本质的刻画,使其更加有利于图像可视化或者文本等的分类任务;其二,深度神经网络在训练的时候存在一定的难度,可通过“逐层初始化”( layer-wise pre-training )的方法有效克服。 Hinton 在文章采用无监督学习实现逐层初始化工作 。 Hinton 在文献 中提到的深度学习方法是机器学习研究的一个新的领域,它的动机是建立、模拟人脑的分析学习的神经网络,模仿人脑的机制进行数据的解释,比如声音,图像和文本。深度学习方法的自编码网络是无监督的一种,在文章中提出了使用快速学习的办法,主要分为两步:第一步,每次训练其中一层网络,第二步是调优,保证原始的表示 x 向上产生的高级表示 r 和向下产生的表示 x ’尽可能的保持一致。这一思想在本文提出的基于深度学习的方法处理文本分析问题时依然被采纳。 除此之外, Lecun 等人在文献 中采用的是卷积神经网络( CNNs , Convolutional Neural Networks ),这是第一个真正具有多层结构的学习算法,它使用空间的相对关系来减少参数数目进而提高 BP ( BackPropagation )训练性能。深度学习研究中还有许多的变形结构,比如文献 中采用的去噪自动编码器( DenoisingAutoencoders ),文献 中使用的 DCN 方法,文献 中提出的 sum-product 方法等。 目前,深度学习的方法在词编码( Word Embedding )上取得了卓越的成效。词编码不同于传统词向量。传统词向量使用的每个维度表示特定的词,出现为 1 ,否则为 0 ,词编码的每个维度表示某种语义信息,从大量未标注的普通文本数据中无监督地学习出词向量。目前词向量研究最经典的文献为 CW 2011 、 MH 2008 和 Mikolov 2012 。 CW 的工作而在于用这份词向量去完成 NLP 里面的各种任务,比如词性标注、命名实体识别、短语识别和语义角色标注等。直接去尝试近似 t 个词的概率 P(w1,w2,…,wt) ,求窗口连续 n 个词的打分 f , f 越高的说明这句话越正常;打分低的说明这句话不是太合理;如果是随机把几个词堆积在一起将会是负分。打分只有相对高低之分,并没有概率的特性。有了这个对 f 的假设, CW 就直接使用 pair-wise 的方法训练词向量。他们在实验中取窗口大小 n=11 ,字典大小 |V|=130000 ,在维基百科英文语料和路透社语料中一共训练了 7 周,终于得到了所需要的词向量。 MH 的工作提出了一种层级的思想替换了 Bengio 的方法中最后隐藏层到输出层最花时间的矩阵乘法,在保证效果的基础上,同时也提升了速度, Mikolov 在 Bengio 的研究基础上,使用循环神经网络( Recurrent neural network )降低参数个数,并在准确率和算法效率上进行各种尝试。循环神经网络与前面各方法中用到的前馈网络在结构上有比较大的差别,但是原理还是基于多层神经网络模型。 目前深度学习用到文本分析的方法中可以归纳为两种: 1. 训练词向量直接用于神经网络模型的输入层。如 CW 的 SENNA 系统中,将训练好的词向量作为输入,用前馈网络和卷积网络完成了词性标注、语义角色标注等一系列任务。再如 Socher 将词向量作为输入,用递归神经网络完成了句法分析、情感分析等多项任务。 2. 作为辅助特征扩充现有模型。如 Turian 将词向量作为额外的特征加入到接近 state of the art 的方法中,进一步提高了命名实体识别和短语识别的效果。 国内使用词编码或者深度学习的研究学者并不多,但是正处于上升阶段,其中以贺宇和梁军等人为代表。贺宇等人 使用自编码算法,研究中文评论具有是否具有解释性的二分类问题 。梁军 使用递归神经网络对微博情感进行划分。两人工作都具有一定的创新性。 参考文献: 赵妍妍 , 秦兵 , 刘挺 . 文本情感分析 . 软件学报 ,2010,08:1834-1848. Pang B, Lee L,Vaithyanathan S. Thumbs up?: sentiment classification using machine learningtechniques //Proceedings of the ACL-02 conference on Empirical methods innatural language processing-Volume 10. Association for ComputationalLinguistics, 2002: 79-86. Pang B, Lee L.Opinion mining and sentiment analysis . Foundations and trends in informationretrieval, 2008, 2(1-2): 1-135. Carbonell J G.Subjective Understanding: Computer Models of Belief Systems . YALE UNIV NEWHAVEN CONN DEPT OF COMPUTER SCIENCE, 1979. Wilks Y, Bien J.Beliefs, Points of View, and Multiple Environments* . Cognitive Science,1983, 7(2): 95-119. Carbonell J G.Subjective Understanding: Computer Models of Belief Systems . YALE UNIV NEWHAVEN CONN DEPT OF COMPUTER SCIENCE, 1979. Esuli A, SebastianiF. Sentiwordnet: A publicly available lexical resource for opinionmining //Proceedings of LREC. 2006, 6: 417-422. Turney P. Mining theweb for synonyms: PMI-IR versus LSA on TOEFL . 2001. Riloff E, Wiebe J,Phillips W. Exploiting subjectivity classification to improve informationextraction //Proceedings of the National Conference On ArtificialIntelligence. Menlo Park, CA; Cambridge, MA; London; AAAI Press; MIT Press;1999, 2005, 20(3): 1106. Bakliwal A, Arora P,Madhappan S, et al. Mining sentiments from tweets . Proceedings of the WASSA,2012, 12. Kamps J, Marx M J,Mokken R J, et al. Using wordnet to measure semantic orientations of adjectives .2004. Dave K, Lawrence S,Pennock D M. Mining the peanut gallery: Opinion extraction and semanticclassification of product reviews //Proceedings of the 12th internationalconference on World Wide Web. ACM, 2003: 519-528. Golder S A, Macy M W.Diurnal and seasonal mood vary with work, sleep, and daylength across diversecultures . Science, 2011, 333(6051): 1878-1881. Kim SM, Hovy E.Determining the sentiment of opinions. In: Nirenburg S, ed. Proc. of the Coling2004. Morristown: ACL, 2004. 1367−1373. Kim SM, Hovy E.Extracting opinions, opinion holders, and topics expressed in online news mediatext. In: Dale R, Paris C, eds. Proc. of the ACL Workshop on Sentiment andSubjectivity in Text. 2006. 1−8. Choi Y, Cardie C,Riloff E. Identifying sources of opinions with conditional random fields andextraction patterns. In: Mooney RJ, ed. Proc. of the HLT/EMNLP 2005.Morristown: ACL, 2005. 355−362. Kim SM, Hovy E.Identifying and analyzing judgment opinions. In: Bilmes J, et al., eds. Proc.of the Joint Human Language Technology/North American Chapter of the ACL Conf.(HLT-NAACL). Morristown: ACL, 2006. 200−207. Xu W, Rudnicky A I.Can artificial neural networks learn language models? . 2000.] Bengio Y, DucharmeR, Vincent P, et al. A neural probabilistic language model . The Journal ofMachine Learning Research, 2003, 3: 1137-1155. Hinton G. E.,Salakhutdinov R. R. Reducing the Dimensionality of Data withNeural Networks . Science, Vol. 313. No. 5786, 2006, 28(7): 504-507 . Hinton G. E.,Osindero S. A fast learning algorithm for deep belief nets .NeuralComputation, 18, 2006: 1527-1554 Joachims T.Transductive inference for text classification using support vectormachines . Proceedings of the 16th International Conference on MachineLearning. SanFrancisco, CA, USA: Morgan Kaufmann, 1999: 200-209 . Blum A, Chawla S.Learning from labeled and unlabeled data using graphmincuts . Proceedings ofthe 18th International Conference on Machine Learning. San Francisco, CA, USA:Morgan Kaufmann, 2001: 19-26 . Szummer M, JaakkolaT. Partially labeled classification with Markov random walks . Advances inNeural Information Processing Systems 14: Proceedings of the 2001 Conference.Cambridge, MA, USA: MIT Press, 2001: 945-952 . Chapelle O, Weston J,Schoelkopf B. Cluster kernels for semi-supervised learning . Advances inNeural Information Processing Systems 15: Proceedings of the 2002 Conference.Cambridge, MA, USA: MIT Press, 2002:585-592 . Ronan Collobert,Jason Weston, Léon Bottou, Michael Karlen, Koray Kavukcuoglu and Pavel Kuksa.Natural Language Processing (Almost) fromScratch. Journal of Machine Learning Research (JMLR), 12:2493-2537,2011. Andriy Mnih Geoffrey Hinton. A scalable hierarchical distributed language model. TheConference on Neural Information Processing Systems (NIPS) (pp. 1081–1088).2008. Mikolov Tomáš.Statistical Language Models based on Neural Networks. PhD thesis, BrnoUniversity of Technology. 2012. Eric Huang, RichardSocher, Christopher Manning and Andrew Ng. Improving word representations via globalcontext and multiple word prototypes.Proceedings of the 50th Annual Meeting of the Association forComputational Linguistics: Long Papers-Volume 1. 2012. Turian Joseph, LevRatinov, and Yoshua Bengio. Wordrepresentations: a simple and general method for semi-supervised learning.Proceedings of the 48th Annual Meeting of the Association for ComputationalLinguistics (ACL). 2010. 贺宇 , 潘达 , 付国宏 . 基于自动编码特征的汉语解释性意见句识别 . 北京大学学报 ( 自然科学版 ), 2015, 2: 006. 梁军 , 柴玉梅 , 原慧斌 , 等 . 基于深度学习的微博情感分析 . 中文信息学报 , 2014, 28(5): 155-161.
5905 次阅读|2 个评论
基于cuda的深度学习资料记录
lorrin 2015-3-17 15:23
1. 安装cuda+caffe http://www.cnblogs.com/platero/p/3993877.html http://blog.csdn.net/u013476464/article/details/38071075 2. 配置python+QT+eric开发平台 http://blog.csdn.net/idber/article/details/40076821 3. theano学习 1)http://www.cnblogs.com/xueliangliu/archive/2013/04/03/2997437.html
1791 次阅读|0 个评论
值得好好看的深度学习的网页
lorrin 2015-2-25 11:24
一个值得好好看的深度学习的网页 http://www.36dsj.com/archives/19285 今天第一次接触到深度学习,这个专题网页可以快速知晓什么是深度学习。 http://blog.csdn.net/zouxy09/article/details/8775360, 翻译和总结的相当好。 Stanford 教授 Andrew Ng的机器学习教程链接(中英文版): http://deeplearning.stanford.edu/wiki/index.php/UFLDL http://ufldl.stanford.edu/tutorial/ 总结很好的学习blog http://www.cnblogs.com/tornadomeet/tag/Deep%20Learning/ 机器学习干货网 http://www.52ml.net/categories/DeepLearning
1906 次阅读|0 个评论
深度学习火了: 最大汇集剽窃?
热度 5 wengjuyang 2015-1-22 11:51
深度学习是指一种人工神经网络的学习。这种神经网络由多个非线性处理层连成一个级联结构。深度学习近来引起了工业界的广泛兴趣 , 如谷歌、微软、 IBM 、三星、百度等。我汇报一个称为生长认知网 (Cresceptron) 的深度学习网的关键机制——现在所熟知的最大汇集 (max-pooling) ——并向读者请教是不是 HMAX 网剽窃了生长认知网。在这篇报道中我并不声称这就是剽窃。 2014 年8月,《国际新闻界》期刊发布了一则消息, 称北京大学博士研究生于艳茹女士在此期刊的2013 年第7期发表了一篇论文。此论文剽窃了妮娜·吉尔波特在《十八世纪研究》期刊的1984 年第4期上发表了的另一篇论文。《国际新闻界》撤销了这篇剽窃论文, 并对作者作了惩罚。这则消息被广为报道,包括了BBC 中文网站。于艳茹是一个研究生, 但以下牵涉到一个资深研究员。 梅里厄姆 -韦伯斯特在线词典为剽窃词条的定义为:“偷窃或冒充(其他人的思想或语句) 当作自己的;使用(其他人的成果) 而没有指出来源。”  1991 年之前,深度网被用于识别单个的两维手写数字上。那时的三维物体识别还是使用基于三维模型的方法——找出两维图像与一个手工建造了的三维物体模型之间的匹配。 翁巨扬等人假设人脑内没有任何整块的三维物体模型。他们于 1992 年发表了生长认知网(Cresceptron) 。其目的是从自然的和混杂的两维图像中检测和识别学习过的三维物体并从这些两维图像中分割出识别了的物体。机器学习了的物体的实验例子 , 包括了人脸、人体、步行道、车辆、狗、消火栓、交通标志牌、电话机、椅子、桌面计算机。自然和混杂的实验场景 , 包括了电视节目场景、大学校园户外场景、室内办公室场景。生长认知网内的表示是由很多物体共享的分布式特征检测器的反映。 生长认知网是全发育性的 , 即它通过经验来增量地生长和适应。它由一个级联的多个非线性处理模块组成。每个模块由几个层组成。每个模块的前层由一或二层被称为模板匹配层的处理层构成。每个模板匹配层进行卷积运算——每个卷积核从一个位置学了然后用到所有其它位置上去,这样这个特征可以被用到其它所有位置上去检测。所以, 卷积是为了层内的位移不变性。 但是 , 一个主要的挑战是训练图像的数目是有限的。为了识别相似但生长认知网没有观察到过的图像,它必须宽恕物体图像的变形。 生长认知网有一个宽恕物体图像变形的关键机理是在每个模块里用 2x2 到1 的方法减少结点,用一个取最大值的运算。这相当于在每个2x2 结点组里对4 个发放率做了一个逻辑或。在1993 年发表的生长认知网论文 给出了执行最大汇集的层次化最大运算的数学表达式。 现在这被称为最大汇集。譬如 , 查看于尔根·史密贺伯(JuergenSchmidhuber) 关于深度学习的一篇综述文章 。根据这篇综述文章,生长认知网是第一次用了最大汇集。“最大汇集广泛地应用在今天的深度前馈神经网络” 。 譬如, 图像网(ImageNet) LSVRC-2010 和ILSVRC-2012 竞赛的第一名使用了由先卷积后最大汇集的模块而组成的级联结构 。 1994 年10月19 日, 应托马索·泼吉奥教授的友善的邀请,翁巨扬在在麻省理工学院的生物和计算学习中心给了一个演讲。在麻省理工学院的一个研讨会会场内, 几乎座无虚席, 他作了题为“视觉学习的框架”的演讲, 介绍了生长认知网。翁巨扬说他很感激这次旅行, 其机票和膳宿是由接待方支付的。 翁巨扬对我解释说 , 这个层次最大汇集结构至少有四个优点:(1) 层次地宽恕局部的位置扭曲, (2) 增加感受野的大小的同时不一定要增加卷积核的大小,因为大卷积核在计算上很昂贵, (3) 减少特征检测的密度来宽恕特征模板匹配的误差,(4) 允许局部漏失(譬如因遮挡而造成的部件的缺失), 由于4 个数的最大值与其它三个较小的值无关。 尽管如此 , 最大汇集不保证深度卷积网的输出不随着物体在像素平面上的平移而变。这一点在生长认知网的全细节期刊论文 内有解释。与此同时, 深度级联结构还是根本性地弱——因为它没有任何机制来像人脑能做的那样为训练集和测试集自动地进行图形-背景分割。而更加新的发育网(DN) 有这样的机能 ,是通过增量和自主的发育途径实现的。 在翁巨扬的 1994 年10 月19日在麻省理工学院的访问后大约五年后, 马克思米兰·里森贺伯和托马索·泼吉奥在《自然神经科学》发表了一篇论文 。这篇投稿1999 年6 月17日收到。它的摘要写道:“令人惊奇地, 量化模型几乎还没有... 我们叙述一个新的层次模型... 这个模型是基于类似最大的操作。”它的图2 的图解引用了福岛邦彦 , 但全文没有为这个模型的关键性最大运算引用过生长认知网或它的最大汇集方法。 福岛邦彦 手选了特别层来降低位置精度 ,但是没有用最大汇集的两个关键机理:(1)最大化运算(看 的等式(4)),和(2)在整个网络里用机算机自动地逐级降低位置精度。 后来托马索·泼吉奥把他们自己的模型称作 HMAX 但 还是没有引用生长认知网。 为了调查是不是思想剽窃 ,譬如 ,比较 的124 页的左列显示公式, 的公式(17), 的1024 页左列的最后一行里的公式, 和 的公式(3)。也比较 的图10(c) 和 的图2 中的虚线箭头 。 由于引入一些关键系统结构的机制 , 如最大汇集, 和大规模平行计算机越来越实用,如显卡平行计算, 深度学习网络在一些模式识别任务的很多测试中展示了持续增加的性能,日益吸引了工业界的兴趣, 如谷歌、微软、IBM、三星、百度等。 自然出版集团的关于剽窃的政策文件规定 :“关于已经出版了的结果的讨论: 当讨论其他人的出版了的结果时, 作者必须恰当地描述这些先前结果的贡献。知识的贡献和技术开发两者都必须相应承认和妥当地引用。” 例如 , 有一篇文章 的一个段落改述了一个贡献而没有引用此贡献的出处被两个独立的委员会, 审查委员会和调查委员会,判定为剽窃 . 为了此问题翁巨扬曾尊重地并私下地几次和托马索·泼吉奥教授联系但他没有回答。翁巨扬说 :“希望你提起这个问题不会激怒托马索·泼吉奥教授。他是我尊敬的老师之一,因为他的早期文章在我1983 年至1988 年期间当研究生时向我介绍了处于早期的计算脑科学。” 1997 年托马索·泼吉奥教授光荣地成为一名美国艺术和科学院院士。 (此文作者: Juan L. Castro-Garcia ) 参考文献 K. 福岛(Fukushima).“Neocognitron: 一个自组织的神经网络模型为了一个不受位置平移影响的模式识别的机能,”生物控制论,36,193-202,1980. A. 科里兹夫斯基(Krizhevsky),I. 苏兹凯夫(Sutskever), and G.辛顿(Hinton).“用深度卷积网络归类图像网,”在神经信息处理系统的进展25,1106–1114, 2012 年. Z. 麦克米林(McMillin).“密西根州立大学一个教授承认在2008年的一篇文章内剽窃,”州消息报, 2010 年4 月6日. M. 里森贺伯(Riesenhuber),T.泼吉奥(Poogio). “脑皮层内物体识别的层次模型,”自然神经科学, 2(11):1019–1025, 1999. J. 史密贺伯(Schmidhuber).“在神经网络里的深度学习: 一个综述,”技术报告IDSIA-03-14, 瑞士人工智能实验室IDSIA, 瑞士, 马诺-路伽诺(Manno-Lugano),2014 年10 月8 日. T. 希瑞(Serre),L. 沃尔夫(Wolf),S.拜尔斯基(Bileschi),M. 瑞森哈勃(Riesenhuber),T. 泼吉奥(Poggio). “似皮层机制的鲁棒的对象识别,”IEEE 模式分析与机器智能学报,29(3),411-426 2007. M. B. 思狄克棱(Sticklen). “撤回: 生物燃料生产的植物基因工程: 面向負擔得起的纤维素乙醇,”自然综述基因学, 11(308), 2008. J. 翁(Weng). 自然和人工智能: 计算脑心智导论 , BMI 出版社, 密西根, 欧科模斯, 2012. J. 翁(Weng)N. 阿乎嘉(Ahuja), T. S. 黄(Juang).“Cresceptron: 一个自组织的神经网络适应性地生长,” 国际联合神经网络会议录(IJCNN), 美国, 马里兰州, 巴尔的摩市, 第1卷(576-581),1992 年6 月. J. 翁(Weng)N.阿乎嘉(Ahuja), T. S. 黄(Juang). “学习从两维图像识别和分割三维物体,”IEEE 第4 届国际计算机视觉会议录(ICCV)”121-128, 1993 年5 月. J. 翁(Weng)N.阿乎嘉(Ahuja), T. S. 黄(Juang). “用生长认知网学习识别和分割,”国际计算机视觉期刊(IJCV),25(2),109-143,1997 年11 月. J. 翁(Weng),M. D. 卢契(Luciw), “脑启发的概念网: 从混杂的场景中学习概念,”IEEE 智能系统杂志,29(6), 14-22, 2014 年. Deep Learning is Hot: Max-Pooling Plagiarism? By Juan L. Castro-Garcia Deep learning is a term that describes learning by an artificial neural network that consists of acascade of nonlinear processing layers. Deep learning networks have recently attracted great interest from industries, such as Google, Microsoft, IBM,Samsung, and Baidu. I report a key architecture mechanism of deep learning network Cresceptron — well-known now as max-pooling — and ask the readerwhether HMAX plagiarized Cresceptron. In this report I do not claim that this is a plagiarism. August 2014, the Chinese Journal of Journalism Communication, announced that Ms. Yu,Yanru, a PhD student at Peking University, published an article in the journal,issue 7, 2013, that plagiarized from another article by Nina R. Gelbertpublished in the Eighteen-Century Studies journal, issue 4, 1984. The plagiarizing article was withdrawn from the journal and the author was disciplined by the journal. This announcement was widely reported, including BBC China online. Ms. Yu, Yanru was agraduate student, but the following involves a senior researcher. The word “plagiarize”was defined in the Merriam-Webster online dictionary: “to steal and pass off(the ideas or words of another) as one’s own; use (another’s production) withoutcrediting the source.” Until 1991, deep neuralnetworks were used for recognizing isolated two-dimensional (2-D) hand-writtendigits. Three dimensional (3-D) object recognition until then used 3-D model-based approaches— matching 2-D images with a handcrafted 3-D object model. Juyang Weng et al. assumed that inside a human brain a monolithic 3-D object model does not exist, although one may subjectively feel otherwise. They published Cresceptron in 1992 fordetecting and recognizing learned 3-D objects from natural and cluttered 2-D images and for segmenting the recognized objects from the 2-D images. Experimental examples of the learned objects , included human faces,human bodies, walkways, cars, dogs, fire hydrants, traffic signs, telephones, chairs, and desktop computers. Experimental examples of the natural andcluttered scenes , included TV program scenes, university campus outdoors, and indoor offices. Representations in Cresceptron are responses of distributed feature detectors that share among many objects. A Cresceptron is fully developmental in the sense that it incrementally grows and adapts through experience. It consists of a cascade of nonlinear processing modules where each module consists of a number of layers. Early layers in each module consist ofone or two pattern matching layers where each layer performs convolution — each convolution kernel learned at one image location is applied to all otherlocations so that the same feature can be used to detect at all other locations. Therefore, the convolution is for within-layer shift-invariance. However, a key challenge is that the number of training samples is limited. In order to recognize similar object views that Cresceptron has not observed, it must tolerate deformation in object views. The key mechanism in Cresceptron to tolerate deformation is the (2x2) to 1 reduction of nodes in every module using a maximization operation, to implement a Logic-OR for the firing rates of each group of (2x2) neurons. The 1993 publication of Cresceptron gave the mathematical expression forhierarchical max operations in the max-pooling. This is now commonly called max-pooling, see, e.g., a deeplearning review by Juergen Schmidhuber . According to the review, Cresceptronwas the first to use max-pooling. “Max-pooling is widely used in today’s deep feedforward neural networks” . For example, the winner of ImageNet LSVRC-2010 and ILSVRC-2012 contests used an architecture of a cascade ofmodules in which convolution layer(s) are followed by a max-pooling layer . Kindly invited by Prof. Tomaso Poggio, Weng gave a talk atthe Center for Biological and Computational Learning, Massachusetts Instituteof Technology, Cambridge, Massachusetts (MIT), Oct. 19, 1994. In a seminar roomat MIT that was an almost full audience, he presented Cresceptron under thetitle “Frameworks for Visual Learning.” Weng said that he greatly appreciatedthe visit with the host paying for the air ticket and accommodations. Weng explained to me that the hierarchical max-pooling hasat least four advantages: (1) hierarchical tolerance of local location deformation, (2) increasing the size of receptive fields without necessarily increasing the size of the convolution kernels because large convolution kernels are computationally veryexpensive, (3) reduction of feature detection density to tolerate feature-template matching errors, and (4) permit local dropouts (absence ofcomponents due to, e.g., occlusions) because the maximum of the four values is independent with the three smaller values. However, hierarchical max-pooling does not guarantee that theoutput of the deep convolutional networks is invariant to object shifts in the pixel plane, as explained in the fully detailed 1997 journal publication of Cresceptron . Furthermore, the deep cascade architecture is still fundamentally weak — regardless the size of training set and the power of computers— because it does not have any mechanism to do, like what a brain can,figure-ground automatic segmentation on training sets and testing sets. Thenewer Developmental Network (DN) architecture has such a mechanism , through autonomous and incremental development. About five years after Weng’s MIT visit Oct. 19, 1994,Maximilian Riesenhuber and Tomaso Poggio published a paper in NatureNeuroscience that was received June 17, 1999. Its abstract reads “Surprisingly,little quantitative modeling has been done ... We describe a new hierarchicalmodel ... The model is based on a MAX-like operation ... ” Its Fig. 2 captioncited Kunihiko Fukushima but the entire paper did not cite Cresceptron or its max-pooling method for the key max operation in their model. Fukushima handpicked particular layers to reduce thelocation precision, but he did not use the two major mechanisms of max-pooling:(1) maximization operation (see Eq. (4) in ) and (2) computer automatic reduction of the location resolution through every level of the network. Later, Tomaso Poggio called their model HMAX but still didnot cite Cresceptron. To investigate whether idea plagiarism took place, forexample, compare the left-column display equation on page 124 of , Eq. (17)of , the last equation in the last line of the left column on page 1024 of , and Eq. (3) of .Also compare Fig. 10(c) of and the dashed arrows in Fig. 2 of . Due to the introduction of some key architecture mechanismslike max-pooling and the practicality of massively parallel computers such as GPUs, deep learning networks have shown increasing performance in many tests for some pattern recognition tasks and have attracted increasing interest from industries, suchas Google, Microsoft, IBM, Samsung, and Baidu. The Nature Publishing Group’s policy document on plagiarism reads:“Discussion of published work: When discussing the published work of others,authors must properly describe the contribution of the earlier work. Both intellectual contributions and technical developments must be acknowledged assuch and appropriately cited.” For example, a paragraph within a paper that paraphraseda contribution without attribution to the contribution source was found by two independent committees, inquiry and investigative, to be a plagiarism . Respectfully and privately, Weng contacted Prof. Poggio a few times with regard to this issue but he did not reply. Weng said: “I wish that your raising this issue does not upset Prof. Tommy Poggio. He is one of my respected teachers because his early papers introduced me to computational neuroscience at its early stage when I was a graduate student 1983-1988.” 1997 Prof. Poggio was elected as a fellow of the American Academy of Arts and Sciences (AAAS). REFERENCES K. Fukushima. Neocognitron: A self-organizing neuralnetwork model for a mechanism of pattern recognition unaffected by shift inposition. Biological Cybernetics, 36:193–202, 1980. A. Krizhevsky, I. Sutskever, and G. Hinton. Imagenet classification with deep convolutional neural networks. In Advances in NeuralInformation Processing Systems 25, pages 1106–1114, 2012. Z. McMillin. MSU professor admits to plagiarism in 2008 article. The State News , April 6,2010. M. Riesenhuber and T. Poggio. Hierarchical models of object recognition in cortex. Nature Neuroscience , 2(11):1019–1025, 1999. J. Schmidhuber. Deep learning in neural networks: Anoverview. Technical Report IDSIA-03-14, The Swiss AI Lab IDSIA, Manno-Lugano,Switzerland, October 8 2014. T. Serre, L. Wolf, S. Bileschi, M. Riesenhuber, and T.Poggio. Robust object recognition with cortex-like mechanisms. IEEE Trans. Pattern Analysis and Machine Intelligence, 29(3):411–426, 2007. J. Weng. Natural and Artificial Intelligence: Introduction to Computational Brain-Mind . BMI Press, Okemos, Michigan, 2012. J. Weng, N. Ahuja, and T. S. Huang. Cresceptron: A self-organizing neural network which grows adaptively. In Proc. Int’l Joint Conference on Neural Networks, volume 1, pages 576–581, Baltimore, Maryland,June 1992. J. Weng, N. Ahuja, and T. S. Huang. Learning recognitionand segmentation of 3-D objects from 2-D images. In Proc. IEEE 4th Int’l Conf.Computer Vision, pages 121–128, May 1993. J. Weng, N. Ahuja, and T. S. Huang. Learning recognition and segmentation using the Cresceptron. International Journal of Computer Vision , 25(2):109–143, Nov. 1997. J. Weng and M. D. Luciw. Brain-inspired conceptnetworks: Learning concepts from cluttered scenes. IEEE Intelligent Systems Magazine , 29(6):14–22, 2014.
个人分类: 生活科学|10164 次阅读|22 个评论
Deep Learning 深度学习 学习教程网站集锦
fendi 2014-12-20 12:50
学习笔记: 深度学习是机器学习的突破 2006-2007年,加拿大多伦多大学教授、 机器学习 领域的泰斗Geoffrey Hinton和他的学生RuslanSalakhutdinov在《科学》以及在Neural computation 和 NIPS上发表了4篇文章,这些文章有两个主要观点: 1)多隐层的人工神经网络具有优异的特征学习能力,学习得到的特征对数据有更本质的刻画,从而有利于可视化或分类; 2)深度神经网络在训练上的难度,可以通过“逐层初始化”(layer-wise pre-training)来有效克服,在这篇文章中,逐层初始化是通过无监督学习实现的。 在其后2012年GOOGLE BRAIN应用深度学习实现了对’猫‘特征的无监督学习后,正式 开启了深度学习在学术界和工业界的浪潮。 深度学习是 机器学习 研究中的一个新的领域,其动机在于建立、模拟人脑进行分析学习的神经网络,它模仿人脑的机制来解释数据,例如图像,声音和文本。深度学习是无监督学习的一种。 深度 学习 的概念源于人工神经网络的研究。含多隐层的多层感知器就是一种深度学习结构。深度学习通过组合低层特征形成更加抽象的高层表示属性类别或特征,以发现数据的 分布式 特征表示。 当前多数分类、回归等学习方法为浅层结构算法,其局限性在于有限样本和计算单元情况下对复杂函数的表示能力有限,针对复杂分类问题其泛化能力受到一定制约。深度学习可通过学习一种深层非线性网络结构,实现复杂函数逼近,表征输入数据 分布式 表示,并展现了强大的从少数样本集中学习数据集本质特征的能力。(多层的好处是可以用较少的参数表示复杂的函数,比 如下图中的右图,即将复杂函数分解成多层函数递进表示) 深度学习的实质,是通过构建具有很多隐层的机器学习模型和海量的训练数据,来学习更有用的特征,从而最终提升分类或预测的准确性。因此,“深度 模型 ”是手段,“特征学习”是目的。区别于传统的浅层学习,深度学习的不同在于:1)强调了模型结构的深度,通常有5层、6层,甚至10多层的隐层节点;2)明确突出了特征学习的重要性,也就是说,通过逐层特征变换,将 样本 在原空间的特征表示变换到一个新特征空间,从而使分类或预测更加容易。与人工规则构造特征的方法相比,利用大数据来 学习 特征,更能够刻画数据的丰富内在信息。 如下是深度学习的非常好的一批教程网站 ufldl的2个教程(入门绝对的好教程,Ng的,逻辑清晰有练习):一 ufldl的2个教程(入门绝对的好教程,Ng的,逻辑清晰有练习):二 Bengio团队的deep learning教程,用的theano库,主要是rbm系列,搞python的可以参考 deeplearning.net主页,里面包含的信息量非常多,有software, reading list, research lab, dataset, demo等,强烈推荐,自己去发现好资料。 Deep learning的toolbox,matlab实现的,对应源码来学习一些常见的DL模型很有帮助,这个库我主要是用来学习算法实现过程的。 2013年龙星计划深度学习教程,邓力大牛主讲,虽然老师准备得不充分,不过还是很有收获的。 Hinton大牛在coursera上开的神经网络课程,DL部分有不少,非常赞,没有废话,课件每句话都包含了很多信息,有一定DL基础后去听收获更大。 Larochelle关于DL的课件,逻辑清晰,覆盖面广,包含了rbm系列,autoencoder系列,sparse coding系列,还有crf,cnn,rnn等 。 虽然网页是法文,但是课件是英文。 CMU大学2013年的deep learning课程,有不少reading paper可以参考。 达慕思大学Lorenzo Torresani的2013Deep learning课程reading list. Deep Learning Methods for Vision(余凯等在cvpr2012上组织一个workshop,关于DL在视觉上的应用)。 斯坦福Ng团队成员链接主页,可以进入团队成员的主页,比较熟悉的有Richard Socher, Honglak Lee, Quoc Le等。 多伦多ML团队成员链接主页,可以进入团队成员主页,包括DL鼻祖hinton,还有Ruslan Salakhutdinov , Alex Krizhevsky等。 蒙特利尔大学机器学习团队成员链接主页,包括大牛Bengio,还有Ian Goodfellow 等。 纽约大学的机器学习团队成员链接主页,包括大牛Lecun,还有Rob Fergus等。 Charlie Tang个人主页,结合DL+SVM. 豆瓣上的脑与deep learning读书会,有讲义和部分视频,主要介绍了一些于deep learning相关的生物神经网络。 Large Scale ML的课程,由Lecun和Langford讲的,能不推荐么。 Yann Lecun的2014年Deep Learning课程主页。 视频链接 。 吴立德老师《深度学习课程》 一些常见的DL code列表,csdn博主zouxy09的博文,Deep Learning源代码收集-持续更新… Deep Learning for NLP (without Magic),由DL界5大高手之一的Richard Socher小组搞的,他主要是NLP的。 2012 Graduate Summer School: Deep Learning, Feature Learning,高手云集,深度学习盛宴,几乎所有的DL大牛都有参加。 matlab下的maxPooling速度优化,调用C++实现的。 2014年ACL机器学习领域主席Kevin Duh的深度学习入门讲座视频。 R-CNN code: Regions with Convolutional Neural Network Features. 以上文字和网站链接资料摘编自如下网址: http://www.myexception.cn/other/1266691.html http://www.cnblogs.com/tornadomeet/archive/2012/05/24/2515980.html 另外给出2006年的3篇关于深度学习的突破性论文: Hinton, G. E., Osindero, S. and Teh, Y.,A fast learning algorithm for deep belief nets. Neural Computation 18:1527-1554, 2006 Yoshua Bengio, Pascal Lamblin, Dan Popovici and Hugo Larochelle,Greedy LayerWise Training of Deep Networks, in J. Platt et al. (Eds), Advances in Neural Information Processing Systems 19 (NIPS 2006), pp. 153-160, MIT Press, 2007 Marc’Aurelio Ranzato, Christopher Poultney, Sumit Chopra and Yann LeCun Efficient Learning of Sparse Representations with an Energy-Based Model, in J. Platt et al. (Eds), Advances in Neural Information Processing Systems (NIPS 2006), MIT Press, 2007
个人分类: 科研交流|10515 次阅读|0 个评论
[转载]深度学习论文之Do Deep Nets Really Need to be Deep?
zhuwei3014 2014-11-24 15:34
今天我们要谈论的文章为: Lei Jimmy Ba, and Rich Caurana. Do Deep Nets Really Need to be Deep?. ICLR2014 openreview中有下载链接和讨论: http://openreview.net/document/9a7247d9-d18e-4549-a10c-ca315d84b6db#9a7247d9-d18e-4549-a10c-ca315d84b6db 引言: 神经网络的提出已经有半个多世纪,BP算法的发现也已经过了三十年。但是,直到2006年, 大牛Hinton才 成功 训练出多层神经网络,并在图像识别和语音识别等领域大放异彩。在各大公开的竞赛中,基于深度神经 网络(DNN) 方法的性能稳居头把交椅的位置,并且,甩传统的机器学习方法好几条街。 为了区别于 之前的 学习算法,Hinton给 它取了一个 响亮的名字——deep learning。 据说,相对于传统的神经网络、SVM、adaboost、随机森林等机器学习算法,DNN最大的好处在于其网络结构 是 deep的,这种结构和人的视觉感知原理一致,可以提取输入数据不同抽象层次的特征,因而更适合来进行 数据表达。 具体介绍/讨论参见: 1) pluskid的博客 Deep Learning and Shallow Learning 2) Bengio Y. Learning deep architectures for AI. Foundations and trends® in Machine Learning, 2009 3) zouxy09的CSDN: Deep Learning(深度学习)学习笔记整理系列 但是,如果,有一种方法,使得shallow neural network也可以达到deep neural network的性能,并且,两者 的parameter的个数差不多,是不是很神奇?如果这样,neural network是不是一定需要是deep的呢? 文章内容: 文章在TIMIT数据库上做实验,一共训练了7个neural network。结果如下: 其中,SNN代表Shallow Neural Network,是一个只有一个隐含层的神经网络;DNN代表Deep Neural Network, 有三个以全连接层组成的隐含层;CNN代表Convolutional Neural Network,其隐含层包含1个卷积maxpooling 层, 然后接上三个全连接层。SNN-MIMIC是通过model compression得到的Mimic Shallow Neural Network。 其中,SNN,DNN和CNN用的都是标准的训练算法得到的结果。SNN-MIMIC的具体训练过程如下: 将多个CNN给ensemble起来,形成一个宇宙无敌的super CNN。然后,对于训练集的每一个sample,由这个 super CNN给出一个output,然后,将训练集中的label替换成这个output作为groundtruth,再用标准的BP算法 进行训练。可以把这里的super CNN当做一个函数,然后,我们训练一个Mimic的SNN来逼近这样一个函数, 只要这个Mimic SNN在训练集的临域能近似这个super CNN就可以了。 在训练SNN和SNN-MIMIC的过程中,当隐含层的节点数增多时,训练的过程会变得相当慢。这里可以用低秩矩阵 来近似原来的大的矩阵,加快训练过程。 作者的结论: 通过model compression的方法训练得到的SNN的性能与DNN的差不多,居然,它们的参数的个数也差不多, 那么,是不是有一种训练方法,可以使得SNN直接在训练集里进行,也能达到这个性能?所以,作者的结论是, 当前的BP随机梯度下降的训练算法对deep的neural net更有效。于是,在这个宇宙中,似乎存在一种算法, 使得SNN能得到更好的训练。 Yoshua Bengio的评论: 这篇文章上传到openreview,得到了大牛 Yoshua Bengio的关注。 这位大牛的观点是, the depth (and convolutions) provide a PRIOR that helps GENERALIZING better. 第一个证据就是,要得到与CNN性能差不多的SNN-MIMIC,需要比CNN多得多的参数(13M vs 180M),而 CNN当然提供了一个很强的 PRIOR ; 第二个证据就是训练误差,只需要看看DNN和SNN的训练误差是否差不多就可以了。因为,如果差不多,则 说明这些模型 fit 已知样本(训练样本)的能力差不多,但是 fit 未知样本(测试样本)的能力DNN比SNN强, 说明DNN的generalization的能力更强。 其他的一些知识: model compression通过一个小的model来逼近一个大的model(或者一个model ensemble)的性能。通常情况 下,需要大量的unlabeled的样本,将这些样本送到大的model里,得到一个输出,然后,将这些样本和对应的 输出组合,用supervised learning得到这个小的model。这里有两个需要注意的地方:第一,unlabeled的样本 不能只是将大的model的训练集中的label去掉而得到的样本,因为大的model往往在这些样本点上有overfitting; 第二,unlabel的样本数需要比大的model的训练集中的样本数要多得多,这样才能更可能的近似原来的这个大 的model。
个人分类: DL论文笔记|5317 次阅读|0 个评论
[转载]深度学习进阶线路图
zhuwei3014 2014-8-7 19:52
【研究动态】 深度学习 进阶线路图(一) 在应用机器学习的时候,最耗时和重要的阶段是对原始数据进行特征提取。 深度学习 是一个新的机器学习的分支,他要做的就是跨过整个特征设计阶段,而是直接从数据中学习得到。大部分的深度学习方法都是基于神经网络的,在这些结构中,复杂的高层结构是建立在多个非线性神经元函数的多层叠加上的。 其实最容易的介绍神经网络和深度学习的教程是Geoff Hinton’s Coursera course .(AITMR译者注:我以前上过这个课,需要有一定的基础才能听得懂的。)在这个课程中,你能学习得到一些关键思想并能让你自己完成一些简单的算法。( Geoff 是这个领域的先驱者,AITMR注:我们大家都习惯叫他祖师爷,他在06在Nature上发表了一篇关于深度学习的文章,被认为是这个领域的第一篇比较详细的文章,并附有代码。) 其实说白了 深度学习 就是从基本数据中学习,然后让模型工作得更好。但是这个领域目前来说还没有达到这个阶段,就是可以你把数据输进去,然后模型就完全自动的学习了。目前,你还需要判断很多问题:模型过拟合了吗?优化过程完成了吗?需要增加更多的神经元吗?需要增加更多的层数吗?不幸的是,现在对于这些个问题还没有一个共识,因此你需要不管的思考并做实验。为了达到这个水准,你需要深入理解算法的核心内容,和于此相关的一些机器学习的关键知识。这篇文章就是要根据这些点来给出一个进阶帮助你更好的理解深度学习。 如果你以前没怎么看过Metacademy,你可以在 here 找到这个网站内容的基本结构和内容简介。登陆Metacademy,基本概念已经用红色标明了。这些将给你一些基本的认识,例如: 随着更多的内容加入到Metacademy,学习内容会实时更新的。外链用绿色字体显示,尽管我们已经尽可能的去列得详细,但是你还是要根据自己的情况去选择一些。但是你也不同完全按照我们给出的线路图去完成,因为每个人的情况不一样。 You can also check out one of several review papers, which give readable overviews of recent progress in the field: Y. Bengio. Learning deep architectures for AI. Foundations and Trends in Machine Learning, 2009. Y. Bengio, A. Courville, and P. Vincent. Representation learning: a review and new perspectives. 2014 【研究动态】深度学习进阶线路图(二) Supervised models 如果你对使用神经网络感兴趣,意味着你也许喜欢自动的预测。监督学习是一种机器学习的框架,在这个框架里面你有一项特别想完成的任务,计算机通过有标签的数据集合学习得到模型。比如加入你想自动的判别邮件信息是垃圾邮件还是正常邮件,有监督学习框架中,你会有100,000封电子邮件被标注为“垃圾邮件”或者是“非垃圾邮件”,这些数据集合被用来训练分类器,使得它能够判别以前从未遇到过的邮件。 在深入理解神经网络之前,你应该先了解一点浅层网络机器学习算法比如线性回归( linear regression ),逻辑回归( logistic regression ),支持向量机( support vector machines (SVMs) )等。这些算法更容易完成,并且有一些很成熟的软件包可以调用(比如: AITMR译者注:scikit-learn确实是一个非常好的软件包,译者一直以来都是用这个软件包,而且你还可以通过研究软件包的源程序来深入的学习相关的算法。)。这些算法是你实现神经网络的一些基础内容。另外,神经网络的基本组成部分神经元和这些模型有很大的关联。因此,你花时间学习这些模型也是为更深度的理解神经网络打好了基础。 为了能更好的应用监督学习,你需要理解泛化( generalization )的概念,所谓泛化就是在新数据上的预测能力。你需要理解怎样去平衡过拟合与欠拟合之间的权衡:你既要使你的模型能够完全的表达你的数据,又不至于使得你的模型过于复杂使其过拟合。在回归方面,这个可以归结为 bias and variance ,这提供了一个更为直观的表达。当然 cross-validation 是一个你可以用来测量泛化能力的算法。 最开始的深度学习模型是前馈神经网络 feed-forward neural net 它是通过反向传播 backpropagation 来学习的。 视觉是深度神经网络的一个主要的应用方向,而卷积神经网络 convolutional nets 在此方面已经取得了突破性的进展。 递归神经网络 Recurrent neural nets 是把数据表示成时间结构的一类神经网络。伴随时间的Backpropagation是一种优雅的训练算法,但是在实用性方面还是有一定问题的。 【研究动态】深度学习进阶线路图(三):非监督学习 监督模型中,有标签数据可用来训练模型进行预测。但是在很多情况下,标签数据很难获取,或者是很难定义标签。你有的可能只是些非标签数据。这种情况下的学习叫做非监督学习。例如,你想对邮件进行“垃圾邮件”和“非垃圾邮件”的分类,但是你却没有标签数据集。那么,用这些非标签数据集,你能做些什么事呢?第一,你可以简单的分析数据模式。你的非标签数据也许蕴含着某些潜在的属性,这些潜在属性可以通过主成分分析( principal component analysis )或者是因子分析( factor analysis )得到。第二,你也可以对你的数据进行聚类研究,一类的数据比其他类的数据更为近似,聚类算法主要有 k-means 和 mixture of Gaussians 在神经网络领域,非监督学习还有另外一种作用:他能对监督学习提供一些帮助。尤其是非标签数据比标签数据更容易获取。假如你正在进行目标识别方面的工作,给图像中的目标做标签是一件非常繁琐的事情,然而非标签的数据却可以从网上成千上万的下载。 非监督预训练( Unsupervised pre-training )已经在很多领域证明了其可极大的提供识别率。他的思想就是你通过非标签数据训练一个非监督神经网络,然后把类似的结构联合起来构成监督神经网络。目的都是为了给原始数据进行建模,而预训练能够为预先提取一些数据的相关结构。另外,深度非监督模型也比深度监督模型更容易训练(当然,关于这一点现在大家还不知道具体原因。)。非监督网络的预训练初始化使得整个网络训练时不至于陷入局部极值。 关于分监督训练好处的证明仍然是复杂的,很多成功应用的深度神经网络已经避免使用它,尤其是在大数据的背景下。但是他也保持者很好的记录,值得我们取关注他。 那哪些是非监督神经网络呢?最基本的就是自编码结构( autoencoder ),这是一种预测他自己输入的前馈神经网络。然而这并不是最难的事情,可以一些限制后事情变得有点困难。第一,网络中有一层或者是多层的神经元数量要比数据层的小。另外,还需要限制隐含层的活跃神经元是稀疏的(译者注:只有少部分神经元的输出为非零。)。再着,在输入数据中加入一些噪声,再使网络具有去噪能力( denoising autoencoder )。 关于非监督学习另外一种方法是生成模型。人们假设数据符合某种潜在的分布,然后尝试对这种分布建模。受限玻耳兹曼机 Restricted Boltzmann machines (RBMs) 是一种监督的只有一个隐含层的生成模型。而这个模型可以堆积形成多层生成模型,比如深信网络( deep belief nets (DBNs) )和深度玻尔兹曼机( deep Boltzmann machines (DBMs) )等。 DBMs can learn to model some pretty complex data distributions: Generative modeling is a deep and rich area, and you can find lots more examples in the Bayesian machine learning roadmap . 【研究动态】深度学习进阶线路图(四):优化算法 定义好深度神经网络的机构后,该怎么去训练他们呢?最笨重的训练方法就是随机梯度下降法( stochastic gradient descent (SGD) ),这种方法在每次训练中只添加一个训练样本(或者说是少量的训练样本),通过这些训练样本一小步一小步的减小损失函数。也就是说这需要计算损失函数的梯度值,这可以通过反向传播的算法算得。当然在编好程序后要进行“梯度计算检查”( check your gradient computations )来确保你的梯度计算是正确的。SGD算法理解简单,实现也比较容易,用起来也是十分的得心应手。 其他还有很多其他的凸优化( convex optimization )可以解决这个训练问题,在凸问题中,SGD和其他的一些局部搜索算法可以保证找到全局极值。可以找到全局极值是因为函数的形状是“碗状”(即凸函数),因此微调就朝着全局极值的方向走了。很多机器学习的研究就是想去构造一个凸优化问题。然而,深度神经网络却并非都是凸优化问题,因此你仅能保证找到一个局部极小值。这看似令人失望,但是我们也找到了一些解决方法( something we can live with )。对于大部分的前馈网络和生成网络,局部极值其实是挺合理的。(当时递归神经网络是个意外。) 局部极值最大的问题就是损失函数的曲率会趋向极值。然而神经网络是非凸的,因此曲率的问题就凸显出来了,而解决神经网络的训练的问题都是借鉴的凸优化问题的求解方法。如果你想了解一些相关的背景知识,可以去看看Boyd and Vandenberghe’s写的书凸优化( Convex Optimization ): Sections 9.2-9.3 talk about gradient descent, the canonical first-order optimization method (i.e. a method which only uses first derivatives) Section 9.5 talks about Newton’s method, the canonical second-order optimization method (i.e. a method which accounts for second derivatives, or curvature) 牛顿法其实是很适合去处理曲率问题的,但是他处理大尺度的神经网络训练却并不实用,主要有两方面的原因:其一,它是一种批处理方法,因此每次训练都得把全部的训练样本添加进去。其二,他需要构建Hessian矩阵,并且还要求逆,而Hessian矩阵的维数和参数维数相等啊。(译者注:计算量太大了,当你的神经网络结构非常大的时候,这简直就是一场灾难啊!)因此,一直以来他都是作为一种理想的二阶训练方法人们去尝试。实际上用得最多的还是: conjugate gradient limited memory BFGS 相比于一般的神经网络模型,训练RBMs又提出了新的挑战:目标函数需要计算配分函数,而梯度计算需要进行推理( inference )。而这两者貌似都是不可解的( intractable )。在实际操作中 Contrastive divergence and persistent contrastive divergence 被广泛的用来估计梯度。然而,模型估计依然还是个问题。退火抽样( annealed importance sampling )可以用来估计模型的似然函数( estimate the model likelihood )。但是终究还是显得苍白,对于估计模型的性能还是很难完成的。 Even once you understand the math behind these algorithms, the devil’s in the details. Here are some good practical guides for getting these algorithms to work in practice: G. Hinton. A practical guide to training restricted Boltzmann machines. 2010. J. Martens and I. Sutskever. Training deep and recurrent networks with Hessian-free optimization. Neural Networks: Tricks of the Trade, 2012. Y. Bengio. Practical recommendations for gradient-based training of deep architectures. Neural Networks: Tricks of the Trade, 2012. L. Bottou. Stochastic gradient descent tricks. Neural Networks: Tricks of the Trade, 2012. 【研究动态】深度学习进阶线路图(五):应用与相关软件 视觉应用: 计算机视觉是神经网络和深度学习的主要应用领域。早在1998年,卷积神经网络( convolutional nets )就已经在手写数字识别上大显身手,MNIST手写书库( MNIST handrwritten digit dataset )也一直以来都作为神经网络研究的标准数据集。(译者注:卷积神经网络在计算机视觉领域的应用是空前的,据说美国ATM机上支票的识别就是用的CNNs算法,而最近CNNs的研究又进入了一个爆发期,很多新的算法表中出现,比如3D的CNNs等。笔者曾经仔细研读过CNNs的MATLAB代码,确实是一个很好的算法,而且对于图像的识别率也是很高的。)近来,卷积神经网络把数千种类的物体分类问题( classifying between thousands of object categories )大大的推进了一步。仅用行像素来学习打游戏( play Atari games )的DeepMind系统里面就用到了视觉识别。 也有很多的工作是关于图像的生成模型的。而这些研究工作都是关注于学习稀疏表示( learning sparse representations )和图像的局部关系建模( modeling the local covariance structure )。加入你用卷积结构的生成模型对图像建模,那么你能得到更深层次的特征。 相关软件: Cafe is an increasingly popular deep learning software package designed for image-related tasks, e.g. object recognition. It’s one of the fastest deep learning packages available — it’s written in C++ and CUDA. The University of Toronto machine learning group has put together some nice GPU libraries for Python. GNumPy gives a NumPy-like wrapper for GPU arrays. It wraps around Cudamat , a GPU linear algebra library, and npmat , which pretends to be a GPU on a CPU machine (for debugging). PyLearn is a neural net library developed by the University of Montreal machine learning group . It is intended for researchers, so it is built to be customizable and extendable. PyLearn is built on top of Theano , a Python library for neural nets and related algorithms (also developed at Montreal), which provides symbolic differentiation and GPU support. If for some reason you hate Python, Torch is a powerful machine learning library for Lua. 【研究动态】深度学习进阶线路图(六):深度学习与其他机器学习算法的关系 Relationships with other machine learning techniques 神经网络和其他的机器学习算法有着千丝万缕的联系。理解他们之间的这些关系可以帮助我们选定神经网络的结构。 很多神经网络结构可以看成是浅层结构的非线性叠加生成。前馈网络就可以看做是逻辑回归( logistic regression )的类比。而自编码网络(Autoencoders)可以看成是降维算法( PCA )的非线性类比。 RBMs和所有的高斯单元可以看成是类似于因子分析( equivalent to Factor analysis )。RBMs也可以看成是另外一种指数族分布( exponential family )。 核方法是另外一种把线性算法转为非线性算法的技术。神经网络和核方法之间其实有着很微妙的关系:贝叶斯神经网络其实就是有无限多个隐含神经元的高斯过程。(See Chapter 2 of Radford Neal’s Ph.D. thesis. Background: Gaussian processes ) Relationship with the brain If these models are called “neural” nets, it’s natural to ask whether they have anything to do with how the brain works . In a certain sense, they don’t: you can understand and apply the algorithms without knowing anything about neuroscience. Mathematically, feed-forward neural nets are just adaptive basis function expansions . But the connections do run pretty deep between practical machine learning and studies of the mind and brain. Unfortunately, Metacademy doesn’t have any neuroscience content (yet!), so the background links in this section will be fairly incomplete. Doubly unfortunately, neuroscience and cognitive science seem not to have the same commitment to open access that machine learning does, so this section might only be useful if you have access to a university library. When trying to draw parallels between learning algorithms and the brain, we need to be precise about what level we’re talking about. In “The philosophy and the approach” (Chapter 1 of Vision: a Computational Investigation ), David Marr argued for explicitly separating different levels of analysis: computation, algorithms, and implementation. (This is worth reading, even if you read nothing else in this section.) While not all researchers agree with this way of partitioning things, it’s useful to keep in mind when trying to understand exactly what someone is claiming. Neuroscience Jeff Hawkins’s book On Intelligence aims to present a unifying picture of the computational role of the neocortex. While the theory itself is fairly speculative, the book is an engaging and accessible introduction to the structure of the cortex. Many neural net models have learned similar response properties to neurons in the primary visual cortex (V1). Olshausen and Field’s sparse coding model ( background ) was the first to demonstrate that a purely statistical learning algorithm discovered filters similar to those of V1. (Whether or not this is a neural net is a matter of opinion.) Since then, a wide variety of representation learning algorithms based on seemingly different ideas have recovered similar representations. Other statistical models have learned topological representations similar to the layout of cell types in V1. Karklin and Lewicki fit a more sophisticated statistical model which reproduced response properties of complex cells. While the connection between V1 and learned filters may seem tidy, Olshausen highlights a lot of things we still don’t understand about V1 . For more on the neuroscience of the visual system, check out Eye, Brain, and Vision , a freely available book written by David Hubel, one of the pioneers who first studied V1. (Chapters 3, 4, and 5 are the most relevant.) There have also been neural nets explicitly proposed as models of the brain. Riesenhuber and Poggio’s HMAX model is a good example. Jim DiCarlo found that deep convolutional networks yield neurons which behave similarly to those high up in the primate visual hierarchy. Cognitive science It’s not just at the level of neurons that researchers have tried to draw connections between the brain and neural nets. Cognitive science refers to the interdisciplinary study of thought processes, and can be thought of a study of the mind rather than the brain. Connectionism is a branch of cognitive science, especially influential during the 1980s, which attempted to model high-level cognitive processes in terms of networks of neuron-like units. (Several of the most influential machine learning researchers came out of this tradition.) McClelland and Rumelhart’s book Parallel Distributed Processing (volumes 1 and 2 ) is the connectionist Bible. Other significant works in the field include: J. McClelland and T. Rogers. The parallel distributed processing approach to semantic cognition. Nature Reviews Neuroscience, 2003. One of the most perplexing questions about the brain is how neural systems can model the compositional structure of language. Linguists tend to model language in terms of recursive structures like grammars, which are very different from the representations used in most neural net research. Paul Smolensky and Geraldine Legendre’s book The Harmonic Mind presents a connectionist theory of language, where neurons implement a system of constraints between different linguistic features. 转自: http://www.aitmr.com/index.php/airesearch/373.html http://www.aitmr.com/index.php/airesearch/401.html http://www.aitmr.com/index.php/airesearch/417.html http://www.aitmr.com/index.php/airesearch/425.html http://www.aitmr.com/index.php/airesearch/442.html http://www.aitmr.com/index.php/airesearch/448.html 原文翻译自:http://metacademy.org/roadmaps/rgrosse/deep_learning
个人分类: 博客转载|5625 次阅读|0 个评论
[转载]深度学习(Deep Learning)综述及算法简介
xjtuchy 2014-5-26 12:37
引言: 神经网络( N eural N etwork)与支持向量机( S upport V ector M achines,SVM)是统计学习的代表方法。可以认为神经网络与支持向量机都源自于感知机(Perceptron)。感知机是1958年由Rosenblatt发明的线性分类模型。感知机对线性分类有效,但现实中的分类问题通常是非线性的。 神经网络与支持向量机(包含核方法)都是非线性分类模型。1986年,Rummelhart与McClelland发明了神经网络的学习算法 B ack P ropagation。后来,Vapnik等人于1992年提出了支持向量机。神经网络是多层(通常是三层)的非线性模型, 支持向量机利用核技巧把非线性问题转换成线性问题。 神经网络与支持向量机一直处于“竞争”关系。 Scholkopf是Vapnik的大弟子,支持向量机与核方法研究的领军人物。据Scholkopf说,Vapnik当初发明支持向量机就是想干掉神经网络(He wanted to kill Neural Network)。支持向量机确实很有效,一段时间支持向量机一派占了上风。 近年来,神经网络一派的大师Hinton又提出了神经网络的Deep Learning算法(2006年),使神经网络的能力大大提高,可与支持向量机一比。 Deep Learning假设神经网络是多层的,首先用Boltzman Machine(非监督学习)学习网络的结构,然后再通过Back Propagation(监督学习)学习网络的权值。 关于Deep Learning的命名,Hinton曾开玩笑地说: I want to call SVM shallow learning. (注:shallow 有肤浅的意思)。其实Deep Learning本身的意思是深层学习,因为它假设神经网络有多层。 总之,Deep Learning是值得关注的统计学习新算法。 深度学习(Deep Learning) 是ML研究中的一个新的领域,它被引入到ML中使ML更接近于其原始的目标:AI。查看 a brief introduction to Machine Learning for AI 和 an introduction to Deep Learning algorithms . 深度学习是关于学习多个表示和抽象层次,这些层次帮助解释数据,例如图像,声音和文本。 对于更多的关于深度学习算法的知识,可以参看: The monograph or review paper Learning Deep Architectures for AI (Foundations Trends in Machine Learning, 2009). The ICML 2009 Workshop on Learning Feature Hierarchies webpage has a list of references . The LISA public wiki has a reading list and a bibliography . Geoff Hinton has readings from last year’s NIPS tutorial . 这篇综述主要是介绍一些最重要的深度学习算法,并将演示如何用 Theano 来运行它们。 Theano是一个python库,使得写深度学习模型更加容易,同时也给出了一些关于在GPU上训练它们的选项。 这个算法的综述有一些先决条件。首先你应该知道一个关于python的知识,并熟悉numpy。由于这个综述是关于如何使用Theano,你应该先阅读 Theano basic tutorial 。一旦你完成这些,阅读我们的 Getting Started 章节---它将介绍概念定义,数据集,和利用随机梯度下降来优化模型的方法。 纯有监督学习算法可以按照以下顺序阅读: Logistic Regression - using Theano for something simple Multilayer perceptron - introduction to layers Deep Convolutional Network - a simplified version of LeNet5 无监督和半监督学习算法可以用任意顺序阅读(auto-encoders可以被独立于RBM/DBM地阅读): Auto Encoders, Denoising Autoencoders - description of autoencoders Stacked Denoising Auto-Encoders - easy steps into unsupervised pre-training for deep nets Restricted Boltzmann Machines - single layer generative RBM model Deep Belief Networks - unsupervised generative pre-training of stacked RBMs followed by supervised fine-tuning 关于mcRBM模型,也有一篇新的关于从能量模型中抽样的综述: HMC Sampling - hybrid (aka Hamiltonian) Monte-Carlo sampling with scan() 上文翻译自 http://deeplearning.net/tutorial/ 查看最新论文 Yoshua Bengio, Learning Deep Architectures for AI, Foundations and Trends in Machine Learning, 2(1), 2009 深度(Depth) 从一个输入中产生一个输出所涉及的计算可以通过一个流向图(flow graph)来表示:流向图是一种能够表示计算的图,在这种图中每一个节点表示一个基本的计算并且一个计算的值(计算的结果被应用到这个节点的孩子节点的值)。考虑这样一个计算集合,它可以被允许在每一个节点和可能的图结构中,并定义了一个函数族。输入节点没有孩子,输出节点没有父亲。 对于表达 的流向图,可以通过一个有两个输入节点 和 的图表示,其中一个节点通过使用 和 作为输入(例如作为孩子)来表示 ;一个节点仅使用 作为输入来表示平方;一个节点使用 和 作为输入来表示加法项(其值为 );最后一个输出节点利用一个单独的来自于加法节点的输入计算SIN。 这种流向图的一个特别属性是深度(depth):从一个输入到一个输出的最长路径的长度。 传统的前馈神经网络能够被看做拥有等于层数的深度(比如对于输出层为隐层数加1)。SVMs有深度2(一个对应于核输出或者特征空间,另一个对应于所产生输出的线性混合)。 深度架构的动机 学习基于深度架构的学习算法的主要动机是: 不充分的深度是有害的; 大脑有一个深度架构; 认知过程是深度的; 不充分的深度是有害的 在许多情形中深度2就足够(比如logical gates, formal neurons, sigmoid-neurons, Radial Basis Function units like in SVMs)表示任何一个带有给定目标精度的函数。但是其代价是:图中所需要的节点数(比如计算和参数数量)可能变的非常大。理论结果证实那些事实上所需要的节点数随着输入的大小指数增长的函数族是存在的。这一点已经在logical gates, formal neurons 和rbf单元中得到证实。在后者中Hastad说明了但深度是d时,函数族可以被有效地(紧地)使用O(n)个节点(对于n个输入)来表示,但是如果深度被限制为d-1,则需要指数数量的节点数O(2^n)。 我们可以将深度架构看做一种因子分解。大部分随机选择的函数不能被有效地表示,无论是用深地或者浅的架构。但是许多能够有效地被深度架构表示的却不能被用浅的架构高效表示(see the polynomials example in the Bengio survey paper )。一个紧的和深度的表示的存在意味着在潜在的可被表示的函数中存在某种结构。如果不存在任何结构,那将不可能很好地泛化。 大脑有一个深度架构 例如,视觉皮质得到了很好的研究,并显示出一系列的区域,在每一个这种区域中包含一个输入的表示和从一个到另一个的信号流(这里忽略了在一些层次并行路径上的关联,因此更复杂)。这个特征层次的每一层表示在一个不同的抽象层上的输入,并在层次的更上层有着更多的抽象特征,他们根据低层特征定义。 需要注意的是大脑中的表示是在中间紧密分布并且纯局部:他们是稀疏的:1%的神经元是同时活动的。给定大量的神经元,任然有一个非常高效地(指数级高效)表示。 认知过程看起来是深度的 人类层次化地组织思想和概念; 人类首先学习简单的概念,然后用他们去表示更抽象的; 工程师将任务分解成多个抽象层次去处理; 学习/发现这些概念(知识工程由于没有反省而失败?)是很美好的。对语言可表达的概念的反省也建议我们一个稀疏的表示:仅所有可能单词/概念中的一个小的部分是可被应用到一个特别的输入(一个视觉场景)。 学习深度架构的突破 2006年前,尝试训练深度架构都失败了:训练一个深度有监督前馈神经网络趋向于产生坏的结果(同时在训练和测试误差中),然后将其变浅为1(1或者2个隐层)。 2006年的3篇论文改变了这种状况,由Hinton的革命性的在深度信念网(Deep Belief Networks, DBNs)上的工作所引领: Hinton, G. E., Osindero, S. and Teh, Y., A fast learning algorithm for deep belief nets .Neural Computation 18:1527-1554, 2006 Yoshua Bengio, Pascal Lamblin, Dan Popovici and Hugo Larochelle, Greedy Layer-Wise Training of Deep Networks , in J. Platt et al. (Eds), Advances in Neural Information Processing Systems 19 (NIPS 2006), pp. 153-160, MIT Press, 2007 Marc’Aurelio Ranzato, Christopher Poultney, Sumit Chopra and Yann LeCun Efficient Learning of Sparse Representations with an Energy-Based Model , in J. Platt et al. (Eds), Advances in Neural Information Processing Systems (NIPS 2006), MIT Press, 2007 在这三篇论文中以下主要原理被发现: 表示的无监督学习被用于(预)训练每一层; 在一个时间里的一个层次的无监督训练,接着之前训练的层次。在每一层学习到的表示作为下一层的输入; 用无监督训练来调整所有层(加上一个或者更多的用于产生预测的附加层); DBNs在每一层中利用用于表示的无监督学习RBMs。Bengio et al paper 探讨和对比了RBMs和auto-encoders(通过一个表示的瓶颈内在层预测输入的神经网络)。Ranzato et al paper在一个convolutional架构的上下文中使用稀疏auto-encoders(类似于稀疏编码)。Auto-encoders和convolutional架构将在以后的课程中讲解。 从2006年以来,大量的关于深度学习的论文被发表,一些探讨了其他原理来引导中间表示的训练,查看 Learning Deep Architectures for AI 本文英文版出处 http://www.iro.umontreal.ca/~pift6266/H10/notes/deepintro.html
个人分类: 科研学习|8729 次阅读|0 个评论
百度大脑从谷歌大脑挖来深度学习掌门人 Andrew Ng
热度 1 liwei999 2014-5-21 05:44
百度走向世界,需要闹出动静。成立深度学习研究院,从谷歌挖来 Andrew Ng 做掌门人,对于 marketing 有百益,无论能不能近期实用化。Andrew 做的 coursera 在教育界是革命性的,能不能在 NLP 做出同样革命性奇迹来,值得关注。百度大脑(Baidu Brain)项目从谷歌大脑(Google Brain)白捡了个相似的品牌来,标志以前饱受非议的人工智能(AI)已经正名,重新放出光彩来。 深度学习不懂,不好说,但能造成这么大的动静,相信确实有方法学上的突破。Intuitively,以前看机器学习领域的系统,发现他们确实很 robust,很 efficient,对于简单任务(文本分类,POS 之类)也有效,做起来很利索,但失之浅漏。一堆关键词也没有结构,主要就是根据 ngram 的记忆,从数据中找到蛛丝马迹的条件。现在有办法把传统的浅层的学习,推向多层学习,引起广泛兴趣是可以理解的。据说在图像识别语音识别方面,都已经在实用上大幅提高了系统质量。但是,在 text 方面,还没听说大的突破,可以拭目以待,乐见其成。 不管怎样学习,较复杂的NLP任务(句法分析,语义搜索,how、why的问答系统等)很难离开语言学结构和知识。简单任务可以离开结构,用ngram的冗余信息取代结构分析,用死记体现隐性的语言知识。对于复杂的任务,深度学习怎样利用和解构语言结构和知识呢?
个人分类: 立委随笔|7357 次阅读|2 个评论
再说深度学习,重燃人工智能领域的重大挑战
bigdataage 2014-3-6 18:53
再说深度学习,重燃人工智能领域的重大挑战 罗伯特·霍夫(Robert D.Hof) 发表于 2014-02-26 15:25 借助海量的计算能力,机器现在可以识别物体、可以实时翻译对话。人工智能终于变聪明了。 2012 年 7 月,当 雷·库兹威尔(Ray Kurzweil) 去见谷歌首席执行官 拉里·佩奇(Lawrence Edward Page) 的时候,他没想找工作。 库兹韦尔 是一位机器智能未来主义者,也是该领域受人尊敬的发明家;他本来是想来谈谈自己即将出版的新书《如何创造人脑》的—— 佩奇 曾经读过这本书的草稿。 库兹韦尔 对 佩奇 说,他想开个公司来实现他的设想,建造一台真正有智能的计算机:这种计算机能理解语言,并能自行进行推断和作出决策。 (雷·库兹韦尔的这本书的中文翻译版已经出版,《 如何创造思维:人类思想所揭示出的奥秘 》) 显而易见,这种事将需要完全不少于谷歌规模的数据量和计算能力。 佩奇 告诉 库兹威尔 :“我可以试着给你一些支持,但对于一家独立的公司来说,做这种事非常困难。”所以, 佩奇 建议 库兹威尔 加入谷歌;虽然后者从来都只是在自己的企业里工作。做决定没有花库兹威尔太多的时间:2013 年 1 月,他成了谷歌的工程主管。他说,“这是我专注人工智能领域50年的最终之作。” 吸引库兹威尔的不只是谷歌的计算资源,还包括谷歌在“深度学习”上的惊人进步——这是人工智能的一个分支。深度学习软件试图模仿大脑新皮质中的多层神经元活动,大脑80%的思维都由这些皱巴巴的东西产生。毫无疑问,这种软件能学习识别以数字化方式表现的声音、图像和其他数据中的模式。 这种软件能在一个人工“神经网络”中模拟新皮质的大量神经元阵列的基本思路,已经有了数十年的历史,它带来的失望和突破一样多。但是,因为数学方法的改进和计算机的日益强大,计算机科学家们现在可以模拟更多层的虚拟神经元,比以往任何时候都多。 基于这种更深入的能力,人们在语音和图像识别上正在做出显著的进步。2012 年 6 月,人们给谷歌的深度学习系统输入了 1,000 万张来自 YouTube 视频的图片,证明它在识别猫这样的物体上,识别效果比之前的类似系统好了差不多一倍。谷歌也用这种技术来减少语音识别的错误率,这种语音识别用在最新的安卓手机软件上。2012 年 10 月,微软首席研究官里克·拉希德在中国的一次演讲中,以一款语音识别软件震惊了与会者;这种语音识别软件能以仅7%的错误率把他的英文演讲内容转成文本,之后再翻译成中文,并且模拟他自己的声音以普通话读出来。就在同一个月,三个研究生和两位教授组成的团队在默克公司举办的一次竞赛中获胜,竞赛内容是识别出能开发出新药物的分子。这个团队采用深度学习技术,把注意力集中在那些最有可能符合他们目标的分子上。 尤其是谷歌,已经成了吸引深度学习和人工智能人才的磁铁。2013 年 3 月,谷歌收购了一家创业企业,它的创始人是多伦多大学的计算机科学教授杰弗里·辛顿——是赢得默克比赛的团队成员。辛顿会同时兼顾大学和谷歌的工作,他说计划“在这一领域中提出构想,然后把它们用在真正的问题上“,这些问题包括图像识别、搜索,和自然语言理解。 人工智能研究者们往往都抱着谨慎的希望,希望智能机器最终不只是科幻小说里的东西。事实上,机器智能正在开始改变一切,从通信和计算到医药、制造,以及交通运输。在《危险边缘》节目的胜出者IBM“沃森”计算机上,这种可能性更明显。”沃森“使用了一些深度学习技术,目前正在接受训练,来帮助医生做出更好的决策。微软也已经在WindowsPhone系统和必应语音搜索中用到了深度学习技术。 要将深度学习扩展到语音和图像识别之外的应用,将需要更多概念和软件上突破——当然更不用提处理能力上的更大进步。可能在很多年内,我们都不会看到公认能自己思考的机器,也许数十年内都看不到——如果不是永远的话。但是现在,美国微软研究院的负责人彼得·李说:“深度学习重燃了人工智能领域中的一些重大挑战。” 建个大脑 已经有了许多其他方法来应对这些挑战。其中之一是给计算机灌输信息和我们这个世界的规则;这需要程序员辛苦写软件,来让计算机熟悉那些属性——比方说一条边或者一段声音。这花了大量的时间,但仍会有系统无法处理的模糊数据。这种方法仅限用于极少的受到严格控制的应用程序,比如那种要求你说出特定的字词来进行查询的手机菜单系统中。 神经网络是在 20 世纪 50 年代人工智能研究的黎明之后不久开发出来的技术,看起来比较有前途,因为它试图模拟大脑的工作方式——虽然是大大简化了的方式。程序映射出一组虚拟神经元,然后给它们之间的连接分配随机的数值即“权重”。这些权重——以 0 和 1 之间的数字来表示——确定了每个模拟神经元对数字化特征的响应;而这些数字化特征包括如图像的边缘或图像中的一个蓝色形状,或者一个音素频率的特定能量水平(音素是语言音节中声音的最小单位)。 程序员会用包含了这些对象的数字化图像、或包含了这些音素的声音波形来对这个网络放电,以此训练神经网络检测对象或音素。如果网络没有准确地识别出特定模式,算法就会调节权重。这种训练的最终目标是,让神经网络能够总能识别出语音或者一组图像中的模式,而这种模式是我们人类熟知的——比方说音素“d”或一只狗的形象。这很像孩子们学会认出一只狗的方式差不多:注意它头部形状的细节、行为,以及知道别人把这种毛茸茸会汪汪叫的动物叫做“狗”。 但是早期的神经网络只能模拟为数不多的神经元,所以它不能识别出太复杂的模式。这种方法在20世纪70年代陷入了沉寂。 在20世纪80年代中期,在辛顿和其他人的帮助下,通过一种叫做“深度”的模型,重新激发了人们神经网络的兴趣。“深度”模型能更好地利用软件的多层神经元,但是该技术仍需要大量的人工参与:程序员在把数据输入进神经网络之前,需要对数据加上标签。而且复杂的语音或图像识别需要更多的计算机能力,这在当时还不具备。 然而,在过去的十年中,辛顿和其他研究人员最终取得了一些基本概念上的突破。2006年,辛顿开发了一种更有效的方式来训练每层神经元。第一层学习初级功能,例如分辨图像边缘或语音中的最小单元。它判断数字化像素或者声音的结合点——在这些地方更有可能找到要找的东西。一旦这一层神经元准确地识别这些特点,数据就会被输送到下一层,在这一层会训练自己识别更复杂的特点,例如语音的组合或者图像的角落。在接下来的层中会重复这种过程,直到系统能够可靠地识别音素或物体为止。 比方说猫。2012年6月,谷歌展示了迄今为止最大的神经网络之一,其中拥有超过10亿个连接。由斯坦福大学计算机科学教授吴恩达和谷歌研究员杰夫·迪安带领的团队,给系统展示了一千万张从YouTubu视频中随机选择的图片。软件模型中的一个模拟神经元专门识别猫的图像,其他专注于人脸、黄色的花朵,以及其他物体。由于深度学习的能力,即使没人曾经定义或标记过,系统也识别了这些独立的对象。 图像识别提升的幅度让一些人工智能专家感到震惊。当时,系统对YouTube图像的物体和主题的分类准确率是16%。这可能听起来没什么大不了,但它比之前的方法要好70%。迪安指出,在这一系统中有22,000个类别可供选择;正确地把物体放到相应的类别中需要所需要的能力,即使对于大多数人来说,往往也是很有挑战性的——例如区别两种相似的鳐鱼。当要求系统把图像分类在1000多个更大的通用类别中时,准确率跃升到超过50%。 大数据 在实验中训练多层虚拟神经元,用到了16,000个计算机处理器——那种Google为了搜索引擎和其他服务而开发的计算基础设施。迪利普·乔治是机器学习创业企业Vicarious的联合创始人,他认为,在人工智能的最新研究进展中,至少有80%可以归因到人们可以使用更多的计算能力。 但是除了谷歌数据中心的规模,还有些其他的东西。深度学习也得益于谷歌在多台机器之间分配计算任务的方法,这使算法可以运行得快得多。迪安在谷歌工作了14年,这是他早期帮助开发的技术。它大大加快了深度学习神经网络的训练速度,使谷歌可以运行大型的神经网络,还可以给它输入多得多的数据。 目前,深度学习已经改善了智能手机上的语音搜索。直到去年,谷歌安卓系统上的软件还会听错许多词,但在去年7月准备发布一个新版本安卓时,在迪安和他的团队的帮助下,一个基于深度学习的系统替换了一部分语音识别功能。多层神经元能够对声音的诸多变化进行更精确的训练,所以该系统可以更可靠地识别声音片段,尤其是在如地铁站台这样嘈杂的环境中。因为它更有可能明白实际上说出的内容,所以返回的结果可能更准确。几乎在一夜之间,错误的数量减少了25%;这个结果如此之好,以至于许多评论家认为安卓的语音搜索功能比苹果Siri语音助手更聪明——虽然Siri更出名一些。 尽管有了这些进步,但并不是每个人都认为深度学习会把人工智能变成某种能与人类智慧相媲美的东西。一些批评者说,深度学习和人工智能往往忽略了大脑的生理基础,替之以太多的蛮力计算。 持这种观点的批评家之一是杰夫·霍金斯,Palm计算公司的创始人。霍金斯最新的企业Numenta正在开发机器学习系统,其灵感来自于生物学,并不使用深度学习。Numenta的系统可以帮助预测能源消耗模式和风车之类机器即将失效的可能性。霍金斯在 2004 年出版了《人工智能的未来》,在书中介绍了大脑是如何工作的,以及这种原理将可能如何指导建造智能机器。他说,深度学习未能考虑时间的概念。他认为,大脑处理感官数据流,人类的学习依赖于我们的按次序回忆模式的能力:当你看到关于小猫正在做些有趣事情的视频时,重要的是动作,而不是一系列静止的图像——就像Google在实验中使用的那样。“谷歌的态度是:大量的数据解决一切。”霍金斯说。 但是,就算数据不解决一切的话,像谷歌之类公司在这些问题上投入的计算资源也不能忽视。深度学习的倡导者认为,计算资源是至关重要的,因为大脑本身仍然比今天的任何神经网络都复杂得多。“根本上说,你需要大量的计算资源来让设想成真。“辛顿说。 展望 虽然谷歌在未来的应用上尚有不足,但是前景依然耐人寻味。比方说,显然更好的图像搜索将对YouTube有利。迪安说,深度学习模型能够使用英语音素数据来更快地训练其他语言的语音。更成熟的图像识别也可能让谷歌的自动驾驶汽车变得更好。再有就是谷歌的基础:搜索和广告。任何能更好更快地——甚至也许在用户自己意识到之前——识别用户真正在找什么的技术,都会给这两者带来更大的改进。 这正是激起库兹威尔兴趣的原因。他已经65岁了,对智能机器有着长期的愿景。在高中时,他写了能使计算机创作各种经典风格原创音乐的软件,并在1965年的电视节目《我有一个秘密》中展示了出来。从那时起,他的发明包括几个第一——印刷品朗读机、能扫描和数字化任何字体打印件的软件,能以管弦乐队的声音重制音乐的合成器,以及一个使用大词汇库的语音识别系统。 今天,他设想了一个“电子朋友”,它能倾听你的电话谈话,阅读你的电子邮件,追踪你的一举一动——当然,如果你允许的话。所以,这个电子朋友甚至可以在你发问之前,就可以告诉你你想知道的事情。这不是他在谷歌工作的短期目标,但它对谷歌联合创始人谢尔盖·布林来说很合适。布林说,在公司的初期,他想建立一台有感知能力的计算机,相当于《2001太空漫游》里的HAL那样; 只除了一点,这部机器不会杀人。 现在,库兹威尔的目标是帮助计算机理解自然语言,甚至用自然语言说话。他说:“我的任务是让电脑对自然语言有足够的理解,来做一些有用的事情——更好的搜索工作,更好地回答问题。”从本质上讲,他希望建立一个IBM沃森的更灵活版本,他钦佩沃森在《危险边缘》节目中表现出的理解能力,它能应对如“一个上面有泡沫的馅饼发表的很长的、无聊的讲话”这样古怪的查询。(沃森的正确答案是:“什么是蛋白酥、夸夸其谈?”) 库兹威尔是不是只专注于深度学习;虽然他说自己的语音识别方法是基于类似的大脑工作理论。他想为词汇、短语和句子的实际意义,包括通常会让计算机犯错误的含糊含义建立模型。“我有一个以图形化的方式来表示语言语义的初步想法。”他说。 相应地,这将需要更全面的方式,来把句子的含义图形化。谷歌已经在机器翻译中使用这种分析方式提升语法准确率。自然语言理解也需要电脑明白那些含义——虽然我们人类认为那些是常识。为了这个,库兹威尔将利用“知识图谱”。知识图谱是谷歌开发的目录,有700万主题、地点、人物以及其他东西,再加上它们之间数以亿计的关系。这一工具是去年发布的,它提供了一种方法,能为搜索者检索其查询的答案而不仅仅是链接。 最后,库兹威尔计划采用深度算法来帮助计算机处理“软边界和语言的模糊性”。这的确听起来有点惊人。“自然语言理解不是会在某个时刻完成的目标,它比搜索更多,”他说。“这不是我认为我能完成的项目。” 虽然库兹威尔的愿景依然会在许多年后才会成真,但是深度学习可能会比较近的将来,对除语音和图像识别之外的应用产生影响,例如在研发新药物方面。在默克竞赛中,辛顿团队出乎意料的胜利,清楚地表明深度学习的效果:它可以在一个经验缺乏的领域里发挥作用。 这还不是全部。微软的彼得·李说,使用深度学习在机器视觉上的早期研究很有前途,将可用于工业检测和机器人引导之类的应用。他还设想了使用深层神经网络的个人传感器,可以用它来预测健康问题;而且,遍布城市的传感器可能给深度学习系统提供信息,这样可以预测像是哪里会发生堵车之类的情况。 不可避免地,在试图模拟如人类大脑般深刻东西的领域中,单单一种技术不会解决所有挑战。但现在,这种技术在人工智能领域中走在前列。迪安说:“深度学习,是了解世界的一种真正强大的隐喻。” 原文: http://www.techreviewchina.com/home/article/detail/id/344.html 深度学习(Deep Learning)的相关资料总结 : http://blog.sciencenet.cn/blog-830496-679604.html
3199 次阅读|0 个评论
[转载]深度学习与人工智能
jiaqiangzheng 2014-2-19 12:28
使用海量数据来识别照片和语音并实时翻译讲话,深度学习计算机朝着真正的人工迈进了一大步。如果我们能在理论、建模和工程方面,突破深度学习技术面临的一系列难题,人工智能的梦想将不再遥远。 深度学习:而今迈步从头越 ——计算机逐步朝人工智能靠近 科技日报2014-02-16(2),记者 刘 霞 综合外电 使用海量数据来识别照片和语音并实时翻译讲话,深度学习计算机朝着真正的人工迈进了一大步。英国《自然》杂志网站近日就此进行了报道。 深度学习东山再起 2012年,位于美国加州山景城的神秘莫测的Google X实验室的研究人员用1000台计算机(共有1.6万个处理器)构建出了全球最大的电子模拟神经网络——拥有10亿个连接的人工神经网络“谷歌大脑”,并通过向其展示自YouTube视频中提取出的约1000万张静止的图像,考察其能学到什么。结果显示,在无外界指令的自发条件下,该人工神经网络自主学会了识别人脸、人体甚至猫等类别的事物。 也许这看起来只是琐碎的成就,除了表明猫的主人们热衷于上传宠物视频,导致互联网上猫的视频随处可见之外,说明不了更多问题,因此,这一发现也让记者们讪笑不已。但实际上,该成果是深度学习东山再起的一个里程碑。 这一进步也意味着,谷歌在人工智能领域(AI)又达到了一个新的高度,在业界引发广泛关注。对电脑用户而言,人工智能研究一直前景广阔,但迄今成果寥寥,不过情况慢慢发生了变化。在过去几年内,包括谷歌、苹果和IBM等在内的互联网巨擘们一直在积极争夺在深度学习方面拥有专业技术的初创公司和研究人员。 对每个消费者来说,深度学习计算机的显著进步所带来的好处包括:软件能更好地对照片进行筛查、理解语音指令并将对文本进行翻译。而对科学家和医学界人士而言,深度学习计算机能用来筛查药物,标示出大脑内真实的神经网络并预测蛋白质的功能。 “人工智能研究领域遇到的挫败可谓不可胜数,但也取得了稍许进步,或许,未来的研究会一马平川。”深度学习专家、美国纽约大学数据科学中心的主任杨乐康(音译)表示。 “接下来的几年内,很多人会投入深度学习的洪流当中。”美国加州大学伯克利分校的计算机图像识别专家吉腾德拉·马利克也认同这一观点。 不过,从长远来看,深度学习不一定会大获全胜,研究人员目前正在研究的其他技术也显示出了巨大的潜能。马利克说:“随着时间的推移,人们会知道,什么技术在何种领域表现最好。” 深度学习:让机器学会思考和做决定 在解释深度学习之前,我们需要了解什么是机器学习。机器学习是人工智能的一个分支,而在很多时候,几乎成为人工智能的代名词。简单来说,机器学习就是通过算法,使得机器能从大量历史数据中学习规律,从而对新的样本做智能识别或对未来做预测。机器学习的发展大致经历了两次浪潮:浅层学习和深度学习。 深度学习这一技术已有30年的历史了。深度学习旨在模仿人脑的神经网络,其作用就如人类大脑里掌管知觉、运动指令、意识、语言的“新皮层”,它能自己学习辨识声音、图像和其他数据,从而帮助计算机破解一些人类几乎完全依靠直觉来解决的琐碎问题,从识别人脸到理解语言等。 深度学习本身也源于一个更古老的计算理念:神经网络。这些神经网络系统模拟的是人脑内神经细胞之间的紧密关联。这些神经细胞可以彼此沟通,互相施加影响,当把这样一个神经网络暴露在数据面前,不同神经细胞之间的关系会发生改变。这样,网络就会发展出对某个类别的输入数据作出特定反应的能力。通过这种方式,网络就拥有了学习能力,“学”到了一些东西。 “谷歌大脑”大约有100万个模拟神经细胞,模拟了10亿个连接,比此前的任何深度神经网络都要大10多倍。“谷歌大脑”项目的创办人安德鲁·恩格现在是美国斯坦福大学人工智能实验室的主任,致力于使深度学习系统再扩大10倍。 发展历程缓慢艰辛 在上世纪50年代,计算机还是新兴事物,那时,第一代人工智能研究人员就满怀期望地预测,完全成熟的人工智能很快就会到来。但随着人们慢慢认识到客观世界的极端复杂性,尤其是当人们开始接触到诸如人脸为什么是人脸而非一张面具或猴脸这样的知觉或感性问题时,这种过于乐观的想法才逐渐偃旗息鼓。 标准的机器学习以及图像识别技术依靠数以千计带标签的图片,对电脑进行初始“训练”,使电脑从一开始就对猫脸长什么样有一个概念。但图片加标签需要耗费大量人力,成千上万名研究人员耗费了数十年时间来为与计算机需要识别物体的不同特征有关的规则进行手工编码。“找出这些特征非常困难,耗费时间而且需要专业知识。”恩格说,“你不得不问自己,是否还有更好的办法,可以让人解脱出来。” 在上世纪80年代,这种更好的方式似乎是神经网络内的深度学习。这样的系统可以从头开始学习规则,而且具有令人愉悦的对称性——使用受到大脑启发的机制来完成类似大脑的功能。在这一系统中,模拟的神经细胞被组织成不同的层,当向这样的系统展示一副人脸的图片时,第一层只是注意所有黑像素和亮像素;接下来的一层可能可以意识到这些像素会形成边角;再下一层或许可以识别出横线和竖线;最后一层或许可以认出眼睛,能够意识到两只眼睛实际上出现在同一张脸上。 马利克说,与更简单的系统相比,第一个深度学习软件的表现可谓差强人意,而且使用起来还需要技巧。他说:“一直以来,神经网络都需要精细管理,而且其中充满了各种窍门和技巧。”在学习过程中,这样的系统需要被“喂食”大量的实例,就像婴儿贪婪地从周围世界中汲取大量信息一样。在上世纪80年代到90年代,还没有如现在一样多的数字信息可用,而且,计算机的运行速度也很慢,因此,深度学习软件本身非常罕见,其应用更是屈指可数。其中的一套软件由杨乐康研发,目前被银行用来阅读手写的支票。 然而,到2000年左右,情况发生了巨大的变化,似乎是“一夜之间春风来,千树万树梨花开”。2000年以来互联网的高速发展,对大数据的智能化分析和预测提出了巨大需求。包括杨乐康和加拿大多伦多大学机器学习领域的泰斗杰弗里·希顿在内的科学家确信,计算能力的增加和数字数据的大规模爆发意味着,深度学习复兴的时刻到了。希顿的一名研究生乔治·德哈尔表示:“我们想向全世界证明,这些深度学习神经网络真的有用。” 2006年,希顿和学生在顶尖学术刊物《科学》上发表了一篇文章,开启了深度学习在学术界和工业界的浪潮。这篇文章有两个主要信息:一、很多隐层的人工神经网络具有优异的特征学习能力,学习得到的特征对数据有更本质的刻画,从而有利于可视化或分类;二、深度神经网络在训练上的难度,可以通过“逐层初始化”来有效克服,在这篇文章中,逐层初始化是通过无监督学习实现的。 最初,希顿、德哈尔和其他人利用深度学习解决了一个非常困难但从经济角度而言非常重要的语音识别任务。2009年,研究人员报告称,他们利用一组经典的数据对一套深度学习软件进行训练——3个小时的录音和语音翻译,这套深度学习软件能够精确地理解语音的内容,并将其转化为文字,精确度创下了纪录。德哈尔表示,这一进步引起了智能手机市场巨头们的极大关注,他在微软实习期间,将这套技术带到了微软。德哈尔说:“几年后,这些巨头们都开始研究深度学习。”例如,苹果手机上的声控数字助手(Siri)就是建立在深度学习的基础上。 今天,谷歌、微软等知名的拥有大数据的高科技公司争相投入资源,占领深度学习的技术制高点,正是因为它们都看到了在大数据时代,更加复杂且更加强大的深度模型能深刻揭示海量数据里所承载的复杂而丰富的信息,并对未来或未知事件作出更精准的预测。 在语音和图像识别领域取得巨大飞跃 当谷歌公司在其安卓智能手机操作系统上采用基于深度学习的语音识别技术后,其单词拼写的错误率下降了25%,这是语音识别领域10多年来最大的突破性进展。“我们耗费10年时间才能做到这一点。”希顿表示,这也反映了要想在这一领域取得突破是多么困难。 与此同时,恩格也说服谷歌,让他使用该公司与“谷歌大脑”有关的数据和计算机。“谷歌大脑”能从互联网视频中识别出猫的图像,这极准确而恰当地展示了无人监督学习的潜力。无人监督学习是最困难的学习任务,因为输入的信息没有附着任何解释性信息,比如姓名、标签或类别等。但恩格很快遇到了麻烦,因为很少有谷歌以外的研究人员拥有如此丰富而有力工具来开展与深度学习有关的研究。“我和很多人谈过话,很多学生沮丧地跑过来告诉我说,我又没有1000台计算机来用,我如何进行这类研究呢?” 因此,恩格回到斯坦福大学,开始利用图形处理单元(GPU,这种运行速度超快的芯片主要为游戏而研发)来研制更大、成本更低的深度学习网络,也有很多人在这么做。恩格说:“使用大约价值10万美元的硬件,我们能利用64个GPU,建造出一个拥有110亿个连接的网络。” 但这样的系统要想赢得机器视觉科学家的青睐,可能还需要“百尺竿头,更进一步”。这些机器视觉科学家希望能在标准化测试方面看到其优异的表现。马利克记得,希顿曾经问过他:“你是一个怀疑论者,什么使你如此确信深度学习系统的潜力呢?”马利克回答说:“深度学习系统在国际闻名的数据池(ImageNet)竞赛中取胜或许让我看到了其巨大的潜能。” 在该比赛中,研究团队需要训练计算机程序识别与100万张图像有关的一套数据,这些图像已被人工贴上了各类标签。经过训练后,通过让这些程序从以前未曾见过的图像中找出同样的标签来测试这些程序的性能。每一幅测试图像,程序都会给出5个答案,如果正确的答案并非其中之一,那么,这一测试就被认为是错误的。以前,获胜者们一般的出错率为25%。2012年,希顿的实验室使用深度学习获得了冠军,错误率仅为15%。 杨乐康并非这个团队的一员,不过,他说:“深度学习影响了很多方面。”这次获胜让希顿在谷歌获得了一份兼职工作,该公司2013年也使用该程序来对其谷歌+图像搜索软件进行了升级。 马利克说:“在科学领域,你经常会受到经验证据的摆弄,而这是扎扎实实的证据。”后来,他携这项技术参与另一项视觉识别竞赛,并破了纪录。很多人开始效尤这一做法:2013年,所有参加ImageNet竞赛的团队都开始使用深度学习技术。 随着深度学习技术在图像和语音识别领域不断取得突破,科学家们对用其来处理自然语言的兴趣也与日俱增,包括用其来理解人类的演说以进行转述或回答相关问题,将一种语言翻译成另一种语言等。现在,科学家们使用手写的规则和对已知的文本进行统计分析来做上述事情。深度学习在自然语言方面的最好表现在“谷歌翻译”这样的软件上得到了彰显,尽管谷歌翻译能提供可理解的结果,但是,与人类的翻译比起来,还要差很多。 总的来说,深度学习在自然语言处理方面取得的进展没有在语音图像上那么令人印象深刻。一个很有意思的悖论是:相比于声音和图像,语言是唯一的非自然信号,是完全由人类大脑产生和处理的符号系统,但模仿人脑结构的人工神经网络却似乎在处理自然语言上没有显现明显优势。 语言学习翻译服务网站Duolingo的创办者、卡内基梅隆大学教授路易斯·冯·安表示:“在这一方面,深度学习还有很大的探索空间,从2006年图像深度学习成为学术界热门课题到2012年10月希顿在ImageNet上取得重大突破,经历了6年时间。我们需要有足够的耐心。我们也相信,深度学习在自然语言处理方面的表现会越来越好。” 在其他领域拥有巨大运用潜力 与此同时,科学家们也不断证明,深度学习在完成很多科研任务方面非常管用。希顿说:“深度网络真的很擅长在数据组中发现模式。” 2012年10月份,希顿领导的研究团队赢得了美国化学与制药公司默克公司举办的一场竞赛,竞赛的主旨是鉴别出可导致新药的分子,该团队正是采用深度学习的方法,将目标对准那些最有可能与靶标绑定的分子,从而取得成功赢得了2.2万美元的奖金。希顿说:“我们将默克公司的基准提高了15%。”美国《纽约时报》也对这一重要成果进行了详细报道。 包括美国麻省理工学院的塞巴斯蒂安·程在内的生物学家和计算研究人员目前正利用深度学习技术来帮助他们分析大脑切片的三维图像。这样的图像包含有很多揉成一团的线条,这些线条代表了神经细胞之间的连接,需要将这些线条鉴别出来,以便于对其进行标示和计数。以前,他们的做法是,招募本科生来追踪和勾勒这些线条,但让这一过程自动化是处理数十亿计连接的唯一方式。深度学习似乎是自动化的最好方式。塞巴斯蒂安·程目前正使用深度学习程序来标示视网膜内的神经细胞,接着会将得到的结果提交给志愿者进行校对。 美国华盛顿大学的计算机专家威廉姆·斯塔福-诺贝尔则使用深度学习来教导程序检查一串氨基酸并对得到的蛋白质结构进行预测。例如,不同的氨基酸序列会形成螺旋还是环;某个溶剂是否能很容易地渗入结构内的缝隙中等等。迄今为止,诺贝尔已经训练这一程序能识别小的数据组,在接下来的几个月内,他将使用包含有10万个结构的蛋白质数据库来检验这套深度学习软件的性能。 对计算机专家们而言,深度学习可能会让他们获益颇丰:德哈尔正在考虑创办深度学习公司;而杨乐康上个月被“脸谱”网站雇佣,成为该网站新成立的人工智能部门的负责人。恩格说:“深度学习不再是养在深闺无人时,目前正生逢其时,你填入的数据越多,它的表现也就越好。”不过,他也强调说:“尽管很多时候,深度学习算法都非唯一的解决办法,但它是最好的,当然也是最容易的。这也是为什么其未来拥有巨大潜力的原因。” 其他竞争性的想法 当然,也并非所有科学家都看好深度学习,他们正在尝试使用其他方法来解决问题。比如,美国华盛顿大学计算机科学与工程系教授、艾伦人工智能研究所的负责人奥伦·埃齐奥尼的目标是发明一台计算机——当给其“喂食”一堆经过扫描的教科书后,其能通过标准化的小学科学测试(如果其不断加强,最终能通过大学入学考试)。为了通过这些测试,这台计算机必须能阅读并理解图表和文本。不过,艾伦人工智能研究所如何实现这一目标还是一个未知数。但对埃齐奥尼来说,神经网络和深度学习并非他们的首选。 一个竞争性的想法是,让计算机能在基本输入事实上的基础上进行推理,而非从头开始学习事实。因此,科学家们或许会为这种计算机编写程序,让其识别“所有的女孩都是人”这样的论断。接着,当一篇提到一个女孩的文本被提交给这台计算机时,计算机能推导出这个女孩是人。但这样的计算机也有自己的问题,因为我们周围的世界太纷繁复杂,即使没有数百万个,也有数十万个这样的事实。 目前,在这方面表现最好的就是IBM公司的计算机沃森(Watson)。Watson运算更快,记忆力更好,它也懂一些人类语言中的暗喻和双关。2011年,Watson在美国最受欢迎的智力竞赛节目Jeopardy中战胜人类,获得冠军,从而声名大噪。尽管如此,IBM公司沃森解决方案实验室的科学家们对深度学习在改进模式识别方面的优异表现也产生了兴趣。 谷歌也是如此,尽管其图像标记方面的最新进展主要得益于辛顿的深度学习网络,但其他研发部门也得到了足够多的关注。2012年12月,谷歌雇佣未来学家雷·库兹韦尔做其工程部主管,库兹韦尔的主要任务是使用但不局限于深度学习的技术,来为计算机寻找不同的方式,让其能从日常经验中学习。 去年5月份,谷歌购买了一台由加拿大D-Wave公司研制而成的量子计算机。尽管从理论上而言,这台计算机能用于深度学习领域,但科学家们目前主要用其来处理非人工智能方面的任务,比如困难的数学计算等。 深度学习带来了机器学习的一个新浪潮,受到从学术界到工业界的广泛重视,也导致了“大数据+深度模型”时代的来临。在应用方面,深度学习使得语音图像的智能识别和理解取得惊人进展,从而推动人工智能和人机交互大踏步前进。尽管如此,深度学习仍然还处于襁褓阶段。“它是未来的一部分。”德哈尔说,我们才刚刚开始。如果我们能在理论、建模和工程方面,突破深度学习技术面临的一系列难题,人工智能的梦想将不再遥远。 本篇文章来源于: 中国科技网 www.wokeji.com 原文链接:http://www.wokeji.com/jbsj/eb/201402/t20140216_646254.shtml
个人分类: 揽胜|4342 次阅读|0 个评论
从新皮质层Neocortex开始
wolfewu 2014-2-7 22:41
声明:这篇文章 摘自Dileep George的博士学位论文《How the brain might work》 Neocortex新大脑皮层(拉丁语,表示“新皮层” 或者“新外壳”),也被称作为neopallium(“新壁炉架”)或iscortex(“外壳等价物”),是哺乳动物大脑的一部分。它是大脑两个半球的外层,由六层结构组成,各层用I到VI标记(VI是最里层,I是最外层)。新大脑皮层是大脑皮层的一部分(与古皮层和原皮层连在一起,而这两个皮层是边缘系统的一部分)。它涉及到更高级的功能(相对于大脑的基本功能)例如感观知觉,运动指令的产生,空间推理,理性思考和语言。 ——Wikipedia 如果从机器学习的观点来看待对大脑的研究,就会发现不论机器学习以及分类算法设计得多么牛X,这些方法,即先训练参数化自适应模型再通过某种准则调整参数来完成新的分类任务的方法,都隐含着一些机器学习的基本问题。 “没有免费的午餐”(No free Lunch, NFL定理),没有学习算法内在地比其他学习算法优越。如果说解决一个具体问题的算法比其它的优越,它只不过因为这个算法探究了适合这个问题的假设条件。同一个算法不可能很好地解决与原先假设完全不同的问题。这就意味着,为了使算法有效地解决问题,机器学习的研究者必须将目标问题领域的先验知识嵌入到最初的模型结构中。嵌入的先验知识越多,训练起来就越容易。这是否意味着我们需要为每一个试图用机器学习来解决的新问题创造一个新的模型?这实在是太费力了。 话说回来,人类和其他哺乳动物解决问题的方式是不一样的。人类会学习,能够适应原来没有遇到过的新问题。很多研究者都猜想新大脑皮层是使用相同的基本算法来学习不同的模式。这意味着我们学习听觉、视觉、体觉感知以及语言都是同一种算法在运作。很多研究发现都支持这样的观点——通用皮层算法是存在的。 将通用皮层算法和NFL定理组合在一起,就可以得到机器学习的重要推论,并可由此创造新的智能机器。表面上看,NFL定理看起来给存在通用皮层算法的想法带来了不少的麻烦。一种机制或者算法如何才能很好地就完成听觉、视觉以及语言这些不同的任务?答案来自NFL本身,也就是我们需要探究的问题的前提假设。也就是说,通用皮层算法与NFL定理是可以相互保持一致的,只要我们能够发现学习视觉、听觉和语言的相同基本假设。如果说大脑皮层善于使用通用机制学习各种各样的任务,那么在这些看起来完全不同的任务之间就一定存在着某种通用的东西。生物的进化一定发现了这种通用性的东西,而新大脑皮层就是它的操作主体。 从NFL定理出发可以得出这样的结论:一种统一的学习理论在本质上就是一种统一的假设理论。如果输入是从未遇到过的信息,学习机用于预测输出的假设集合就被认为是学习算法的“归纳偏向”。我们所做的假设越多,学习就越容易。然而,我们所做的假设越多,我们所能解决的问题数量就越少。如果想要设计解决一大类问题的算法,我们所要回答的就是:什么样的基本假设是足够具体的,以使得在合理的时间内实现学习;而它(们)又足够一般以能解决一大类问题?这就是要研究新大脑皮层所需要做的。 对新大脑皮层实施反向工程是个令人望而生畏的问题。如何搜寻这些统一假设?脑中有许多解剖学和生理学的细节;如何知道那个重要,那个不重要?什么只不过是生物学上的细节,因为只有神经元在起作用;什么才是绝对不能漏掉的重要计算原则? 同时研究新大脑皮层和现实世界是个不错的策略。研究新大脑皮层的解剖学和生理学结构会为找到关于它所作出的假设的本质提供重要线索。研究新大脑皮层的组织结构,就需要寻找与学习的观点有关的一般原则。因此,只需要选择那些能够在现实世界中找到对应物的一般原则。如果新大脑皮层中的一种组织结构特性与现实世界的一种组织结构特性(也就是一般原则)相匹配,就有理由肯定找到了一条与学习的观点有关的一般原则。 记忆-预测框架 Jeff Hawkins 在《人工智能的未来》中从生物学观点和计算的观点出发,提出了大脑皮层运作理论,称之为记忆-预测框架。其主要观点如下: 新大脑皮层为输入其中的空间和时间模式创建了一个模型。创建这个模型的目标是为了预测输入的下一个模式。 大脑皮层是由一种称为规范皮层回路的基本计算单元反复复制构成。从计算观点来讲,这样的规范回路可以看做是被反复复制若干次的节点。 皮层被组织成为层次结构,这意味着上面所说的节点彼此连接形成了树形的层次结构。 皮层的功能就是对它所“看到”的世界进行建模。这个模型是一种时空层次结构,结构中的每一个节点都存储了模式和序列。它随后就用于对输入进行预测。 新大脑皮层以无监督方式对现实世界建模。 结果中的每一个节点都存储了大量的模式和序列。皮层就是依靠这些模式来进行模式识别。 一个节点的输出是用它所学习过的模式序列表达的。 消息在层次结构中向上和向下传递以识别和分辨信息,并且还在时间上向前传播以预测下一个输入的模式。 记忆-预测框架的数学表达形式就是层次瞬时记忆(Hierarchical Temporal Memory, HTM)。
4514 次阅读|0 个评论
初识 Hierarchical Temporal Memory
wolfewu 2014-2-7 22:20
这是一篇我在几年前对Numenta公司的网页上的一些内容的翻译。虽然原网页已经变了,但是对认识Hierarchical Temporal Memory(HTM)多少有些帮助吧。维基百科比较详细的介绍,网址是 http://en.wikipedia.org/wiki/Hierarchical_temporal_memory Hierarchical Temporal Memmory:这个名字里面都是些什么呢? 选择这个名字的原因是: H ierarchical ——HTMs(复数的)被组织成为一种树形的节点层次结构。各个节点实现了一个学习与记忆的函数,也就是说,每个节点中封装了一种算法。低层节点接受大量的输入,并将处理过的信息作为输入送到接下来的一层。以这种方式,随着信息沿着层次结构逐层上传,它被HTM网络处理得越来越抽象。 T emporal ——在训练过程中,必须用目标随着时间变化的观点来表述HTM应用。在图片应用的训练中,先从上到下然后从左到右地描述图像,就好像图像正随着时间运动。请注意,非持久性(Temporal,我的理解为照片在每一时刻所处的位置都不应该一样)的要素非常重要:所设计的算法本身就期望目标随着时间渐渐发生变化(也就是说这是算法的需要)。 M emory ——一个HTM应用会分为两个阶段,可以分别认为是“训练记忆阶段”和“使用记忆阶段”。在训练过程中,HTM学着从它接受到的输入中识别模式。这样单独地训练层次结构中的每一层。完全训练好的HTM网络中的每一层都知道——都记得——它自己世界中的目标。在推导过程中,当HTM网络前摆着新的目标时,HTM网络就可以确定一个目标是某个已知目标的似然函数。 HTM技术与传统的计算机应用 HTM应用与传统的计算机应用是不同的。传统上每一个程序解决一个具体问题例如处理电邮或是分析数据。与此相反,HTM算法可以被训练来解决不领域不同类型的问题。程序员为HTM网络准备数据并训练HTM网络。受过训的网络可以分析新的信息并对其采取行动(暂时这样翻,原文是act on it)。 HTM技术与现有的数据建模技术 乍一看,许多其他的数据建模技术都看起来像HTM技术,然而却不具备HTM的所用功能。HTMs与众不同的特征是: 一个HTM网络即处理时间信息又处理空间信息。 受过训的HTM网络可以产生数据,也就是说可以在时间上向前预测。 有着很坚实的生物学基础。 在 Jeff Hawkins 的《人工智能的未来》这本书中,他对这个话题讨论得更为详细。他指出了传统技术如专家系统和神经网络与HTM的不同之处:所有其他技术都试图模拟人类行为,而唯有HTM是基于“人脑是如何工作的”这样一套理论的。 适合HTM应用的问题 成功应用HTM的关键在于把它用于一个适合HTM的问题并对该问题进行恰如其分的阐述。《适合HTMs的问题》白皮书对这个问题进行了详细探讨。这一节概述几个最为重要的观点。 有些问题并不是很适合HTMs:HTM并不适于解决可以用一组离散的规则就能解决的问题。HTM更适宜于解决含混不清和嘈杂领域的问题。需要具体时间的问题(如乐曲识别)并不适于这一代的HTMs(看来还需要进化 )。 HTM最适合于这样的问题:用于建模的数据是从时变(随时间变化的)causes的层次结构中产生的。这里的一个cause是指一个产生HTM输入数据的目标(好像可以理解为因果关系的“因”)。这个问题必须同时包含空间和时间成分。例如白皮书中讨论过的汽车监视系统、波浪采样等应用,后者用监视器的输入来对河流的状态进行分类。 这两个例子都包含了时间元素:车辆监视系统中,传感器跟踪例如引擎温度等的信息。波浪采样中,传感器跟踪河流的温度。 两个例子都包含了一个空间层次结构:车辆监视系统中,不同的系统组成了更大的子系统,这些子系统又组成了汽车。波浪采样中,河流状态包含了一个个体温度的集合。 就好像人类大脑,HTM网络需要充分的训练数据。有了这些充分的数据,HTM网络就可以很好地处理含混和嘈杂问题,并且能使用从不同的来源信息(温度,速度等)。它们同样不需要数据上的对称。 总而言之,HTM所应用的领域需要有一个内在的层次结构,并且数据必须有时间和空间的关联。同时还要有以时间序组织起来的充分数据以供训练。
8111 次阅读|0 个评论
对HTM白皮书中文译本的个人勘误(1)
wolfewu 2014-2-7 21:48
声明:最近看到了Numenta的网站上有了CLA皮质学习算法中文版本的白皮书(白皮书的网页链接是 http://numenta.org/cla-white-paper.html ), 看了下实在是不敢恭维翻译的质量,所以自己将其中的部分内容翻译整理了一下。文中的相关图片全部引自英文版的白皮书。欢迎大牛们批评指正~~ 约定:我们用Hierarchy 来直接表示层级组织结构,用region表示区域/层级,用level来表示hierachical中的等级 什么是HTM?(我的另一篇文章也做了介绍 http://blog.sciencenet.cn/blog-1245419-765449.html )是指Hierarchical Temproal Memory, 直译是层次化的时间记忆。是一种模拟人脑皮层结构的新型神经体系结构,与现有的用数学模型描述的ANN有很大的区别。但是他们的研究目的都是一样的——实现人工智能 HTM原理 在这部分我们会涉及到HTM的一些核心原理,要说明几个问题:为什么hierarchical是重要的,HTM 的region是如何构建的,为什么数据要以sparse distributed representation的形式储存,为什么基于时间的信息是关键。 层级组织结构 (Hierarchy) 一个HTM是由按层级排列的多个region所组成的。region是HTM中的主要记忆和预测单元,我们将会在下面的部分详细介绍。通常而言,每个region代表Herarchical中的一个level。信息沿着Hierachy中的level上升总是在进行聚合(聚合本身就是一个复杂的问题),下一个level的多个子元素将被聚合到上一个level的一个子元素中。然而,由于反馈连接的存在,信息也会随着level的下降而不断分流。(level和region基本上是同意词。当描述region的内在功能时我们使用“region”,档描述region对于整个Hierarchy的影响时 我们使用“level”一词。 图 1.1: 4 level的HTM的例子,每个level就是一个region,在level间,region内以及HTM的输入输出都存在数据通信 我们完全有可能将多个分支HTM网络组合到一起来使用(见图1.2)。这种结构可以利用来自多个数据源和感受器提供的数据(也就是所谓的Multimodal的数据)。举个例子,一个分支HTM网络可能是处理音频信息而另一个分支HTM网络可能是处理视觉信息。在每一个分支HTM网络内存在聚合,而各个分支HTM的输出信息只向上聚合(分之间并没有信息传输)。 图1.2:对不同感受器的网络进行聚合 组织成Hierarchy的好处就是高效率。它显著减少了训练时间和存储空间,因为每一level中已学会的模式将以一种新奇的方式被组合在一起到更高的level中得到重用。我们以视觉为例进行说明。在人的大脑中,Hierarchy的最低level储存着许多有关视场中极小区域的信息,例如“边”和“角”。它们是许多视觉对象的基本构件。我们称之为模式。这些低level的模式将会在中level内重组成为更复杂的模式,例如曲线和条纹。一条弧线可以是耳朵的轮廓,方向盘的上部,咖啡杯的杯把。这些中level模式被进一步组合起来用于表征高level的(视觉)对象特征,例如脑袋、汽车、房子。因此,学习一个新的高level的(视觉)对象时,不需要重学它的构件,因为这些构件是在高level的(视觉)对象之间共享的。再例如,想想当你学习一个新单词的时候,你不需要再去学习字母、音节、因素等这些低level的语言构建了。 在hierarchy内共享表征(也就是前面所说的构件)也导致了对“期望行为”的泛化。啥意思呢?比如,当你看见一只新的动物,如果你看到了它的嘴和牙齿,你会预测这个动物用它的嘴来进食,并有可能会咬你。Hierarchy使得你看到的新对象可以继承其子构件的已知特性。(“期望行为“的泛化在哪里呢?在上例中,”嘴“、”牙齿“这些构件的”吃“和”咬“的行为被泛化了,所以就能够用于预测新视觉对象的行为。这种泛化是一个对低level构件进行”抽象“的过程,这是后话) HTM中的一个level能学习多少内容呢?或者换句话说,需要多少个level才够用呢?我需要在每level的存储空间与level的数量间进行权衡。幸运地是,在给定输入的统计量和分配所得的资源数量后,HTM可以自动地在各level上学习到与这些给定数据相适应的最佳表征。如果你为某一层分配了较多的空间,那一层将构建更大更复杂的表征,这也就意味着需要更少的层级。如果你为某层分配了较少的空间,那一层将构建较小、较简单的表征,这也就意味着可能需要更多的层级。(说些题外话,类似的问题在传统的ANN中也是存在的,只不过扁平网络需要比较大的隐含层,大概是深度的指数级倍数,而较为深的网络又难以训练成功,至少在Deep Learning 出现前是这样) 到此目前为止,我们已经描述了许多较难的问题,例如视觉推导(”推导“类似于模式识别)。但是许多有价值的的问题比视觉要简单,而且用一个HTM的region就足以解决。例如,我们用一个HTM网络来预测一个浏览网站的人下一步会点击哪里。这个问题涉及到使用web点击数据流来训练HTM网络。在这个问题中,有着很少甚至没有空间上的Hierarchy,求解这个问题的过程主要是发现与时间相关的统计量,也就是说通过识别典型的用户模式来预测用户的下一步会点击哪里。 总而言之,hierarchy能减少训练时间,减少存储空间,并引入了一种泛化的形式。尽管如此,有的时候一个简单的HTM的region就能解决许多简单的预测问题。 (后文请查阅本系列的第2篇,讲述有关region的原理)
4605 次阅读|0 个评论
[转载]加州大学圣迭戈分校学习算法研讨会 deep learning 深度学习
hestendelin 2013-12-1 21:48
摘自: http://cseweb.ucsd.edu/~dasgupta/254-deep/ CSE 254: Seminar on Learning Algorithms Time TuTh 3.30-5 in CSE 2154 Instructor: Sanjoy Dasgupta Office hours TBA in EBU3B 4138 This quarter the theme of CSE 254 is deep learning . Prerequisite: CSE 250AB. The first couple of lectures will be an overview of basic material. Thereafter, in each class meeting, a student will give a talk lasting about 60 minutes presenting a technical paper (or several papers) in detail. In questions during the talk, and in the final 20 minutes, all seminar participants will discuss the paper and the issues raised by it. Date Presenter Paper Slides Jan 10 Sanjoy Introduction Jan 12 Sanjoy Hopfield nets Jan 17 Sanjoy Markov random fields, Gibbs sampling, simulated annealing Jan 19 Sanjoy Deep belief nets as autoencoders and classifiers Jan 24 Brian Task-driven dictionary learning here Jan 26 Vicente A quantitative theory of immediate visual recognition here Jan 31 Emanuele Convolutional deep belief networks here Feb 2 Nakul Restricted Boltzmann machines: learning , and hardness of inference here Feb 7 Craig The independent components of natural scenes are edge filters here Feb 9 No class: ITA conference at UCSD Feb 14 Janani Deep learning via semi-supervised embedding here Feb 16 Stefanos A unified architecture for natural language processing here Feb 21 Hourieh An analysis of single-layer networks in unsupervised feature learning here Feb 23 Ozgur Emergence of simple-cell receptive properties by learning a sparse code for natural images here Feb 28 Matus Representation power of neural networks: Barron , Cybenko , Kolmogorov here Mar 1 Frederic Reinforcement learning on slow features of high-dimensional input streams Mar 6 Dibyendu, Sreeparna Learning deep energy models and What is the best multistage architecture for object recognition? here Mar 8 No class: Sanjoy out of town Mar 13 Bryan Inference of sparse combinatorial-control networks here Mar 15 Qiushi Weighted sums of random kitchen sinks here This is a four unit course in which the work consists of oral presentations. The procedure for each student presentation is as follows: · One week in advance: Finish a draft of Latex/Powerpoint that present clearly the work in the paper. Make an appointment with me to discuss the draft slides. And email me the slides. · Several days in advance: Meet for about one hour to discuss improving the slides, and how to give a good presentation. · Day of presentation: Give a good presentation with confidence, enthusiasm, and clarity. · Less than three days afterwards: Make changes to the slides suggested by the class discussion, and email me the slides in PDF, two slides per page, for publishing. Try to make your PDF file less than one megabyte. Please read, reflect upon, and follow these presentation guidelines , courtesy of Prof Charles Elkan. Presentations will be evaluated, in a friendly way but with high standards, using this feedback form . Here is a preliminary list of papers .
个人分类: 深度学习|2490 次阅读|0 个评论
[转载]CMU2013 DeepLearning Course 卡内基梅隆大学 深度学习课程
hestendelin 2013-11-30 10:55
Deep LearningInstructor: Bhiksha Raj COURSE NUMBER -- MLD: 10805 LTI: 11-785 (Lab) / 11-786 (Seminar) Timings: 1:30 p.m. -- 2:50 p.m. Days: Mondays and Wednesdays Location: GHC 4211 Website: http://deeplearning.cs.cmu.edu Credits: 10-805 and 11-786 are 6-credit seminar courses. 11-785 is a 12-credit lab course. Students who register for 11-785 will be required to complete all lab exercises. IMPORTANT: LTI students are requested to switch to the 11-XXX courses. All students desiring 12 credits must register for 11-785. Instructor: Bhiksha Raj Contact: email:bhiksha@cs.cmu.edu, Phone:8-9826, Office: GHC6705 Office hours: 3.30-5.00 Mondays. You may also meet me at other times if I'm free. TA: Anders Oland Contact: email:anderso@cs.cmu.edu, Office: GHC7709 Office hours: 12:30-2:00 Fridays. Deep learning algorithms attempt to learn multi-level representations of data, embodying a hierarchy of factors that may explain them. Such algorithms have been demonstrated to be effective both at uncovering underlying structure in data, and have been successfully applied to a large variety of problems ranging from image classification, to natural language processing and speech recognition. In this course students will learn about this resurgent subject. The course presents the subject through a series of seminars, which will explore it from its early beginnings, and work themselves to some of the state of the art. The seminars will cover the basics of deep learning and the underlying theory, as well as the breadth of application areas to which it has been applied, as well as the latest issues on learning from very large amounts of data. Although the concept of deep learning has been applied to a number of different models, we will concentrate largely, although not entirely, on the connectionist architectures that are most commonly associated with it. Students who participate in the course are expected to present at least one paper on the topic to the class. Presentations are expected to be thorough and, where applicable, illustrated through experiments and simulations conducted by the student. Students are registered for the lab course must also complete all lab exercises. Labs Lab 1 is up Lab 1: Perceptrons and MLPs Data sets Due: 18 Sep 2013 Lab 2 is up Lab 1: The effect of increasing network depth Data set Due: 17 Oct 2013 Papers and presentations Date Topic/paper Author Presenter Additional Links 28 Aug 2013 Introduction Bhiksha Raj Intelligent Machinery Alan Turing Subhodeep Moitra 4 Sep 2013 Bain on Neural Networks. Brain and Cognition 33:295-305, 1997 Alan L. Wilkes and Nicholas J. Wade Lars Mahler McCulloch, W.S. Pitts, W.H. (1943). A Logical Calculus of the Ideas Immanent in Nervous Activity, Bulletin of Mathematical Biophysics, 5:115-137, 1943. W.S. McCulloch and W.H. Pitts Kartik Goyal Michael Marsalli's tutorial on the McCulloch and Pitts Neuron 9 Sep 2013 The Perceptron: A Probalistic Model For Information Storage And Organization In The Brain. Psychological Review 65 (6): 386.408, 1958. F. Rosenblatt Daniel Maturana ?? Chapter from “The organization of Behavior”, 1949. D. O. Hebb Sonia Todorova 11 Sep 2013 The Widrow Hoff learning rule (ADALINE and MADALINE). Widrow Pallavi Baljekar ?? Optimal unsupervised learning in a single-layer linear feedforward neural network. Neural Networks 2 (6): 459.473, 1989. T. Sanger Khoa Luu A simplified Neuron model as a principal component analyzer, by Erkki Oja 16 Sep 2013 Learning representations by back-propagating errors. Nature323(6088): 533.536 Rumelhart et al. Ahmed Hefny Chapter by Rumelhart, Hinton and Williams Backpropagation through time: what it does and how to do it., P. Werbos, Proc. IEEE 1990 A Direct Adaptive Method for Faster Backpropagation Learning: The RPROP Algorithm, IEEE Intl. Conf. on Neural Networks, 1993 M. Riedmiller, H. Braun Danny (ZhenZong) Lan 18 Sep 2013 Neural networks and physical systems with emergent collective computational abilities, Proc. Natl. Acad. Sciences, Vol 79, 2554-2558, 1982 J. J. Hopfield Prasanna Muthukumar The self-organizing map. Proc. IEEE, Vol 79, 1464:1480, 1990 Teuvo Kohonen Fatma Faruq 23 Sep 2013 Phoneme recognition using time-delay neural networks, IEEE trans. Acoustics, Speech Signal Processing, Vol 37(3), March 1989 A. Waibel et al. Chen Chen A tutorial on training recurrent neural networks, covering BPPT, RTRL, EKF and the echo state network approach, GMD Report 159, German National Research Center for Information Technology, 2002 Herber Jaeger Shaowei Wang 25 Sep 2013 Bidirectional recurrent neural networks, IEEE transactions on signal processing, Vol 45(11), Nov. 1997 M. Schuster and K. Paliwal Felix Juefei Xu Long short-term memory. Neural Computation, 9(8):1735.1780, 1997 S. Hochreiter and J. Schmidhuber Dougal Sutherland 30 Sep 2013 A learning algorithm for Boltzmann machines, Cognitive Science, 9, 147-169, 1985 D. Ackley, G. Hinton, T. Sejnowski Siyuan Improved simulated annealing, Boltzmann machine, and attributed graph matching, EURASIP Workshop on Neural Networks, vol 412, LNCS, Springer, pp: 151-160, 1990 Lei Xu, Erkii Oja. Ran Chen 2 Oct 2013 Neocognitron: A new algorithm for pattern recognition tolerant of deformations and shifts in position, Pattern Recognition Vol. 15(6), pp. 455-469, 1982 K. Fukushima, S. Miyake Sam Thomson Shift invariance and the Neocognitron, E. Barnard and D. Casasent, Neural Networks Vol 3(4), pp. 403-410, 1990 Face recognition: A convolutional neural-network approach, IEEE transactions on Neural Networks, Vol 8(1), pp98-113, 1997 S. Lawrence, C. L. Giles, A. C. Tsoi, A. D. Back Hoang Ngan Le Best Practices for Convolutional Neural Networks Applied to Visual Document Analysis, P.Y.Simard, D. Steinkraus, J.C. Platt, Prc. Document analysis and recognition, 2003 Gradient based learning applied to document recognition, Y. LeCun, L. Bottou, Y. Bengio, P. Haffner. Proceedings of the IEEE, November 1998, pp. 1-43 7 Oct 2013 On the problem of local minima in backpropagation, IEEE tran. Pattern Analysis and Machine Intelligence, Vol 14(1), 76-86, 1992 M. Gori, A. Tesi Jon Smereka Learning long-term dependencies with gradient descent is difficult, IEEE trans. Neural Networks, Vol 5(2), pp 157-166, 1994 Y. Bengio, P. Simard, P. Frasconi Keerthiram Murugesan Gradient flow in recurrent nets: the difficulty of learning long-term dependencies, S. Hochreiter, Y. Bengio, P. Frasconi, J. Schmidhuber, in A Field Guide to Dynamical Recurrent Neural Networks, IEEE Press , 2001 Backpropagation is sensitive to initial conditions, J. F. Kolen and J. B. Pollack, Advances in Neural Information Processing Systems, pp 860-867, 1990 9 Oct 2013 Multilayer feedforward networks are universal approximators, Neural Networks, Vol:2(3), 359-366, 1989 K. Hornik, M. Stinchcombe, H. White Sonia Todorova Approximations by superpositions of a sigmoidal function, G. Cybenko, Mathematics of control, signals and systems, Vol:2, pp. 303-314, 1989 On the approximation realization of continuous mappings by neural networks, K. Funahashi, Neural Networks, Vol. 2(3), pp. 183-192, 1989 Universal approximation bounds for superpositions of a sigmoidal function, A. R. Barron, IEEE Trans. on Info. Theory, Vol 39(3), pp. 930-945, 1993 On the expressive power of deep architectures, Proc. 14th intl. conf. on discovery science, 2011 Y. Bengio and O. Delalleau Prasanna Muthukumar Scaling learning algorithms towards AI, Y. Bengio and Y. LeCunn, in Large Scale Kernel Machines , Eds. Bottou, Chappelle, DeCoste, Weston, 2007 Shallow vs. Deep sum product networks, O. Dellaleau and Y. Bengio, Advances in Neural Information Processing Systems, 2011 14 Oct 2013 Information processing in dynamical systems: Foundations of Harmony theory; In Parallel Distributed Processing: Explorations in the microstructure of cognition , Rumelhart and McLelland eds., 1986 Paul Smolensky Kathy Brigham Geometry of the restricted Boltzmann machine, M. A. Cueto, J. Morton, B. Sturmfels, Contemporary Mathematics, Vol. 516., pp. 135-153, 2010 Exponential family harmoniums with and application to information retrieval, Advances in Neural Information Processing Systems (NIPS), 2004 M. Welling, M. Rosen-Zvi, G. Hinton Ankur Gandhe Continuous restricted Boltzmann machine with an implementable training algorithm, H. Chen and A. F. Muray, IEE proceedings on Vision, Image and Signal Processing, Vol. 150(3), pp. 153-158, 2003 Diffusion networks, product of experts, and factor analysis, T. K. Marks and J. R. Movellan, 3rd Intl. Conf. on Independent Component Analysis and Signal Separation, 2001 16 Oct 2013 Distributed optimization of deeply nested systems. Unpublished manuscript, Dec. 24, 2012, arXiv:1212.5921 M. Carrera-Perpiñan and W. Wang M. Carrera-Perpiñan 21 Oct 2013 Training products of experts by minimizing contrastive divergence, Neural Computation, Vol. 14(8), pp. 1771-1800, 2002 G. Hinton Yuxiong Wang On contrastive divergence learning, M. Carrera-Perpinñan, AI and Statistics, 2005 Training Restricted Boltzmann Machines using Approximations to the Likelihood Gradient, T. Tieleman, International conference on Machine learning (ICML), pp. 1064-1071, 2008 An Analysis of Contrastive Divergence Learning in Gaussian Boltzmann Machines, Chris Williams, Felix Agakov, Tech report, University of Edinburgh, 2002 Justifying and generalizing contrastive divergence, Y. Bengio, O. Delalleau, Neural Computation, Vol. 21(6), pp. 1601-1621, 2009 23 Oct 2013 A fast learning algorithm for deep belief networks, Neural Computation, Vol. 18, No. 7, Pages 1527-1554, 2006. G. Hinton, S. Osindero, Y.-W. Teh Aaron Wise Reducing the dimensionality of data with Neural Networks, G. Hinton and R. Salakhutidnov, Science, Vol. 313. no. 5786, pp. 504 - 507, 28 July 2006 Greedy layer-wise training of deep networks, Neural Information Processing Systems (NIPS), 2007. Y. Bengio, P. Lamblin, D. Popovici and H. Larochelle Ahmed Hefny Efficient Learning of Sparse Overcomplete Representations with an Energy-Based Model, M. Ranzato, C.S. Poultney, S. Chopra, Y. Lecunn, Neural Information Processing Systems (NIPS), 2006. 28 Oct 2013 Imagenet classification with deep convolutional neural networks, NIPS 2012 A. Krizhevsky, I. Sutskever, G. Hinton Danny Lan Convolutional recursive deep learning for 3D object classification, R. Socher, B. Huval, B. Bhat, C. Manning, A. Ng, NIPS 2012 Multi-column deep neural networks for image classification, D. Ciresan, U. Meier and J. Schmidhuber, CVPR 2012 Learning hierarchial features for scene labeling, IEEE transactions on pattern analysis and machine intelligence, Vol 35(8), pp. 1915-1929, 2012 C. Couprie, L. Najman, Y. LeCun Jon Smereka Learning convolutional feature hierarchies for visual recognition, K. Laukcuoglu,P. Sermanet, Y-Lan Boureau, K. Gregor, M. Mathieu, Y. LeCun, NIPS 2010 30 Oct 2013 Statistical language models based on neural networks, PhD dissertation, Brno, 2012, chapters 3 and 6 T. Mikolov, Fatma Faruq Semi-supervised recursive autoencoders for predicting sentiment R. Socher, J. Pennington, E. Huang, A. Ng and C. Manning Yueran Yuan Dynamic pooling and unfoloding recursive autoencoders for paraphrase detection, R. Socher, E. Huang, J. Pennington, A. Ng, C. Manning, EMNLP 2011 Joint learning of words and meaning representation for open-text semantic parsing, A.Bodes, X. Glorot, J. Weston, Y. Bengio, AISTATS 2012 4 Nov 2013 Supervised sequence labelling with recurrent neural networks, PhD dissertation, T. U. Munchen, 2008, Chapters 4 and 7 A. Graves, Georg Schoenherr Speech recognition with deep recurrent neural networks, A. Graves, A.-. Mohamed, G. Hinton, ICASSP 2013 Deep neural networks for acoustic modeling in speech recognition: the shared view of four research groups, IEEE Signal Processing Magazine, Vold 29(6), pp 82-97, 2012. G. Hinton et al. Daniel Maturana 6 Nov 2013 Modeling Documents with a Deep Boltzmann Machine, UAI 2013 N. Srivastava, R. Salakhutidinov, G. Hinton Siyuan Generating text with Recurrent Neural Networks, I. Sutskever, J. Martens, G. Hinton, ICML 2011 Word representations: A simple and general method for semi-supervised learning, ACL 2010 J. Turian, L. Ratinov, Y. Bengio Sam Thomson 11 Nov 2013 An empirical evaluation of deep architectures on problems with many factors or variables, ICML 2007 H. Larochelle, D. Erhan, A. Courville, J. Bergstra, Y. Bengio Ran Chen The Difficulty of Training Deep Architectures and the Effect of Unsupervised Pre-Training, AISTATS 2009 D. Erhan, P.-A. Manzagol, Y. Bengio, S. Bengio, P. Vincent Ankur Gandhe 13 Nov 2013 Extracting and Composing Robust Features with Denoising Autoencoders, ICML 2008 P. Vincent, H. Larochelle, Y. Bengio, P.-A. Manzgool Pallavi Baljekar Improving neural networks by preventing co-adaptation of feature detectors, G.E. Hinton, N. Srivastava, A. Krizhevsky, I. Sustskever, R. R. Salakhutdinov Subhodeep Moitra 18 Nov 2013 A theory of deep learning architectures for sensory perception: the ventral stream, Fabio Anselmi, Joel Z Leibo, Lorenzo Rosasco, Jim Mutch, Andrea Tacchetti, Tomaso Poggio Dipan Pal 20 Nov 2013 No more pesky learning rates, ICML 2013 Tom Schaul, Sixin Zhang and Yann LeCun Georg Shoenherr No more pesky learning rates: supplementary material On the importance of initialization and momentum in deep learning, JMLR 28(3): 1139.1147, 2013 Ilya Sutskever, James Martens, George Dahl, Geoffrey Hinton Kartik Goyal Supplementary material for paper 25 Nov 2013 Guest lecture Quoc Le 27 Nov 2013 A multi-layer sparse coding network learns contour coding from natural images Neural Networks Research Centre, Vision Research 42(12): 1593-1605, 2002 Patrik O. Hoyer and Aapo Hyvarinen Sparse Feature Learning for Deep Belief Networks, NIPS 2007 Marc.Aurelio Ranzato Y-Lan Boureau, Yann LeCun Sparse deep belief net model for visual area V2, NIPS 2007 Honglak Lee Chaitanya Ekanadham Andrew Y. Ng Deep Sparse Rectifier Neural Networks, JMLR 16: 315-323, 2011 Xavier Glorot, Antoine Bordes, Yoshua Bengio To be arranged Exploring strategies for training deep neural networks, Journal of Machine Learning Research, Vol. 1, pp 1-40, 2009 H. Larochelle, Y. Bengio, J. Louradour, P. Lamblin Why Does Unsupervised Pre-training Help Deep Learning?, AISTATS 2010 D. Erhan, A. Courville, Y. Bengio, P. Vincent Understanding the difficulty of training deep feedforward neural networks, AISTATS 2010 X. Glorot and Y. Bengio A Provably Efficient Algorithm for Training Deep Networks, arXiv:1304.7045 , 2013 R. Livni, S. Shalev-Schwartz, O. Shamir
个人分类: 深度学习|6905 次阅读|1 个评论
[转载]Deep Learning Workshop NIPS 2013 Accepted Papers 深度学习
hestendelin 2013-11-26 16:46
Accepted Papers Oral presentations Deep Supervised and Convolutional Generative Stochastic Network for Protein Secondary Structure Prediction Jian Zhou, Olga Troyanskaya Playing Atari with Deep Reinforcement Learning Volodymyr Mnih, Koray Kavukcuoglu, David Silver, Alex Graves, Ioannis, Antonoglou, Daan Wierstra, Martin Riedmiller Poster presentations Sparse Combinatorial Autoencoders (ID 2) Karthik Narayan, Pieter Abbeel Grounded Compositional Semantics for Finding and Describing Images with Sentences (ID 4) Richard Socher , Quoc Le , Christopher Manning , Andrew Ng Curriculum Learning for Handwritten Text Line Recognition (ID 5) Jerome Louradour, Christopher Kermorvant A Deep and Tractable Density Estimator (ID 7) Benigno Uria, Iain Murray, Hugo Larochelle Multi-Column Deep Neural Networks for Offline Handwritten Chinese Character Classification (ID 11) Dan Ciresan, Juergen Schmidhuber End-to-end Phoneme Sequence Recognition using Convolutional Neural Networks (ID 12) Dimitri Palaz, Ronan Collobert, Mathew Magimai.-Doss Scalable Wide Sparse Learning for Connectomics (ID 15) Jeremy Maitin-Shepard, Pieter Abbeel Is deep learning really necessary for word embeddings? (ID 16) Rémi Lebret, Joël Legrand, Ronan Collobert Recurrent Conditional Random Fields (ID 18) Kaisheng Yao, Baolin Peng, G eoffrey Zweig, Dong Yu , Xiaolong Li, Feng Gao Recurrent Convolutional Neural Networks for Scene Parsing (ID 20) Pedro Pinheiro, Ronan Collobert Backpropagation in Sequential Deep Belief Networks (ID 22) Galen Andrew, Jeff Bilmes Learning semantic representations for the phrase translation model (ID 23) Jianfeng Gao, Xiaodong He, Wen-tau Yih, Li Deng Event-driven Contrastive Divergence in Spiking Neural Networks (ID 25) Emre Neftci, Bruno Pedroni, Gert Cauwenberghs, Kenneth Kreutz-Delgado, Srinjoy Das Dynamics of learning in deep linear neural networks (ID 27) Andrew Saxe, James McClelland, Surya Ganguli Exploring Deep and Recurrent Architectures for Optimal Control (ID 28) Sergey Levine Analyzing noise in autoencoders and deep networks (ID 29) Ben Poole, Jascha Sohl-Dickstein, Surya Ganguli Structured Recurrent Temporal Restricted Boltzmann Machines (ID 30) Roni Mittelman, Benjamin Kuipers, Silvio Savarese, Honglak Lee Learning Deep Representations via Multiplicative Interactions between Factors of Variation (ID 31) Scott Reed, Honglak Lee Learning Input and Recurrent Weight Matrices in Echo State Networks (ID 32) Hamid Palangi, Li Deng , Rabab Ward Learning Sum-Product Networks with Direct and Indirect Variable Interactions (ID 33) Amirmohammad Rooshenas, Daniel Lowd Bidirectional Recursive Neural Networks for Token-Level Labeling with Structure (ID 34) Ozan Irsoy, Claire Cardie Estimating Dependency Structures for non-Gaussian Components (ID 38) Hiroaki Sasaki, Michael Gutmann, Hayaru Shouno, Aapo Hyvarinen Multimodal Neural Language Models (ID 42) Ryan Kiros, Ruslan Salakhutdinov , Richard Zemel Non-degenerate Priors for Arbitrarily Deep Networks (ID 43) David Duvenaud, Oren Rippel, Ryan Adams, Z oubin Ghahramani Learning Multilingual Word Representations using a Bag-of-Words Autoencoder (ID 44) Stanislas Lauly, Alex Boulanger, Hugo Larochelle Multilingual Deep Learning (ID 45) Sarath Chandar A P, Mitesh M. Khapra, Balaraman Ravindran, Vikas Raykar, Amrita Saha Learned-norm pooling for deep neural networks (ID 46) Caglar Gulcehre, Kyunghyun Cho , Razvan Pascanu, Yoshua Bengio Transition-based Dependency Parsing Using Recursive Neural Networks (ID 47) Pontus Stenetorp 共接收 30 篇 源自: https://sites.google.com/site/deeplearningworkshopnips2013/accepted-papers
个人分类: 深度学习|3913 次阅读|0 个评论
[转载]Tractable Deep Learning project 华盛顿大学 深度学习
hestendelin 2013-10-20 18:50
http://www.cs.washington.edu/research/ml/projects/ 原址: http://www.cs.washington.edu/node/8805 In machine learning, as throughout computer science, there is a tradeoff between expressiveness and tractability. On the one hand, we need powerful model classes to capture the richness and complexity of the real world. On the other, we need inference in those models to remain tractable, otherwise their potential for widespread practical use is limited. Deep learning can induce powerful representations, with multiple layers of latent variables, but these models are generally intractable. We are developing new classes of similarly expressive but still tractable models, including sum-product networks and tractable Markov logic. These models capture both class-subclass and part-subpart structure in the domain, and are in some aspects more expressive than traditional graphical models like Bayesian networks and Markov random fields. Research includes designing representations, studying their properties, developing efficient algorithms for learning them, and applications to challenging problems in natural language understanding, vision, and other areas.Awards NIPS 2012 Outstanding Student Paper: Discriminative Learning of Sum-Product Networks UAI 2011 Best Paper: Sum-Product Networks: A New Deep Architecture EMNLP 2009 Best Paper: Unsupervised Semantic Parsing People Pedro Domingos Abram L Friesen Robert C Gens Chloe M Kiddon Aniruddh Nath Mathias Niepert W Austin Webb Publications Learning the Structure of Sum-Product Networks (2013) A Tractable First-Order Probabilistic Logic (2012) Discriminative Learning of Sum-Product Networks (2012) Learning Multiple Hierarchical Relational Clusterings (2012) Coarse-to-Fine Inference and Learning for First-Order Probabilistic Models (2011) Sum-Product Networks: A New Deep Architecture (2011) Approximate Inference by Compilation to Arithmetic Circuits (2010) Learning Efficient Markov Networks (2010) Unsupervised Ontology Induction from Text (2010) Unsupervised Semantic Parsing (2009) Learning Arithmetic Circuits (2008) Naive Bayes Models for Probability Estimation (2005) Research Groups Artificial Intelligence Machine Learning
个人分类: 深度学习|2386 次阅读|0 个评论
[转载]Facebook begin deep learning after google 深度学习
hestendelin 2013-9-24 14:46
Facebook Launches Advanced AI Effort to Find Meaning in Your Posts A technique called deep learning could help Facebook understand its users and their data better. By Tom Simonite on September 20, 2013 Facebook ’s piles of data on people’s lives could allow it to push the boundaries of what can be done with the emerging AI technique known as deep learning . Facebook is set to get an even better understanding of the 700 million people who use the social network to share details of their personal lives each day. A new research group within the company is working on an emerging and powerful approach to artificial intelligence known as deep learning , which uses simulated networks of brain cells to process data. Applying this method to data shared on Facebook could allow for novel features and perhaps boost the company’s ad targeting. Deep learning has shown potential as the basis for software that could work out the emotions or events described in text even if they aren’t explicitly referenced, recognize objects in photos, and make sophisticated predictions about people’s likely future behavior. The eight-person group , known internally as the AI team, only recently started work, and details of its experiments are still secret. But Facebook’s chief technology officer , Mike Schroepfer , will say that one obvious way to use deep learning is to improve the news feed, the personalized list of recent updates he calls Facebook’s “ killer app .” The company already uses conventional machine learning techniques to prune the 1,500 updates that average Facebook users could possibly see down to 30 to 60 that are judged most likely to be important to them. Schroepfer says Facebook needs to get better at picking the best updates because its users are generating more data and using the social network in different ways. “The data set is increasing in size, people are getting more friends, and with the advent of mobile, people are online more frequently,” Schroepfer told MIT Technology Review . “It’s not that I look at my news feed once at the end of the day; I constantly pull out my phone while I’m waiting for my friend or I’m at the coffee shop. We have five minutes to really delight you.” Shroepfer says deep learning could also be used to help people organize their photos or choose which is the best one to share on Facebook . In looking into deep learning , Facebook follows its competitors Google and Microsoft , which have used the approach to impressive effect in the past year. Google has hired and acquired leading talent in the field (see “ 10 Breakthrough Technologies 2013: Deep Learning ”), and last year it created software that taught itself to recognize cats and other objects by reviewing stills from YouTube videos. The underlying technology was later used to slash the error rate of Google’s voice recognition services (see “ Google’s Virtual Brain Goes to Work ”). Meanwhile, researchers at Microsoft have used deep learning to build a system that translates speech from English to Mandarin Chinese in real time (see “ Microsoft Brings Star Trek’s Voice Translator to Life ”). Chinese Web giant Baidu also recently established a Silicon Valley research lab to work on deep learning . Less complex forms of machine learning have underpinned some of the most useful features developed by major technology companies in recent years, such as spam detection systems and facial recognition in images. The largest companies have now begun investing heavily in deep learning because it can deliver significant gains over those more established techniques, says Elliot Turner , founder and CEO of AlchemyAPI , which rents access to its own deep learning software for text and images. “Research into understanding images, text, and language has been going on for decades, but the typical improvement a new technique might offer was a fraction of a percent,” he says. “In tasks like vision or speech, we’re seeing 30 percent-plus improvements with deep learning .” The newer technique also allows much faster progress in training a new piece of software, says Turner. Conventional forms of machine learning are slower because before data can be fed into learning software, experts must manually choose which features of it the software should pay attention to, and they must label the data to signify, for example, that certain images contain cars. Deep learning systems can learn with much less human intervention because they can figure out for themselves which features of the raw data are most significant. They can even work on data that hasn’t been labeled, as Google’s cat-recognizing software did. Systems able to do that typically use software that simulates networks of brain cells, known as neural nets, to process data. They require more powerful collections of computers to run. Facebook’s AI group will work on applications that can help the company’s products as well as on more general research that will be made public, says Srinivas Narayanan , an engineering manager at Facebook who’s helping to assemble the new group. He says one way Facebook can help advance deep learning is by drawing on its recent work creating new types of hardware and software to handle large data sets (see “ Inside Facebook’s Not-So-Secret New Data Center ”). “It’s both a software and a hardware problem together; the way you scale these networks requires very deep integration of the two,” he says. Facebook hired deep learning expert Marc’Aurelio Ranzato away from Google for its new group. Other members include Yaniv Taigman , cofounder of the facial recognition startup Face.com (see “ When You’re Always a Familiar Face ”); computer vision expert Lubomir Bourdev ; and veteran Facebook engineer Keith Adams . 原文: http://www.technologyreview.com/news/519411/facebook-launches-advanced-ai-effort-to-find-meaning-in-your-posts/
个人分类: 深度学习|2374 次阅读|0 个评论
[转载]nips 2013 deep learning 深度学习相关论文 (仅参考题目)
hestendelin 2013-9-13 17:17
Adaptive dropout for training deep neural networks http://media.nips.cc/nipsbooks/nipspapers/paper_files/nips26/1409.pdf J. Ba , B. Frey A Deep Architecture for Matching Short Texts http://media.nips.cc/nipsbooks/nipspapers/paper_files/nips26/697.pdf Z. Lu , H. Li A Scalable Approach to Probabilistic Latent Space Inference of Large-Scale Networks http://papers.nips.cc/paper/4978-a-scalable-approach-to-probabilistic-latent-space-inference-of-large-scale-networks.pdf J. Yin , Q. Ho , E. Xing Bayesian Hierarchical Community Discovery C. Blundell , Y. Teh Binary to Bushy: Bayesian Hierarchical Clustering with the Beta Coalescent Y. Hu , J. Boyd-Graber , H. Daume III , Z. Ying Convex Two-Layer Modeling . Aslan , H. CHENG , X. Zhang , D. Schuurmans Deep content-based music recommendation A. van den Oord , S. Dieleman , B. Schrauwen Deep Fisher Networks for Large-Scale Image Classification K. Simonyan , A. Vedaldi , A. Zisserman Deep Neural Networks for Object Detection C. Szegedy , A. Toshev , D. Erhan DeViSE: A Deep Visual-Semantic Embedding Model A. Frome , G. Corrado , J. Shlens , S. Bengio , J. Dean , M. Ranzato , T. Mikolov Dropout Training as Adaptive Regularization S. Wager , S. Wang , P. Liang Extracting regions of interest from biological images with convolutional sparse block coding M. Pachitariu , M. Sahani , A. Packer , N. Pettit , H. Dalgleish Generalized Denoising Auto-Encoders as Generative Models Y. Bengio , L. Yao , G. Alain , P. Vincent Hierarchical Modular Optimization of Convolutional Networks Achieves Representations Similar to Macaque IT and Human Ventral Stream D. Yamins , H. Hong , C. Cadieu , J. DiCarlo Learning a Deep Compact Image Representation for Visual Tracking N. Wang , D. Yeung Learning Multi-level Sparse Representations F. Diego , F. Hamprecht Learning Stochastic Feedforward Neural Networks Y. Tang , R. Salakhutdinov Lexical and Hierarchical Topic Regression V. Nguyen , J. Boyd-Graber , P. Resnik Multi-Prediction Deep Boltzmann Machines I. Goodfellow , M. Mirza , A. Courville , Y. Bengio Multisensory Encoding, Decoding, and Identification A. Lazar , Y. Slutskiy On the Expressive Power of Restricted Boltzmann Machines J. Martens , A. Chattopadhya , T. Pitassi , R. Zemel Pass-efficient unsupervised feature selection H. Schweitzer , C. Maung Predicting Parameters in Deep Learning M. Denil , B. Shakibi , L. Dinh , M. Ranzato , N. de Freitas Reasoning With Neural Tensor Networks for Knowledge Base Completion R. Socher , D. Chen , C. Manning , A. Ng Robust Image Denoising with Multi-Column Deep Neural Networks F. Agostinelli , H. Lee , M. Anderson Spike train entropy-rate estimation using hierarchical Dirichlet process priors K. Knudson , J. Pillow Stochastic Ratio Matching of RBMs for Sparse High-Dimensional Inputs Y. Dauphin , Y. Bengio Top-Down Regularization of Deep Belief Networks H. Goh , N. Thome , M. Cord , J. LIM Training and Analysing Deep Recurrent Neural Networks M. Hermans , B. Schrauwen Understanding Dropout P. Baldi , P. Sadowski Wavelets on Graphs via Deep Learning R. Rustamov , L. Guibas 摘自: http://nips.cc/Conferences/2013/Program/accepted-papers.php
个人分类: 深度学习|7170 次阅读|0 个评论
分享一个deep learning报告讲稿
xiaoda99 2013-8-2 21:03
http://www.kuaipan.cn/file/id_2602161770890680.htm ​前几天给别人做的一个deep learning的报告:《浅谈深度学习——大数据催生的新智慧物种》。 属于不太严谨的科普讲座性质,但自认为基本思想讲得还是比较清楚的:)
3852 次阅读|0 个评论
脑与deep learning读书会第三期视频和讲稿
xiaoda99 2013-8-2 20:58
题目:Sparse representation in computer vision and visual cortex   主讲人:   彭义刚,博士毕业于清华大学自动化系,研究方向为image/video processing, sparse representation, low-rank matrix recovery。   肖达,北京邮电大学计算机学院教师。      提纲:   1. From sparsity to low-rankness and more(讲稿下载: http://vdisk.weibo.com/s/KMQW6 )   2. Self-organizing cortical map model and Topographica simulator(讲稿下载: http://vdisk.weibo.com/s/KMR4I 。另见参考文献)      视频回放:    http://www.duobei.com/room/4411032613      参考文献:    . Bednar JA: Building a mechanistic model of the development and function of the primary visual cortex. J Physiol Paris, 2012, 106(5-6):194-211.       .Demo代码网址 http://topographica.org/
4222 次阅读|0 个评论
[转载]Deep Learning(深度学习)学习笔记整理系列之(一)
hailuo0112 2013-7-17 16:46
Deep Learning(深度学习)学习笔记整理系列之(一) 分类: Deep Learning 机器学习 机器视觉 神经网络 2013-04-08 23:35 8561人阅读 评论 (21) 收藏 举报 Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04-08 声明: 1)该Deep Learning的学习系列是整理自网上很大牛和机器学习专家所无私奉献的资料的。具体引用的资料请看参考文献。具体的版本声明也参考原文献。 2)本文仅供学术交流,非商用。所以每一部分具体的参考资料并没有详细对应。如果某部分不小心侵犯了大家的利益,还望海涵,并联系博主删除。 3)本人才疏学浅,整理总结的时候难免出错,还望各位前辈不吝指正,谢谢。 4)阅读本文需要机器学习、计算机视觉、神经网络等等基础(如果没有也没关系了,没有就看看,能不能看懂,呵呵)。 5)此属于第一版本,若有错误,还需继续修正与增删。还望大家多多指点。大家都共享一点点,一起为祖国科研的推进添砖加瓦(呵呵,好高尚的目标啊)。请联系:zouxy09@qq.com 目录: 一、概述 二、背景 三、人脑视觉机理 四、关于特征 4.1、特征表示的粒度 4.2、初级(浅层)特征表示 4.3、结构性特征表示 4.4、需要有多少个特征? 五、Deep Learning的基本思想 六、浅层学习(Shallow Learning)和深度学习(Deep Learning) 七、Deep learning与Neural Network 八、Deep learning训练过程 8.1、传统神经网络的训练方法 8.2、deep learning训练过程 九、Deep Learning的常用模型或者方法 9.1、AutoEncoder自动编码器 9.2、Sparse Coding稀疏编码 9.3、Restricted Boltzmann Machine(RBM)限制波尔兹曼机 9.4、Deep BeliefNetworks深信度网络 9.5、Convolutional Neural Networks卷积神经网络 十、总结与展望 十一、参考文献和Deep Learning学习资源 一、概述 Artificial Intelligence,也就是人工智能,就像长生不老和星际漫游一样,是人类最美好的梦想之一。虽然计算机技术已经取得了长足的进步,但是到目前为止,还没有一台电脑能产生“自我”的意识。是的,在人类和大量现成数据的帮助下,电脑可以表现的十分强大,但是离开了这两者,它甚至都不能分辨一个喵星人和一个汪星人。 图灵(图灵,大家都知道吧。计算机和人工智能的鼻祖,分别对应于其著名的“图灵机”和“图灵测试”)在 1950 年的论文里,提出图灵试验的设想,即,隔墙对话,你将不知道与你谈话的,是人还是电脑。这无疑给计算机,尤其是人工智能,预设了一个很高的期望值。但是半个世纪过去了,人工智能的进展,远远没有达到图灵试验的标准。这不仅让多年翘首以待的人们,心灰意冷,认为人工智能是忽悠,相关领域是“伪科学”。 但是自 2006 年以来,机器学习领域,取得了突破性的进展。图灵试验,至少不是那么可望而不可及了。至于技术手段,不仅仅依赖于云计算对大数据的并行处理能力,而且依赖于算法。这个算法就是,Deep Learning。借助于 Deep Learning 算法,人类终于找到了如何处理“抽象概念”这个亘古难题的方法。 2012年6月,《纽约时报》披露了Google Brain项目,吸引了公众的广泛关注。这个项目是由著名的斯坦福大学的机器学习教授Andrew Ng和在大规模计算机系统方面的世界顶尖专家JeffDean共同主导,用16000个CPU Core的并行计算平台训练一种称为“深度神经网络”(DNN,Deep Neural Networks)的机器学习模型(内部共有10亿个节点。这一网络自然是不能跟人类的神经网络相提并论的。要知道,人脑中可是有150多亿个神经元,互相连接的节点也就是突触数更是如银河沙数。曾经有人估算过,如果将一个人的大脑中所有神经细胞的轴突和树突依次连接起来,并拉成一根直线,可从地球连到月亮,再从月亮返回地球),在语音识别和图像识别等领域获得了巨大的成功。 项目负责人之一Andrew称:“我们没有像通常做的那样自己框定边界,而是直接把海量数据投放到算法中,让数据自己说话,系统会自动从数据中学习。”另外一名负责人Jeff则说:“我们在训练的时候从来不会告诉机器说:‘这是一只猫。’系统其实是自己发明或者领悟了“猫”的概念。” 2012年11月,微软在中国天津的一次活动上公开演示了一个全自动的同声传译系统,讲演者用英文演讲,后台的计算机一气呵成自动完成语音识别、英中机器翻译和中文语音合成,效果非常流畅。据报道,后面支撑的关键技术也是DNN,或者深度学习(DL,DeepLearning)。 2013年1月,在百度年会上,创始人兼CEO李彦宏高调宣布要成立百度研究院,其中第一个成立的就是“深度学习研究所”(IDL,Institue of Deep Learning)。 为什么拥有大数据的互联网公司争相投入大量资源研发深度学习技术。听起来感觉deeplearning很牛那样。那什么是deep learning?为什么有deep learning?它是怎么来的?又能干什么呢?目前存在哪些困难呢?这些问题的简答都需要慢慢来。咱们先来了解下机器学习(人工智能的核心)的背景。 二、背景 机器学习(Machine Learning)是一门专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能的学科。机器能否像人类一样能具有学习能力呢?1959年美国的塞缪尔(Samuel)设计了一个下棋程序,这个程序具有学习能力,它可以在不断的对弈中改善自己的棋艺。4年后,这个程序战胜了设计者本人。又过了3年,这个程序战胜了美国一个保持8年之久的常胜不败的冠军。这个程序向人们展示了机器学习的能力,提出了许多令人深思的社会问题与哲学问题(呵呵,人工智能正常的轨道没有很大的发展,这些什么哲学伦理啊倒发展的挺快。什么未来机器越来越像人,人越来越像机器啊。什么机器会反人类啊,ATM是开第一枪的啊等等。人类的思维无穷啊)。 机器学习虽然发展了几十年,但还是存在很多没有良好解决的问题: 例如图像识别、语音识别、自然语言理解、天气预测、基因表达、内容推荐等等。目前我们通过机器学习去解决这些问题的思路都是这样的(以视觉感知为例子): 从开始的通过传感器(例如CMOS)来获得数据。然后经过预处理、特征提取、特征选择,再到推理、预测或者识别。最后一个部分,也就是机器学习的部分,绝大部分的工作是在这方面做的,也存在很多的paper和研究。 而中间的三部分,概括起来就是特征表达。良好的特征表达,对最终算法的准确性起了非常关键的作用,而且系统主要的计算和测试工作都耗在这一大部分。但,这块实际中一般都是人工完成的。靠人工提取特征。 截止现在,也出现了不少NB的特征(好的特征应具有不变性(大小、尺度和旋转等)和可区分性):例如Sift的出现,是局部图像特征描述子研究领域一项里程碑式的工作。由于SIFT对尺度、旋转以及一定视角和光照变化等图像变化都具有不变性,并且SIFT具有很强的可区分性,的确让很多问题的解决变为可能。但它也不是万能的。 然而,手工地选取特征是一件非常费力、启发式(需要专业知识)的方法,能不能选取好很大程度上靠经验和运气,而且它的调节需要大量的时间。既然手工选取特征不太好,那么能不能自动地学习一些特征呢?答案是能!Deep Learning就是用来干这个事情的,看它的一个别名UnsupervisedFeature Learning,就可以顾名思义了,Unsupervised的意思就是不要人参与特征的选取过程。 那它是怎么学习的呢?怎么知道哪些特征好哪些不好呢?我们说机器学习是一门专门研究计算机怎样模拟或实现人类的学习行为的学科。好,那我们人的视觉系统是怎么工作的呢?为什么在茫茫人海,芸芸众生,滚滚红尘中我们都可以找到另一个她(因为,你存在我深深的脑海里,我的梦里 我的心里 我的歌声里……)。人脑那么NB,我们能不能参考人脑,模拟人脑呢?(好像和人脑扯上点关系的特征啊,算法啊,都不错,但不知道是不是人为强加的,为了使自己的作品变得神圣和高雅。) 近几十年以来,认知神经科学、生物学等等学科的发展,让我们对自己这个神秘的而又神奇的大脑不再那么的陌生。也给人工智能的发展推波助澜。 三、人脑视觉机理 1981 年的诺贝尔医学奖,颁发给了 David Hubel(出生于加拿大的美国神经生物学家) 和TorstenWiesel,以及 Roger Sperry。前两位的主要贡献,是“发现了视觉系统的信息处理”:可视皮层是分级的: 我们看看他们做了什么。1958 年,DavidHubel 和Torsten Wiesel 在 JohnHopkins University,研究瞳孔区域与大脑皮层神经元的对应关系。他们在猫的后脑头骨上,开了一个3 毫米的小洞,向洞里插入电极,测量神经元的活跃程度。 然后,他们在小猫的眼前,展现各种形状、各种亮度的物体。并且,在展现每一件物体时,还改变物体放置的位置和角度。他们期望通过这个办法,让小猫瞳孔感受不同类型、不同强弱的刺激。 之所以做这个试验,目的是去证明一个猜测。位于后脑皮层的不同视觉神经元,与瞳孔所受刺激之间,存在某种对应关系。一旦瞳孔受到某一种刺激,后脑皮层的某一部分神经元就会活跃。经历了很多天反复的枯燥的试验,同时牺牲了若干只可怜的小猫,David Hubel 和Torsten Wiesel 发现了一种被称为“方向选择性细胞(Orientation Selective Cell)”的神经元细胞。当瞳孔发现了眼前的物体的边缘,而且这个边缘指向某个方向时,这种神经元细胞就会活跃。 这个发现激发了人们对于神经系统的进一步思考。神经-中枢-大脑的工作过程,或许是一个不断迭代、不断抽象的过程。 这里的关键词有两个,一个是抽象,一个是迭代。从原始信号,做低级抽象,逐渐向高级抽象迭代。人类的逻辑思维,经常使用高度抽象的概念。 例如,从原始信号摄入开始(瞳孔摄入像素 Pixels),接着做初步处理(大脑皮层某些细胞发现边缘和方向),然后抽象(大脑判定,眼前的物体的形状,是圆形的),然后进一步抽象(大脑进一步判定该物体是只气球)。 这个生理学的发现,促成了计算机人工智能,在四十年后的突破性发展。 总的来说,人的视觉系统的信息处理是分级的。从低级的V1区提取边缘特征,再到V2区的形状或者目标的部分等,再到更高层,整个目标、目标的行为等。也就是说高层的特征是低层特征的组合,从低层到高层的特征表示越来越抽象,越来越能表现语义或者意图。而抽象层面越高,存在的可能猜测就越少,就越利于分类。例如,单词集合和句子的对应是多对一的,句子和语义的对应又是多对一的,语义和意图的对应还是多对一的,这是个层级体系。 敏感的人注意到关键词了:分层。而Deep learning的deep是不是就表示我存在多少层,也就是多深呢?没错。那Deep learning是如何借鉴这个过程的呢?毕竟是归于计算机来处理,面对的一个问题就是怎么对这个过程建模? 因为我们要学习的是特征的表达,那么关于特征,或者说关于这个层级特征,我们需要了解地更深入点。所以在说Deep Learning之前,我们有必要再啰嗦下特征(呵呵,实际上是看到那么好的对特征的解释,不放在这里有点可惜,所以就塞到这了)。
个人分类: 机器学习|0 个评论
【科普随笔:NLP的宗教战争?兼论深度学习】
热度 7 liwei999 2013-5-7 23:18
有回顾NLP(Natural Language Processing)历史的大牛介绍统计模型(通过所谓机器学习 machine learning)取代传统知识系统(又称规则系统 rule-based system)成为学界主流的掌故,说20多年前好像经历了一场惊心动魄的宗教战争。其实我倒觉得更像49年解放军打过长江去,传统NLP的知识系统就跟国民党一样兵败如山倒,大好江山拱手相让。文傻秀才遭遇理呆兵,有理无理都说不清,缴械投降是必然结果。唯一遗憾的也许是,统计理呆仗打得太过顺利,太没有抵抗,倒是可能觉得有些不过瘾,免不了有些胜之不武的失落。苍白文弱的语言学家也 太不经打了。 自从 20 年前统计学家势不可挡地登堂入室一统天下以后,我这样语言学家出身的在学界立马成为二等公民,一直就是敲边鼓,如履薄冰地跟着潮流走。走得烦了,就做一回阿桂。 NLP 这个领域,统计学家完胜,是有其历史必然性的,不服不行。虽然统计学界有很多对传统规则系统根深蒂固的偏见和经不起推敲但非常流行的蛮横结论(以后慢慢论,血泪账一笔一笔诉 :),但是机器学习的巨大成果和效益是有目共睹无所不在的:机器翻译,语音识别/合成,搜索排序,垃圾过滤,文档分类,自动文摘,知识习得,you name it 甚至可以极端一点这么说,规则系统的成功看上去总好像是个案,是经验,是巧合,是老中医,是造化和运气。而机器学习的成功,虽然有时也有 tricks,但总体而论是科学的正道,是可以重复和批量复制的。 不容易复制的成功就跟中国餐一样,同样的材料和recipe,不同的大厨可以做出完全不同的味道来。这就注定了中华料理虽然遍及全球,可以征服食不厌精的美食家和赢得海内外无数中餐粉丝,但中餐馆还是滥竽充数者居多,因此绝对形成不了麦当劳这样的巨无霸来。 而统计NLP和机器学习就是麦当劳这样的巨无霸:味道比较单调,甚至垃圾,但绝对是饿的时候能顶事儿, fulfilling,最主要的是 no drama,不会大起大落。不管在世界哪个角落,都是一条流水线上的产品,其味道和质量如出一辙 。 做不好主流,那就做个大厨吧。做个一级大厨感觉也蛮好。最终还是系统说了算。邓小平真是聪明,有个白猫黑猫论,否则我们这些前朝遗老不如撞墙去。 就说过去10多年吧,我一直坚持做多层次的 deep parsing,来支持NLP的各种应用。当时看到统计学家们追求单纯,追求浅层的海量数据处理,心里想,难怪有些任务,你们虽然出结果快,而且也鲁棒,可质量总是卡在一个口上就过不去。从“人工智能”的概念高度看,浅层学习(shallow learning)与深层分析(deep parsing)根本就不在一个档次上,你再“科学”也没用。可这个感觉和道理要是跟统计学家说,当时是没人理睬的,是有理说不清的,因为他们从本质上就鄙视或忽视语言学家 ,根本就没有那个平等对话的氛围(chemistry)。最后人家到底自己悟出来了,因此近来天上掉下个多层 deep learning,视为神迹,仿佛一夜间主导了整个机器学习领域,趋之者若鹜。啧啧称奇的人很多,洋洋自得的也多,argue 说,一层一层往深了学习是革命性的突破,质量自然是大幅度提升。我心里想,这个大道理我十几年前就洞若观火,殊途不还是同归了嘛。想起在深度学习风靡世界之前,曾有心有灵犀的老友这样评论过: To me, Dr. Li is essentially the only one who actualy builds true industrial NLP systems with deep parsing. While the whole world is praised with heavy statistics on shallow linguistics, Dr. Li proved with excellent system performances such a simple truth: deep parsing is useful and doable in large scale real world applications. 我的预见,大概还要20年吧(不是说风水轮流转20年河东河西么),主流里面的偏见会部分得到纠正,那时也不会是规则和知识的春天重返,而是统计和规则比较地和谐合作。宗教式的交恶和贬抑会逐渐淡去。 阿弥陀佛! 【相关篇什】 【立委随笔:文傻和理呆的世纪悲剧(romance tragedy)】 ZT: 2013突破性科学技术之“深度学习” 【置顶:立委科学网博客NLP博文一览(定期更新版)】
个人分类: 立委科普|12223 次阅读|8 个评论
教育培训项目(11):《21世纪的深度学习》
Jiahou 2010-8-23 13:32
教育培训项目(11):《21世纪的深度学习》 这是根据十七届四中全会提出的建设学习型政党和学习型社会,针对当前干部培训存在的文风问题,系统讲述了肤浅学习和深度学习的差别,介绍了促进干部深度学习的方法。
个人分类: 教育培训|4393 次阅读|0 个评论

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-5-5 13:41

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部