模式识别——特征提取(表达)
特征表达特征特征是机器学习系统的原材料,对最终模型的影响是毋庸置疑的;如果数据被很好地表达成了特征,通常线性模型就能达到满意的精度。关于特征,需要考虑以下三方面:(1)特征表示的粒度需要考虑,模型在一个什么程度上的特征表示,才能发挥效果?以图片为例,像素级的特征完全没有价值,从中得不到任何可用于分类或识别的信息。当特征具有结构性(有意义)的时候,算法才能起作用,即将输入空间通过某种规则映射到特征空
特征表达
特征是机器学习系统的原材料,对最终模型的影响是毋庸置疑的;如果数据被很好地表达成了特征,通常线性模型就能达到满意的精度。关于特征,需要考虑以下三方面:
(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 k∑ak⋅Sk→T,其中 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
k∑ak⋅Sk 最接近 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
k∑ak⋅Sk′ 最接近 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)完全不同。这样便于图像的准确识别。
更多推荐
所有评论(0)