zoukankan      html  css  js  c++  java
  • UFLDL 教程学习笔记(四)

              课程链接:http://ufldl.stanford.edu/tutorial/supervised/MultiLayerNeuralNetworks/

            这一节前半部分介绍了神经网络模型及前向传导,定义了很多的变量,这些变量到底代表了什么一定要搞懂,否则后半部分的推导就看不懂了。

            首先是active function,一般选的是sigmod,但深度学习中选的是rectified linear function,既没有边界,也不可连续可微:

             

             下面是几个active function的对比图:

            

            rectified linear function 是逐段线性的,且在小于0的地方是饱和的。它在小于0是梯度为0,大于0时梯度为1,在0的地方没有定义

      但在实际过程中没有问题,“we average the gradient over many training examples during optimization”。

            

            后半部分前的是BP,其实就是怎么求w,b.BP算法是通过反向逐层计算残差来计算梯度,具体参考这篇博客http://blog.csdn.net/itplus/article/details/11022243,总结加注释,写的非常非常好

            

            其实整个过程就是,用梯度下降法来求得最优的w和b,但我们只知道最后一个输出,那么隐含的各层的梯度该如何求呢?这就要用到BP了。

            

            然后是作业部分。里面用到几个函数,简单分析下(主要是好多我没看懂)。

            stack = params2stack(params, ei)将一个flattened parameter vector(不明白那个扁平是什么意思)转为a nice "stack" structure,

    ei是auxiliary variable containing the configuration of the network

            函数首先得到网络的深度depth,并初始化一个这么大的cell(stack),取得前一层的大小(单元个数?)prev_size,并定义了一个表示参数向量位置的向量。

            接下来是一个循环。目的是取得所有层的权值与偏差。最后返回的stack包括每层的权值和偏差。

        

            未完待续。。。。

            

            

            

           

  • 相关阅读:
    什么叫“全力以赴”?
    Hibernate 异常 —— Unable to instantiate default tuplize
    也许用得着的英文短语(持续整理)
    也许用得着的英文句子(持续更新)
    iPhone(iOS设备) 无法更新或恢复时, 如何进入恢复模式
    poj 2778 DNA Sequence(AC自动机 + 矩阵快速幂)
    hdu 3974 线段树 将树弄到区间上
    hdu 2865 Polya计数+(矩阵 or 找规律 求C)
    Polya计数
    poj 2888 Magic Bracelet(Polya+矩阵快速幂)
  • 原文地址:https://www.cnblogs.com/573177885qq/p/4820541.html
Copyright © 2011-2022 走看看