Dictionary Learning Tools for Matlab.

1. 简介

字典 D∈RN×K(其中 K>N),共有 k 个原子,x∈RN×1 在字典 D 下的表示为 w,则获取较为稀疏的 w 的稀疏逼近问题如下表示:

wopt=argminw∥w∥p+γ∥x−Dw∥22p∈{0,1}

γ 越大,得到的解越稠密(dense)。

  • p=0,通过 MP(matching pursuit)匹配追踪算法求解,比如 ORMP(order recursive matching pursuit);
  • p=1,通过 LARS 算法求解;
  • ORMP 还是 LARS 均是基于贪心的思路求解;

2. 字典学习

在给定训练集 X∈RN×L 的情况下,字典学习用来求解字典 D∈RN×K(∥di∥=1,i=1,2,…,K),及其对应的系数矩阵 W∈RK×L,此时的表示误差为 R=X−DW。

{Dopt,Wopt}=argminD,W∑ℓ=1L∥wℓ∥+γ∥X−DW∥2

3. 求解

  • MOD or ILS-DLA

    MOD(Method of Optimized Directions),ILS-DLA(iterative least squares dictionary learning algorithms)

    此时迭代算法的思路分为如下三步:

    • 固定 D,求解 W
    • 固定 W,根据最小二乘法求解 D=(XWT)(WWT)−1
    • 归一化 D,也即将其各个列缩放为单位向量;
    for i = 1:noIt
    W = sparseapprox(X, D, 'mexOMP', 'tnz', s);
    D = (X*W')/(W*W');
    D = dictnormalize(D);
    end
  • K-SVD

    K-SVD 也是基于迭代求解思路而提出的算法,迭代主要分为如下两步:

    • 固定 D,求解 W;
    • 记录 W 中非零的元素,使用 SVD 分解更新 D 和 W;
    % X: N*L, D: N*K, W: K*L
    for i = 1:noIt
    W = sparseapprox(X, D, 'mexOMP', 'tnz', s);
    R = X - D*W;
    for k=1:K
    % 找到非零列
    I = find(W(k, :));
    Ri = R(:, I) + D(:, k)*W(k, I);
    % 奇异值分解
    [U, S, V] = svds(Ri, 1, 'L');
    % 更新
    D(:, k) = U;
    W(k, I) = S*V';
    R(:, I) = Ri - D(:, k)*W(k, I);
    end
    end

稀疏编码(sparse code)与字典学习(dictionary learning)的更多相关文章

  1. 学习人工智能的第五个月[字典学习[Dictionary Learning,DL]]

    摘要: 大白话解释字典学习,分享第五个月的学习过程,人生感悟,最后是自问自答. 目录: 1.字典学习(Dictionary Learning,DL) 2.学习过程 3.自问自答 内容: 1.字典学习( ...

  2. 稀疏编码(Sparse Coding)的前世今生(一) 转自http://blog.csdn.net/marvin521/article/details/8980853

    稀疏编码来源于神经科学,计算机科学和机器学习领域一般一开始就从稀疏编码算法讲起,上来就是找基向量(超完备基),但是我觉得其源头也比较有意思,知道根基的情况下,拓展其应用也比较有底气.哲学.神经科学.计 ...

  3. 稀疏编码(Sparse Coding)的前世今生(二)

    为了更进一步的清晰理解大脑皮层对信号编码的工作机制(策略),须要把他们转成数学语言,由于数学语言作为一种严谨的语言,能够利用它推导出期望和要寻找的程式.本节就使用概率推理(bayes views)的方 ...

  4. Sparsity稀疏编码(三)

    稀疏编码(sparse coding)和低秩矩阵(low rank)的区别        上两个小结介绍了稀疏编码的生命科学解释,也给出一些稀疏编码模型的原型(比如LASSO),稀疏编码之前的探讨文章 ...

  5. 联合CRF和字典学习的自顶向下的视觉显著性-全文解读

    top-down visual saliency via joint CRF anddictionary learning 自顶向下的视觉显著性是使用目标对象的可判别表示和一个降低搜索空间的概率图来进 ...

  6. Dictionary Learning(字典学习、稀疏表示以及其他)

    第一部分 字典学习以及稀疏表示的概要 字典学习(Dictionary Learning)和稀疏表示(Sparse Representation)在学术界的正式称谓应该是稀疏字典学习(Sparse Di ...

  7. 字典学习(Dictionary Learning, KSVD)详解

    注:字典学习也是一种数据降维的方法,这里我用到SVD的知识,对SVD不太理解的地方,可以看看这篇博客:<SVD(奇异值分解)小结 >. 1.字典学习思想 字典学习的思想应该源来实际生活中的 ...

  8. 字典学习(Dictionary Learning)

    0 - 背景 0.0 - 为什么需要字典学习? 这里引用这个博客的一段话,我觉得可以很好的解释这个问题. 回答这个问题实际上就是要回答“稀疏字典学习 ”中的字典是怎么来的.做一个比喻,句子是人类社会最 ...

  9. UFLDL深度学习笔记 (七)拓扑稀疏编码与矩阵化

    UFLDL深度学习笔记 (七)拓扑稀疏编码与矩阵化 主要思路 前面几篇所讲的都是围绕神经网络展开的,一个标志就是激活函数非线性:在前人的研究中,也存在线性激活函数的稀疏编码,该方法试图直接学习数据的特 ...

随机推荐

  1. iptables转发安卓手机热点的数据到指定的端口

    iptables转发安卓手机热点的数据到指定的端口 手机安装了VPN,可以上GOOGLE的那种.然后我打开手机的热点,连上笔记本,想让本本上个google 没想到被GFW挡住了.看了一下手机的网络工作 ...

  2. Bitmap-把方形图片处理为圆形

    这个是直接在网上转载的,自己验证可靠 转载自http://my.oschina.net/zhouz/blog/213164 直接贴上代码 import android.graphics.Bitmap; ...

  3. Android学习笔记之滑动翻页(屏幕切换)

    如何实现手机上手动滑动翻页效果呢?呵呵,在这里我们就给你们介绍一下吧. 一般实现这个特效会用到一个控件:ViewFlipper <1>View切换的控件—ViewFlipper 这个控件是 ...

  4. Binary Search Algorithm

    二分查找代码: //============================================================================ // Name : Bin ...

  5. selenium 自动化基础知识(各种定位)

    元素的定位 webdriver 提供了一很多对象定位方法  例如: [ id ] , name , class name , link text , partial link text , tag n ...

  6. 回家过年,CSDN博客暂时歇业

    CSDN博客之星2013评选活动,结束了,感谢大家的投票. 我个人只是主动拉了300票左右,2400+的票都是大家主动投的,非常感谢啊! (*^__^*) 年关将至,最近也在忙自己的事情,不再更新了. ...

  7. Android java取得实时上周的时间

    import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class Te ...

  8. ivotal-tc-Server与Tomcat区别

    Pivotal-tc-Server之前叫做SpringSource tc Server,包含三个版本分别是:Spring版.标准版和开发版,但其中只有开发版是免费的.比如在STS中包含的版本就是开发板 ...

  9. Nginx和Nginx+的比較(下)

    Nginx和Nginx+的比較(下) 作者:chszs.未经博主同意不得转载.经许可的转载需注明作者和博客主页:http://blog.csdn.net/chszs 内容紧接上一篇<Nginx和 ...

  10. 常用MVC框架

    J2EE开常用的SSH或SSI框架,对应解决表示层.业务逻辑层.持久化层的问题,其中对表示层的解决方案最多,常见的有Struts1/2,Spring MVC等,实际上都是在最底层的Servlet规范中 ...