第344行: |
第344行: |
| 随着模型的演化,相同观点的人们开始形成团簇,如图所示: | | 随着模型的演化,相同观点的人们开始形成团簇,如图所示: |
| | | |
− | [[File:Untitled-2.png||Voter Clusters]] | + | [[File:Untitled-2.png|center|Voter Clusters]] |
| | | |
| 如果模型继续演化,则6种观点中的5个将会消失,只剩下一种观点,但具体是哪一个我们无法预测。但我们可以确定系统必然收敛到一种确定的政治观点,这是因为该模型等价于一个带吸收壁的[[随机游走]],系统将最终收敛。 | | 如果模型继续演化,则6种观点中的5个将会消失,只剩下一种观点,但具体是哪一个我们无法预测。但我们可以确定系统必然收敛到一种确定的政治观点,这是因为该模型等价于一个带吸收壁的[[随机游走]],系统将最终收敛。 |
第361行: |
第361行: |
| | | |
| Ising模型的一个显著的性质就是,随着系统的演化,它的能量会自发地降低。我们前面已经提到这种让整体降低能量的方法实际上与拷贝邻居状态的微观原则一致。于是,我们可以设计一种微观的演化机制,而使得宏观的某种待优化的函数(例如能量)能够自然地被优化。这就是[[Hopfield网络]]模型的起源。 | | Ising模型的一个显著的性质就是,随着系统的演化,它的能量会自发地降低。我们前面已经提到这种让整体降低能量的方法实际上与拷贝邻居状态的微观原则一致。于是,我们可以设计一种微观的演化机制,而使得宏观的某种待优化的函数(例如能量)能够自然地被优化。这就是[[Hopfield网络]]模型的起源。 |
| + | |
| | | |
| [[Hopfield网络]]是一个著名的[[神经网络]]模型,通过对网络进行训练,可以让它记住相应的模式,并在适当的条件下联想回忆提取出相关的模式。也就是说,Hopfield模型通过训练(改变相互连接的权重),可以将要记忆的模式映射为能量最小的状态,之后通过Ising模型的邻域相互作用规则自发演化到这种最小能量状态。Hopfield的构造如下,一个加权的网络,如下图,每个节点都是一个神经元,加权的连边表示神经元之间的突触连接。 | | [[Hopfield网络]]是一个著名的[[神经网络]]模型,通过对网络进行训练,可以让它记住相应的模式,并在适当的条件下联想回忆提取出相关的模式。也就是说,Hopfield模型通过训练(改变相互连接的权重),可以将要记忆的模式映射为能量最小的状态,之后通过Ising模型的邻域相互作用规则自发演化到这种最小能量状态。Hopfield的构造如下,一个加权的网络,如下图,每个节点都是一个神经元,加权的连边表示神经元之间的突触连接。 |
第366行: |
第367行: |
| [[File:Hopfield-net.png]] | | [[File:Hopfield-net.png]] |
| | | |
− | <!--newslide-->
| |
| | | |
| 假设每个神经元有两种状态:激活、未激活,分别用<math>s_i=+1,-1</math>来表示。神经元i到j的连接权重用<math>w_{ij}</math>来表示。 | | 假设每个神经元有两种状态:激活、未激活,分别用<math>s_i=+1,-1</math>来表示。神经元i到j的连接权重用<math>w_{ij}</math>来表示。 |
第373行: |
第373行: |
| 在初始时刻,我们把输入向量映射为每个神经元的激活、未激活状态。然后,Hopfield网络的运行规则如下,在每一个仿真周期,每个神经元根据下述规则更新状态: | | 在初始时刻,我们把输入向量映射为每个神经元的激活、未激活状态。然后,Hopfield网络的运行规则如下,在每一个仿真周期,每个神经元根据下述规则更新状态: |
| | | |
− | <math>s_i(t+1)=\left\{\begin{array}{ll} 1 & \mbox {if }\sum_{j}{w_{ij}s_j(t)}>\theta_i, \\ | + | |
| + | :<math>s_i(t+1)=\left\{\begin{array}{ll} 1 & \mbox {if }\sum_{j}{w_{ij}s_j(t)}>\theta_i, \\ |
| -1 & \mbox {otherwise.}\end{array}\right. | | -1 & \mbox {otherwise.}\end{array}\right. |
| </math> | | </math> |
第380行: |
第381行: |
| 这里<math>\theta_i</math>为阈值常数。根据这条规则,如果与神经元i相邻的所有神经元都激活,并且它们的连接权重为正的话,那么该神经元就有可能被激活。这就相当于最小化一个全局的能量函数,能量函数定义为: | | 这里<math>\theta_i</math>为阈值常数。根据这条规则,如果与神经元i相邻的所有神经元都激活,并且它们的连接权重为正的话,那么该神经元就有可能被激活。这就相当于最小化一个全局的能量函数,能量函数定义为: |
| | | |
− | <math> | + | |
| + | :<math> |
| E_{\{s_i\}}=-\sum_{ij}w_{ij}s_is_j - \sum_{i} \theta_i s_i | | E_{\{s_i\}}=-\sum_{ij}w_{ij}s_is_j - \sum_{i} \theta_i s_i |
| </math> | | </math> |
| | | |
− | 那么,Hopfield网络按照上述规则运行就会使得总能量尽量降低。相比较Ising模型,我们看到,Hopfield的能量函数与Ising模型非常相似,所不同的是相互作用强度因连接而异(<math>w_{ij}</math>),同时外场<math>\theta_i</math>也会因神经元不同而不同。因此,可以说Hopfield网络就是一个变种的Ising模型。
| |
− | <!--newslide-->
| |
| | | |
− | 另外,要想让Hopfield网络完成联想记忆,还需要给该网络进行训练。所谓的网络训练,就是要通过一定的规则来改变神经元之间的连接权重<math>w_{ij}</math>。假设我们希望Hopfield网络能够记住一组特定的向量(例如<math>V_1,V_2,V_3,...,V_{m}</math>)其中m为待学习的向量的个数,每一个向量可以写为: | + | 那么,Hopfield网络按照上述规则运行就会使得总能量尽量降低。相比较Ising模型,我们看到,Hopfield的能量函数与Ising模型非常相似,所不同的是相互作用强度因连接而异(<math>w_{ij}</math>),同时外场:<math>\theta_i</math>也会因神经元不同而不同。因此,可以说Hopfield网络就是一个变种的Ising模型。 |
| + | |
| + | |
| + | 另外,要想让Hopfield网络完成联想记忆,还需要给该网络进行训练。所谓的网络训练,就是要通过一定的规则来改变神经元之间的连接权重<math>w_{ij}</math>。假设我们希望Hopfield网络能够记住一组特定的向量(例如<math>V_1,V_2,V_3,...,V_{m}</math>)其中<math>m</math>为待学习的向量的个数,每一个向量可以写为: |
| + | |
| | | |
− | <math> | + | :<math> |
| V_i=<1,-1,1,\cdot\cdot\cdot,1> | | V_i=<1,-1,1,\cdot\cdot\cdot,1> |
| </math> | | </math> |
| | | |
− | 其中向量的长度为n。我们按照如下的规则来调解权重:
| |
| | | |
− | <math> | + | 其中向量的长度为<math>n</math>。我们按照如下的规则来调解权重: |
| + | |
| + | |
| + | :<math> |
| w_{ij}=\sum_{\nu=1}^{m}V_{\nu}(i)V_{\nu}(j) | | w_{ij}=\sum_{\nu=1}^{m}V_{\nu}(i)V_{\nu}(j) |
| </math> | | </math> |
| | | |
− | <math>V_{\nu}(i)</math>表示要学习的第<math>\nu</math>个向量的第i个分量的值。 | + | |
| + | :<math>V_{\nu}(i)</math>表示要学习的第<math>\nu</math>个向量的第i个分量的值。 |
| + | |
| | | |
| 按照这种方式对整个网络进行训练之后,我们就得到了一组权重<math>w_{ij}</math>。之后,我们就用这组权重作为Hopfield网络中的连接权重,然后针对任意一个输入数据作为神经元的初始状态,按照Hopfield的运行规则演化,系统将逐渐收敛到已记忆过的向量<math>V_1,V_2,V_3,...,V_{m}</math>中的一个。 | | 按照这种方式对整个网络进行训练之后,我们就得到了一组权重<math>w_{ij}</math>。之后,我们就用这组权重作为Hopfield网络中的连接权重,然后针对任意一个输入数据作为神经元的初始状态,按照Hopfield的运行规则演化,系统将逐渐收敛到已记忆过的向量<math>V_1,V_2,V_3,...,V_{m}</math>中的一个。 |
| | | |
− | <!--newslide-->
| + | |
| 总结来看,Hopfield网络的运行分为两个阶段,它们的输入数粗示意图如下所示: | | 总结来看,Hopfield网络的运行分为两个阶段,它们的输入数粗示意图如下所示: |
| | | |
第413行: |
第421行: |
| | | |
| 其中右侧人脸就是训练的数据,左侧的人连为初始向量输入给网络,经过一段时间的演化最终收敛到训练数据。 | | 其中右侧人脸就是训练的数据,左侧的人连为初始向量输入给网络,经过一段时间的演化最终收敛到训练数据。 |
− |
| |
| | | |
| ==参考文献== | | ==参考文献== |