学习
实践
活动
工具
TVP
写文章

稀疏编码 Sparse Coding

每个神经元对这些刺激的表达则采用了稀疏编码原则,将图像在边缘、线段、条纹等方面以稀疏编码的形式进行描述。 因而,稀疏编码的工作即找出类似边缘、线段、条纹等的这样一组基底,其思想和小波变换的基函数具有一定的相似性。 基于此,1988年,Michison明确提出了神经稀疏编码的概念,然后由牛津大学的E. T. 稀疏编码具有如下几个优点: 编码方案存储能力大 具有联想记忆能力 计算简便 使自然信号的结构更加清晰 编码方案符合生物进化普遍的能量最小经济策略,又满足电生理实验结论 应用: 稀疏编码将神经生理学方面对于视觉系统的研究成果 稀疏编码在盲源信号分离、语音信号处理、自然图像特征提取、图像去噪、模式识别等方面已经取得了许多研究成果。

2.1K10

稀疏编码

稀疏编码器 对于稀疏编码器的损失函数,其与神经网络的损失函数一致,可以表示为: J J\left ( \mathbf{W},\mathbf{b} \right ) J(W,b) 则对于稀疏编码器 right ){f}'\left ( z_i^{(2)} \right ) δi(2)​=(j=1∑s2​​Wji(2)​δj(3)​)f′(zi(2)​) 则在稀疏编码器中的隐含层为 2)​)+1−ρ^​i​−(1−ρ)​⋅[−f′(zi(2)​)])=((∑j=1s3​​δj(3)​⋅Wji(2)​)+β(−ρ^​i​ρ​+1−ρ^​i​1−ρ​))⋅f′(zi(2)​)​ 对于稀疏编码器 )​+β(−ρ^​i​ρ​+1−ρ^​i​1−ρ​))f′(zi(2)​) 参考文献 [1] 英文版:UFLDL Tutorial [2] 中文版:UFLDL教程 [3] 《深度学习》学习笔记(一):稀疏编码

11420
  • 广告
    关闭

    年末·限时回馈

    热卖云产品年终特惠,2核2G轻量应用服务器6.58元/月起,更多上云必备产品助力您轻松上云

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    深度学习之自编码稀疏

    编码算法与 稀疏性 目前为止,我们已经讨论了神经网络在监督学习中的应用。在监督学习中,训练样本是有标签的。现在假设我们只有一个无类别标签的训练样本集合{x[^1], x[^2],... 自编码神经网络是一种无监督学习算法,它使用了反向传播算法,并让目标值等于输入值,比如 y[^i = x[^i]。下图是一个自编码神经网络的示例。 ? 具体来说,如果我们给隐藏神经元加入稀疏性限制,那么自编码神经网络即使在隐藏神经元数量较多的情况下仍然可以发现输入数据中一些有趣的结构。 稀疏性可以被简单地解释如下。 如果当神经元的输出接近于1的时候我们认为它被激活,而输出接近于0的时候认为它被抑制,那么使得神经元大部分的时间都是被抑制的限制则被称作稀疏性限制。这里我们假设的神经元的激活函数是sigmoid函数。 其中 J(W,b) 如之前所定义,而 β 控制稀疏性惩罚因子的权重。为了对相对熵进行导数计算,我们可以使用一个易于实现的技巧。( 这只需要在你的程序中稍作改动即可)。

    53880

    深度学习算法原理——稀疏编码

    这个笔记主要分为以下几个部分: - 神经网络 - 自编码器与稀疏性 - Softmax回归 - 自我学习 - 深度网络 - 其他,如PCA 二、自编码器与稀疏性 1、自编码器 image.png 2、自编码器的特点 对于上述结构自编码器实际上完成了一个hW,b(x)≈x函数的学习的过程,本身可以说并没有什么意义,但是通过观察上述的结构中,我们发现在自编码器结果中,中间的隐含层,是从特征x提取出来 稀疏,即在隐含层的神经元上加入稀疏性的限制。 3、稀疏性约束 image.png 4、相对熵的概念 image.png ? image.png 5、稀疏编码器 image.png image.png 参考文献 英文版:UFLDL Tutorial 中文版:UFLDL教程 《深度学习》学习笔记(一):稀疏编码器(Sparse

    1.5K60

    深度学习算法原理——稀疏编码

    这个笔记主要分为以下几个部分: - 神经网络 - 自编码器与稀疏性 - Softmax回归 - 自我学习 - 深度网络 - 其他,如PCA 二、自编码器与稀疏性 1、自编码器 前面介绍了神经网络的基本结构 5、稀疏编码器 对于稀疏编码器的损失函数,其与神经网络的损失函数一致,可以表示为: J(W,b) J\left ( \mathbf{W},\mathbf{b} \right ) 则对于稀疏编码器 ^{(2)}=\left ( \sum_{j=1}^{s_2}W_{ji}^{(2)}\delta _j^{(3)} \right ){f}'\left ( z_i^{(2)} \right ) 则在稀疏编码器中的隐含层为 frac{ 1-\rho }{1-\hat{\rho }_i}\right ) \right )\cdot {f}'\left ( z_i^{(2)} \right ) \end{matrix} 对于稀疏编码器 } \right ) \right ){f}'\left ( z_i^{(2)} \right ) 参考文献 英文版:UFLDL Tutorial 中文版:UFLDL教程 《深度学习》学习笔记(一):稀疏编码

    2.1K30

    谷歌大脑深度学习从入门到精通视频课程:稀疏编码——定义

    (P2) 稀疏编码的定义。(P3-P8) 稀疏编码的例子解释。(P9 - P11) ? PPT 访问地址: http://geek.ai100.com.cn/wp-content/uploads/2017/04/8_01_definition.pdf 课程作业 重点理解稀疏编码的优化目标。

    38940

    稀疏数组

    稀疏数组 先看一个实际的需求 五子棋程序中,有存盘退出和续上盘的功能。 ? 分析问题: 因为该二维数组的很多值是默认值0, 因此记录了很多没有意义的数据.->稀疏数组。 1.1 稀疏数组介绍 当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。 将i存到稀疏数组[0][0]的位置 将j存到稀疏数组[0][1]的位置 将count存到稀疏数组[0][2]的位置 将各个有效值的行列存到稀疏数组下一行,例如[1][0]=行,[1][1]=列,[1][ 1.2 转换思路 二维数组转稀疏数组的思路: 遍历原始的二维数组,得到有效数据的个数sum 根据sum就可以创建稀疏数组sparseArr int[sum+1][3] 将二维数组的有效数据数据存入到稀疏数组 稀疏数组转原始的二维数组的思路: 1.先读取稀疏数组的第一行,根据第一行的数据,创建原始的二维数组,比如上面的chessArr2 =int[5][6] 2.在读取稀疏数组后几行的数据,并赋给原始的二维数组即可

    14130

    稀疏数组

    稀疏数组 当一个数组大部分为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组 稀疏数组的处理办法是: 1.记录数组一共有几行几列,有多少个不同的值 2.把具有不同值的元素的行列及值记录在一个小规模的数组 (稀疏数组 )中,从而缩小程序的规模 如下例:将一个二维数组转换为稀疏数组 稀疏数组第一行保存的值是二维数组有多少行和列,有多少个不同的值。 13个有意义的值,那么原来的二维数组还是 7*6=42,而转换后稀疏数组则是 14*3=42,如果原来的二维数组有14、15、16、...个等有意义的值,那么稀疏数组的大小将会超过原先二维数组的大小,这里就得不偿失了 这里就得到两个结论: 二维数组的有效值越少,转换为对应的稀疏数组就越高效 稀疏数组适用于空数据较多的情况下 在使用稀疏数组之前一定要具体问题具体分析,不能一股脑的用! 代码实现 还是以一个五子棋盘为例 为了对棋盘进行压缩,我们将原来的二维数组的方式转换为稀疏数组的方式 稀疏数组第一行存储的是原来二维数组的行和列以及有效的数据 第二行后存储的是每一个数据的位置和具体值

    6920

    深度学习算法(第30期)----降噪自编码器和稀疏编码器及其实现

    上期我们一起学习了深度学习中的可视化自编码器和无监督预训练的相关知识, 深度学习算法(第29期)----可视化自编码器和无监督预训练 今天我们一起学一下降噪自编码器和稀疏编码器方面的知识。 往往提取好的特征的另外一种约束就是稀疏性,通过在损失函数中添加一个合适的项,使得自编码器努力去减少编码层中活跃的神经元。 为了支持稀疏模型,我们首先必须在每次训练迭代中计算编码层的实际稀疏度。 我们通过计算整个训练batch中,编码层中的每个神经元的平均激活情况来实现。 这里的训练batch不能太小,否则平均数不准确。 一旦我们计算了编码层中每一个神经元的稀疏损失,我们就可以把它们累加起来添加到损失函数中了。为了控制稀疏损失和重构损失的相对重要性,我们可以用稀疏权重这个超参数乘以稀疏损失。 稀疏编码器的TensorFlow实现 介绍完了稀疏编码器,我们一起看一下,在tensorflow中,它是如何实现的: def kl_divergence(p, q): return p *

    2.6K20

    用于特征空间语义词典学习的非负核稀疏编码算法。

    7310

    教程 | 无监督学习中的两个非概率模型:稀疏编码与自编码

    一、稀疏编码(Sparse Coding) 1. 稀疏编码的概念 稀疏编码最早由 Olshausen 和 Field 于 1996 年提出,用于解释大脑中的初期视觉处理(比如边缘检测)。 其中 ank 的值大部分都为 0,所以称为「稀疏」。每一个数据向量都由稀疏线性权值与基的组合形式来表达。 2. 稀疏编码的训练 ? 为输入图像片段; ? 稀疏编码的测试过程 输入为一个新图像片段 x* , 和 K 个可学习的基; 输出为一个图像片段 x* 的稀疏表达 a(sparse representation)。 ? ? 下图为应用稀疏编码进行图像分类的相关实验结果,该实验是在 Caltech101 物体类别数据集中完成的,并且用经典的 SVM 作为分类算法。 ? 4. 稀疏编码的相关解释 ? 预测稀疏分解(Predictive Sparse Decomposition): ? 在训练过程中: ? 可以看到,这种结构在解码器部分加入了稀疏惩罚项(详见以上关于稀疏编码的内容)。 4.

    84170

    稀疏数组

    ,2020.2 IDEA 激活码 一、稀疏数组的定义 ---- 稀疏(sparsearray)数组:可以看做是普通数组的压缩,但是这里说的普通数组是值无效数据量远大于有效数据量的数组。 当遇到此种情况时,可以使用稀疏数组。 ? 当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。 二、应用实例 ---- 我们将下图所示的棋盘使用稀疏数组进行存盘退出操作: ? 【1】将上面类似的二位数组棋盘保存到稀疏数组中,并存放至外部备份文件 sparsearray.text 中:稀疏数组可以简单的看作为是压缩,在开发中也会使用到。 【3】将稀疏数组文件中的内容恢复至传统的二维数组棋盘; /** * 将稀疏数组文件中的内容恢复至传统的二维数组棋盘 */ public class SparseArrayClass { public

    28730

    稀疏数组

    当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。 稀疏数组的处理方法是: 1)记录数组一共有几行几列,有多少个不同的值 2)把具体不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模。 ? 二维数组转稀疏数组 public class SpareseArray { public static void main(String[] args) { /** d\t",data); } System.out.println(); } /** * 将二维数组转稀疏数组 创建稀疏数组,行数=sum+1 ,多出来的1行是对稀疏数组中总行数、总列数以及非0个总个数的 sparseArr[0][0] = chessArr1.length; sparseArr

    21310

    稀疏矩阵

    在矩阵中,如果数值为0的元素数目远远多于非0元素的数目,并且非0元素分布无规律时,则称该矩阵为稀疏矩阵(sparse matrix);与之相反,若非0元素数目占大多数时,则称该矩阵为稠密矩阵。 当一个矩阵中含有大量的0值时,可以将矩阵以稀疏矩阵的方式存储以解决资源。在R中,可以用Matrix这个包, 它可以将矩阵转化为稀疏矩阵。 #转化成稀疏矩阵,可以看到0变成了点 library(Matrix) sparseM= Matrix(M) class(sparseM) sparseM ?

    35520

    谷歌大脑深度学习从入门到精通视频课程:稀疏编码——推理(ISTA算法)

    课程主要内容 回顾上一节的内容,介绍稀疏编码。(P2) 稀疏编码的推理。(P3-P6) ISTA算法解释。(P7 - P9) 用于稀疏编码推理的坐标下降(P10) ?

    1.6K50

    谷歌大脑深度学习从入门到精通视频课程:稀疏编码——参数更新(梯度下降)

    课程主要内容 回顾上一节的内容,介绍稀疏编码。(P2) 详细介绍具体更新方式。(P3-P4) ?

    58350

    数组 – 稀疏数组

    文章目录 一,稀疏数组 1.定义 2.存储 3.存储方式 1.普通存储 2.链式存储 a.普通链式存储 b.行式链式存储 c.十字链式存储 4.代码实现 3.将稀疏数组存到此磁盘中 4.从磁盘中读取稀疏数组 5.完整代码 一,稀疏数组 1.定义 稀疏数组可以看做是普通数组的压缩,但是这里说的普通数组是值无效数据量远大于有效数据量的数组 形如: 0 0 0 0 0 0 0 0 0 * - 由于稀疏矩阵中存在大量的“空”值,占据了大量的存储空间,而真正有用的数据却少之又少, * - 且在计算时浪费资源,所以要进行压缩存储以节省存储空间和计算方便。 我们可以使用java的IO流将稀疏数组存放到磁盘中,原数组和稀疏数组比较,肯定是稀疏数组体积更小,占用空间更小 /** * 将稀疏数组存入磁盘(文件) * */ public 在这里有个缺陷就是我不能动态的知道稀疏数组一共有几行,所以我选择传参的方式,这样其实是不太友好的 /** * 读文件获取稀疏数组(获取指定行数的稀疏数组)【不足】 * @return

    12640

    谷歌大脑深度学习从入门到精通视频课程:稀疏编码——特征提取

    AI100 已经引入 Hugo Larochelle 教授的深度学习课程,会在公众号中推送,并且对视频中的 PPT 进行讲解。课后,我们会设计一系列的问题来巩...

    47350

    稀疏矩阵存储格式

    简介 稀疏矩阵是指矩阵中大多数元素为 0 的矩阵。多数情况下,实际问题中的大规模矩阵基本上都是稀疏矩阵,而且很多稀疏矩阵的稀疏度在 90% 甚至 99% 以上。 2. 存储格式 相较于一般的矩阵存储格式,即保存矩阵所有元素,稀疏矩阵由于其高度的稀疏性,因此需要更高效的存储格式。 CSR 不是三元组,而是整体的编码方式。其中,数值和列号和 COO 格式中的一致,某一行的行偏移表示该行的第一个元素在数值数组中的索引。实际存储分三个数组存储,分别表示数值、列号、行偏移。 对比 3.1 优缺点概述 存储格式 优点 缺点 COO 灵活、简单 压缩、稀疏矩阵矢量乘积效率低 CSR 灵活、简单 稀疏矩阵矢量乘积效率低 ELL 稀疏矩阵矢量乘积效率高 压缩效率不稳定 DIA 稀疏矩阵矢量乘积效率高 压缩效率不稳定 COO 格式常用于从文件中进行稀疏矩阵的读写,而 CSR 格式常用于读入数据后进行稀疏矩阵的计算。

    29610

    无监督学习︱GAN 在 NLP 中遇到瓶颈+稀疏编码自学习+对偶学习

    . ---- 二、稀疏编码自学习——SelfTaughtLearning 本文来源:译文 | 从未标记数据中迁移学习 原文:http://robotics.stanford.edu/~rajatr 实验证明稀疏编码特征,或许与原始特征相结合,在大部分领域中都比只使用原始特征和PCA特征效果要好得多。 稀疏编码基向量从随机自然灰度图像块(14×14像素)学习得到。 延伸二:用条件对抗式自动编码器进行人脸老化、退龄 该代码是对论文《用条件对抗式自动编码器进行人脸老化、退龄》中算法的Tensorflow实现 数据库 · FGNET ·

    76620

    扫码关注腾讯云开发者

    领取腾讯云代金券