深入研究神经网络和深度学习
机器学习技术正在走进数据中心,它既能改善内部IT管理,还能使关键业务流程更加智能化。你可能已经听说过深度学习的神秘性了,它涉及到一切领域,从系统管理到自动驾驶汽车。到底深度学习是一个刚刚在世人面前揭开面纱的非常聪明的新兴人工智能,还是仅仅一种营销宣传手段,将已有的复杂机器学习算法重新包装成为新的卖点?
深度学习无疑激发了大众的想象力,但它其实并不那么复杂。在技术层面上,深度学习主要指大规模运行的大型计算密集型神经网络。这些神经网络往往是由难以用基于逻辑和规则的机器学习方法进行处理的大数据集训练而成,如图像、语音、视频和其他内在具有复杂模式的密集数据。
神经网络本身并不新。几乎从现代计算机开创阶段起,神经网络算法已经被研究用于复杂数据流中辅助识别隐藏的内在模式。在这个意义上,深度学习是建立在众所周知的机器学习技术上的。然而,当新兴计算复杂度更高的神经网络算法与如今的大数据集合应用到一起,创造出了重大的新机遇。使用低成本的云服务或商业scale-out大数据结构,可以创建这些“深度”模型,并实时应用于大规模应用场景中。
敏感的神经网络
神经网络研究起步于上世纪50年代和60年代,最早是为研究人类大脑如何工作而建模出来的。神经网络由多层节点组成,这些节点相互连接组成一张大网,有如大脑中的神经元。每个节点接收输入信号,接下来,它通过一个预先定义好的“激活功能”发出一个输出信号,并传给其他节点,同时确定什么时候节点应该进入活跃状态。简单的,你可以认为节点如何工作取决于其兴奋程度,当一个节点收到一组输入后变得兴奋时,它可以产生一定程度的输出信号,并传递给它的下游节点。有趣的是,一个节点兴奋起来后,它的输出信号可以是正也可以是负;一些节点激活后实际上会抑制另一些节点的兴奋。 节点通过链接互连,每个链接有其自己的权重变量。一个链接的权重会调整经过它传输的信号。神经网络通过逐渐调整其整个网络的链接权重,适应和学习如何识别模式,最终只有被正确识别的模式会产生一个完整的遍布全网络的兴奋传递。
一般情况下,输入数据被格式化为一个输入信号,链接到第一层外部节点。这些节点随后向一个或多个隐藏层发送信号,最后输出层节点发出一个“反馈”给外部世界。由于学习(也即智能)是隐含在链路权重中的,实际应用的核心问题是搞清楚怎么调节或训练所有的链路权重以实现正确模式的应答。今天,神经网络主要通过后向传播的增量学习技术,用在训练数据中寻找正确的模式来完成学习过程。当神经网络生成一种有用的方式识别出正确的样本时,该方法相应的给予链路“奖励”,当神经网络识别出错误的样本时,则给予惩罚。
然而,不可能存在一个能够适用于任何给定问题的神经网络架构。此时机器学习专业知识就是非常重要的了,因为给定一定数量的节点、其激励功能、一定数量的隐藏层以及所有节点的连接关系(例如是密集连接还是稀疏连接,是否存在内部反馈或循环环路),可能存在无数种潜在的神经网络配置方式。传统研究中,受限于硬件条件,神经网络隐藏层的数量设置得很少,即使如此,神经网络已经展现出超过人类的,惊人的和熟练的学习能力。如今,深度学习神经网络可能具有数百层网络,能够完全胜任深度奥妙问题的处理。
深度学习实际应用的关键是搞清楚如何在成百上千个并行计算核心上有效地拓展出大型神经网络,然后用巨量大数据集进行高效的训练。过去,这需要远超企业数据中心规模的高性能计算设备HPC来实现。今天,NVIDIA、Mellanox和DataDirect Networks公司正在推出适合一般企业数据中心规模的HPC产品。例如NVIDIA的DGX-1,本质上它是一台设计用于深度学习,集成了8块高端GPU运算卡的超融合超级计算机,令人惊讶的是,它只有4U这么大,显然可以被一般公司所接受。
谷歌的AlphaGo大时代
云计算供应商如谷歌,也提供托管的机器学习工具。例如,谷歌的AlphaGo围棋游戏程序最近在最高级别的比赛中战胜了世界级的围棋冠军。围棋被认为是机器无法匹敌人类智慧的最后前沿领域之一,因为围棋无法用简单的暴力计算的方式在有限时间内求解(完整地在19x19围棋棋盘上计算最佳落子,需要的计算能力超过了现存最强的计算机能力)。然而,你可以认为AlphaGo团队采取了一个捷径,通过训练深度学习程序,使它下围棋时能下出任何人类选手曾经下过的最好的落子。而且,这个程序能够通过和自己下围棋来变得更强。
在其外表之下,AlphaGo主要由2个大型神经网络链接在一起组成(通过一些蒙特卡罗仿真,将“太多可选落子位置需要计算”的大集合缩减到一个可能是较佳落子位置组成的小集合)。第一个神经网络用百万局过去的棋谱进行训练,因此它能够确定哪些位置最可能是胜利者一方会下的位置。第二个神经网络被训练用于估计每一个新位置的价值,原理上讲,即给予那些在棋谱终盘时赢者占据的位置更高的估值。这两个神经网络联合在一起递归使用,通过预测接下来有限步数的双方落子和盘局来选择当前最佳的落子位置。这里的本质是,深度学习方法通过跟最好的棋手的棋谱学习,现在已能够不依赖于暴力计算实时击败最好的棋手了。
深度学习在企业IT中如何应用呢?
深度学习程序甚至会使它的设计者和训练者感到吃惊,通过从历史数据中学习复杂的模式,它能够在超出期望或看上去无关的场景中工作得很好。但是从根本上说,深度学习程序不能真正预测出一个从未被训练过的模式——它只能从已经遇到过的场景中进行学习。而且,深度学习程序不能用逻辑术语或规则来说明它所学到的东西,因此无法简单地抽象出它的学习结果。
对任何机器学习技术,总是要在变得太特殊(例如,需要太精确地记录历史数据,如同查找表一样过于死板)和保持太一般化(例如,不管输入是什么,简单地给出单一最可能的值)中进行平衡,以避免无效计算。数据学家的工作就是努力为特定问题找到最佳平衡方式。
在我们拥有大量训练数据可用的任何场景下,深度学习将毫无置疑是非常有用的。每天,在IT部门,我们产生越来越多的机器数据可用于开发有用的人工智能。例如,在安全应用中,神经网络能够学会鉴别可能的入侵或黑客行为的深度模式。神经网络甚至可以用时间序列数据训练,学习识别在工作量和资源这两个关键因素影响下的动态正常(异常)行为。谷歌很有可能正在研究如何利用AlphaGo类似的人工智能能力,帮助其管理云基础设施,避免损耗和最优化资源分配。
如果你想要了解更多有关神经网络的知识,我建议你花几分钟尝试一些相关的互动实例。我们都应该为有朝一日能够将自己的大脑直接连入数据中心网络做好准备。