【Hopfield 网络】 记忆和联想

2024-08-25 06:04
文章标签 网络 记忆 联想 hopfield

本文主要是介绍【Hopfield 网络】 记忆和联想,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Hopfield 网络: 记忆和联想

这篇内容是观看这个视频(神经网络是如何联想和记忆的)之后的emmm可以说是总结吧!

开篇

  • 如果我们突然听到了一首歌,我们为什么能快速的反应出这是哪首歌?这很不可思议,对吧!我们听到了一首歌,如果我们要把这首歌和我们记忆中存储的成千上万首歌一一比较才能知道这是哪首歌的话,那大脑早就超载爆炸了!所以我们不可能通过搜索的方式还原出一首歌是啥样。
  • 蛋白质是由肽链折叠而成的,蛋白质可以看作是这坨肽链的能量稳定状态。那么肽链是怎么变成能量低的状态而成为蛋白质的?肽链是不可能主动搜索然后找到无数个可能中最稳定的状态然后变成那样的。

定义能量,代替搜索

因此为了在听到旋律之后快速找到对应的曲子,或者说肽链成为能量稳定的蛋白质,其过程依赖的必然不是搜索!而是一个更加自然的规律

  • 这个规律对于肽链来说,就是根据自然物理法则的规律,不停的降低自己的能量!
  • 这个规律对于寻找曲子来说,则更为抽象一点,可以理解成对有噪声输入的还原!想象:(1) 现在听到的歌曲是一个小球,小球在一个广场(你的思维)上;(2) 它在广场上的位置初始的位置就是他自身的旋律(包含你听到的外界的噪声且不完整);(3) 小球不停的在重力(重力就是你的大脑的思考!)的左右下改变自己的位置(可以视作对旋律的去噪声,补全,想象);(4) 最后小球落入了一个能量的洼地,一个小口袋而停下,这个口袋就是你的记忆点,就是这个歌曲!

Hopfield网络

对于找曲子的过程,我们进一步抽象!假设你听到的曲子就是一堆由+1或者-1构成的序列,这些+1,-1共同构建成了一个网络上的节点的值!
在这里插入图片描述
就这之前的比喻来说吧!(1) 小球所在的广场就是这个网络中所有的边!具体而言就是连接每个节点的边权重,比如链接节点 i i i和节点 j j j之间的权重就是 w i j w_{ij} wij
(2) 小球的初始位置就是节点中这些+1,-1的组合!改变小球的位置就是改变这些+1,-1的取值 (3) 小球接下来就会在这个广场上受重力的影响而滚动,滚动是朝着重力势能低的方向滚动,这个时候我们定义小球的重力势能表达为 E = − ∑ i j w i j x i x j E =- \sum_{ij} w_{ij}x_ix_j E=ijwijxixj。其中 x i x_i xi表示节点i的取值,也就是+1或者-1 (先不关心能量为啥长这样) 。接下来小球回尽可能的改变自己的位置,也就是改变 x i x_i xi让能量 E E E变小!这就是小球的滚动!这个滚动可以被数学描述为 new  x i ← 1 × s i g n ( ∑ j w i j x j ) \text{ new } x_i\leftarrow 1\times sign(\sum_{j}w_{ij}x_j)  new xi1×sign(jwijxj)这个滚动其实是每次i节点都根据与自己相关的权重和相连的节点的取值,改变自己的值,这样能确保每次改变都能让总能量 E E E变得更小! (4) 小球不停的滚动,最后!数学上可以说明小球一定能到达一个局部的能量最小值点,也就是洼地,记忆点!

Hopfield网络的推理和训练

推理

上面描述的过程其实就是该网络的推理过程,简单来说就是根据 w i j w_{ij} wij在给定一组初始状态 x x x的条件下不停的优化自身状态直到最后收敛到洼地!这个过程可以用来被去噪,搜索匹配(寻找歌词)。事实上,如果这个网络通过 w i j w_{ij} wij确定了一些记忆点,最后收敛的结果一般是比较靠近初始状态的记忆点!

训练

所谓训练过程就是在广场上挖出洼地,也就是在脑子里弄出记忆点!这是如何做到的?答案是通过确定 w i j w_{ij} wij。实际上其实很简单,如果只有一个洼地,它对应的位置是 x i = ξ i x_i=\xi_i xi=ξi,那么只需要 w i j ← ξ i ξ j w_{ij}\leftarrow\xi_i\xi_j wijξiξj即可。因为此时,只要小球的位置满足了 x i = ξ i x_i=\xi_i xi=ξi E E E的取值必然最小!(显而易见此时 w i j ξ i ξ j = ξ i 2 ξ j 2 = 1 w_{ij}\xi_i\xi_j=\xi_i^2\xi_j^2=1 wijξiξj=ξi2ξj2=1,此时 E E E最小!)

那如果有多个洼地呢?很简单分别为每个洼地计算出一个 w i j w_{ij} wij最后叠加就行!

Hopfield的缺陷

这个广场中的洼地不能太多!如果小广场里挖了太多洼地,那么不同的洼地的最低点离太近就无法区分开了。这个时候放一个小球,很难保证他能进入一个其中一个我们给定的洼地。而且洼地太靠近问题越明显!一般而言,N个节点的网络,大概能放入0.14N个洼地

关于能量函数

E = − ∑ i j w i j x i x j E =- \sum_{ij} w_{ij}x_ix_j E=ijwijxixj
为啥能量函数长这样呢?当然可以说就是定义成这样的!想像成一团空气分子,其能量是内部两两作用的能量都合。当然,我更喜欢视频的另一个解释。如果每个节点上一个神经元的话,有一个说法:如果两个神经元fire together,那么他们wire together。 例如, x i , x j x_i,x_j xi,xj都同为+1或者-1,那么 w i j = 1 w_{ij}=1 wij=1就可以把他俩联系在一起!让E更低!

这篇关于【Hopfield 网络】 记忆和联想的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

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

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

SSID究竟是什么? WiFi网络名称及工作方式解析

《SSID究竟是什么?WiFi网络名称及工作方式解析》SID可以看作是无线网络的名称,类似于有线网络中的网络名称或者路由器的名称,在无线网络中,设备通过SSID来识别和连接到特定的无线网络... 当提到 Wi-Fi 网络时,就避不开「SSID」这个术语。简单来说,SSID 就是 Wi-Fi 网络的名称。比如

Java实现任务管理器性能网络监控数据的方法详解

《Java实现任务管理器性能网络监控数据的方法详解》在现代操作系统中,任务管理器是一个非常重要的工具,用于监控和管理计算机的运行状态,包括CPU使用率、内存占用等,对于开发者和系统管理员来说,了解这些... 目录引言一、背景知识二、准备工作1. Maven依赖2. Gradle依赖三、代码实现四、代码详解五

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

ASIO网络调试助手之一:简介

多年前,写过几篇《Boost.Asio C++网络编程》的学习文章,一直没机会实践。最近项目中用到了Asio,于是抽空写了个网络调试助手。 开发环境: Win10 Qt5.12.6 + Asio(standalone) + spdlog 支持协议: UDP + TCP Client + TCP Server 独立的Asio(http://www.think-async.com)只包含了头文件,不依

poj 3181 网络流,建图。

题意: 农夫约翰为他的牛准备了F种食物和D种饮料。 每头牛都有各自喜欢的食物和饮料,而每种食物和饮料都只能分配给一头牛。 问最多能有多少头牛可以同时得到喜欢的食物和饮料。 解析: 由于要同时得到喜欢的食物和饮料,所以网络流建图的时候要把牛拆点了。 如下建图: s -> 食物 -> 牛1 -> 牛2 -> 饮料 -> t 所以分配一下点: s  =  0, 牛1= 1~

hdu 4517 floyd+记忆化搜索

题意: 有n(100)个景点,m(1000)条路,时间限制为t(300),起点s,终点e。 访问每个景点需要时间cost_i,每个景点的访问价值为value_i。 点与点之间行走需要花费的时间为g[ i ] [ j ] 。注意点间可能有多条边。 走到一个点时可以选择访问或者不访问,并且当前点的访问价值应该严格大于前一个访问的点。 现在求,从起点出发,到达终点,在时间限制内,能得到的最大

poj 3068 有流量限制的最小费用网络流

题意: m条有向边连接了n个仓库,每条边都有一定费用。 将两种危险品从0运到n-1,除了起点和终点外,危险品不能放在一起,也不能走相同的路径。 求最小的费用是多少。 解析: 抽象出一个源点s一个汇点t,源点与0相连,费用为0,容量为2。 汇点与n - 1相连,费用为0,容量为2。 每条边之间也相连,费用为每条边的费用,容量为1。 建图完毕之后,求一条流量为2的最小费用流就行了

poj 2112 网络流+二分

题意: k台挤奶机,c头牛,每台挤奶机可以挤m头牛。 现在给出每只牛到挤奶机的距离矩阵,求最小化牛的最大路程。 解析: 最大值最小化,最小值最大化,用二分来做。 先求出两点之间的最短距离。 然后二分匹配牛到挤奶机的最大路程,匹配中的判断是在这个最大路程下,是否牛的数量达到c只。 如何求牛的数量呢,用网络流来做。 从源点到牛引一条容量为1的边,然后挤奶机到汇点引一条容量为m的边

配置InfiniBand (IB) 和 RDMA over Converged Ethernet (RoCE) 网络

配置InfiniBand (IB) 和 RDMA over Converged Ethernet (RoCE) 网络 服务器端配置 在服务器端,你需要确保安装了必要的驱动程序和软件包,并且正确配置了网络接口。 安装 OFED 首先,安装 Open Fabrics Enterprise Distribution (OFED),它包含了 InfiniBand 所需的驱动程序和库。 sudo