Sparse Filtering简介
当前很多的特征学习(feature learning)算法需要很多的超参数(hyper-parameter)调节, Sparse Filtering则只需要一个超参数--需要学习的特征的个数, 所以非常易于进行参数调节.
1.特征分布及其特性
基本上所有的参数学习算法都是要生成特定的特征分布, 比如sparse coding是要学得一种稀疏的特征, 亦即学到的特征中只有较少的非零项. 基本上所有的特征学习算法都是为了优化特征分布的某些特性的.Sparse Filtering也是这样的一种特征学习方法, 其目的是为了学到拥有一下特定特性的特征, 为了简洁, 首先定义一下符号表示, 令M为特征分布矩阵,每一列列代表一个样本, 每一行代表一个特征(该特征是学到的, 而不是初始的特征), \( f_j^{(i)}\)代表矩阵中的第(j,i)项, 亦即第i个样本的第j个特征的激活值 .
1. 每个样本的特征都比较稀疏(Population Sparsity)
每个样本的特征向量中, 只有很少的项是非零的, 亦即M中的每一列都是稀疏的.
2. 每种特征在所有的样本上比较稀疏(Lifetime Sparsity)
每个特征在所有的训练样本上比较稀疏, 亦即M中的每一行都是稀疏的.
3. 特征的分布比较均匀(High Dispersal)
每个特征的统计分布应该是比较接近的, 没有那个特征(亦即M中某行)比其他的特征要稠密的很多. Sparse Filtering使用平均激活平方(mean square activations)来表示特征的分布, 对于特征j, 平均激活平方为\(\sum_{i}(f_j^{(i)})^{2}\). Sparse Filtering希望所有的特征的平均激活平方比较接近, 也就意味着所有的特征有着相似的贡献. High Dispersal特性避免了某些特征一直处于激活状态的情况.
特征分布的特性已经在神经科学领域有了一些探索, 并且发现Population Sparsity和Lifetime Sparsity并不一定是相关的. 另外, 除了Sparse Filtering, 许多其他的特征学习方法也会规定这种特征分布的特性. 对于Lifetime Sparsity, Sparse RBM要求特征的平均激活值要接近一个给定的值, ICA和Sparse autoencoder也会规定Lifetime Sparsity. KMeans使用类簇的中心作为特征, 每个样本都只会属于一个类簇, 所以其特征向量中只会有一个非零值, 相当于是Population Sparsity, Sparse Coding也是一种Pupulation Sparsity.
Sparse Filtering直接从特征分布出发, 在满足High Dispersal的条件下优化Population Sparsity, 满足这两个条件的特征也会满足Lifetime Sparsity.
2. Sparse Filtering
令\(f_{j}^{(i)}=\boldsymbol{w}_{\boldsymbol{j}}^{T}\boldsymbol{x}^{(i)}\). Sparse Filtering首先对特征分布矩阵M中的每一行进行正则化Z(正则化每一个样本), 然后对每一列进行正则化(正则化每一种特征), 最后优化特征分布矩阵中所有项的绝对值加和. 亦即我们首先正则化特征分布矩阵的每一行:\(\tilde{\boldsymbol{f}_{\boldsymbol{j}}}=\boldsymbol{f}_{\boldsymbol{j}}/\|\boldsymbol{f}_{\boldsymbol{j}}\|_2\), 然后正则化特征分布矩阵的每一列:\(\hat{\boldsymbol{f}}^{(\boldsymbol{i})}={\tilde{\boldsymbol{f}}}^{(\boldsymbol{i})}/\|{\tilde{\boldsymbol{f}}}^{(\boldsymbol{i})}\|_2\), 然后优化特征分布矩阵的项的绝对值加权和(假定有n个样本):$$minimize \sum_{i=1}^{n} {\|{\hat{\boldsymbol{f}}}^{(\boldsymbol{i})}\|}_1 = \sum_{i=1}^{n} {\left|\left| \frac{{\tilde{\boldsymbol{f}}}^{(\boldsymbol{i})}}{{\|\tilde{\boldsymbol{f}}}^{(\boldsymbol{i})}\|_2}\right|\right|}_1$$.
以上算法步骤对于Population Sparsity, Lifetime Sparsity, High Dispersal三种特征特性的优化细节如下:
2.1 对于Population Sparsity的优化:
\({\|{\hat{\boldsymbol{f}}}^{(\boldsymbol{i})}\|}_1 = {\left|\left| \frac{{\tilde{\boldsymbol{f}}}^{(\boldsymbol{i})}}{{\|\tilde{\boldsymbol{f}}}^{(\boldsymbol{i})}\|_2}\right|\right|}_1\)衡量了第i个样本的Population Sparsity, 因为正则化后的特征\(\hat{\boldsymbol{f}}^{(\boldsymbol{i})}\)被限制在一个单位半径的\(\ell_2\)球上, 最小化\({\|{\hat{\boldsymbol{f}}}^{(\boldsymbol{i})}\|}_1\)相当于要求样本的特征很稀疏. 如下图所示:
左图中, 假设只有两维特征, 并设定X,Y轴为这两维特征. 有绿色和红色两个样本, 三角代表俩样本正则化之前的坐标, 圆圈代表正则化之后的坐标. 正则化之后的样本的坐标都会落在虚线的圆上, 但是我们发现, 在这个圆上, 越接近坐标轴的点, 其\(ell_1|)越小, 亦即如果我们以\(ell_1\)为优化目标, 则样本的坐标会倾向于接近坐标轴, 亦即使得大部分特征值为0, 使得特征向量很稀疏. 右图说明了正则化会引入特征之间的竞争,亦即如果某一维特征的值(\(\tilde{\boldsymbol{f}_1}\))增加了, 则正则化后其他的特征值会降低(\(\tilde{\boldsymbol{f}_2}\)).
2.2 对High Dispersal进行优化
在上述步骤中我们已经对每一个特征进行了正则化(第二步): \(\hat{\boldsymbol{f}}^{(\boldsymbol{i})}={\tilde{\boldsymbol{f}}}^{(\boldsymbol{i})}/\|{\tilde{\boldsymbol{f}}}^{(\boldsymbol{i})}\|_2\), 亦即所有特征的期望激活平方为1,
2.3 对Lifetime Sparsity进行优化
如果我们已经限制了特征分布矩阵具有Population Sparsity和High Dispersal的特性, 则其也会拥Lifetime Sparsity的特性. 因为根据Population Sparsity, 特征分布矩阵中只会有很少的非零项, 而根据High Dispersal, 每个特征的分布都差不多, 所以每个特征应该都是比较稀疏的, 否则就违背了M是稀疏的这一条件.
参考文献:
[1]. Sparse Filtering. Jiquan Ngiam, Pang Wei Koh, Zhenghao Chen, Sonia Bhaskar, Andrew Y. Ng.
Sparse Filtering简介的更多相关文章
- Sparse Filtering 学习笔记(三)目标函数的建立和求解
Sparse Filtering 是一个用于提取特征的无监督学习算法,与通常特征学习算法试图建模训练数据的分布的做法不同,Sparse Filtering 直接对训练数据的特征分布进行分析,在所谓 ...
- Sparse Filtering 学习笔记(二)好特征的刻画
Sparse Filtering 是一个用于提取特征的无监督学习算法,与通常特征学习算法试图建模训练数据的分布的做法不同,Sparse Filtering 直接对训练数据的特征分布进行分析,在所谓 ...
- Sparse Filtering 学习笔记(一)网络结构与特征矩阵
Sparse Filtering 是一个用于提取特征的无监督学习算法,与通常特征学习算法试图建模训练数据的分布的做法不同,Sparse Filtering 直接对训练数据的特征分布进行分析,在所谓 ...
- Sparse Filtering
Sparse Filtering 当前很多的特征学习(feature learning)算法需要很多的超参数(hyper-parameter)调节, Sparse Filtering则只需要一个超参数 ...
- Sparse AutoEncoder简介
1. AutoEncoder AutoEncoder是一种特殊的三层神经网络, 其输出等于输入:\(y^{(i)}=x^{(i)}\), 如下图所示: 亦即AutoEncoder想学到的函数为\(f_ ...
- Maven 教程(17)— Maven Profile 和 Filtering 简介
原文地址:https://blog.csdn.net/liupeifeng3514/article/details/79774572 每个项目都会有多套运行环境(开发,测试,正式等等),不同的环境配置 ...
- .NET面向对象特性之“继承”
整体简介 1.理解继承——继承关系图 2.实现继承与接口多继承 3.new. virtual.override方法 4.抽象方法和抽象类的继承 5.继承的本质 6.继承的复用性.扩展性和安全性 7.多 ...
- Api 和 Spi
目录 背景Java类库中的实例如何实现这种结构?备注 背景返回目录 Java 中区分 Api 和 Spi,通俗的讲:Api 和 Spi 都是相对的概念,他们的差别只在语义上,Api 直接被应用开发人员 ...
- opencv 相关一个很好的博客
http://blog.csdn.net/zouxy09/article/category/1218765 图像卷积与滤波的一些知识点 图像卷积与滤波的一些知识点zouxy09@qq.comhttp: ...
随机推荐
- CXGRID用法(取行、列值;定位选中某行等等)[转]
Delphi Cxgrid获取选中行列,排序规则,当前正在编辑的单元格内的值 cxGrid1DBTableView1.Controller.FocusedRowIndex 当前行号 cxGrid1DB ...
- pygame学习笔记(5)——精灵
转载请注明:@小五义 http://www.cnblogs.com/xiaowuyi 据说在任天堂FC时代,精灵的作用相当巨大,可是那时候只知道怎么玩超级玛丽.魂斗罗,却对精灵一点也不知.pygame ...
- [知乎]老狼:UFS VS NVMe
https://zhuanlan.zhihu.com/p/26652622 最近某手机厂商的闪存门在知乎上被人踢爆,在所谓“爵士水军”和“友商水军”的口水大战中,至少eMMC, UFS等火星名词被广泛 ...
- C++模式学习------代理模式
Proxy代理模式 : 为其他对象提供一种代理以控制对这个对象的访问.代理类作为桥梁是请求方和执行方的中间者,将请求方和真正的执行方分割开来,也是两者之间调用的协调者.例如执行类也就是被代理类,可以在 ...
- hbase 分页过滤(新老API的差别)
在hbase2.0以前分页过滤必须以上一次的最后一行+空字节数组作为下一次的起始行, 因为scan扫描的时候是包含起始行的,为了既能准确定位起始行,但又不重复把上一次的最末一行加入下一页, 所以,权威 ...
- BZOJ 2194 快速傅立叶变换之二 | FFT
BZOJ 2194 快速傅立叶变换之二 题意 给出两个长为\(n\)的数组\(a\)和\(b\),\(c_k = \sum_{i = k}^{n - 1} a[i] * b[i - k]\). 题解 ...
- 51nod 1290 Counting Diff Pairs | 莫队 树状数组
51nod 1290 Counting Diff Pairs | 莫队 树状数组 题面 一个长度为N的正整数数组A,给出一个数K以及Q个查询,每个查询包含2个数l和r,对于每个查询输出从A[i]到A[ ...
- 胡小兔的NOIP2017游记【出成绩后更新版】
胡小兔的NOIP2017游记[出成绩后更新版] 2017.11.22 Update 前几天成绩出来啦,看这篇博客访问量还挺多的,下面就分享一下结果吧: 我的Day1T2和Day2T1两道最水的题都跪了 ...
- 【BZOJ2281】【Sdoi2011】黑白棋 解题报告
[BZOJ2281][Sdoi2011]黑白棋 Description 小A和小B又想到了一个新的游戏. 这个游戏是在一个\(1\)*\(n\)的棋盘上进行的,棋盘上有\(k\)个棋子,一半是 ...
- sublime_Text3中snippet设置信息头(包括作者、日期)
1.tool->new snippet(工具->新代码段) 创建一个新的snippet,并保存为author.sublime-snippet(最好在该目录(User)下再创建一个MySni ...