【深度学习】Hopfield网络:模拟联想记忆

embedded/2025/3/3 23:05:22/

Hopfield网络是一种经典的循环神经网络,由物理学家John Hopfield在1982年提出。它的核心功能是模拟联想记忆,类似于人类大脑通过部分信息回忆完整记忆的能力。以下是通俗易懂的解释:


1. 核心思想

想象你看到一张模糊的老照片,虽然细节不清,但大脑能自动“补全”图像细节。Hopfield网络就是模仿这种能力:

  • 输入:一个有噪声或不完整的模式(如残缺的图片)。
  • 输出:网络通过动态调整,输出最接近的完整存储模式。

2. 网络结构

  • 神经元:每个神经元是二值的(通常取+1或-1,或0和1)。
  • 连接方式:所有神经元全连接,且权重对称(神经元A到B的权重 = B到A的权重)。
  • 无自反馈:单个神经元不会连接自己(权重矩阵对角线为0)。

3. 工作原理

(1) 存储记忆
  • 存储模式:将需要记忆的模式(如图片像素的二值化向量)存入网络。
  • 权重计算:通过Hebbian学习规则调整权重(模式的外积叠加),公式:
    W i j = ∑ 所有模式 x i x j ( i ≠ j ) W_{ij} = \sum_{\text{所有模式}} x_i x_j \quad (i \neq j) Wij=所有模式xixj(i=j)
    其中(x_i)是模式中第i个神经元的值。
(2) 回忆记忆
  1. 输入扰动模式:将带有噪声的模式输入网络。
  2. 动态更新:随机选择一个神经元,根据相邻神经元的状态更新自身:
    x i = sign ( ∑ j W i j x j ) x_i = \text{sign}\left( \sum_{j} W_{ij} x_j \right) xi=sign(jWijxj)
  3. 收敛:重复更新直到网络状态稳定(能量最低),此时输出即为最接近的存储模式。

4. 能量函数

Hopfield网络有一个能量函数,类似物理系统的势能:
E = − 1 2 ∑ i , j W i j x i x j E = -\frac{1}{2} \sum_{i,j} W_{ij} x_i x_j E=21i,jWijxixj

  • 能量越低,网络状态越稳定。
  • 更新过程总是降低能量,最终收敛到局部最小值(即存储的模式)。

5. 优点与局限

优点
  • 简单高效,适合模式补全和噪声过滤。
  • 理论优美,启发了后续模型(如玻尔兹曼机)。
局限
  • 存储容量有限:最多约存储0.14N个模式(N为神经元数量)。
  • 伪吸引子问题:可能收敛到非预期的混合模式。
  • 仅处理二值数据:难以处理连续值输入。

6. 应用场景

  • 图像恢复:从损坏的像素中恢复原图。
  • 优化问题:如旅行商问题(TSP)的近似求解。
  • 联想记忆存储:快速检索与输入最匹配的记忆。

7. 现代发展

近年来Hopfield网络被重新探索,例如:

  • 连续Hopfield网络:支持连续值神经元,用于生成模型(如联想生成图像)。
  • 现代Hopfield网络(2020):通过改进能量函数,存储容量指数级提升(可存储数百万模式)。

类比总结

Hopfield网络像一个智能黑板

  1. 存储阶段:在黑板上写下几个关键图案。
  2. 回忆阶段:即使有人涂抹了部分图案,黑板能自动“擦除”涂鸦,还原最初的关键图案。

http://www.ppmy.cn/embedded/169735.html

相关文章

【Java项目】基于SpringBoot和Vue的“智慧食堂”系统

【Java项目】基于SpringBoot和Vue的“智慧食堂”系统 技术简介:采用SpringBoot框架、Vue前端框架、Java语言、MySQL数据库等技术实现。系统使用B/S架构,前端通过Vue实现用户界面,后端使用SpringBoot框架和MySQL数据库进行数据处理和存储&…

CSS默认样式

<!DOCTYPE html> <html lang"zh-cn"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>默认样式</title><style>#d1{font-s…

Composer如何通过GitHub Personal Access Token安装私有包:完整教程

使用Composer安全管理您的PHP私有依赖包 一、前言 在PHP开发中&#xff0c;我们经常需要将内部工具包托管为私有仓库。传统的账号密码验证方式存在安全隐患&#xff0c;而GitHub Personal Access Token&#xff08;PAT&#xff09;提供了一种更安全的鉴权方案。本文将通过4个…

React组件化深度解析(二):从受控组件到生命周期现代化

目录 一、组件设计哲学&#xff1a;控制与自由的博弈 1. 受控组件 vs 非受控组件&#xff1a;灵魂三问 核心差异对比表 选型决策树 二、复合组件模式&#xff1a;隐式状态共享的艺术 1. Compound Components设计模式 实现原理四部曲 2. 手写可配置的Accordion组件 三、…

结构型模式---外观模式

概念 外观模式是一种结构型设计模式&#xff0c;它的核心思想是为复杂的子系统提供一个统一的接口&#xff0c;简化客户端与子系统的交互。外观模式通过引入一个高层接口&#xff0c;隐藏子系统的复杂性&#xff0c;使客户端更容易使用。 适用场景 用于客户端无需具体操作子…

ubuntu下r8125网卡重启丢失修复案例一则

刚装的一台服务器&#xff0c;ubuntu24.04&#xff0c;主板网卡是r8125&#xff0c;安装服务后会莫名其妙丢失驱动 按照官网的方法下载最新8125驱动包&#xff1a; Realtek 然后卸载驱动 rmmod r8125 然后在驱动包里安装&#xff08;幸好我之前装了build-essential&#x…

Matlab 大量接单

分享一个matlab接私活、兼职的平台 1、技术方向满足任一即可 2、技术要求 3、最后 技术方向满足即可 MATLAB&#xff1a;熟练掌握MATLAB编程语言&#xff0c;能够使用MATLAB进行数据处理、机器学习和深度学习等相关工作。 机器学习、深度学习、强化学习、仿真、复现、算法、…

深入理解并解析C++ stl::vector

欢迎来到干货小仓库!!! "每个warning都是编译器在说: 我觉得你还能强一点" 1.vector的成员变量定义 三个成员都定义成指针类型&#xff0c;因为指针 - 指针等于之间的个数。 2.vector的使用 2.1构造函数 构造函数声明接口说明vector()无参构造 vector&#xff08…