深度学习到底是个啥?
深度学习是实现机器学习的一种技术。
早期机器学习研究者中还开发了一种叫人工神经网络的算法,但是发明之后数十年都默默无闻。神经网络是受人类大脑的启发而来的:神经元之间的相互连接关系。但是,人类大脑中的神经元可以与特定范围内的任意神经元连接,而人工神经网络中数据传播要经历独立的层、连接,还有数据传播方向。
举个例子,你你可能会抽取一张图片,将它剪成许多块,然后植入到神经网络的第一层。第一层独立神经元会将数据传输到第二层,第二层神经元也有自己的使命,一直持续下去,直到最后一层,并生成最终结果。
每个神经元都会对输入的信息进行权衡,确定权重,搞清它与所执行任务的关系:相对于执行的任务该神经元的正确和错误程度。最终的输出由所有的权重共同决定。因此,我们再来看看上面提到的停止标志示例。一张停止标志图像的属性,被一一细分,然后被神经元“检查”:八角形形状、红色颜色、与众不同的字符、交通标志大小和是否运动、手势等。神经网络的任务是判断这是否是一个停止标志。它将给出一个“概率向量”(probability vector),这其实是基于权重做出的猜测结果。在本示例中,系统可能会有 86% 的把握认定图像是一个停止标志,7% 的把握认为是一个限速标志,有5%的信心确定它是一支风筝卡在树上,等等。然后网络架构会告知神经网络其判断是否正确。
不过,即使只是这么简单的一件事也是很超前的,不久前,AI研究社区还在回避神经网络。在AI发展初期就已经存在神经网络,但是它并没有形成多少“智力”。问题在于即使是最基础的神经网络也要耗费巨大的计算资源,因此当时不算是一个可行的方法,也就无法成为一种实际的方法。不过,尽管如此,还是有少数研究团队勇往直前,以多伦多大学 Geoffrey Hinton 教授为首的一小批狂热研究者们坚持采用这种方法,最终让超级计算机能够并行执行该算法,并证明该算法的作用。
如果我们回到停止标志那个例子,神经网络很有可能受训练的影响,给出错误的答案;如果我们对网络进行训练,用大量的错误答案训练网络,调整网络,结果就会更好;这说明网络还需要不断的训练。
研究人员需要做的就是训练,他们需要收集成千上万张图片,甚至数百万张图片来训练,直到神经元输入的权重调整到非常精确,几乎每次都能够给出正确答案——不管是有雾还是没雾,是阳光明媚还是下雨都不受影响。这时神经网络就可以自己“教”自己,搞清停止标志的到底是怎样的;Facebook 利用神经网络识别人脸图像;吴恩达(Andrew Ng)2012 年在谷歌实现了让神经网络识别猫。
如今,深度学习可以摧枯拉朽般地实现了各种任务。比如在某些情况下,在某些场景中,通过深度学习训练过的机器在图像识别上表现优于人类,这包括识别猫、识别血液中的癌细胞特征、识别MRI扫描图片中的肿瘤。谷歌的 AlphaGo 学会了围棋,并为比赛进行了大量的训练:不断的和自己下围棋并从中学习。