郑泽宇,现才云科技首席大数据科学家,曾任谷歌高级工程师。2013 年加入谷歌后,作为主要技术人员参与并领导多个大数据项目,拥有丰富机器学习、数据挖掘工业界及科研项目经验。2014 年,他提出将产品聚类项目用于衔接谷歌购物和谷歌知识图谱(Knowledge Graph)数据,使得知识卡片形式的广告逐步取代传统的产品列表广告,开启了谷歌购物广告在搜索页面投递的新纪元。2013年5月获得美国 Carnegie Mellon University(CMU)大学计算机硕士学位, 其间在顶级国际学术会议上发表数篇学术论文,并获得西贝尔奖学金。
从去年年初 AlphaGo 战胜李世石,到年底 Master 一波60连胜,再到最近DeepMind推出的AlphaGo Zero,仿佛棋神下凡的超级AI强手连发,把人工智能这个概念推上了历史的新高度。随着人工智能在公众层面的热度不断提升,业内人士的关注点却更加聚焦在AI与现实场景的结合,比如如何加速一个深度学习项目的落地。
说起如日中天的 AlphaGo Zero,人工智能专业人士最为之振奋的地方是它极大限度地降低了对标注数据的依赖。然而,同样从专业角度来看,这一个成果距离应用到真实场景中,还有很长一段路要走。目前,有大量AI科学家正在致力于缩短这一路径,尝试了各种各样新颖又有趣的方法。迁移学习就是其中一种重要手段,常被用于训练数据有限的真实场景里,可以较为容易地实现深度学习的既定目标。
所谓迁移学习,就是将在某一问题上已经训练好的模型尽快迁移到另外一个问题上。比如,让一个围棋高手在更短的时间内学会象棋,或者让一个训练好的人脸识别模型很快迁移到识别猪脸的问题上。
深度学习与传统机器学习
与传统的机器学习算法相比,深度学习的一大特点就是可以基于海量训练数据自动提取更加复杂的特征。这对于绝大多数非结构化数据的应用,是至关重要的。图1 对比了传统机器学习算法和深度学习算法的区别,并给出了在图像识别问题上深度学习自动提取特征的过程。在图像识别问题上,特征提取不是一件简单的事情。在一些复杂问题上,要通过人工的方式设计有效的特征集合,需要耗费大量时间和精力,有时甚至需要整个领域数十年的研究投入。例如从很多照片中识别汽车,已知的条件是汽车有轮子,寄希望于在图片相关数据中抽取类似“图片中是否出现轮子”这样的特征。但实际上,要从图片的像素中描述一个轮子的模式是非常难的。虽然车轮的形状很简单,但在实际图片中,车轮上可能会有来自车身的阴影、金属车轴的反光,周围物品也可能会部分遮挡车轮。正因为实际图片中存在各种不确定的因素,让我们很难直接抽取这样的特征。
图1 深度学习自动特征提取过程示意
虽然深度学习可以自动提取特征,然而要提取的特性却并不是免费的。深度学习需要大量的训练数据,才能从原始的特征中提炼出有意义的特征。所以如图2所示,当数据量较小的时候,神经网络的模型可能反而不如传统机器学习模型。
图2 在不同数据量上各类模型的正确率
迁移学习
在实际应用中,标注大量的训练数据需要很长的时间和很多的人力。为了降低深度学习算法对数据量的需求,迁移学习就是一个非常常用的方法。比如在图像分类问题中,使用在 ImageNet 上训练好的卷积神经网络模型是一个非常常用的方法。如果将卷积层看成是对图片进行特征提取的过程,那么在一个相对通用的数据集上训练好的模型就有可能可以被使用到另一个问题上。如图1 所示,将新的图像信息通过已经训练好的深层神经网络模型移植到倒数第二层的过程,可以被看成对新图像的特征提取过程,这个过程得到的结果可以被理解为新图片的 embedding 向量。因为在原来的ImageNet问题中,通过这个向量加上最后一个全连接层就可以区分1000类物体,所以我们认为这个向量能够很好地表达图片中物体的特征。比如使用 ImageNet 上训练好的Inception-v3模型,可以在没有GPU的机器上,仅使用2个小时就能很好地迁移到花朵种类分类问题上,并达到大约90%的准确率。
PROJECTOR界面
对迁移学习中特征向量的效果进行验证,往往不够直观。为了更加直观地让大家了解这类embedding向量的效果,TensorBoard提供了 PROJECTOR 界面来可视化高维向量之间的关系,使用起来非常方便。比如,在图像迁移学习中,可以将一组目标问题的图片,通过训练好的卷积层来得到瓶颈层,这些瓶颈层向量就是多个高维向量。在目标问题图像数据集上,同一种类的图片,在经过卷积层之后,得到的瓶颈层向量,如果在空间中比较接近,那么迁移学习得到的结果,就更加可能会比较好。类似地,在训练单词向量的时候,语义相近的单词所对应的向量,在空间中的距离如也比较接近的话,那么自然语言模型的效果也会更好。
为了更直观低呈现TensorBoard PROJECTOR的效果,图3向我们展示了使用 MNIST 数据训练前和训练后的embedding向量结果。从图中可以看出,在训练之前,模型的分类效果不是很理想,左侧上不同颜色的图片(代表不同的类别)相对混乱地挤在一起。但是训练之后,从右侧的图上可以明显的看出,不同颜色的图片的区分度还是比较大的。
图3. 不同迭代轮数下MNIST测试数据在瓶颈层的向量可视化结果
在实际应用中,我们可以根据新问题的测试数据,通过已经训练好的模型的卷积层来获取 embedding 向量矩阵。通过对这个向量矩阵的可视化分析,能够更好地判断已有的模型,是否能够被很好地迁移到新的问题。
本文作者郑泽宇的首著《TensorFlow:实战Google深度学习框架》一经问世,即受到广泛关注,成为该领域不可或缺的参考资料及入门指南。然后,TF 的版本更新速度和技术演变进程实在是远超 Boy 预料,为紧跟TensorFlow 最新技术动态,提供更为及时和精确的指导,泽宇已笔耕数月,于美国家中闭关写作本书新版。如急于上手TF,也可点击文末 阅读原文 抢先读起来!