特征表达

特征是机器学习系统的原材料,对最终模型的影响是毋庸置疑的;如果数据被很好地表达成了特征,通常线性模型就能达到满意的精度。关于特征,需要考虑以下三方面:

(1)特征表示的粒度

需要考虑,模型在一个什么程度上的特征表示,才能发挥效果?以图片为例,像素级的特征完全没有价值,从中得不到任何可用于分类或识别的信息。

当特征具有结构性(有意义)的时候,算法才能起作用,即将输入空间通过某种规则映射到特征空间,使得有助于分类。如下图所示,当可以判断是否有车把手,是否有车轮,就可以很容易的把摩托车和非摩托车区分开。
在这里插入图片描述

(2)初级(浅层)特征表示

1995 年前后,Bruno Olshausen和 David Field收集了很多黑白风景照片,提取出400个小碎片,每个小碎片的尺寸均为 16x16 像素,对这400个碎片标记为 S i , i = 0 , ⋯   , 399 S_i,i=0,\cdots,399 Si,i=0,,399;再从这些黑白风景照片中,随机提取另一个碎片,大小为 16 × 16 16\times16 16×16 像素,把这个碎片标记为 T。

问题:如何从这400个碎片中,选取一组碎片 S k S_k Sk,通过叠加的办法,合成出一个新的碎片,而这个新的碎片应当与随机选择的目标碎片 T 尽可能相似,同时, S k S_k Sk 的数量尽可能少。该问题的属性描述为: ∑ k a k ⋅ S k → T \displaystyle\sum_k a_k\cdot S_k\to T kakSkT,其中 a k a_k ak 为叠加碎片 S k S_k Sk 时的权重系数。

因此,他们提出了 稀疏编码(Sparse Coding)算法,这是一个重复迭代的过程,每次迭代分两步:

A. 选择一组 S k S_k Sk ,然后调整 a k a_k ak ,使得 ∑ k a k ⋅ S k \displaystyle\sum_k a_k\cdot S_k kakSk 最接近 T;
B. 固定 a k a_k ak,在 400 个碎片中,选择其他更合适的碎片 S k ′ S'_k Sk,替代原先的 S k S_k Sk,使得 ∑ k a k ⋅ S k ′ \displaystyle\sum_k a_k\cdot S'_k kakSk 最接近 T。
经过多次迭代后,选出最佳的 S k S_k Sk 组合。令人惊奇的是,被选中的 S k S_k Sk 基本上都是照片上不同物体的边缘线,这些线段形状相似,区别在于方向

这表明,复杂图像往外由一些基本结构组成任意一幅图可以用 64 种正交的 e d g e s edges edges(正交的基本结构)线性表示。如下图所示:
在这里插入图片描述

实际上,不仅图像中存在这个规律,声音中也存在。从未标注的声音中发现了20种基本的声音结构,其余的声音可以由这20种基本结构合成
在这里插入图片描述

(3)结构性特征表示

小块的图形可以由基本edge构成,更结构化,更复杂的,具有概念性图形的表示就需要更高层次的特征表示,比如V2,V4。V1看像素级是像素级。V2看V1是像素级,是层次递进的,高层表达由底层表达的组合而成;以图像的基basis说明。V1层提出的basis是边缘,然后V2层是V1层这些basis的组合,这时候V2区得到的又是高一层的basis,上上层又是上一层的组合basis结果 ⋯ ⋯ \cdots\cdots 在这里插入图片描述

直观的,以Bruno Olshausen和 David Field的实验为例,就是就是找到有意义的小碎片(patch),再将其进行组合(combine),就得到了上一层的特征(feature),递归地向上学习特征(learning feature)。在不同对象(object)上做训练时,所得的边缘基(edge basis)是非常相似的,但对象部分(object parts)和模式(models)完全不同。这样便于图像的准确识别
在这里插入图片描述

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐