deep learning tutorial(二)Denosing Autoencoders(dA)

本文深入探讨了自编码器的工作原理及应用,包括其如何通过重构输入数据来学习有用的数据表示,介绍了几种避免学习恒等函数的方法,如稀疏自编码器和带有随机噪声的自编码器,并详细解释了去噪自编码器的原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

自编码器

        UFLDL教程中中对自编器的解释是:自编码神经网络尝试学习一个的函数。换句话说,它尝试逼近一个恒等函数,从而使得输出接近于输入x 。

        过程如下:a.首先让x经过一个hidden layer

(1)

                          b.对y进行解码,W'是W的转置

(2)

这个过程也叫做重构,产生的误差叫重构误差,常用的右

平方误差

交叉熵

学习的过程就是使重构误差最小(对于来自相同分布的输入,有较低的重构误差).

        y应该是沿着协方差的主轴的(协方差最大的方向),类似于PCA。

        如果有个线性的hidden layer,其中右k个hidden units,题么提取出的是k个主成份。

        如果是非线性的,我们可以捕捉到输入中的多模态成分(multi-modal )

如果对让hidden layer的输入=input,直观上会学习到恒等函数,但是事实并非如此,我们仍然可以得到有用的表示,一个直观的解释是,一个具有 early stopping 的随机梯度下降相当于对参数的L2正则化,为了更好的对输入进行重构,我们假设一个只有一层hidden layer的非线性自编器,它第一层的W应该非常小(这样就会具有某些线性特征),第二层非常大。对于二值输入,我们想需要非常大的W来获得较小的重构误差。而这样会使得规范化项非常大。所以算法只能朝着近似输入的方向去优化参数。这意味着,我们的学习过程是一个对训练集的随机表示,而不是对输入的进行来复制


(early stopping,摘自wiki:is a form of regularization used to avoid overfitting when training a learner with an iterative method, such as gradient descent.

上面是直译的,更好理解,其实就是 regularized auto-encoder 

而且一般也是直接加上L2正则项

        避免获得恒等函数的其他方法

        1.加上稀疏性(使hidden units 的激活值接近0):稀疏自编码器,见UFLDL

        2.在从输入到重构的转换过程中加入一些随机噪声

Denoising Autoencoders

 原理就是给input(eg.随机将一些输入置为0)加入一些corrupted vision

过程:1.对输入进行编码

            2.去除对输入的随机腐蚀

以下函数的过程就是随机把一些输入变成0,denoising au-encoder试图从未被破坏的数据中还原出被破坏的数据,然后得到这些样本的参数的联合概率分布,这时一个gibbs采样的过程。

gibbs采样解释:

LDA-math-MCMC 和 Gibbs Sampling(1) 
LDA-math-MCMC 和 Gibbs Sampling(2)

def get_corrupted_input(self, input, corruption_level):
        """
                 binomial 是theano 库里的函数
                Sample n times with probability of success p for each trial and
        return the number of successes.
                应该是对input里面的每个元素以概率p进行采样,每个n次,
                实际上是是模拟来gibbs采样的过程
                 reutrn:本程序中N=1,所以返回一个0-1矩阵,0代表该元素以corruption_level的概率被腐蚀,1代表1-corruption_level的概率被腐蚀
        """
        return self.theano_rng.binomial(size=input.shape, n=1,
                                        p=1 - corruption_level,
                                        dtype=theano.config.floatX) * input
这个函数不太懂,有时间回来看看

对binomial(n, p, size=None)函数的解释

        对一个具有特定参数的二项分布进行采样,判别n次,每次判断成功的概率为p,参看MCMC,Gibbs采样:RBM

       返回:一个矩阵(ndarray)或者标量(scalar),每个元素的值都属于[0,n]

举个栗子,一个公司要钻9个油井,其中每个油井存储石油的概率为0.1,那么这些油井都没有石油的概率是多少?

我们可以作2000次实验,然后数以下产生结果为0的个数

sum(np.random.binomial(9, 0.1, 20000) == 0)/20000.
答案是 0.38885

而MCMC方法中

判断是否接受为

 if ((u[i] <= p_accept))  
    {  
        x[i] = y  
        print("accept")  
    }  
    else  
    {  
        x[i] = x[i-1]  
        print("reject")  
    }  


        



资源下载链接为: https://pan.quark.cn/s/1bfadf00ae14 “STC单片机电压测量”是一个以STC系列单片机为基础的电压检测应用案例,它涵盖了硬件电路设计、软件编程以及数据处理等核心知识点。STC单片机凭借其低功耗、高性价比和丰富的I/O接口,在电子工程领域得到了广泛应用。 STC是Specialized Technology Corporation的缩写,该公司的单片机基于8051内核,具备内部振荡器、高速运算能力、ISP(在系统编程)和IAP(在应用编程)功能,非常适合用于各种嵌入式控制系统。 在源代码方面,“浅雪”风格的代码通常简洁易懂,非常适合初学者学习。其中,“main.c”文件是程序的入口,包含了电压测量的核心逻辑;“STARTUP.A51”是启动代码,负责初始化单片机的硬件环境;“电压测量_uvopt.bak”和“电压测量_uvproj.bak”可能是Keil编译器的配置文件备份,用于设置编译选项和项目配置。 对于3S锂电池电压测量,3S锂电池由三节锂离子电池串联而成,标称电压为11.1V。测量时需要考虑电池的串联特性,通过分压电路将高电压转换为单片机可接受的范围,并实时监控,防止过充或过放,以确保电池的安全和寿命。 在电压测量电路设计中,“电压测量.lnp”文件可能包含电路布局信息,而“.hex”文件是编译后的机器码,用于烧录到单片机中。电路中通常会使用ADC(模拟数字转换器)将模拟电压信号转换为数字信号供单片机处理。 在软件编程方面,“StringData.h”文件可能包含程序中使用的字符串常量和数据结构定义。处理电压数据时,可能涉及浮点数运算,需要了解STC单片机对浮点数的支持情况,以及如何高效地存储和显示电压值。 用户界面方面,“电压测量.uvgui.kidd”可能是用户界面的配置文件,用于显示测量结果。在嵌入式系统中,用
### 关于 Deep Learning 电子书的下载 对于希望获取《Deep Learning》这本书的电子版资源,可以通过官方渠道或其他合法途径获得完整的 PDF 文件。以下是具体方法: #### 官方网站下载 该书由 Ian Goodfellow、Yoshua Bengio 和 Aaron Courville 编写,其官方网站提供了部分章节的内容供读者免费阅读[^2]。访问链接为 [http://www.deeplearningbook.org](http://www.deeplearningbook.org),可以在线浏览部分内容。 如果需要完整版本,则建议购买正版图书或者通过授权平台下载 PDF 版本。例如,在一些学术机构或图书馆可能提供合法的电子书借阅服务。 #### 使用命令行工具提取章节并合并成单个文档 针对熟悉 Linux 或 macOS 终端操作系统的用户来说,也可以利用 shell 脚本来抓取各个独立 HTML 页面并将它们转换为单独的小型 PDF 文档之后再加以组合形成最终的大文件。下面给出了一组适用于此类场景下的指令序列作为参考[^2]: ```bash curl http://www.deeplearningbook.org/ | grep "<a href=\"contents" | sed -r 's#.*contents/(.*).html.*#\1.pdf#g' | xargs for f in `ls`; do mv "$f" "${f//www.deeplearningbook.org_contents_/}"; done pdfjoin -o ../DeepLearning.pdf TOC.pdf acknowledgements.pdf notation.pdf intro.pdf part_basics.pdf linear_algebra.pdf prob.pdf numerical.pdf ml.pdf part_practical.pdf mlp.pdf regularization.pdf optimization.pdf convnets.pdf rnn.pdf guidelines.pdf applications.pdf part_research.pdf linear_factors.pdf autoencoders.pdf representation.pdf graphical_models.pdf monte_carlo.pdf partition.pdf inference.pdf generative_models.pdf bib.pdf index-.pdf ``` 注意:以上过程仅限个人学习研究用途,请勿用于商业传播! 另外还有一份基于 PyTorch 的深度学习教程可供选择,《Deep Learning with PyTorch》,它同样适合入门级的学习者以及有一定基础的技术人员深入探索框架的实际应用案例。可以从如下位置找到该项目的相关信息及其 PDF 下载入口[^1]: - 地址: https://gitcode.com/Open-source-documentation-tutorial/1cf0b ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值