神经网络(二)

本节参考的是网页http://deeplearning.stanford.edu/wiki/index.php/UFLDL_Tutorial中关于Building Deep Networks for Classification一节的介绍。分下面2大部分内容:

  1. 从self-taught到deep networks:

  从前面的关于self-taught learning介绍(Deep learning:十五(Self-Taught Learning练习))可以看到,该ML方法在特征提取方面是完全用的无监督方法,本次要讲的就是在上面的基础上再用有监督的方法继续对网络的参数进行微调,这样就可以得到更好的效果了。把self-taught learning的两个步骤合在一起的结构图如下所示:

  

  很显然,上面是一个多层神经网络,三层。

  一般的,前面的无监督学习到的模型参数可以当做是有监督学习参数的初始化值,这样当我们用有大量的标注了的数据时,就可以采用梯度下降等方法来继续优化参数了,因为有了刚刚的初始化参数,此时的优化结果一般都能收敛到比较好的局部最优解。如果是随机初始化模型的参数值的话,那么在多层神经网络中一般很难收敛到局部较好值,因为多层神经网络的系统函数是非凸的。

  那么该什么时候使用微调技术来调整无监督学习的结果呢?只有我们有大量标注的样本下才可以。当我们有大量无标注的样本,但有一小部分标注的样本时也是不适合使用微调技术的。如果我们不想使用微调技术的话,那么在第三层分类器的设计时,应该采用级联的表达方式,也就是说学习到的结果和原始的特征值一起输入。当然了,如果采用了微调技术,则效果更好,就不需要继续用级联的特征表达了。

  2. Deep networks小综述:

  如果使用多层神经网络的话,那么将可以得到对输入更复杂的函数表示,因为神经网络的每一层都是上一层的非线性变换。当然,此时要求每一层的activation函数是非线性的,否则就没有必要用多层了。

  Deep networks的优点:

  一、比单层神经网络能学习到更复杂的表达。比如说用k层神经网络能学习到的函数(且每层网络节点个数时多项式的)如果要用k-1层神经网络来学习,则这k-1层神经网络节点的个数必须是指数级庞大的数字。

  二、不同层的网络学习到的特征是由最底层到最高层慢慢上升的。比如在图像的学习中,第一个隐含层层网络可能学习的是边缘特征,第二隐含层就学习到的是轮廓什么的,后面的就会更高级有可能是图像目标中的一个部位,也就是是底层隐含层学习底层特征,高层隐含层学习高层特征。

  三、这种多层神经网络的结构和人体大脑皮层的多层感知结构非常类似,所以说有一定的生物理论基础。

  Deep networks的缺点:

  一、网络的层次越深,所需的训练样本数越多,如果是用有监督学习的话,那么这些样本就更难获取,因为要进行各种标注。但是如果样本数太少的话,就很容易产生过拟合现象。

  二、因为多层神经网络的参数优化问题是一个高阶非凸优化问题,这个问题通常收敛到一个比较差的局部解,普通的优化算法一般都效果不好。也就是说,参数的优化问题是个难点。

  三、梯度扩散问题。因为当网络层次比较深时,在计算损失函数的偏导时一般需要使用BP算法,但是这些梯度值随着深度慢慢靠前而显著下降,这样导致前面的网络对最终的损失函数的贡献很小。这样的话前面的权值更新速度就非常非常慢了。一个理论上比较好的解决方法是将后面网络的结构的神经元的个数提高非常多,以至于它不会影响前面网络的结构的学习。但这样岂不是和低深度的网络结构一样了吗?所以不妥。

  所以一般都是采用的层次贪婪训练方法来训练网络的参数,即先训练网络的第一个隐含层,然后接着训练第二个,第三个…最后用这些训练好的网络参数值作为整体网络参数的初始值。这样的好处是数据更容易获取,因为前面的网络层次基本都用无监督的方法获得,很容易,只有最后一个输出层需要有监督的数据。另外由于无监督学习其实隐形之中已经提供了一些输入数据的先验知识,所以此时的参数初始化值一般都能得到最终比较好的局部最优解。比较常见的一种层次贪婪训练方法就是stacked autoencoders。它的编码公式如下所示:

  

  解码公式如下:

  

  最后的就是用stacked autoencoders学习到的参数来初始化整个网络了,此时整个网络可以看做是一个单一的神经网络模型,只是它是多层的而已,而通常的BP算法是对任意层的网络都有效的。最后的参数调整步骤和前面学习到的稀疏编码模型是一样的。其过程截图如下:

     

http://www.cnblogs.com/tornadomeet/archive/2013/03/25/2980357.html (转)

时间: 2024-10-13 05:38:04

神经网络(二)的相关文章

Cs231n课堂内容记录-Lecture 7 神经网络二

Lecture 7 神经网络二 课程内容记录:https://zhuanlan.zhihu.com/p/21560667?refer=intelligentunit 1.协方差矩阵: 协方差(Covariance)在概率论和统计学中用于衡量两个变量的总体误差.而方差是协方差的一种特殊情况,即当两个变量是相同的情况. 协方差表示的是两个变量的总体的误差,这与只表示一个变量误差的方差不同. 如果两个变量的变化趋势一致,也就是说如果其中一个大于自身的期望值,另外一个也大于自身的期望值,那么两个变量之间

第十二节,卷积神经网络(二)

一.三维卷积(Convolutions over Volumes) 前面已经讲解了对二维图像做卷积了,现在看看如何在三维立体上执行卷积. 我们从一个例子开始,假如说你不仅想检测灰度图像的特征,也想检测 RGB 彩色图像的特征.彩色图像如果是 6×6×3,这里的 3 指的是三个颜色通道,你可以把它想象成三个 6×6图像的堆叠.为了检测图像的边缘或者其他的特征,不是把它跟原来的 3×3 的过滤器做卷积,而是跟一个三维的过滤器,它的维度是 3×3×3,这样这个过滤器也有三层,对应红绿.蓝三个通道. 这

卷积神经网络(二)

出自 :http://neuralnetworksanddeeplearning.com/ . 卷积神经网络采用了三种基本概念:局部感受野(local receptive fields),共享权重(sharedweights),和混合(pooling). 局部感受野: 在之前看到的全连接层的网络中,输入被描绘成纵向排列的神经元.但在一个卷积网络中,把输入看作是一个 28 × 28 的方形排列的神经元更有帮助,其值对应于我们用作输入的 28 × 28 的像素光强度: 和通常一样,我们把输入像素连接

Theano入门神经网络(二) 实现一个XOR门

与非门的图片如下 示意图 详细解释: 1 定义变量的代码,包括了输入.权值.输出等.其中激活函数采用的是sigmod函数 1 # -*- coding: utf-8 -*- 2 __author__ = 'Administrator' 3 4 import theano 5 import theano.tensor as T 6 import random 7 import numpy as np 8 from itertools import izip 9 10 11 #定义网络结构 12 #

01. 深度学习基本概念

一.神经网络 二.激活函数 三.评价神经网络的效果 四.梯度下降算法 五.参数与超参数区别 六.习题 一.神经网络 neural network w11a1+w12a2+w13a3 + bias1=b1 w21a1+w22a2+w23a3 + bias2=b2 从网络层1到网络层2,可能是线性运算,可能是非线性运算. 二.激活函数 经典激活函数:Sigmoid函数 激活函数引入非线性,使得原本不可分变为可分,且可以被作为概率看待. 三.评价神经网络的效果 (1)使用随机值初始化神经网络参数 随机

深度学习初步:

一.背景介绍 1.深度学习应用 2.一点基础:线性分类器 1)线性分类器得分函数: (1)给定W,可以由像素映射到类目得分 (2)可以调整参数/权重W,使得映射的结果和实际类别吻合 (3)损失函数是用来衡量吻合度的 (4)损失函数别的称呼:代价函数(衡量和标准之间的差异到底有多大,值越大) (5)损失函数1:hinge loss/支持向量机损失 对于训练集中的第i张图片数据xi 在W下会得到一个得分结果向量f(xi,W) 则在该样本上的损失我们可以由下列公式计算得到 (6)对于线性模型,可以简化

论文翻译:XNOR-Net: ImageNet Classification Using BinaryConvolutional Neural Networks

目录 Abstract 1 Introduction 2 Related Work 3 Binary Convolutional Neural Network 3.1 Binary-Weight-Networks 3.2 XNOR-Networks 4 Experiments 4.1 Efficiency Analysis 4.2 Image Classification 4.3 Ablation Studies 5 Conclusion 参考资料 论文地址:http://ai2-website

Task 05 打卡

卷积神经网络 二维卷积层 ?维卷积层将输?和卷积核做互相关运算,并加上?个标量偏差来得到输出.卷积层的模型参数包括了卷积核和标量偏差.在训练模型的时候,通常我们先对卷积核随机初始化,然后不断迭代卷积核和偏差. 二维互相关运算(cross-correlation) 互相关运算和卷积运算 为了得到卷积运算的输出,我们只需将核数组左右翻转并上下翻转,再与输?数组做互相关运算.可?,卷积运算和互相关运算虽然类似,但如果它们使?相同的核数组,对于同?个输?,输出往往并不相同. 特征图和感受野 ?维卷积层输

【自己动手写神经网络】小白入门连载(二)--机器人时代必须得有人工神经(不是神经病)

[自己动手写神经网络]小白入门连载(一) 在上一章中,我们已经介绍了神经网络的基本概念.思想,并提及了有关人工神经元模型的部分内容.在本章中,将对人工神经元模型做更多的介绍. 图2.1 多输入生物神经元示意图 在上一章中提到了一个简单的神经元模型,并且该模型只有一个输入p.这意味着只能有一个额外的神经元与之相连接,这显然是不够的.因此,一个实用的神经元必须是可以接受多个输入的,如图2.1所示,神经元拥有3个输入p1.p2和p3.其中,w和b是根据网络情况不断进行调整的,而传入函数s和传输函数f是

闲谈神经网络--写给初学者(二)

继续上篇来写.为了使这个神经网络满足我们需要,我们能够改变的东西有: (0)输入输出的格式和质量 (1)各个神经元的权重值W (2)偏置bias,这个改变从广义上说,也算是改变权重W0 (3)激活函数 (4)神经网络层数 (5)每一层神经元个数 (6)神经网络的结构 那么问题又来了,这些参数怎么改变呢?我们一部分一部分的进行讲解. 一.激活函数的选取 下面列出几个激活函数数学定义以及Matlab中的相应函数,大家可以在matlab中用函数画一下,看看他们到底是怎么一个函数. (1) 线性函数 (