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实现对excel文件进行加密

《利用python实现对excel文件进行加密》由于文件内容的私密性,需要对Excel文件进行加密,保护文件以免给第三方看到,本文将以Python语言为例,和大家讲讲如何对Excel文件进行加密,感兴... 目录前言方法一:使用pywin32库(仅限Windows)方法二:使用msoffcrypto-too

Pandas使用AdaBoost进行分类的实现

《Pandas使用AdaBoost进行分类的实现》Pandas和AdaBoost分类算法,可以高效地进行数据预处理和分类任务,本文主要介绍了Pandas使用AdaBoost进行分类的实现,具有一定的参... 目录什么是 AdaBoost?使用 AdaBoost 的步骤安装必要的库步骤一:数据准备步骤二:模型

使用Pandas进行均值填充的实现

《使用Pandas进行均值填充的实现》缺失数据(NaN值)是一个常见的问题,我们可以通过多种方法来处理缺失数据,其中一种常用的方法是均值填充,本文主要介绍了使用Pandas进行均值填充的实现,感兴趣的... 目录什么是均值填充?为什么选择均值填充?均值填充的步骤实际代码示例总结在数据分析和处理过程中,缺失数

Go语言开发实现查询IP信息的MCP服务器

《Go语言开发实现查询IP信息的MCP服务器》随着MCP的快速普及和广泛应用,MCP服务器也层出不穷,本文将详细介绍如何在Go语言中使用go-mcp库来开发一个查询IP信息的MCP... 目录前言mcp-ip-geo 服务器目录结构说明查询 IP 信息功能实现工具实现工具管理查询单个 IP 信息工具的实现服

关于MongoDB图片URL存储异常问题以及解决

《关于MongoDB图片URL存储异常问题以及解决》:本文主要介绍关于MongoDB图片URL存储异常问题以及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录MongoDB图片URL存储异常问题项目场景问题描述原因分析解决方案预防措施js总结MongoDB图

使用Python从PPT文档中提取图片和图片信息(如坐标、宽度和高度等)

《使用Python从PPT文档中提取图片和图片信息(如坐标、宽度和高度等)》PPT是一种高效的信息展示工具,广泛应用于教育、商务和设计等多个领域,PPT文档中常常包含丰富的图片内容,这些图片不仅提升了... 目录一、引言二、环境与工具三、python 提取PPT背景图片3.1 提取幻灯片背景图片3.2 提取

Linux下如何使用C++获取硬件信息

《Linux下如何使用C++获取硬件信息》这篇文章主要为大家详细介绍了如何使用C++实现获取CPU,主板,磁盘,BIOS信息等硬件信息,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录方法获取CPU信息:读取"/proc/cpuinfo"文件获取磁盘信息:读取"/proc/diskstats"文

QT进行CSV文件初始化与读写操作

《QT进行CSV文件初始化与读写操作》这篇文章主要为大家详细介绍了在QT环境中如何进行CSV文件的初始化、写入和读取操作,本文为大家整理了相关的操作的多种方法,希望对大家有所帮助... 目录前言一、CSV文件初始化二、CSV写入三、CSV读取四、QT 逐行读取csv文件五、Qt如何将数据保存成CSV文件前言

通过Spring层面进行事务回滚的实现

《通过Spring层面进行事务回滚的实现》本文主要介绍了通过Spring层面进行事务回滚的实现,包括声明式事务和编程式事务,具有一定的参考价值,感兴趣的可以了解一下... 目录声明式事务回滚:1. 基础注解配置2. 指定回滚异常类型3. ​不回滚特殊场景编程式事务回滚:1. ​使用 TransactionT

Java中使用Hutool进行AES加密解密的方法举例

《Java中使用Hutool进行AES加密解密的方法举例》AES是一种对称加密,所谓对称加密就是加密与解密使用的秘钥是一个,下面:本文主要介绍Java中使用Hutool进行AES加密解密的相关资料... 目录前言一、Hutool简介与引入1.1 Hutool简介1.2 引入Hutool二、AES加密解密基础