源内容(英文)
Hopfield神经网络由John J. Hopfield博士发明,由一层 ‘n‘ 个全连接的循环神经元组成。它通常用于执行自联想和优化任务。它是通过收敛的交互过程计算出来的,并且产生的响应与我们的普通神经网络不同。
离散Hopfield网络
这是一个全互联的神经网络,其中每个单元都连接到其他所有单元。它以离散的方式运作,即它给出有限的、截然不同的输出,通常有两种类型:
- 二进制(0/1)
- 双极性(-1/1)
与此网络相关的权重本质上是对称的,并具有以下属性。
- w{ij} = w{ji} \\ 2. w_{ii} = 0
Hopfield网络的结构与架构
- 每个神经元都有一个反相输出和一个同相输出。
- 由于是全连接的,每个神经元的输出都是所有其他神经元的输入,但自身除外。
下图展示了具有以下元素的离散Hopfield神经网络架构的示例表示。
!roadmapp1离散Hopfield网络架构
****[ x1 , x2 , ... , xn ] ->**** 输入到给定的 n 个神经元。
****[ y1 , y2 , ... , yn ] ->**** 从给定的 n 个神经元获得的输出
****W********ij ->**** 与第 i 个和第 j 个神经元之间的连接相关的权重。
训练算法
为了存储一组输入模式 S(p) [p = 1 到 P],其中 S(p) = S1(p) … Si(p) … Sn(p),权重矩阵由以下公式给出:
- 对于二进制模式
w{ij} = \sum{p = 1}^{P} [2s{i}(p) – 1][2s{j}(p) – 1]\ (w_{ij}\ for\ all\ i
eq j)
- 对于双极性模式
w{ij} = \sum{p = 1}^{P} [s{i}(p)s{j}(p)]\ (where\ w_{ij} = 0\ for\ all\ i= j)
(即这里的权重没有自连接)
Hopfield网络训练中涉及的步骤映射如下:
- 初始化权重 (wij) 以存储模式 (使用训练算法)。
- 对于每个输入向量 yi,执行 步骤 3-7。
- 使网络的初始激活器等于外部输入向量 x。
yi = xi : (for\ i = 1\ to\ n)
- 对于每个向量 yi,执行 步骤 5-7。
- 使用下面给出的方程计算网络的总输入 yin。
y{in{i}} = xi + \sum{j} [yjw{ji}]
- 对总输入应用激活以根据下面给出的方程计算输出:
yi = \begin{cases} & 1 \text{ if } y{in}>\thetai \\ & yi \text{ if } y{in}=\thetai \\ & 0 \text{ if } y{in}<\thetai \end{cases}
(其中 θi (阈值),通常取为 0)
- 现在将获得的输出 yi 反馈给所有其他单元。因此,激活向量被更新。
- 测试网络是否收敛。
考虑以下问题。我们需要创建一个离散Hopfield网络,其输入向量的双极性表示为 [1 1 1 -1] 或 [1 1 1 0](在二进制表示的情况下)存储在网络中。用存储向量的第一个和第二个分量中缺失的条目(即 [0 0 1 0])测试Hopfield网络。
给定输入向量,x = [1 1 1 -1](双极性),我们初始化权重矩阵 (wij) 如下:
w_{ij} = \sum [s^T(p)t(p)] \\ = \begin{bmatrix} 1 \\ 1 \\ 1 \\ -1 \end{bmatrix} \begin{bmatrix} 1 & 1 & 1 & -1 \end{bmatrix} \\ = \begin{bmatrix} 1 & 1 & 1 & -1 \\ 1 & 1 & 1 & -1 \\ 1 & 1 & 1 & -1 \\ -1 & -1 & -1 & 1 \\\\end{bmatrix}
且没有自连接的权重矩阵为:
w_{ij} = \begin{bmatrix} 0 & 1 & 1 & -1 \\ 1 & 0 & 1 & -1 \\ 1 & 1 & 0 & -1 \\ -1 & -1 & -1 & 0 \\\\end{bmatrix}
根据问题,输入向量 x 缺失条目,x = [0 0 1 0]([x1 x2 x3 x4])(二进制)。使 yi = x = [0 0 1 0] ([y1 y2 y3 y4]). 选择单元 yi (顺序不重要) 用于更新其激活。取权重矩阵的第 i 列进行计算。
(我们将为 yi 的所有值执行以下步骤,并检查是否收敛)
y{in{1}} = x1 + \sum{j = 1}^4 [yj w{j1}] \\ = 0\ + \begin{bmatrix} 0 & 0 & 1 & 0 \end{bmatrix} \begin{bmatrix} 0 \\ 1 \\ 1 \\ -1 \end{bmatrix} \\ = 0\ + 1 \\ = 1 \\ Applying\ activation,\ y{in1} > 0 \implies y_1 = 1 \\ giving\ feedback\ to\ other\ units,\ we\ get \\ y = \begin{bmatrix} 1 & 0 & 1 & 0 \end{bmatrix} \\ which\ is\ not\ equal\ to\ input\ vector\ \ \ x = \begin{bmatrix} 1 & 1 & 1 & 0 \end{bmatrix} \\ Hence,\ no\ covergence. ‘
现在对于下一个单元,我们将通过反馈获取更新值。(****即 y = [1 0 1 0]****)
y{in{3}} = x3 + \sum{j = 1}^4 [yj w{j3}] \\ = 1\ + \begin{bmatrix} 1 & 0 & 1 & 0 \end{bmatrix} \begin{bmatrix} 1 \\ 1 \\ 0 \\ -1 \end{bmatrix} \\ =