Hinton Neural Network课程笔记11b: 利用Hopfield Net进行信息存储

2023-12-15 23:32

本文主要是介绍Hinton Neural Network课程笔记11b: 利用Hopfield Net进行信息存储,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

课程简介

Geoffrey Hinton 2012年在coursera上开的网课:Neural Networks for Machine Learning。

课程笔记

关于Hopfield的简单定义与应用,请参考Hinton Neural Network课程笔记11a: Hopfield Net的定义与应用。关于Hopfield的详细介绍,可以参考《现代模式识别(第二版)》(里面包括对于Hopfield Net其他角度的理解与应用,讲解也更加系统。个人猜测Hinton课程中的Hopfield Net只是为了引入RBM)。

1. 简单的信息存储方法

11a的笔记中已经提到了Hopfield Net的一个重要应用就是进行信息存储,其可以在给定结构和权重的情况下,对破损信息进行恢复。而如何通过需要存储的信息得到权重,就是这里的信息存储方法。(因为每个节点设置是0/1,按照特定顺序排列的多个节点设置就是一个二进制数了,而计算机内的二进制数就可以用于存储信息了。)
最简单的进行信息存储的方法如下图:
store memory
即在节点设置为0/1的情况下,设存储之前的权重为 wij ,对于每个新来的节点设置 si for all i (即要存储的信息),设置新权重为 wij=wij+4(si1/2)(sj1/2) 。对于每个信息,只需要进行一次权重更新即可。初始的权重为0(所有点能量值相同)。

1.1. 简单方法的存储能力限制

对于含有N个节点的全连接Hopfield Net,其大概只能存储0.15N个信息(每个信息都是N bit,所以是 0.15N2 个bit)。对比于存储权重所需要的空间 N2log(2M+1) (假设节点设置为1/-1,所以使用上诉第一种权重更新方法,每次都加减1,从而权重范围为[-M,M]),可见此种方法并没有充分利用权重信息。
storage capacity
思考其原因,每次记忆新的节点设置的时候,都是通过改变权重,期待生成一个新的局部最小点。但是会存在两个相邻的局部最小点融合为一个位于两者之间的局部最小点的情况,这就对应于Hopfield Net的记忆半径。而为了使得Hopfield Net可以记忆两个相邻的信息,就引入了unlearning。所谓unlearning就是learning的反向,即不是加上 Δwij ,而是减去。之后Hinton提出,unlearning理论并没有分析,只是实践结果;进而提出了一个做梦就是大脑在做unlearning的模型作为佐证(做梦往往记不住,是因为大脑在记忆白天的信息之后,在新生成的能量分布中进行搜索寻找局部最小点(做梦),然后做unlearning(记不住))。后来也提出了unlearning的问题:何时停止;具体的就是把网络错误记忆的信息量作为cost函数,unlearning看做某种最小化cost函数的方法。详情如下:
unlearning

2. 伪似然法

物理学家在Hopfield Net这个领域做了很多贡献,他们提出了一个可以大大提高网络存储能量的记忆方法:伪似然法。此方法看上去和坐标梯度下降法(Coordinate graident descent)近似相同,因为和RBM关系不大,只做简易介绍如下(与上诉方法的主要区别就在于多次循环数据集,而不是每种设置只记忆一次;另注意每次对权重的更新都是整数,对称权重所以需要对两个方向的变化综合之后再更新):
伪似然法

这篇关于Hinton Neural Network课程笔记11b: 利用Hopfield Net进行信息存储的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Python如何实现PDF隐私信息检测

《Python如何实现PDF隐私信息检测》随着越来越多的个人信息以电子形式存储和传输,确保这些信息的安全至关重要,本文将介绍如何使用Python检测PDF文件中的隐私信息,需要的可以参考下... 目录项目背景技术栈代码解析功能说明运行结php果在当今,数据隐私保护变得尤为重要。随着越来越多的个人信息以电子形

使用 sql-research-assistant进行 SQL 数据库研究的实战指南(代码实现演示)

《使用sql-research-assistant进行SQL数据库研究的实战指南(代码实现演示)》本文介绍了sql-research-assistant工具,该工具基于LangChain框架,集... 目录技术背景介绍核心原理解析代码实现演示安装和配置项目集成LangSmith 配置(可选)启动服务应用场景

如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解

《如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解》:本文主要介绍如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别的相关资料,描述了如何使用海康威视设备网络SD... 目录前言开发流程问题和解决方案dll库加载不到的问题老旧版本sdk不兼容的问题关键实现流程总结前言作为

SpringBoot中使用 ThreadLocal 进行多线程上下文管理及注意事项小结

《SpringBoot中使用ThreadLocal进行多线程上下文管理及注意事项小结》本文详细介绍了ThreadLocal的原理、使用场景和示例代码,并在SpringBoot中使用ThreadLo... 目录前言技术积累1.什么是 ThreadLocal2. ThreadLocal 的原理2.1 线程隔离2

Python利用PIL进行图片压缩

《Python利用PIL进行图片压缩》有时在发送一些文件如PPT、Word时,由于文件中的图片太大,导致文件也太大,无法发送,所以本文为大家介绍了Python中图片压缩的方法,需要的可以参考下... 有时在发送一些文件如PPT、Word时,由于文件中的图片太大,导致文件也太大,无法发送,所有可以对文件中的图

如何使用Spring boot的@Transactional进行事务管理

《如何使用Springboot的@Transactional进行事务管理》这篇文章介绍了SpringBoot中使用@Transactional注解进行声明式事务管理的详细信息,包括基本用法、核心配置... 目录一、前置条件二、基本用法1. 在方法上添加注解2. 在类上添加注解三、核心配置参数1. 传播行为(

Java实战之自助进行多张图片合成拼接

《Java实战之自助进行多张图片合成拼接》在当今数字化时代,图像处理技术在各个领域都发挥着至关重要的作用,本文为大家详细介绍了如何使用Java实现多张图片合成拼接,需要的可以了解下... 目录前言一、图片合成需求描述二、图片合成设计与实现1、编程语言2、基础数据准备3、图片合成流程4、图片合成实现三、总结前

Redis存储的列表分页和检索的实现方法

《Redis存储的列表分页和检索的实现方法》在Redis中,列表(List)是一种有序的数据结构,通常用于存储一系列元素,由于列表是有序的,可以通过索引来访问元素,因此可以很方便地实现分页和检索功能,... 目录一、Redis 列表的基本操作二、分页实现三、检索实现3.1 方法 1:客户端过滤3.2 方法

在Mysql环境下对数据进行增删改查的操作方法

《在Mysql环境下对数据进行增删改查的操作方法》本文介绍了在MySQL环境下对数据进行增删改查的基本操作,包括插入数据、修改数据、删除数据、数据查询(基本查询、连接查询、聚合函数查询、子查询)等,并... 目录一、插入数据:二、修改数据:三、删除数据:1、delete from 表名;2、truncate

微服务架构之使用RabbitMQ进行异步处理方式

《微服务架构之使用RabbitMQ进行异步处理方式》本文介绍了RabbitMQ的基本概念、异步调用处理逻辑、RabbitMQ的基本使用方法以及在SpringBoot项目中使用RabbitMQ解决高并发... 目录一.什么是RabbitMQ?二.异步调用处理逻辑:三.RabbitMQ的基本使用1.安装2.架构