美文网首页
使用2层神经网络解决XOR问题

使用2层神经网络解决XOR问题

作者: _龙雀 | 来源:发表于2019-10-10 23:56 被阅读0次

    感知机,逻辑回归,或者说单层神经网络只能解决线性可分的问题,比如AND和OR问题,图中的直线是决策边界。


    image.png

    对于XOR问题,由于线性不可分,我们希望生成非线性的决策边界,如图

    image.png

    我们可以通过组合多个线性可分的决策边界,来实现这一目的


    image.png

    在神经网络中,这个操作就是增加隐藏层


    image.png

    相当于将原始的输入通过隐藏层之后,转化为了一个更有效的表达


    image.png

    使用keras简单实现一下吧

    import numpy as np
    from keras.models import Sequential
    from keras.layers.core import Dense
    
    # the four different states of the XOR gate
    training_data = np.array([[0,0],[0,1],[1,0],[1,1]], "float32")
    
    # the four expected results in the same order
    target_data = np.array([[0],[1],[1],[0]], "float32")
    
    model = Sequential()
    model.add(Dense(2, input_dim=2, activation='relu'))
    model.add(Dense(1, activation='sigmoid'))
    
    model.compile(loss='mean_squared_error',
                 optimizer='adam',
                 metrics=['binary_accuracy'])
    
    model.fit(training_data, target_data, nb_epoch=500, verbose=2)
    
    print model.predict(training_data).round()
    

    提供一个纯numpy实现:https://github.com/omar-florez/scratch_mlp
    中文翻译:https://zhuanlan.zhihu.com/p/74631214

    相关文章

      网友评论

          本文标题:使用2层神经网络解决XOR问题

          本文链接:https://www.haomeiwen.com/subject/kdyzpctx.html