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. MySQLSocketPHPvimApache

    原文:http://www.blogjava.net/asenyifei/articles/82575.html 自己装了一个MYSQL客户端,但却发现出现这样的错误: Can't connect t ...

  2. UML学习之用例图

    在UML的整个学习过程中,9种图(用例图.活动图.状态图.顺序图.类图.对象图.协作图.组件图.部署图)的学习以及常用开发.建模工具的使用是最为重要的一个阶段,它是进行UML建模的基础.在本篇文章中首 ...

  3. Android 继承framelayout,实现ScrollView 和 HorizontalScrollView 的效果

    有些项目,需要让控件或者布局进行水平和垂直同时能拖拽,当然,ScrollView 和 HorizontalScrollView 的结合写法是一种写法.但是,这么写用户体验效果不佳,会有迟钝感,因此推荐 ...

  4. mycat 之datanode datahost writehost readhost 区别(转)

    <?xml version="1.0"?> <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> &l ...

  5. css中hack是什么

    css中hack是什么 一.总结 1.CSS hack:由于不同厂商的浏览器,比如Internet Explorer,Safari,Mozilla Firefox,Chrome等,或者是同一厂商的浏览 ...

  6. datagridview合并相同单元格

    private void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e) { // 对第日 ...

  7. arduino串口输出问题

  8. Javascript和jquery事件--鼠标右键事件,contextmenu

    右键点击触发是浏览器的默认菜单事件contextmenu,你可以选择阻止它,使用event.preventDefault();或者return false;. 想要定义右键点击事件,关注的是mouse ...

  9. MySql 中的setAutoCommit方法

    引言 setAutoCommit方法用一句话说就是用来保持事务完整性.一个系统的更新操作可能涉及多张表,这个时候,就须要用多个Sql语句来实现,实际上我认为这个东西就是用来实现事务的. 当我们进行多条 ...

  10. autohotkey excel getfullname (ComObjActive)