当前位置: 首页 > 知识库问答 >
问题:

神经网络无法学习异或

融宏伟
2023-03-14

我创建了一个神经网络,其结构如下:

Input1-Input2-输入层。

N0-N1-隐藏层。每个节点3个权重(一个用于偏移)。

N2——输出层。3个砝码(一个用于偏置)。

我正在尝试使用以下测试数据对其进行XOR函数训练:

  • 0 1-期望结果:1
  • 1 0-期望结果:1
  • 0 0-所需结果:0
  • 1 1-所需结果:0

训练后,测试的均方误差(当寻找1结果时){0,1}=0,我认为这很好。但是测试的均方误差(当寻找0结果时){1,1}=0.5,肯定需要为零。在学习阶段,我注意到在最初的几个时期内,真结果的MSE下降到零,而假结果的MSE徘徊在0.5左右。

我使用反向传播来训练网络,带有一个sigmoid函数。问题是,当我在训练后测试任何组合时,我总是得到1.0的结果输出。-网络似乎学习速度很快,即使学习速度非常小。

如果有帮助,以下是产生的权重:

N0-W0=0.5,N0-W1=-0.999,N0-W2=0.304(偏差)-隐藏层

N1-W0=0.674,N1-W1=-0.893,N1-W2=0.516(偏差)-隐藏层

N2-W0=-0.243,N2-W1=0.955,N3-W2=0.369(偏置)-输出节点

谢谢

共有1个答案

淳于博
2023-03-14

以下是一些有助于解决问题的步骤:

>

  • 更改激活功能。我用relu作为激活函数回答了一个类似的问题:神经网络异或门不学习

    增加纪元的数量。

    将学习速度更改为更大的合适值,以便更快地实现收敛。您可以在这里找到更多信息:如何确定梯度下降算法中的学习率和方差

  •  类似资料:
    • 我试图用两个感知器网络做一个异或门,但由于某种原因,网络没有学习,当我在图中绘制误差的变化时,误差达到一个静态水平,并在该区域振荡。 目前我没有给网络添加任何偏见。 这是错误随着学习轮数的变化而变化。这是正确的吗?红色线是我所期望的错误将如何改变的线。

    • 我正在建立一个分类神经网络,以便对两个不同的类进行分类。 所以这是一个二元分类问题,我正尝试用一个前馈神经网络来解决这个任务。 但是网络是不能学习的,事实上,在训练过程中,网络的精度是不变的。 具体而言,数据集由以下人员组成: 65673行22列。 其中一列是具有值(0,1)的目标类,而其他21列是预测器。数据集是这样平衡的: null 可以看到也有NaN值,但我不能删除它,因为在其他列中有值0是

    • 神经网络和深度学习是一本免费的在线书。本书会教会你: 神经网络,一种美妙的受生物学启发的编程范式,可以让计算机从观测数据中进行学习 深度学习,一个强有力的用于神经网络学习的众多技术的集合 神经网络和深度学习目前给出了在图像识别、语音识别和自然语言处理领域中很多问题的最好解决方案。本书将会教你在神经网络和深度学习背后的众多核心概念。 想了解本书选择的观点的更多细节,请看这里。或者直接跳到第一章 开始

    • 深度神经网络的工作地点、原因和方式。从大脑中获取灵感。卷积神经网络(CNN)和循环神经网络(RNN)。真实世界中的应用。 使用深度学习,我们仍然是习得一个函数f,将输入X映射为输出Y,并使测试数据上的损失最小,就像我们之前那样。回忆一下,在 2.1 节监督学习中,我们的初始“问题陈述”: Y = f(X) + ϵ 训练:机器从带标签的训练数据习得f 测试:机器从不带标签的测试数据预测Y 真实世界很

    • 人工神经网络指由大量的神经元互相连接而形成的复杂网络结构。以人的视觉系统为例,人的视觉系统的信息处理是分级的,高层的特征是低层特征的组合,从低层到高层的特征表示越来越抽象,越来越能表达语义或者意图。人工神经网络提出最初的目的是为了模拟生物神经网络传递和处理信息的功能。它按照一定规则将许多神经元连接在一起,并行的处理外接输入信息。人工神经网络的每一层都有若干神经元并用可变权重的有向弧连接,具体训练过程是通过多次迭代对已知信息的反复学习并调整改变神经元的连接权重。

    • 我已经实现了下面的神经网络来解决Python中的异或问题。我的神经网络由3个神经元的输入层、1个2个神经元的隐层和1个神经元的输出层组成。我使用Sigmoid函数作为隐藏层和输出层的激活函数: backpropogation似乎是正确的,但我一直得到这个错误,所有的值都变成了“nan”,输出: 你能帮我解决这个问题吗?谢谢你。