博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
deeplenrnig学习笔记——什么是特征
阅读量:5451 次
发布时间:2019-06-15

本文共 1676 字,大约阅读时间需要 5 分钟。

   特征是机器学习系统的原材料,对最终模型的影响是毋庸置疑的。如果数据被很好的表达成了特征,通常线性模型就能达到满意的精度。

一、特征的表示粒度:

    学习算法在一个什么粒度上的特征表示,才有能发挥作用?就一个图片来说,像素级的特征根本没有价值。例如下面的摩托车,从像素级别,根本得不到任何信息,其无法进行摩托车和非摩托车的区分。而如果特征是一个具有结构性(或者说有含义)的时候,比如是否具有车把手(handle),是否具有车轮(wheel),就很容易把摩托车和非摩托车区分,学习算法才能发挥作用。

 

二、初级(浅层)的特征表示:

   既然像素级的特征表示方法没有作用,那怎样的表示才有用呢?

        1995 年前后,Bruno Olshausen和 David Field 两位学者任职 Cornell University,他们试图同时用生理学和计算机的手段,双管齐下,研究视觉问题。

        他们收集了很多黑白风景照片,从这些照片中,提取出400个小碎片,每个照片碎片的尺寸均为 16x16 像素,不妨把这400个碎片标记为 S[i], i = 0,.. 399。接下来,再从这些黑白风景照片中,随机提取另一个碎片,尺寸也是 16x16 像素,不妨把这个碎片标记为 T。

        他们提出的问题是,如何从这400个碎片中,选取一组碎片,S[k], 通过叠加的办法,合成出一个新的碎片,而这个新的碎片,应当与随机选择的目标碎片 T,尽可能相似,同时,S[k] 的数量尽可能少。用数学的语言来描述,就是:

        Sum_k (a[k] * S[k]) --> T,     其中 a[k] 是在叠加碎片 S[k] 时的权重系数。

        为解决这个问题,Bruno Olshausen和 David Field 发明了一个算法,稀疏编码(Sparse Coding)。

        稀疏编码是一个重复迭代的过程,每次迭代分两步:

1)选择一组 S[k],然后调整 a[k],使得Sum_k (a[k] * S[k]) 最接近 T。

2)固定住 a[k],在 400 个碎片中,选择其它更合适的碎片S’[k],替代原先的 S[k],使得Sum_k (a[k] * S’[k]) 最接近 T。

        经过几次迭代后,最佳的 S[k] 组合,被遴选出来了。令人惊奇的是,被选中的 S[k],基本上都是照片上不同物体的边缘线,这些线段形状相似,区别在于方向。

        Bruno Olshausen和 David Field 的算法结果,与 David Hubel 和Torsten Wiesel 的生理发现,不谋而合!

        也就是说,复杂图形,往往由一些基本结构组成。比如下图:一个图可以通过用64种正交的edges(可以理解成正交的基本结构)来线性表示。比如样例的x可以用1-64个edges中的三个按照0.8,0.3,0.5的权重调和而成。而其他基本edge没有贡献,因此均为0 。

三、结构性特征表示:

   小块的图形可以由基本edge构成,更结构化,更复杂的,具有概念性的图形如何表示呢?这就需要更高层次的特征表示,比如V2,V4。因此V1看像素级是像素级。V2看V1是像素级,这个是层次递进的,高层表达由底层表达的组合而成。专业点说就是基basis。V1取提出的basis是边缘,然后V2层是V1层这些basis的组合,这时候V2区得到的又是高一层的basis。即上一层的basis组合的结果,上上层又是上一层的组合basis……

  直观上说,就是找到make sense的小patch再将其进行combine,就得到了上一层的feature,递归地向上learning feature。

  在不同object上做training是,所得的edge basis 是非常相似的,但object parts和models 就会completely different了(那咱们分辨car或者face是不是容易多了)

转载于:https://www.cnblogs.com/upright/p/4775011.html

你可能感兴趣的文章
yui cookie Dynamically Change Text Size Using Javascript 动态设置字体大小,写入Cookie
查看>>
elasticsearch-query-builder, 一款可以基于配置化以及参数绑定的ES语句构造神器
查看>>
Java 异常处理
查看>>
Sql中获取表结构(字段名称,类型,长度,说明)
查看>>
90. Subsets II
查看>>
jQuery常用语法
查看>>
隐藏浏览器原生的滚动条
查看>>
[spring mvc]<mvc: annotation-driven />的作用
查看>>
jsplumb
查看>>
20135304刘世鹏——信息安全系统设计基础第十二周总结
查看>>
C++ 连接mysql数据库
查看>>
基于C#开发的简易贪吃蛇
查看>>
Vue 源码解析:深入响应式原理(上)
查看>>
poj2318 TOYS
查看>>
012木桶绕圆滚动
查看>>
having的用法以及与where区别介绍
查看>>
责任链模式
查看>>
Python并行编程(五):线程同步之信号量
查看>>
SQLServer 日期函数大全
查看>>
Maven-pom-configuration
查看>>