随机神经网络|学习笔记

简介: 快速学习随机神经网络

开发者学堂课程【神经网络概览及算法详解随机神经网络】学习笔记与课程紧密联系,让用户快速学习知识

课程地址https://developer.aliyun.com/learning/course/40/detail/949


随机神经网络

 

内容介绍

一.波尔

二.模拟退火算法

三.BM 的能量函数

四.BM 的特点

五.自联想与异联想

六.BM 的学习算法

七.波尔兹曼机 RBM

 

一.波尔兹曼机

随机神经网络,最典型的就是波尔机。波尔机( Boltzmann Machine, BM)BM 也称 Stochastic Hopfield Network with Hidden Units ,它是一种随机生成的 Hopfield 网络1983年-1986年,由 Hinton 和 Sejnowski 提出,这个神经网只有01两种状态,它的取值是根据规律统计法则来决定的,这个统计法的最终的形式和统计力学家波尔兹曼提出来的波尔兹曼分布非常相似,所以被称作 Boltzmann 机。它就叫波尔机, BM 没有其它的名称。

特点

1. 有可见节点和隐藏节点之分

2. 形式上和单层反馈网络 DHNN (离散 Hopfield 网络非常接近

3. 可见节点实现输入输出隐藏节点实现输入输出之间的联系

4. 从功能上看,它和三层 BP 网络比较接近

5. 矩阵是对称的,自反馈为零,也就是它的对角线值是零Wij 等于零另外它对称到,根据矩阵的对角线是对称的,得到Wij 等于 Wji。

image.png

它单个神经元的净输入等于矩阵乘以输入,它的阈值就是最常见的一种。

 DHHN 或者 BP 网络中活函数,我们以函数 sgn 为例,直接作用于净输入直接用 sgn 作用于我们刚才算出的 net 值,波尔采取的是模拟退火算法,它按照概率输出10,它并不是直接就是在 DHNN 或BP中

如果使用 sgn 函数作为激活函数,那么它就严格的有 sgn 函数里净输出值来决定最终的结果

如果净输入值是小于等于0的,那就它就是0或者是-1;如果它是大于0的,它就是1,是固定的,。但是波尔不是的,它采用模拟退火算法,按照一定的概率得到这个结果

如何计算呢? 

Pj(1) 就是11的负T分之净输出的net分之一, P0 就等于1 P1按照这个算法来输出,它基本上就是如图所示的分布

注意 T 的取值将影响到图像形状,比T 等于1的时候,它就是红颜色图线;

T 小于等于1的时候,它就是上面绿颜色图线T 越小,图线越容易快速进入饱和区如果 T 大于1图线就变得平缓,进入饱和区的时间会比较长当净输入 net 等于0的时候,带入计 e 就等于1 Pj(1)就等于0.5, Pj(1) 等于 Pj(0) 等于0.5,输出10的概率是相等的,都是50%net 值变大,e 就变小,分母就变小,它输出1的概率就变大了

另外也和控制参数 T 相关,是因为 T 的取值不同,它接近01的速度会不同

 

二.模拟退火算法

模拟退火算法( Simulated Anneal)简称 SA 它和之前讲的函数意义都和热力学是有一定联系的,或者说和能量是相关的,所以退火是指物体温度逐渐降低,随着温度的降低,物体的能量状态也会变低,在结晶状态能量最低

模拟推广算法也就是模拟退火的过程,但是在搜索过程中加入了一些随机因素,比如如果达到一个最值,或者可能是局部最优也有可能是全局最优值,就是达到 B 点后,会一定的概率跳出来比如如图达到 B 点以后,他原本应该沿着某个概率继续往右移动,然后模拟退火算法就使这个搜索有可能跳出局部的值

 image.png

我们画一个比较典型的例子。比如,当我们按照一定的顺序一定的方向算到一个局部最小值之后,如果是严格的判断它是不是局部最小值,就会返回这个局部最小值作为一个最终的结果现在已经到了这个最小值之后,我又让有一定的概率跳出这个最小值,那它实际上是有一定的概率跳到这个全局优值上即所画图中的最低点)。这就是模拟退火算法的好处

根据 Metroplis 准则,它的概率是这样的

image.png

如果进行调整之后,算出来的能量全局的能量比原来的能量小,那100% 的去取这个值也就是,沿着这个方向走,整个网络会变的更稳定,能量更低,所以就100%的取这个值如果算出来能量大于原来的能量,就是说偏一下之后,状况比以前变得更糟了,那就证明原来的这个能量值有可能是全局最小的能量值,也有可能是局部最小的能量值,这个时候我会给他一个概率让他跳出这个值,就是让有机会去得到这个全局最优值

image.png

解释 FY2 1小于 FY 的时候,也就是说,下一个值比当前小,100%的接受,证明它还是在一个下降过程中,如果 FY2 1大于当前这个值,也就是说,下一个值比当前值大,以一定的概率接受,和控制参数 T 相关,T 会随着时间逐渐衰减模拟退火),每次接受一个更糟糕的值概率在不断降低,另外还有一定的概率会跳出会接受,就是说,正常来讲已经算一个最优了,但是有一定的概率不接受这个最优质,让继续去搜索但是 T 会慢慢的衰减这个值实际上是随着时间在不断降低的

三.BM 的能量函数

BM的能量函数采取了 DHNN 一样能量函数来描述网络状态,

image.png

即如图所示的公式,公式后面是个分量形式

image.png 

网络状态改变的量,就等于在 t+1 时刻状态减掉在 t 时刻的状态。

image.png

网络能量改变量等于 t+1 时刻能量减掉在 t 时刻的能。后面这个值,矩阵的对角线的值是0。

image.png

解读当这个净输出net ,它大于0并且有 Pj 大于0.5的时候,经元 j 有比较大的概率等于1;小于0 Pj 大于0.5,经元 j 也有大的概率等于0。也就是说,有大概率接受就说明有小概率跳出

Xj(t),它等于1的时候,有德尔塔 t 等于11,就等于零,所以德尔塔 E 就是零它等于0的时候,就有1减零,所以德尔塔 E 就小于零,下边也是一样的

 

四.BM 的特点

image.png

 Xj 等于1的时候,网络能量为 E1; Xj 等于0的时候,对应的网络能量为 E0 ,所以当 Xj 1变成0的时候,我们就会有德尔塔 E 等于 net ,等于输出1变成0的时候就等于 -net 也带入计算。

这两个式子就是波尔兹曼分布,所以整个的神经网络一类的我们就把它叫做波尔兹曼机。当波尔兹曼机处于某一状态的概率主要取决于此状态下的能量 E ,能量越低概率越大

也就是整个神经网络处在什么状态下和当前状态所对应的能量相关如果当前状态对应的能量比较高,那神经网络处在这个状态的可能性就非常低,反之,如果当前这个状态对应的能量很低那这个概率就会很大,就会经常发生另外,BM 处以某一状态的概率还取决于温度 T ,(温度 T 是沿着退火算法计算实际上 T 是一个控制参数,即取决于控制参数,控制参数 T 越大两种状态概率越接近,网络跳出的概率就越大比如算这个状态概率的时候,它要么是0要么是1,如果这两个的概率比较接近,就说明这个时候网络还不确定,跳出的概率就会比较大

 

五.自联想与异联想

image.png

它有两种方式,自联想与异联想,所谓联想像左边这个图就是我可见节点是输入又是输出,然后隐藏进来你看不到了,像这种我们就把它叫做自联想联想就是,还是有这个隐藏节点,你看不到,但是可见节点中的一部分,比如说我们从1 K 是输入,那么,另外一部分从1 M 就是输出,像这种称为异联想

 

六.BM学习算法

通过有导学习,波尔兹曼机可以对训练中各模式的概率分布进行模拟,从而实现联想记忆。学习的目的就是通过调整网络权值使训练集中的模式在网络状态中相同的概率在现。

1.第一阶段正向学习

网络输入一对儿输入-输出的模式,需要有输入和输出,是成对儿出现的,这时候我输入这么一对儿输入和输出,然后将网络的输入输出节点前置到期望的状态,也就是说,固定住输入输出的状态,然后去自由的调整隐藏层因为要调整不可见节点,然后完成输入输出之间的映射这个理论上是总能完成的

2.第二阶段反向学习

于异联想学习来讲,输入模式固定输入节点,而让输出和隐藏节点自由活动对于自联想学习来讲,让可见节点和隐藏节点都自由活动,以体现输入-输出对应规律的模拟情况当输入-输出对应的这个规律表现为网络达到热平衡的,相对节点状态同时为1的概率。期望对应规律与模拟对应规律之间的差别就表现为两个学习阶段所对应的平均概率的差值,基于这个值去调整权度重。

 

七.受限玻尔兹曼机 RBM

最常用的是受波尔兹曼简称 RBM 。它是一种简化版的特殊的波尔兹曼,就是阉割过的它是由 Paul Smolensky 提出的。和波尔兹曼比它隐藏节点中没有相互连接,可见节点间也没有互相的连接,因此,它的网络结构更简单,算的时候也更简单波尔兹曼主要是用于降维分类协同过滤特征学习主题建模等领域,根据任务的不同,可以选择监督学习或者是非监督学习的方式进行神经网络的模型训练

特点:

1. 它主要是两层结构,分为可见层和隐藏层

2. 同层内无链接,不同层全链接:同层内节点激活状态是独立的

3. 节点状态也是玻尔兹曼机状态,要么是零,要么是1

4. 计算起来比波尔兹曼简单,因为它的网络拓结构更简单了

5. 理论上,只要隐层节点足够多,它能拟合任何的离散分布

这个受波尔兹曼机也是我们后续会深度学习的一个叫信念网络的一个基础,它就是把很多受波尔兹曼机融合起来

相关文章
|
6月前
|
网络协议 Linux C++
Linux C/C++ 开发(学习笔记十二 ):TCP服务器(并发网络编程io多路复用epoll)
Linux C/C++ 开发(学习笔记十二 ):TCP服务器(并发网络编程io多路复用epoll)
112 0
|
6月前
|
网络协议 Linux C++
Linux C/C++ 开发(学习笔记十一 ):TCP服务器(并发网络网络编程 一请求一线程)
Linux C/C++ 开发(学习笔记十一 ):TCP服务器(并发网络网络编程 一请求一线程)
126 0
|
30天前
|
Ubuntu 网络安全 图形学
Ubuntu学习笔记(二):ubuntu20.04解决右上角网络图标激活失败或者消失,无法连接有线问题。
在Ubuntu 20.04系统中解决网络图标消失和无法连接有线网络问题的方法,其中第三种方法通过检查并确保Windows防火墙中相关服务开启后成功恢复了网络连接。
338 0
Ubuntu学习笔记(二):ubuntu20.04解决右上角网络图标激活失败或者消失,无法连接有线问题。
|
5月前
|
存储 算法 网络虚拟化
【计算机网络】学习笔记,第三篇:数据链路层
现在的光纤宽带接入 FTTx 都要使用 PPPoE 的方式进行接入。在 PPPoE 弹出的窗口中键入在网络运营商购买的用户名和密码,就可以进行宽带上网了 利用 ADSL 进行宽带上网时,从用户个人电脑到家中的 ADSL 调制解调器之间,也是使用 RJ-45 和 5 类线(即以太网使用的网线)进行连接的,并且也是使用 PPPoE 弹出的窗口进行拨号连接的
79 5
|
28天前
|
机器学习/深度学习 数据可视化 Linux
Seaborn可视化学习笔记(一):可视化神经网络权重分布情况
这篇文章是关于如何使用Seaborn库来可视化神经网络权重分布的教程,包括函数信息、测试代码和实际应用示例。
34 0
|
3月前
|
机器学习/深度学习 自然语言处理 并行计算
【深度学习+面经】Transformer 网络学习笔记
Transformer模型的核心概念、优缺点以及在多个领域的应用,并提供了针对Transformer架构的面试问题及答案。
147 2
|
6月前
|
监控 Java 数据库连接
【后台开发】TinyWebser学习笔记(1)网络编程基础知识
【后台开发】TinyWebser学习笔记(1)网络编程基础知识
54 3
|
6月前
|
网络协议 Docker 容器
Ubantu docker学习笔记(七)容器网络
Ubantu docker学习笔记(七)容器网络
|
6月前
|
网络协议 网络架构 数据格式
计算机网络学习笔记(一)
OSI七层网络模型旨在支持异构网络互联,从下到上分别为物理层(传输比特流)、数据链路层(帧传输,如交换机)、网络层(IP数据包路由,如路由器)、传输层(TCP/UDP,端到端通信)、会话层(管理会话)、表示层(数据格式转换)和应用层(用户接口,如FTP, SMTP)。每一层负责不同的通信功能,并通过协议如PPP, IP, TCP等协同工作。
36 0
|
6月前
|
缓存 网络协议 开发者
计算机网络学习笔记(三)
TCP的异常终止使用reset报文,用于强制关闭连接,不等待正常四次挥手。RST标志位设置时,发送方直接丢弃缓存,接收方无需确认。常见情况包括:尝试连接服务器未开放的端口、一方异常崩溃、收到不属于现有连接的报文、超时未收到确认报文或应用开发者优化效率。reset报文帮助释放资源,防止连接挂起。
57 0
下一篇
无影云桌面