在机器学习领域,表征学习(或特征学习)是一种将原始数据转换成为能够被机器学习有效开发的一种技术的集合。在特征学习算法出现之前,机器学习研究人员需要利用手动特征工程(manual feature learning)等技术从原始数据的领域知识(domain knowledge)建立特征,然后再部署相关的机器学习算法。虽然手动特征工程对于应用机器学习很有效,但它同时也是很困难、很昂贵、很耗时、并依赖于强大专业知识。特征学习弥补了这一点,它使得机器不仅能学习到数据的特征,并能利用这些特征来完成一个具体的任务。
和预测性学习(Predictive Learning)不同,表征学习的目标不是通过学习原始数据预测某个观察结果,而是学习数据的底层结构(underlying structure),从而可以分析出原始数据的其它特性。表征学习允许计算机学习使用特征的同时,也学习如何提取特征:学习如何学习。在机器学习任务中,输入数据例如图片、视频、语言文字、声音等都是高维且冗余复杂,传统的手动提取特征已变得不切合实际,所以需要借助于优秀的特征学习技术。
类似于机器学习,特征学习可以被分为两类:监督式特征学习(Supervised Representation Learning)和无监督式特征学习(Unsupervised Representation Learning)。在监督特征学习中,被标记过的数据被当做特征用来学习。例如神经网络(Neural Networks),多层感知器(Multi-Layer Perception),监督字典学习(Supervised Dictionary Learning)。在无监督特征学习中,未被标记过的数据被当做特征用来学习。例如无监督字典学习(Unsupervised Dictionary Learning),主成分分析(Principal Component Analysis),独立成分分析(Independent Component Analysis),自动编码(Auto-encoders),矩阵分解(Matrix Factorization) ,各种聚类分析(Clustering)及其变形。
[描述来源:Wikipedia; URL:https://zh.wikipedia.org/wiki/表征学习,https://en.wikipedia.org/wiki/Feature_engineering]
发展历史
早在100多年前,基于传统机器学习的数据特征学习就已经被广泛提出。1901年,Karl Pearson提出了主成分分析(Principal Component Analysis),用线性投影的方法学习数据的低维度特征。1936年,Ronald Fisher提出了线性判别分析(Linear Discriminant Analysis)。之后,PCA和LDA的各种变形如核PCA(Kernel PCA),广义判别分析(Generalized Discriminant Analysis)也相继提出。2000年,机器学习社区兴起了流形学习(Manifold Learning),即发掘高维数据中的内在结构。
而作为特征学习的另外一条主线,神经网络的概念虽然早在多年前就被科学家提出,但直到1986年,Geoffrey Hinton才发现反向传播算法(BP Algorithm)可以在网络的隐藏层里学习到有用的关于输入数据的内在表征。2006年,Geoffrey Hinton提出贪婪分层预训练和深度神经网络微调的方法,从而解决了困扰神经网络用于特征学习的两大难题:模型过拟合(Model Overfitting)和梯度扩散(Gradient Diffusion)。随着计算机计算能力的提升和深度神经网络结构的不断发展,人们更多地使用深度神经网络来更有效地提取数据的特征,用于后续的分类或预测。例如,对于图像输入数据,人们会先使用训练好的深度神经网络模型(如VGG,ResNet等)提取特征信息,再用于强化学习(Reinforcement Learning),视觉导航(Visual Navigation)任务等等。
下图可看出数据的特征学习和神经网络的特征学习发展历程:
[图片来源:Zhong, G., Wang, L.N., Ling, X. and Dong, J., 2017. An Overview on Data Representation Learning: From Traditional Feature Learning to Recent Deep Learning. The Journal of Finance and Data Science.]
主要事件
年份 | 事件 | 相关论文 |
1901 | Karl Pearson发表主成分分析的论文 | Pearson, K., 1901. LIII. On lines and planes of closest fit to systems of points in space. *The London, Edinburgh, and Dublin Philosophical Magazine and Journal of Science*, *2*(11), pp.559-572. |
1936 | Ronald Fisher发表最早期的线性判别分析论文 | Fisher, R.A., 1936. The use of multiple measurements in taxonomic problems. *Annals of human genetics*, *7*(2), pp.179-188. |
1943 | Warren McCulloch and Walter Pitts 创建了第一个人工神经元模型 | McCulloch, W.S. and Pitts, W., 1943. A logical calculus of the ideas immanent in nervous activity. The bulletin of mathematical biophysics, 5(4), pp.115-133. |
1958 | Frank Rosenblatt建立了世界上第一个两层神经网络用于二元分类 | Rosenblatt, F., 1958. The perceptron: A probabilistic model for information storage and organization in the brain. Psychological review, 65(6), p.386. |
1974 | Paul Werbos提出了反向传播(Backpropagation)算法用于训练多层感知器 | Werbos, P.J., 1974. Beyond regression: New tools for prediction and analysis in the behavioral sciences. Doctoral Dissertation, Applied Mathematics, Harvard University, MA. |
2006 | Geoffrey Hinton提出贪婪分层预训练和深度神经网络微调的方法 | Hinton, G.E., Osindero, S. and Teh, Y.W., 2006. A fast learning algorithm for deep belief nets. Neural computation, 18(7), pp.1527-1554. Hinton, G.E. and Salakhutdinov, R.R., 2006. Reducing the dimensionality of data with neural networks. science, 313(5786), pp.504-507. |
... |
发展分析
一个好的特征学习可以帮助我们更容易提取出数据的有用信息从而用于分类或预测。特征学习已经被广泛应用于人工智能和机器学习领域,如语音识别 (Speech Recognition),信号处理(Signal Processing),物体识别(Object Recognition),自然语言处理(Natural Language Processing)以及强化学习(Reinforcement Learning)。通过学习语音、信号、图像、语言文字等输入数据提取出有用的特征,然后应用到不同的任务上。近几年,深度强化学习(Deep Reinforcement Learning)通过特征学习视频游戏的图像信息,从而学会接下来如何采取行动才能在游戏中得到最多的奖励,从而在很多电脑游戏中达到人类专家的水平。
特征学习还可以应用于迁移学习(Transfer Learning),通过提取出共同的特征从而从一个任务迁移到其它不同的任务。
瓶颈
-传统的特征学习技术过于依赖人工及相关的专业知识,困难且昂贵。
-深度神经网络虽然可以有效地学到数据丰富的特征,但特征难以解读。通常神经网络层数越多,训练成本也越高。
未来发展方向
目前深度神经网络在图像处理、语音识别、视频游戏等领域已经达到了甚至超越人类的水平,但对于深度强化学习这块通向未来通用人工智能(Artificial General Intelligence)的领域还任重道远。借助于计算能力和数据量的不断发展,我们可以利用深度神经网络学习丰富的特征来表示环境的模型,然后通过基于模型的深度强化学习(Model-based Deep Reinforcement Learning) 训练机器人(Robotics)来慢慢靠近通用人工智能......
利用CNNs等技术提取特征用于监督学习已经取得了巨大的进展,但未来需要有更多的像DCGAN等技术用于非监督式的特征学习,如此更能帮助机器理解这个世界。
Contributor: Yufeng Xiong