摘要:表示学习(Representation Learning)是人工智能领域一直在探讨的话题,也是走向强人工智能的路上必须要解决的一道难题。目前为止,大多数表示学习方法停留在了欧式空间(Euclidean Space),但事实上除了简单的欧式空间,还存在很多其他的非欧式空间可以用来构建AI模型,并且我们也发现了近两年越来越多的学者也开始在这个领域做出了一些有意思的工作。在本文中,我们通俗易懂地讲解了欧式空间与其他非欧式空间比如双曲空间(Hyperbolic Space)的区别,以及使用这类空间来建模的背后的动机。阅读本文不需要双曲空间相关知识。
1. 什么是好的表示(Good Representation)?
表示学习(Representation Learning)是当今机器学习领域经常被讨论的话题,尤其深度学习的崛起,让很多学者加入到了表示学习的研究当中。那什么是表示学习? 通俗易懂的解释就是用数字(向量、矩阵...)来表达现实世界中的物体(object),而且这种表达方式有利于后续的分类或者其他决策问题。跟表示学习有紧密关联的是特征工程(feature engineering),但工业界的特征工程更多的是利用人为的经验去设计一套适合某个特定领域特征的过程,整个时间成本很高,而且一个领域的特征通常很难去解决其他类似的问题。相反,在表示学习中,我们希望通过算法自动从给定的数据中学出合理的特征或者表示。
比如在下面这幅图中,给定一个输入input, 我们希望通过一层层的模型参数来学出一个表示,并且这个表示可以很好地支持上层应用 A,B,C。
图片来自于[1]
在图像识别领域,CNN已经成为最主流的算法,通过一层层的卷积层,Pooling层来对原始的图片数据(看成是像素)做非线性转换,整个过程其实可以看做是表示学习的过程,我们希望通过这样一层层的转换,能够学出代表每个图像的“最好的表达方法”,同时这种表达有利于后续的分类或者其他的任务。类似的,在自然语言处理领域,词嵌入(word embedding)必然是近几年最重要的成果之一,通俗来讲就是用一个低维的向量来表达每一个单词,也称作分布式表示法(distributed representation)[2]。在单词的表示学习过程中我们经常会用到 Skip-Gram[4], CBOW[3], Glove[5]等算法,找到能够用来表达每一个单词的最合理的向量。最后,在语音识别领域,端到端的模型也逐渐成为主流,通过原始语音信号的表示学习,是否能够学习出比传统语音特征(比如MFCCs),更加有效的表示也是很多人研究的话题。
说到这里,给定一个问题,我们可以尝试着用各类算法来去学习不同的表示方法,那这里的关键问题是我们怎么去判断哪些表示是好的,哪些表示是不好的? 比如我们设计了一套CNN架构,怎么判断从图片里学出来的表示(representation)是好是坏的? 最简单的评估标准,也是很多人目前使用的是,针对于一个任务(task)的准确率-这种“终极”指标,所以很多人会误认为准确率高的就是好的表示,或者根本不去关心除了准确率之外的事情。包括在学术界,这种缺乏本质思考的研究也导致了近几年低质量论文的“泛滥”,形成了比拼准确率的“竞赛”,但在本质层面上并没有给科学的发展带来了较大的影响。
事实上,准确率仅仅是其中一个方面,其实还有很多其他的因素需要考虑进去。Bengio等学者在[1] 提出了好的表示所需要具备的一些特性。首先, 一个好的表示可以学出Disentangle Factors,而且这些factor可以泛化(generalize)到其他类似的任务中。比如给定一个有人物的图片,我们可以想象每一张图片由 “图片中的人物”,“人物的角度”, “表情”, “有没有带眼镜” 这些不同因素来组成,而且可以看作这些因素是具有相互独立性的。
比如在下面的图片中,有些图片主要用来描述角度、有些主要用来描述发型和表情。举个简单的例子,假设我们用神经网络对图片进行了学习,而且最后用一个四维的向量来表达这幅图片。那这时候,我们希望第一个hidden unit可用来控制角度、第二个unit可以用来控制是否带眼镜,以此类推。