文章目录

  • 表示学习
    • 特征工程与表示学习
      • 深度学习的表示学习
      • 注:深度学习不等于多层神经网络
      • 什么时候用「手工提取」什么时候用「表示学习」?
    • 关于特征
    • 表示学习的算法
  • 参考资料

表示学习

表示学习的基本思路,是找到对于原始数据更好的表达,以方便后续任务(比如分类)。机器学习中,同样的数据的不同表达,会直接决定后续任务的难易程度(换言之,表示方法的选择通常依赖于后续任务的需求),因此找到好的数据表示往往是机器学习的核心任务。

特征工程与表示学习

机器学习一般有两种思路来提升原始数据的表达[1]:

  1. 特征学习(feature learning),又叫表示学习(representation learning)或者表征学习,一般指模型自动从数据中抽取特征或者表示的方法,是模型自动学习的过程
  2. 特征工程(feature engineering),主要指对于数据的人为处理提取,得到我们认为的适合后续模型使用的样式,是人工提取的工程 (狭义的特征工程指的是“洗数据”:处理缺失值,特征选择,维度压缩等各种预处理手段,但从更广义的角度看,这些处理是为了使得数据有更好的表达以便后续应用)


传统的机器学习方法主要依赖人工特征处理与提取,而深度学习则依赖模型自身去学习数据的表示(自动抽取有效特征)。

深度学习的表示学习

输入数据经过层层网络,依次被抽取出了低级特征(low level features)比如边缘色度,中级特征(middle level features)比如纹理角点,和高级特征比如图形,然后把高度抽象化的高级特征交给最后的分类器层进行预测,从而得到分类结果。深度网络最后一层一般就是个线性分类器,比如softmax线性回归分类,深度神经网络的其他部分可以看做是为最后一层的分类器提供表征。通过层层网络抽取高度抽象化的特征,最终目的是为了帮助分类器做出良好的预测:最开始输入网络的特征可能是线性不可分的,但是到最后隐藏层时变得线性可分了。如果只看分类器层的话深度学习和其他机器学习没有太大差别,正是前面层层网络良好有效的抽取特征的能力使得深度学习脱颖而出 [1]。

注:深度学习不等于多层神经网络

传统意义上的多层神经网络只有输入层,隐藏层,输出层。其中隐藏层的层数根据需要而定。“深度学习的网络结构”广义上就属于多层神经网络,只是更深更复杂。而"深度学习"是为了让层数较多的多层神经网络可以训练、能够work而演化出来的一系列的 新的结构和新的方法 [2]。

新的网络结构中最著名的就是CNN,它在多层神经网络的基础上,加入了“卷积层“进行特征学习,符合人脑对视觉任务的处理方式;并且其“局部感受野”和“权植共享”的概念,大大减少了网络参数的数量,解决了传统较深的网络参数太多难以训练的问题。新的结构还包括了:LSTM,ResNet等。

新的方法就多了:新的激活函数(ReLU),新的权重初始化方法(逐层初始化,XAVIER等),新的损失函数,新的防止过拟合方法(Dropout, BN等)。这些方面主要都是为了解决传统的多层神经网络的一些不足:梯度消失,过拟合等。

什么时候用「手工提取」什么时候用「表示学习」?

一般来说,要想构造良好的特征工程,需要深刻理解数据和问题;要想自动学习到数据的良好表达,就需要大量的数据。因此选择的过程其实也是在衡量我们对于问题及数据的理解是否深刻,是人类先验与数据量之间的一场博弈。一般来说,「特征工程」往往在中小数据集上表现良好,而「表示学习」在大量复杂数据上更有用武之地。当数据量不大且对数据充分理解时,特征工程比较合适,这在kaggle竞赛中很常见。而当数据量较大或者我们的先验理解有限时,可尝试表示学习,比如神经网络。另外,表示学习的另外一个好处是高度抽象化的特征可以通过迁移学习用在其他相关的问题上 [1]。不管是特征工程还是表示学习,我们衡量它们作用的一个标准就是看后续的学习任务是否能够得益于这种表示。

关于特征


给出一张猫的图片,我们的大脑是怎么识别出这是一只猫的呢?通过眼睛,耳朵,嘴巴,尾巴,腿,或是这些的组合?这里的“耳朵,嘴巴,尾巴" 等等就是我们用来判断的"特征",大脑的神经元迅速完成了一系列复杂的运算,最后得出结论这是猫。再比如“四条边,等长,直角”这些稍低级的特征可被大脑用来识别正方形。

但对于计算机而言,图片只是一堆数字而已,比如800600的彩色图片就是一个8006003的矩阵(灰度图则为800600的矩阵),矩阵里相应元素的值就代表着像素值(像素值也是人为创造的概念,对计算机来说这就只是个数字)。那么什么样的数字代表“猫的眼睛”,什么样的数字代表“猫的耳朵”呢?如果采用特征工程,就需要理解数据并且人为定义规则来提取特征,比如定义连续5个像素(1,34,67,89,213)则代表猫尾,… ,当然定义的规则,和提取特征的好坏,非常影响最终的分类结果 [3]。

我们可以利用像素和邻域像素之间的差异,设计卷积核来提取图像的局部特征。经过不同卷积核的卷积运算后,可以起到不同的作用,比如高斯平滑卷积核可以被看做每个像素被其邻居像素平均(边缘模糊),见上图;而边缘检测的卷积核,就是将每个像素和其邻域像素做差值,如下图

再比如识别一个曲线,可以按照曲线的形状走向设计卷积核的形状,在遇到类似图像的时候,卷积运算后的数值会很大(对应位置像素值相乘后相加),反之很小,即可识别想要的形状。

注:卷积运算其实就是向量的内积运算。内积是衡量两个向量之间的相似性的,所以卷积核在图像某一区域的卷积实际上就是这个卷积核与图像该区域的相似性。一个卷积核探索一种相似性,多个卷积核探索多个相似性。卷积核作用在同一样本的不同位置上(即卷积核在整张图上共享:权值共享)那么kernel探索的就是不同位置共有的局部特征,即局部特征的平移不变性。卷积核作用在不同的样本上,那么kernel 探索的是样本数据共有的局部特征。

以上也是卷积核又称为滤波器或者模板的原因 [4]。

传统的图像处理,就是人工设计好了不同的卷积核(滤波器)去提取不同特征,常见的滤波器:高通、低通、高斯模糊、SOBEL 查找边缘 … 是白盒。但非常依赖经验,提取规则只适用特定数据和问题,对于某些任务,特征并不单一和具体,很难设计适合的滤波器。比如计算机视觉领域的目标检测:想要设计一个卷积核检测眼睛位置,但是不同的人,眼睛大小状态是不同的,如果卷积核太过具体化,卷积核代表一个睁开的眼睛特征,给出一张图片的眼睛是闭合的,就很大可能检测不出来。对于这种问题,我们如何设计卷积核呢,即,如何确定卷积核的值呢?

深度学习可以自动寻找合适的卷积核来完成特征提取(卷积核的固定值被替换为参数来求解),得到的“滤波器”是黑盒,神经网络不需要理解数字代表的业务含义,它只需要尝试找到最合适的卷积核等各种参数,使得在给定数据上loss最小就可以了 (求解卷积核参数的过程涉及到损失函数,梯度下降,反向传播等:使得最终的卷积核,通过它提取出来的特征,能够使预测得到的结果和真值尽可能接近)。

当然了,虽然深度学习的过程不要人为理解数字背后的业务含义,但实际上深度学习得到的特征是具有一定语义的:学习到的低级特征可视化后得到一些点,线,方向,颜色等等,中级特征可视化后可能是一些轮廓形状,角点等等,高级特征就更加抽象了甚至有时人类并不能理解。这也是迁移学习和fine-tune存在的基础,一个经过大型图像数据集如ImageNet训练过的大规模CNN,因为前面几层已经通过训练得到了丰富的底层细节信息,所以只需要在新数据集上训练上层网络(对低级特征的组合信息)以及最后的分类器层即可,完全不需要从头再来 [4]。

小结,深度学习并不“理解”所识别物体的外观/纹理/颜色等“特征”… 它只是能够根据这些本质仍为数字的“特征”,进行分类/分割/… 任务。它们所做的实际就是两件事情:将(输入)视觉空间分解为卷积滤波器的分层模块化网络(类似于人类视觉皮层系统);将这些滤波器的某些组合与给定标签之间建立概率映射 [5]。

表示学习的算法

大致包括:

  1. 深度学习,包括大部分常见的模型如CNN/RNN/DBN/GCN等
  2. 某些无监督学习算法,如主成分分析(PCA)及自编码器(autoencoder)通过对数据转化而使得输入数据更有意义
  3. 某些树模型可以自动的学习到数据中的特征并同时作出预测

深度神经网络的最后一层一般都是一个线性分类器,其他层则可看成是在给这个线性分类器提供特征,所以最后一层之前的隐藏层都可被理解为是表征学习,在上一节中有更具体的描述。

在深度学习大幅发展之前,无监督学习是很好的表征学习的工具,精髓是学习从“高维观察” 到 “低维表征空间” 的映射,使得可通过低维的表征(近似地)重建出原来的观察,比如PCA的映射空间就保证了原空间的多样性。自编码器是一种无监督的神经网络,它与PCA很相似,需要最小化和PCA一样的目标函数,但相比于PCA只能执行线性变换,自动编码器既能表征线性变换,也能表征非线性变换。因为自动编码器的网络表征形式,所以可将其作为层用于构建深度学习网络[6]。

参考资料

[1]「特征工程」与「表示学习」 - 微调的文章 - 知乎
[2] 深度学习 和 多层神经网络 的区别? - 知乎
[3] 深度学习的一些思考
[4] cnn本质
[5] How convolutional neural networks see the world – The Keras Blog
[6] 自动编码器

表示学习(特征学习)相关推荐

  1. 旷视提Circle Loss,统一优化视角,革新深度特征学习范式 | CVPR 2020

    作者 | 旷视研究院 本文是旷视 CVPR 2020的被收录论文解读第.它提出用于深度特征学习的Circle Loss,从相似性对优化角度正式统一了两种基本学习范式(分类学习和样本对学习)下的损失函数 ...

  2. 如何将知识图谱特征学习应用到推荐系统?

    来源 | 微软研究院AI头条 将知识图谱作为辅助信息引入到推荐系统中可以有效地解决传统推荐系统存在的稀疏性和冷启动问题,近几年有很多研究人员在做相关的工作.目前,将知识图谱特征学习应用到推荐系统中主要 ...

  3. CVPR 2020 Oral | 旷视提出Circle Loss,革新深度特征学习范式

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文系旷视研究院投稿 本文是旷视CVPR2020论文系列解读第4篇, ...

  4. CVPR 2020 Oral | 旷视研究院提出Circle Loss,革新深度特征学习范式

    IEEE 国际计算机视觉与模式识别会议 CVPR 2020 (IEEE Conference on Computer Vision and Pattern Recognition) 将于 6 月 14 ...

  5. CVPR 2020 Oral | 人脸识别Loss新突破: 旷视提出Circle Loss,革新深度特征学习范式...

    关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 来源:旷视研究院@微信公众号 旷视研究院提出用于深度特征学习的Circle Los ...

  6. 无监督学习最新研究:通过简单的「图像旋转」预测便可为图像特征学习提供强大监督信号

    作者:Spyros Gidaris.Praveer Singh.Nikos Komodakis 「雷克世界」编译:嗯~是阿童木呀.KABUDA.EVA 在过去的几年中,深度卷积神经网络(ConvNet ...

  7. UFLDL深度学习笔记 (三)无监督特征学习

    UFLDL深度学习笔记 (三)无监督特征学习 1. 主题思路 "UFLDL 无监督特征学习"本节全称为自我学习与无监督特征学习,和前一节softmax回归很类似,所以本篇笔记会比较 ...

  8. LBP特征学习(附python实现)

    LBP特征学习(附python实现) LBP的全称是Local Binary Pattern即局部二值模式,是局部信息提取中的一种方法,它具有旋转不变性和灰度不变性等显著的优点.在人脸识别领域有很多案 ...

  9. Deep Learning论文笔记之(一)K-means特征学习

    Deep Learning论文笔记之(一)K-means特征学习 zouxy09@qq.com http://blog.csdn.net/zouxy09          自己平时看了一些论文,但老感 ...

  10. 直播 | Circle Loss:从对相似性优化的统一视角进行深度特征学习

    「PW Live」是 PaperWeekly 的学术直播间,旨在帮助更多的青年学者宣传其最新科研成果.我们一直认为,单向地输出知识并不是一个最好的方式,而有效地反馈和交流可能会让知识的传播更加有意义, ...

最新文章

  1. parquet java_Apache Parquet Java API的文档?
  2. 源码编译安装nginx1.4.7
  3. ffmpeg加入libass
  4. 吉首大学2019年程序设计竞赛
  5. PHPstorm中使用数组短语法[],出现红色波浪
  6. 1、Locust压力测试环境搭建
  7. 【渝粤题库】国家开放大学2021春2764饲养与饲料题目
  8. Windows开发的内功和招式
  9. OneAPM Cloud Test——系统性能监控神器 1
  10. glusterfs的一些基本知识
  11. Mutation Testing(变异测试)
  12. Java Session 会话技术
  13. day1------安装部署k8s之完成(3)
  14. 我裂开了,教给他如何搭建和使用代理服务器,他居然用来做这么不正经的事(爬虫,代理ip)
  15. 自费访学|计算机专业老师赴加拿大卡尔加里大学
  16. 一文读懂高频交易程序化交易和量化交易区别
  17. 如何判断两条线段是否相交
  18. 消防工程师 1.1 消防给水及设施(2)
  19. 新版盲盒商城V4.0完整系统源码+亲测可用
  20. javascript使用插件

热门文章

  1. 代码实证:风险平价及其改进思路——主成分风险平价
  2. ECM 手机MIC电路简单设计描述
  3. word分栏 公式居中对齐 自动编号
  4. Git使用流程及技巧 - 详细教程
  5. 抖音无人直播技术手机版,增加多平台实时在线转播功能,无人直播防屏蔽防检测
  6. Android插件化方式实现View动态更新
  7. html中div的覆盖,CSS中如何使div覆盖另一个div的实例
  8. Android平台美颜相机/Camera实时滤镜/视频编解码/影像后期/人脸技术探索——1.1 工程思路与难点
  9. java程序设计实用教程高飞pdf_普通高等教育“计算机类专业”规划教材:Java程序设计实用教程习题集 pdf epub mobi txt 下载...
  10. 算法的优雅(五):平衡的爱情