Hopfield 神经网络无法识别

Posted

技术标签:

【中文标题】Hopfield 神经网络无法识别【英文标题】:Hopfield Neural Network doesn't recognize 【发布时间】:2012-03-04 11:12:53 【问题描述】:

我正在尝试用 Java 编写 Hopfield 神经网络类,但网络不想识别模式。 而且我不明白错误在哪里。 网络用互连矩阵 w[n][n] 表示。 当用一些标准模式教授网络时,我用以下方法改变互连矩阵:

private void teaching(int[] pattern) //teaching
    for(int i=0; i<n; i++)
        for(int j=0; j<n; j++)
            if(i==j) w[i][j]=0;
            else w[i][j] += pattern[i]*pattern[j];
        

然后我尝试在一些类似的模式中识别标准模式。当神经元状态停止变化或超过阈值(65535次迭代)时,应停止该过程:

private int[] recognition(int[] pattern)
    int net=0, s, j=0;        
    int[] previousState = new int[n];
    do
        System.arraycopy(pattern, 0, previousState, 0, n);
        int r = generateRandom(n);
        for(int i=0; i<n; i++)
            net+=pattern[i]*w[i][r];          
        s = signum(net);
        pattern[r] = s;
        j++;
        if(j>iterThreshold)
            System.err.println("Threshold overcome.");
            return pattern;
        
    while(!Arrays.equals(pattern, previousState));
    return pattern;

signum 是一个激活函数:

 private static int signum(int x) //activation function
    if(x>0) return 1;
    else return -1;


识别过程仅在超过阈值时停止。出模式看起来不像标准模式。请帮忙找出错误。 提前谢谢你。

附:问题已经解决了。 主要错误是我忘记在循环开始时将“net”变量设置为零:

private int[] recognition(int[] pattern)
    int net=0, s, j=0;        
    ...
    do
        net=0;
        for(int i=0; i<n; i++)
            net+=pattern[i]*w[i][r];
        ...
    

感谢您的关注。

【问题讨论】:

我认为 Java 已经有 Math.signum(x) 用于 x 的双精度和浮点输入的方法?如果 x = 0,您的版本将忽略零 (0)。请参阅链接 en.wikipedia.org/wiki/Signum_function 我的版本没有忽略 x=0。当 x=0 时,signum(x)=-1。模式向量只能由“1”或“-1”值组成。 你有没有参加过 Hinton 的神经网络课程? 你为什么使用整数?你应该使用双打或至少浮动。你检查过整数溢出吗? 当您自己解决问题时,是否愿意回答您的问题并将其关闭,这样它就不会出现在未回答的问题中? See here如有疑问 【参考方案1】:

主要错误是我忘记在循环开始时将“net”变量设置为零:

private int[] recognition(int[] pattern)
    int net=0, s, j=0;        
    ...
    do
        net=0;
        for(int i=0; i<n; i++)
            net+=pattern[i]*w[i][r];
        ...
    

【讨论】:

以上是关于Hopfield 神经网络无法识别的主要内容,如果未能解决你的问题,请参考以下文章

10.BP神经网络和Hopfield神经网络: 神经元与神经网络, BP在模式识别中的应用, 离散Hopfield神经网络, 连续Hopfield神经网络, Hopfield的应用

Hopfield神经网络实现污染字体的识别

离散Hopfield神经网络的分类——高校科研能力评价

TSP问题—Hopfield神经网络算法

DL:Hopfield 神经网络

TSP问题基于hopfield神经网络求解TSP问题matlab