神经网络算法详解:反馈神经网络(Hopfield网络、双向联想记忆网络BAM、玻尔兹曼机BM、RBM)

本文主要是介绍神经网络算法详解:反馈神经网络(Hopfield网络、双向联想记忆网络BAM、玻尔兹曼机BM、RBM),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文介绍了反馈神经网络,包括Hopfield网络,离散Hopfield网络(DHNN),连续Hopfield网络(CHNN),双向联想记忆网络(BAM),玻尔兹曼机(BM),受限玻尔兹曼机(RBM)。其中对于BAM、BM、RBM只是对其进行了简单的介绍,并没有详细地推导算法。本文的目的旨在了解这些算法,先知道这些网络的改进和应用场景,当有业务需求的时候,再详细研究。


系列文章:

  1. 【神经网络算法详解 01】-- 人工神经网络基础
  2. 【神经网络算法详解 02】 – 感知神经网络与反向传播算法(BP)
  3. 【神经网络算法详解 03】 – 竞争神经网络【SONN、SOFM、LVQ、CPN、ART】
  4. 【神经网络算法详解 04】 – 反馈神经网络 【Hopfield、DHNN、CHNN、BAM、BM、RBM】
  5. 【神经网络算法详解 05】-- 其它类型的神经网络简介【RBF NN、DNN、CNN、LSTM、RNN、AE、DBN、GAN】

文章目录

  • 系列文章:
  • 1. 反馈神经网络
    • 1.1 知识回顾:前馈神经网络
    • 1.2 反馈与前馈神经网络的区别
  • 2. Hopfield 网
  • 3. 离散Hopfield网络(DHNN)
    • 3.1 DHNN的特点
    • 3.2 DHNN网络状态
    • 3.3 能量函数
    • 3.4 DHNN的工作方式
    • 3.5 DHNN例子
    • 3.6 DHNN网络容量
    • 3.7 DHNN 设计权重和阈值
      • 3.7.1 联立方程组法
      • 3.7.2 外积法
    • 3.8 DHNN简单应用案例:OCR字符识别
  • 4. 连续Hopfield网络
    • 4.1 CHNN网络结构
    • 4.2 CHNN网络拓扑
    • 4.3 CHNN几个特点
    • 4.4 CHNN应用的几个步骤
    • 4.5 TSP 问题
  • 5. 双向联想记忆神经网络(BAM)
    • 5.1 网络运行过程
    • 5.2 能量函数与权值设计
    • 5.3 网络特点
  • 6. 玻尔兹曼机(BM)
    • 6.1 模拟退火算法
    • 6.2 BM的能量函数
    • 6.3 BM的特点
    • 6.4 自联想与异联想
    • 6.5 受限玻尔兹曼机


1. 反馈神经网络

1.1 知识回顾:前馈神经网络

前馈神经网络(FeedForwardNN):是一种最简单的神经网络,采用单向多层结构各神经元分层排列,每个神经元只与前一层的神经元相连。接收前一层的输出并输出给下一层各层间没有反馈。

前馈网络包括三类节点·

  • 输入节点(lnputNodes):外界信息输入,不进行任何计篇,仅向下一层节点传递信息
  • 的藏节点(HiddenNodes):接收上一层节点的输入,进行计算,并将信息传到下一层节点
  • 输出节点(OutputNodes):接收上一层节点的输入,进行计算,并将结果输出
    在这里插入图片描述
    输入层和输出层须有,隐藏层可以没有,即为单层感知器藏层也可以不止一层,有藏层的前馈网络即多层感知器。

1.2 反馈与前馈神经网络的区别

反馈神经网络(FeedBackNN):又称递归网络、回归网络,是一种将输出经过一步时移再接入到输入层的神经网络系统。这类网络中,神经元可以互连,有些神经元的输出会被反馈至同层甚至前层的神经元。常见的有Hopfield神经网络、Elman神经网络、Boltzmann机等。

前馈神经网络和反馈神经网络的主要区别:

  • 前馈神经网络各层神经元之间无连接,神经元只接受上层传来的数据,处理后传入下一层,数据正向流动;反馈神经网络层间神经元有连接,数据可以在同层间流动或反馈至前层。
  • 前馈神经网络不考虑输出与输入在时间上的滞后效应只表达输出与输入的映射关系;反馈神经网络考虑输出与输入之间在时间上的延迟,需要动态方程来描述系统的模型。
  • 前馈神经网络的学习主要采用误差修止法(如BP算法),计算过程一般比较慢,收敛速度也比较慢;反馈神经网络主要采用Hebb学习规则,一般情况下计算的收敛速度很快。
  • 相比前馈神经网络,反馈神经网络更适合应用在联想记忆和优化计算等领域。

在这里插入图片描述


2. Hopfield 网

在这里插入图片描述

John J. Hopfield

HopfieId网】是一种单层对称全反馈网络,1982年由加州理工学院的物理学家上J. J.HopfieId 提出,因此被称作HopfieId网。他在该反馈网络中引入了“能量函数”,即认为该网络为一种基于能量的的模型(Energy Based Model,EBM)。能量函数的提出意义重大,它保证了向局部极小的收敛,使神经网络运行稳定性的判断有了明确的可靠的依据。Hopfield网提供了模拟人类记忆的模型。1985年的时候还和D.W.Tank一块模拟电子线路实现了Hopfield网络,并用此解决了旅行商TSP问题。

  • 根据激活函数不同,分为两种:离散HopfieId网(Discrete Hopfield Neural Network,DHNN)连续 Hopfield网(Continuous Hopfield Neural Network,CHNN)
  • DHNN主要用于联想记忆,输入部分信息即可联想到完整的输出,即具有容错性;
  • CHNN主要用于优化计算,如旅行商TSP、调度等。

3. 离散Hopfield网络(DHNN)

3.1 DHNN的特点

  • 单层、全连接、反馈:任一神经元输出 x i x i x i xixi x_i xixixiwii=0

在这里插入图片描述

6.1 模拟退火算法

模拟退火算法(SimulatedAnneal)】:所谓退火是指物体温度逐渐降低的现象,随着温度降低,物体的能量状态会低,在结晶状态时能量最低。模拟退火算法也是模拟退火的过程,但是它在搜索过程中加入了随机因素:即在达到最优值(可能是局部最优值)后会以一定的概率跳出来。如右图,当搜索到局部最优值B后,会按照某个概率继续向右移动,使得搜索有可能跳出局部最优值,而去获得下一个最优值(可能是局部最优也可能是全局最优)。

在这里插入图片描述
在这里插入图片描述

6.2 BM的能量函数

在这里插入图片描述
在这里插入图片描述

6.3 BM的特点

在这里插入图片描述

6.4 自联想与异联想

自联想的输出节点和输出节点相同,即可见节点既是输入节点又是输出节点;异联想的输出节点
和输入节点不同,即部分可见节点为输入节点,其余可见节点为输出节点。
在这里插入图片描述
通过有导师学习,BM可以对训练集中各模式的概率分布进行模拟,从而实现联想记忆。学习的
目的是通过调整网络权值使训练集中的模式在网络状态中以相同的概率再现。

  • 到第一阶段:正向学习
    向网络输入一对输入一输出模式,将网络的输入一输出节点限制到期望的状态,即固定住输入输出的状态,而去自由调整隐藏层,以完成输入输出之间的映射。

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

6.5 受限玻尔兹曼机

聪明绝顶警告!
在这里插入图片描述

Paul Smolesky

受限玻尔兹曼机(Restricted Boltzmann Machine,RBM),是一种简化的特殊的玻尔兹曼机,1986年由Paul Smolensky提出。和BM比,其隐藏层中的节点之间没有互相连接,其可见节点间也没有连接,因此其计算相对更简单。RBM可以应用于降维、分类、协同过滤、特征学习和主题建模等领域,根据任务的不同,可以选择监督学习或者非监督学习等方式进行神经网络模型训练。

在这里插入图片描述

  • 到两层结构:可见层和隐藏层
  • 同层内无连接,不同层全连接:同层内节点激活状态独立
  • 节点状态二值状态:0 和 1
  • 计算相对BM简单
  • 只要隐层节点足够多,能拟合任何离散分布

这篇关于神经网络算法详解:反馈神经网络(Hopfield网络、双向联想记忆网络BAM、玻尔兹曼机BM、RBM)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/727979

相关文章

Java内存分配与JVM参数详解(推荐)

《Java内存分配与JVM参数详解(推荐)》本文详解JVM内存结构与参数调整,涵盖堆分代、元空间、GC选择及优化策略,帮助开发者提升性能、避免内存泄漏,本文给大家介绍Java内存分配与JVM参数详解,... 目录引言JVM内存结构JVM参数概述堆内存分配年轻代与老年代调整堆内存大小调整年轻代与老年代比例元空

Java中的雪花算法Snowflake解析与实践技巧

《Java中的雪花算法Snowflake解析与实践技巧》本文解析了雪花算法的原理、Java实现及生产实践,涵盖ID结构、位运算技巧、时钟回拨处理、WorkerId分配等关键点,并探讨了百度UidGen... 目录一、雪花算法核心原理1.1 算法起源1.2 ID结构详解1.3 核心特性二、Java实现解析2.

Python中注释使用方法举例详解

《Python中注释使用方法举例详解》在Python编程语言中注释是必不可少的一部分,它有助于提高代码的可读性和维护性,:本文主要介绍Python中注释使用方法的相关资料,需要的朋友可以参考下... 目录一、前言二、什么是注释?示例:三、单行注释语法:以 China编程# 开头,后面的内容为注释内容示例:示例:四

mysql表操作与查询功能详解

《mysql表操作与查询功能详解》本文系统讲解MySQL表操作与查询,涵盖创建、修改、复制表语法,基本查询结构及WHERE、GROUPBY等子句,本文结合实例代码给大家介绍的非常详细,感兴趣的朋友跟随... 目录01.表的操作1.1表操作概览1.2创建表1.3修改表1.4复制表02.基本查询操作2.1 SE

MySQL中的锁机制详解之全局锁,表级锁,行级锁

《MySQL中的锁机制详解之全局锁,表级锁,行级锁》MySQL锁机制通过全局、表级、行级锁控制并发,保障数据一致性与隔离性,全局锁适用于全库备份,表级锁适合读多写少场景,行级锁(InnoDB)实现高并... 目录一、锁机制基础:从并发问题到锁分类1.1 并发访问的三大问题1.2 锁的核心作用1.3 锁粒度分

MySQL数据库中ENUM的用法是什么详解

《MySQL数据库中ENUM的用法是什么详解》ENUM是一个字符串对象,用于指定一组预定义的值,并可在创建表时使用,下面:本文主要介绍MySQL数据库中ENUM的用法是什么的相关资料,文中通过代码... 目录mysql 中 ENUM 的用法一、ENUM 的定义与语法二、ENUM 的特点三、ENUM 的用法1

MySQL count()聚合函数详解

《MySQLcount()聚合函数详解》MySQL中的COUNT()函数,它是SQL中最常用的聚合函数之一,用于计算表中符合特定条件的行数,本文给大家介绍MySQLcount()聚合函数,感兴趣的朋... 目录核心功能语法形式重要特性与行为如何选择使用哪种形式?总结深入剖析一下 mysql 中的 COUNT

一文详解Git中分支本地和远程删除的方法

《一文详解Git中分支本地和远程删除的方法》在使用Git进行版本控制的过程中,我们会创建多个分支来进行不同功能的开发,这就容易涉及到如何正确地删除本地分支和远程分支,下面我们就来看看相关的实现方法吧... 目录技术背景实现步骤删除本地分支删除远程www.chinasem.cn分支同步删除信息到其他机器示例步骤

Go语言数据库编程GORM 的基本使用详解

《Go语言数据库编程GORM的基本使用详解》GORM是Go语言流行的ORM框架,封装database/sql,支持自动迁移、关联、事务等,提供CRUD、条件查询、钩子函数、日志等功能,简化数据库操作... 目录一、安装与初始化1. 安装 GORM 及数据库驱动2. 建立数据库连接二、定义模型结构体三、自动迁

mysql中的服务器架构详解

《mysql中的服务器架构详解》:本文主要介绍mysql中的服务器架构,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、mysql服务器架构解释3、总结1、背景简单理解一下mysqphpl的服务器架构。2、mysjsql服务器架构解释mysql的架