深度学习之 13 无监督模型

本文是接着上一篇深度学习之 12 循环神经网络RNN 3_水w的博客-CSDN博客

目录

1 Hopfield神经网络

❑ Hopfield网络的特点

❑ 能量函数

❑ 联想记忆

❑ 信息存储(参数学习)

2 玻尔兹曼机

❑ 模型定义

❑样本生成

❑ 吉布斯采样

❑ 全局能量最小化

❑ 参数学习

3 受限玻尔兹曼机

❑ 受限玻尔兹曼机的能量函数:

❑ 利用能量函数,可以给出全部状态(v, h)的联合概率分布:

❑ 观测数据的概率分布, 也就是可见层状态变量的概率分布

❑ 类似地,隐藏层状态变量的概率分布

❑ 给定可见层上所有神经元的状态时,隐藏层上的某个神经元被激活(即取值为1)的概率:𝑃(hk = 1|V)

❑ 给定隐藏层上所有神经元的状态时,可见层上的某个神经元被激活(即取值为1)的概率:𝑃(𝑣𝑘 = 1|𝐡)

❑ 中间变量符号 

❑ 能量函数可以表达为

❑ P(hk=1|v)的推导

❑ 给定训练样本​编辑 ,调整参数θ 训练RBM​编辑 , 它们是独立同分布的,训练RBM是最大化似然函数

❑ 和玻尔兹曼机一样,计算时通常使用对数似然函数

❑ 最大化似然,采用梯度正方向更新

对比散度算法

❑ 对比散度法

❑ 对比散度算法的训练过程

4 深度玻尔兹曼机

❑ 深度玻尔兹曼机既可以当作生成模型,也可以当作判别模型

❑ 作为判别模型使用时,需要在模型顶层添加一层Softmax实现分类

❑ 训练方法

5 深度信念网络

6 自编码器

7 自编码器变种、预训练

稀疏自编码器

降噪自编码器

堆叠自编码器

在预训练中的应用


无监督学习(Unsupervised Learning) 是指从无标签的数据中学习出一些有用的模式。 无监督学习算法一般直接从原始数据中学习,不借助于任何人工给出标签或者反馈等指导信息。         ➢ 监督学习是建立输入-输出之间的映射关系         ➢ 无监督学习是发现隐藏的数据中的有价值信息,包括有效的特征、类别、结构以及概率分布等。 典型无监督问题:无监督特征学习、概率密度估计、聚类等。

1 Hopfield神经网络

一种基于神经动力学的联想记忆模型 Hopfield神经网络是一种单层互相全连接反馈型神经网络。 每个神经元既是输入也是输出 每个神经元都将自己的输出通过连接权传给所有其它神经元,同时又都接收所有其它神经元传递过来的信息。(神经元在t 时刻的输出状态间接地与自己t -1时刻的输出状态有关) 属于一种循环神经网络 神经元之间互连接,所以权重矩阵将是对称矩阵

 

Hopfield网络的特点

神经元之间的连接权重对称(𝑤𝑖𝑗 = 𝑤𝑗𝑖 每个神经元没有到自身的连接(𝑤𝑖𝑖 =0) 对于由𝑀个二值神经元组成的网络,每个神经元的输出只能是0或1 Hopfield网络的更新可以分为异步同步两种方式         ⚫ 异步更新是指每次更新一个神经元,神经元的更新顺序可以是随机或事先固定的         ⚫ 同步更新是指一次更新所有的神经元,需要有一个时钟来进行同步

能量函数

给网络状态定义一个标量属性,称为“能量”,能量函数定义为: Hopfield网络的经过迭代一定能达到一个稳定的收敛状态,即为网络的输出模式。 给定一个外部输入,网络经过演化,会达到某个稳定状态,这些稳定状态称为吸引点(Attractor)。 在一个Hopfield网络中通常有多个吸引点,每个吸引点为一个能量局部最优点。

 

联想记忆

每个吸引点 𝒖 都对应一个“管辖”区域,若输入向量 𝒙 落入这个区域,网络最终会收敛到该吸引点;因此,可以把吸引点看作网络中存储的模式(Pattern)模式是由权重确定的 将网络输入 𝒙 作为起始状态,随时间收敛到吸引点 𝒖 上的过程作为检索过程 一个Hopfield网络可以存储大约𝟎. 𝟏𝟒𝑴 个模式(𝑀为神经元个数)

 

 

信息存储(参数学习)

信息存储是指将一组向量存储在网络中的过程。 存储过程主要是调整神经元之间的连接权重,因此可以看作一种学习过程 Hopfield网络的参数不是通过训练出来的,而是用规则计算出来的 赫布规则(Hebbian Rule):如果𝑥𝑖𝑥𝑗在输入向量中相同的概率越大,则其对应的神经元之间的权重𝑤𝑖𝑗就应该越大。一种最简单的学习方式:

 

当需要记忆的模式之间较为相似,或者需要记忆的模式太多时,Hopfield神经网络就不能完全正确地辨别模式。这种相互干扰、不能准确记忆的情况称为串扰(crosstalk)

为了防止串扰,可以采用先把模式正交化再进行记忆等方法; 但是正交化方法并不能完全解决问题,可以使用玻尔兹曼机解决这一问题。

2 玻尔兹曼机

玻尔兹曼机也是相互连接型网络 如果发生串扰或陷入局部最优解,Hopfield神经网络就不能正确地辨别模式 。而玻尔兹曼机(Boltzmann Machine)则可以通过让每个单元按照一定的概率分布发生状态变化,来避免陷入局部最优解。 玻尔兹曼机保持了Hopfield神经网络的假设:         – 权重对称         – 自身无连接         – 所有神经元都是二值输出, 分为可观测变量𝑉和隐变量𝐻

 

模型定义

 

样本生成

给定网络权重𝑊,玻尔兹曼机可以用来生成样本

对于玻尔兹曼机中的某一个变量𝑋𝑖,其输出是由全条件概率分布决定的:

        • 𝑇(> 0)表示温度系数,𝑘是玻尔兹曼常数         • 当 𝑇 趋近于无穷时,无论𝒙\𝑖取值如何,𝑥𝑖等于1 或 0 的概率都接近1/2,系统很容易达到稳定状态         • 当𝑇 = 0时, 𝑥𝑖以接近1的概率取1或0,玻尔兹曼机退化为Hopfield网络

 

吉布斯采样

 

全局能量最小化

玻尔兹曼机使用模拟退火算法来使得系统达到热力平衡状态(系统能量最小点、全局最优点):先采用较大的温度系数进行粗调,然后逐渐减小温度系数进行微调 温度系数越大,跳出局部最优解的概率越高。但是温度系数增大时,获得能量函数极小值的概率就会降低。反之,温度系数减小时,虽然获得能量函数极小值的概率增加了,但是玻尔兹曼机需要经历较长时间才能达到稳定状态。

参数学习

因为玻尔兹曼机的目标是用神经网络来描述一组变量的联合概率分布,所以需要使用符合该分布的样本数据来训练模型参数。

 

3 受限玻尔兹曼机

由于玻尔兹曼机的是全连接网络,训练非常困难,所以Hinton等人提出了受限玻尔兹曼机(Restricted Boltzmann Machine                 – 由可见层和隐藏层构成                 – 层内单元之间无连接         ⚫ nv nh分别表示可见层和隐藏层中包含的神经元数目,下标vh 代表visible和hidden;         ⚫ v=(v1; v2; …; vnv ) :可见层的状态向量,vi 表示可见层中第i 个神经元的状态;         ⚫ h=(h1; h2; …; hnh ):隐藏层的状态向量,hj 表示隐藏层中第j 个神经元的状态;         ⚫ a=(a1; a2; …; anh ):可见层的偏置向量,ai 表示可见层中第i 个神经元的偏置;         ⚫ b=(b1;b2; …; 𝑏𝑛):隐藏层的偏置向量,bj表示隐藏层中第j个神经元的偏置;         ⚫ W=(wij ) : 隐藏层和可见层之间的权值矩阵,wij 表示隐藏层中第i 个神经元和可见层中第j 个神经元之间的权重;

 

受限玻尔兹曼机的能量函数:

受限玻尔兹曼机的能量函数为:

其中,𝑎𝑖是可见变量的偏置,𝑏𝑗是隐藏变量的偏置,𝑤𝑖𝑗是连接权重,𝜃 = (𝑊, 𝐚, 𝐛) 是表示所有连接权重和偏置的参数集合。

 利用能量函数,可以给出全部状态(v, h)的联合概率分布:

 

观测数据的概率分布, 也就是可见层状态变量的概率分布

 

类似地,隐藏层状态变量的概率分布

 

给定可见层上所有神经元的状态时,隐藏层上的某个神经元被激活(即取值为1)的概率:𝑃(hk = 1|V)

给定隐藏层上所有神经元的状态时,可见层上的某个神经元被激活(即取值为1)的概率:𝑃(𝑣𝑘 = 1|𝐡)

中间变量符号 

 能量函数可以表达为

P(hk=1|v)的推导

❑ 给定训练样本 ,调整参数θ 训练RBM , 它们是独立同分布的,训练RBM是最大化似然函数

 

和玻尔兹曼机一样,计算时通常使用对数似然函数

 最大化似然,采用梯度正方向更新

 

改良后的受限玻尔兹曼机依然在计算上存在着问题:是所有输入模式的总和,不可避免会产生庞大的计算量 要想解决这个问题,可以使用常规蒙特卡罗MCMC采样估计(如吉布斯采样),进行迭代计算求近似解,但即使这样处理,迭代次数也仍然非常多。于是,人们提出了对比散度算法

对比散度算法

对比散度法

        – 2002年Hinton提出, MCMC的状态以训练样本为起点,这样只需很少的状态转移(k 步)就可以 得到RBM的分布

对比散度算法的训练过程

        – 1. 训练准备:初始化连接权重和偏置         – 2. 调整参数                 • 2.1 在可见层𝑣(0)设置输入模式                 • 2.2 调整隐藏层中单元ℎ(0)的值                 • 2.3 根据输出𝑥𝑖𝑥𝑗的值,调整连接权重𝑤𝑖𝑗、偏置𝑎𝑖、偏置𝑏𝑗         – 重复步骤2,直到满足终止判断条件

4 深度玻尔兹曼机

由受限玻尔兹曼机堆叠组成; 深度玻尔兹曼机采用与多层神经网络不同的训练方法,在训练时采用对比散度算法,逐层来调整连接权重和偏置 具体做法:         – 首先训练输入层和第一个隐藏层之间的参数,并固定下来;         – 把第一个隐藏层当成输入层,再训练其与第二个隐藏层之间的参数,并固定下来;         – 然后逐层迭代,完成多层网络的训练;

 深度玻尔兹曼机既可以当作生成模型,也可以当作判别模型

        – 作为生成模型使用时,网络会按照某种概率分布生成训练数据。概率分布可根据训练样本导出,但是覆盖全部数据模式的概率分布很难导出,所以通常选择最大似然估计法训练参数,得到最能覆盖训练样本的概率分布         – 这种生成模型能够:去除输入数据中含有的噪声,得到新的数据,对输入数据压缩和特征表达

 

作为判别模型使用时,需要在模型顶层添加一层Softmax实现分类

        – 进行分类时,需要同时提供训练样本和期望输出,在最顶层级联一个𝑆𝑜𝑓𝑡𝑚𝑎𝑥

训练方法

        – 最顶层的参数使用随机数进行初始化;         – 除最顶层外,其他各层都可以使用无监督学习进行训练。         – 把训练得到的参数作为初始值,使用误差反向传播算法对包含最顶层的神经网络进行训练;

 

5 深度信念网络

深度信念网络是一种深层的概率有向图模型,其图结构由多层 的节点构成。 每层节点的内部没有连接,相邻两层的节点之间为全连接。 网络的最底层为可观测变量,其他层节点都为隐变量。 最顶部的两层间的连接是无向的,其他层之间的连接是有向的。

 

 

6 自编码器

自编码器(Auto-encoder,AE):是通过无监督的方式来学习一组数据的有效编码(或表示); 假设有一组𝐷维的样本𝒙(𝑛) ∈ ℝ𝐷1 ≤ 𝑛 ≤ 𝑁,自编码器将这组数据从入空间映射到特征空间得到每个样本的编码𝒛(𝑛) ∈ ℝ𝑀, 1 ≤ 𝑛 𝑁 ,并且希望这组编码可以重构出原来的样本; 自编码器的结构可分为两部分:         ➢ 编码器,Encoder,𝑓: ℝ𝐷 ⟶ ℝ𝑀;         ➢ 解码器,Decoder,g ∶ ℝ𝑀 ⟶ ℝ𝐷; 最简单的自编码器由两层神经网络组成         ➢ 输入层到隐藏层用来编;         ➢ 隐藏层到输出层用来解码;         ➢ 层与层之间互相全连接 ⚫ 编码过程: ⚫ 重构过程:

 

自编码器的学习目标是最小化重构误差(Reconstruction Error):

 

 

如果𝑀 < 𝐷,自编码器相当于是一种降维特征抽取方法 如果𝑀 ≥ 𝐷, 一定可以找到一组或多组解使得 g(𝑓 𝑥 )为单位映射(Identity Function)并使得重构错误为 0;

7 自编码器变种、预训练

稀疏自编码器

自编码器除了可以学习低维编码之外,也能够学习高维的稀疏编码; 如果𝑀 ≥ 𝐷,并让 𝒛 尽量稀疏,这就是稀疏自编码器(Sparse Auto-Encoder); 优点:进行了隐式的特征选择; 学习目标:         ➢ 通过给自编码器中隐藏层单元 𝒛 加上稀疏性限制,自编码器可以学习到数据中一 些有用的结构;         ➢ 稀疏性度量函数:

定义可以采用:范数、对数函数、指数函数,

的定义还可以是每个神经元激活的概率,我们希望把每个神经元真实激活的概率限制在一个较低的先验值附近:

        ➢ 给定 𝑁 个训练样本,隐藏层第 𝑗 个神经元平均活性值为:

        ➢ 通过KL散度来做概率分布之间的限制:

降噪自编码器

降噪自编码器Denoising Auto-encoder)就是一种通过引入噪声来增加编码鲁棒性的自编码器; 自编码器是把训练样本直接作为输入,而降噪自编码器则是先向训练样本中加入随机噪声,然后将被扰动的数据作为输入;

我们需要训练神经网络,使得重构结果和不含噪声的样本之间的误差收敛于极小值; 误差函数会对不含噪声的输入样本进行计算,故降噪自编码器可以完成以下两项训练:         ➢ 保持输入样本不变的条件下,能够更好地反映样本的特征;         ➢ 消除输入样本中包含的噪声;

MNIST数据集上应用降噪自编码器

 

堆叠自编码器

对于很多数据来说,仅使用两层神经网络的自编码器还不足以获取一种好的数据表示; 为了获取更好的数据表示,我们可以使用更深层的神经网络; 网络层数加深,数据表示会更加抽象,更能捕获高层语义信息; 堆叠自编码器(Stacked Auto-Encoder,SAE):堆叠多层的自编码器模型; 堆叠自编码器一般可以采 用逐层训练(Layer-Wise Training)来学习网络参数:         ➢ 首先训练第一个自编码器,然后保留第一个自编码器的编码器部分;         ➢ 把第一个自编码器的中间层作为第二个自编码器的输入层进行训练;         ➢ 反复地把前一个自编码器的中间层作为后一个编码器的输入层,进行迭代训练 ;

 

在预训练中的应用

堆叠自编码器每层都能得到有效的参数,可以把训练后的参数作为神经网络或卷积神经网络的参数初始值,这种方法叫预训练(pre-training); 预训练属于无监督学习,接下来需要使用有监督学习来调整整个网络的参数,叫作微调(fine tuning)。

 

查看全文

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.dgrt.cn/a/2026502.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章:

深度学习之 13 无监督模型

本文是接着上一篇深度学习之 12 循环神经网络RNN 3_水w的博客-CSDN博客
目录
1 Hopfield神经网络
❑ Hopfield网络的特点
❑ 能量函数
❑ 联想记忆
❑ 信息存储(参数学习)
2 玻尔兹曼机
❑ 模型定义
❑样本生成
❑ 吉布斯采样
❑ 全局能量最小……

CenterLoss原理详解(通透)

文章目录(一)CenterLoss研究背景和意义1.1、Research background1.2、研究成果以及意义(二)论文精度2.1、Abstract2.2、Introduction(三)LossFounction3.1、Softmax 与 CenterLoss 输出的区别3.2、SoftMax ……

GIN:图同构网络

论文标题:How Powerful are Graph Neural Networks? 论文链接:https://arxiv.org/abs/1810.00826论文来源:ICLR 2019一、概述目前的GNN框架大多遵循递归邻域聚合(或者消息传递)框架,并且已经出现各种GNN变……

Batch Normalization详解(原理+实验分析)

Batch Normalization详解(原理实验分析)1. 计算过程2. 前向传播过程3. 反向传播过程4. 实验分析4.1 实验一:验证有没有BatchNorm下准确率的区别4.2 实验二:验证有没有BatchNormnoisy下准确率的区别4.3 实验三:验证有没……

人工智能导论(11)——群智能(Swarm Intelligence)

文章目录一、 概述二、 重点内容三、 思维导图四、 重点知识笔记群智能算法群智能算法主要流程群智能优化算法原理群智能主要研究内容蚁群算法粒子群算法其他群智能优化算法多智能体一、 概述
群智能(Swarm Intelligence,SI)主要研究的内容包括群智能算法和多智能体……

图神经网络(一):综述

文章目录1.背景介绍1)图简介2)图神经网络简介2.GNN 的通用设计流程1) 查找图结构2)明确图类型和规模3)设计损失函数4)构造模型3.计算模块的实例化3.1 传播模块——卷积算子(convolution operator&#xff0……

手把手搭建经典神经网络系列(1)——AlexNet

一、AlexNet简介
AlexNet是Alex和Hinton参加2012年imagenet比赛时提出的卷积网络框架,夺得了当年ImageNet LSVRC的冠军,且准确率远超第二名,带来了深度学习的又一次高潮。
论文地址:http://papers.nips.cc/paper/4824-imagenet-……

使用Python中Keras的LSTM递归神经网络进行时间序列预测

最近我们被客户要求撰写关于LSTM的研究报告,包括一些图形和统计输出。 时间序列预测问题是预测建模问题中的一种困难类型。
与回归预测建模不同,时间序列还增加了输入变量之间序列依赖的复杂性。
用于处理序列依赖性的强大神经网络称为 递归神经网络。……

Pytorch实现多分类问题 样例解释 通俗易懂 新手必看

初学者学习Pytorch系列
第一篇 Pytorch初学简单的线性模型 代码实操 第二篇 Pytorch实现逻辑斯蒂回归模型 代码实操 第三篇 Pytorch实现多特征输入的分类模型 代码实操 第四篇 Pytorch实现Dataset数据集导入 必要性解释及代码实操 第五篇 Pytorch实现多分类问题 样例解释 通俗……

异质图神经网络(持续更新ing…)

诸神缄默不语-个人CSDN博文目录
本文将对异质图神经网络(HGNN, heterogeneous graph neural networks)的方法演变进行梳理和介绍。
最近更新时间:2023.2.14 最早更新时间:2022.10.31 文章目录1. 异质图2. 处理为同质图3. 知识图……

数据要素化条件之一:原始性

随着技术的发展,计算机不仅成为人类处理信息的工具,而且逐渐地具有自主处理数据的能力,出现了替代人工的数据智能技术。数据智能的大规模使用需要关于同一分析对象或同一问题的、来源于不同数据源的海量数据。这种数据必须是针对特定对象的记……

【面试题 高逼格利用 类实现加法】编写代码, 实现多线程数组求和.

编写代码, 实现多线程数组求和.关键1. 数组的初始化关键2. 奇偶的相加import java.util.Random;public class Thread_2533 {public static void main(String[] args) throws InterruptedException {// 记录开始时间long start System.currentTimeMillis();// 1. 给定一个很长的……

一个python训练

美国:28:麻省理工学院,斯坦福大学,哈佛大学,加州理工学院,芝加哥大学,普林斯顿大学,宾夕法尼亚大学,耶鲁大学,康奈尔大学,哥伦比亚大学,密歇根大学安娜堡分校,约翰霍普金斯大学,西北大学,加州大学伯克利分校,纽约大学,加州大学洛杉矶分校,杜克大学,卡内基梅隆大学,加州大学圣地……

Mybatis03学习笔记

目录 使用注解开发
设置事务自动提交
mybatis运行原理
注解CRUD
lombok使用(偷懒神器,大神都不建议使用)
复杂查询环境(多对一)
复杂查询环境(一对多)
动态sql环境搭建
动态sql常用标签……

设置或取得c# NumericUpDown 编辑框值的方法,(注意:不是Value值)

本人在C#开发中使用到了NumericUpDown控件,但是发现该控件不能直接控制显示值,经研究得到下面的解决办法
NumericUpDown由于是由多个控件组合而来的控件,其中包含一个类似TextBox的控件,若想取得或改变其中的值要使用如下方法
N……

使用NPOI 技术 的SetColumnWidth 精确控制列宽不能成功的解决办法(C#)

在使用NPOI技术开发自动操作EXCEL软件时遇到不能精确设置列宽的问题。

ISheet sheet1 hssfworkbook.CreateSheet("Sheet1");
sheet1.SetColumnWidth(0, 50 * 256); // 在EXCEL文档中实际列宽为49.29
sheet1.SetColumnWidth(1, 100 * 256); // 在EXCEL文……

Mysql 数据库zip版安装时basedir datadir 路径设置问题,避免转义符的影响

本人在开发Mysql数据库自动安装程序时遇到个很奇怪的问题,其中my.ini的basedir 的路径设置是下面这样的:
basedir d:\测试\test\mysql
但是在使用mysqld安装mysql服务时老是启动不了,报1067错误,后来查看window事件发现一个独特……

java stream sorted排序 考虑null值

项目里使用到排序, java里没有像C# 里的linq,只有stream,查找stream.sorted源码看到有个
Comparator.nullsLast
然后看了一下实现,果然是能够处理null值的排序,如:minPriceList.stream().sorted(Comparator.comparing(l -> l.g……

spring @EnableConfigurationProperties 实现原理

查看DataSourceAutoConfiguration源码,发现如下代码: Configuration ConditionalOnClass({ DataSource.class, EmbeddedDatabaseType.class }) EnableConfigurationProperties(DataSourceProperties.class) Import({ DataSourcePoolMetadataProvidersCon……

postman请求https网址没有响应,但是用浏览器有响应,解决办法

遇到个问题:同一个get请求的url,postman请求https网址没有响应,但是用浏览器有响应
url是https开头的,查看错误描述里有一个SSL的选项: 然后根据描述关掉这个选项: 然后就没问题了,能正常请求及……

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注