rbm

Deep Belief Network 学习笔记-RBM

孤人 提交于 2020-04-04 22:36:05
Deep Belief Network 学习笔记-RBM By Placebo   (纯属个人笔记)   第一次知道deep learning,是上学期dengli博士来实验室的一次报告,他讲到,当神经网络的层数大于2时(即一个hidden层,一个输出层,不算输入层,之后皆采用这种表述法),经典的训练方法效果会很差,如果层数继续增多,则完全没法训练。当时对神经网络知之甚少,直到最近较认真的学了下机器学习,才明白。   什么是deep learning?我们知道(虽然不知道如何证明)2层神经网络的建模能力是非常强大的,但是要求隐节点个数足够多,多到难以接受。如果采用更深层的网络,比如3层网络,即两个hidden层,每层100个节点,则可以和hidden层有10000个节点的2层网络建模能力差不多,类似,4层网络,三个hidden层,每层100个节点,可以和hidden层有1000000个节点的2层网络建模能力差不多。这就是加深网络深度带来的好处。但是网络深了,针对3层网络的训练方法再用起来就会失败,因为参数的局部极小值太多了,很容易陷入到一个很烂的极值。   Hinton于XXXX年提出了一种方法,把RBM(Restricted Boltzmann Machines)堆叠在一起,训练出权值,把这个权值当成神经网络权值的初始值,再用经典的梯度法去训练网络,最后得到的结果会很好

连续受限玻尔兹曼机

断了今生、忘了曾经 提交于 2020-03-03 19:19:25
连续 RBM 连续 RBM 是受限玻尔兹曼机的一种形式,它通过不同类型的对比散度采样接受连续的输入(也就是比整数切割得更细的数字)。这允许 CRBM 处理图像像素或字数向量这类被归一化到 0 到 1 之间的小数的向量。 应该注意,深度学习网络的每一层都需要四个元素:输入、系数、偏置项以及变换(激活算法)。 输入是数值数据,是一个来自于前面层(或者原始数据)的向量。系数是通过每个节点层的特征的权重。偏置项确保部分节点无论如何都能够被激活。变换是一种额外的算法,它在数据通过每一层以后以一种使梯度(梯度是网络必须学习的)更容易被计算的方式压缩数据。 这些额外算法和它们的组合可以逐层变化。 一种有效的连续 RBM 在可见(或者输入)层上使用高斯变换,在隐藏层上使用整流线性单元(ReLU)变换。这在面部重建中特别有用。对于处理二进制数据的 RBM 而言,只需要进行二进制转换即可。 高斯变换在 RBM 的隐藏层上的表现不好。相反,使用 ReLU 变换能够表示比二进制变换更多的特征,我们在深度置信网络中使用了它。 REF https://baijiahao.baidu.com/s?id=1599798281463567369&wfr=spider&for=pc https://uwaterloo.ca/data-analytics/sites/ca.data-analytics/files

深度学习概述:从感知机到深度网络

吃可爱长大的小学妹 提交于 2020-02-24 21:08:53
  (注:本文译自一篇博客,作者行文较随意,我尽量按原意翻译,但作者所介绍的知识还是非常好的,包括例子的选择、理论的介绍都很到位,由浅入深, 源文地址 )   近些年来,人工智能领域又活跃起来,除了传统了学术圈外,Google、Microsoft、facebook等工业界优秀企业也纷纷成立相关研究团队,并取得了很多令人瞩目的成果。这要归功于社交网络用户产生的大量数据,这些数据大都是原始数据,需要被进一步分析处理;还要归功于廉价而又强大的计算资源的出现,比如GPGPU的快速发展。   除去这些因素,AI尤其是机器学习领域出现的一股新潮流很大程度上推动了这次复兴——深度学习。本文中我将介绍深度学习背后的关键概念及算法,从最简单的元素开始并以此为基础进行下一步构建。   (本文作者也是Java deep learning library的作者,可以从 此处 获得,本文中的例子就是使用这个库实现的。如果你喜欢,可以在Github上给个星~。用法介绍也可以从 此处 获得) 机器学习基础   如果你不太熟悉相关知识,通常的机器学习过程如下:     1、机器学习算法需要输入少量标记好的样本,比如10张小狗的照片,其中1张标记为1(意为狗)其它的标记为0(意为不是狗)——本文主要使用监督式、二叉分类。     2、这些算法“学习”怎么样正确将狗的图片分类,然后再输入一个新的图片时

受限玻尔兹曼机 (Restricted Boltzmann Machines, RBM)

倖福魔咒の 提交于 2020-02-24 10:20:16
==================================================================== 结构 标准的受限玻尔兹曼机由二值( 布尔 / 伯努利 )隐层和可见层单元组成。权重矩阵 W=(w ij )中的每个元素指定了隐层单元 h j 和可见层单元 v i 之间边的权重。此外对于每个可见层单元 v i 有偏置 a i ,对每个隐层单元 h j 有偏置 b j 以及在这些定义下,一种受限玻尔兹曼机配置(即给定每个单元取值)的“能量” (v,h) 被定义为 或者用矩阵的形式表示如下: 这一能量函数的形式与 霍普菲尔德神经网络 相似。在一般的玻尔兹曼机中,隐层和可见层之间的联合概率分布由能量函数给出: 其中, Z 为 配分函数 ,定义为在节点的所有可能取值下 的和(亦即使得概率分布和为1的 归一化常数 )。类似地,可见层取值的 边缘分布 可通过对所有隐层配置求和得到: 由于RBM为一个二分图,层内没有边相连,因而隐层是否激活在给定可见层节点取值的情况下是条件独立的。类似地,可见层节点的激活状态在给定隐层取值的情况下也条件独立。亦即,对 m 个可见层节点和 n 个隐层节点,可见层的配置v对于隐层配置h的 条件概率 如下: 类似地,h对于v的条件概率为 其中,单个节点的激活概率为 和 其中 代表 逻辑函数 。 训练算法

受限玻尔兹曼机和深度置信网络

爱⌒轻易说出口 提交于 2020-02-15 15:23:36
2016-07-20 11:21:33 1受限玻尔兹曼机 梯度下降法 (以及相关的L-BFGS算法等)在使用随机初始化权重的深度网络上效果不好的技术原因是:梯度会变得非常小。具体而言,当使用 反向传播方法 计算导数的时候,随着网络的深度的增加,反向传播的梯度(从输出层到网络的最初几层)的幅度值会急剧地减小。结果就造成了整体的损失函数相对于最初几层的权重的导数非常小。这样,当使用梯度下降法的时候,最初几层的权重变化非常缓慢,以至于它们不能够从样本中进行有效的学习。这种问题通常被称为“梯度的弥散”[4]。 与梯度弥散问题紧密相关的问题是:当神经网络中的最后几层含有足够数量神经元的时候,可能单独这几层就足以对有标签数据进行建模,而不用最初几层的帮助。因此,对所有层都使用随机初始化的方法训练得到的整个网络的性能将会与训练得到的浅层网络(仅由深度网络的最后几层组成的浅层网络)的性能相似。 梯度弥散一直是困扰着深度神经网络的发展,那么如何解决梯度弥散问题呢?多伦多大学的Geoff Hinton提出了设想:受限玻尔兹曼机(Restricted Boltzmann Machines, RBM)[1],即一类具有两层结构的、对称链接无自反馈的随机神经网络模型(一种特殊的马尔科夫随机场)。 如图1所示,一个RBM包含一个由随机的隐单元构成的 隐藏层 (一般是伯努利分布)和一个由随机的可见(观测

深度学习 Python TensorFlow框架下实现RBM深度学习网络(学习笔记)

依然范特西╮ 提交于 2020-01-29 06:09:09
'''创建RBM基类,存放受限玻尔兹曼机''' import tensorflow as tf import numpy as np import sys def tf_xavier_init ( fan_in , fan_out , * , const = 1.0 , dtype = np . float32 ) : k = const * np . sqrt ( 6.0 / ( fan_in + fan_out ) ) return tf . random_uniform ( ( fan_in , fan_out ) , minval = - k , maxval = k , dtype = dtype ) class RBM : def __init__ ( self , n_visible , #可见层的神经元数 n_hidden , #隐藏层的神经元数 learning_rate = 0.01 , momentum = 0.95 , xavier_const = 1.0 , err_function = 'mse' , #错误函数 use_tqdm = False , #为进度指示或者不使用tqdm软件包 tqdm = None ) : if not 0.0 <= momentum <= 1.0 : raise ValueError ( 'momentum should

Gaussian-RBM fails on a trivial example

女生的网名这么多〃 提交于 2019-12-07 04:51:14
问题 I want to have a nitty-gritty understanding of Restricted Boltzman Machines with continuous input variables. I am trying to devise the most trivial possible example, so that the behavior could be easily tracked. So, here it is. The input data is two-dimensional. Each data point is drawn from one of two symmetrical normal distributions (sigma = 0.03), whose centers are well spaced (15 times sigma). The RBM has two-dimensional hidden layer. I expected to obtain an RBM that would generate two

Gaussian-RBM fails on a trivial example

强颜欢笑 提交于 2019-12-05 12:41:15
I want to have a nitty-gritty understanding of Restricted Boltzman Machines with continuous input variables. I am trying to devise the most trivial possible example, so that the behavior could be easily tracked. So, here it is. The input data is two-dimensional. Each data point is drawn from one of two symmetrical normal distributions (sigma = 0.03), whose centers are well spaced (15 times sigma). The RBM has two-dimensional hidden layer. I expected to obtain an RBM that would generate two clouds of points with the same means as in my train data. I was even thinking that after adding some

R Package Deepnet: Training and Testing the MNIST dataset

拈花ヽ惹草 提交于 2019-12-03 20:30:03
问题 I am trying to train the MNIST dataset using deepenet package's dbn.dnn.train function. The task is a classification one. I am using the following command dbn.deepnet <- dbn.dnn.train(train.image.data,train.image.labels,hidden=c(5,5)) The problems I am facing are: 1) The labels should be factor type vector. But when i input the labels as factor the function gives an error that "y should be a matrix or vector". So, I am using labels as numeric. How to proceed for a classification task 2) What

Deep Learning Ups and Downs

匿名 (未验证) 提交于 2019-12-03 00:30:01
1958: Perceptron(Linear model) 1969: Perceptron has limitation 1980s: Multi-layer perceptron 1986: Backpropagation 1989: 1 hidden layer is "good enough",why deep? 2006: RBM initialization(breakthrough) // Restricted Boltzmann Machine 2009: GPU 2011: Start to be popular in speech recognition 2012: win ILSVRC image competition 转载请标明出处: Deep Learning Ups and Downs 文章来源: Deep Learning Ups and Downs