C# 能否使用线性激活函数实现ANN(2-2-1层)来学习异或?

C# 能否使用线性激活函数实现ANN(2-2-1层)来学习异或?,c#,neural-network,xor,multi-layer,C#,Neural Network,Xor,Multi Layer,如果是,如何进行?还有哪些简单的应用程序可以通过使用线性激活函数来实现。答案很简单:否 如果你使用线性激活函数,那么你的神经网络并不比一个简单的感知器更强(缺少隐藏层) 换句话说,使用具有线性激活函数的隐藏层是没有意义的异或不能线性分离。如果您在二维平面上打印函数的输出,并且试图找到一种线性分离它的方法,您将找不到。这是NN在开始时的崩溃,直到他们发现了不同的激活方法,允许像sigmoid函数那样非线性分离点 a b a XOR b 1 1 0 0 1 1 1

如果是,如何进行?还有哪些简单的应用程序可以通过使用线性激活函数来实现。

答案很简单:

如果你使用线性激活函数,那么你的神经网络并不比一个简单的感知器更强(缺少隐藏层)


换句话说,使用具有线性激活函数的隐藏层是没有意义的

异或不能线性分离。如果您在二维平面上打印函数的输出,并且试图找到一种线性分离它的方法,您将找不到。这是NN在开始时的崩溃,直到他们发现了不同的激活方法,允许像sigmoid函数那样非线性分离点

a   b   a XOR b
1   1      0
0   1      1
1   0      1
0   0      0


我如何使用线性激活函数进行和/或?同样,对于线性可分离的问题,例如和/或您根本不需要隐藏层(您可以使用它,但它是多余的,并且显示出对机器学习基础知识的理解不足)。仅仅是线性模型,例如cl_和(x1,x2)=符号(x1+x2-1.5),cl_或(x1,x2)=符号(x1+x2-0.5)。示例(和):输入/权重=>1/0.31/-0.4偏差=>1/0.3使用线性函数的下一步是什么?如何设置阈值?线性和阶跃的区别在哪里?你似乎把模型本身和一些训练方法混淆了。没有“下一步”这回事;我给了你最后的重量。对于AND=>1(第一个输入神经元),1(第二个输入神经元),-1.5(偏差);因此,在输出神经元(无隐层)上,f(x1,x2)=x1+x2-1.5。如果你坚持要有隐藏层,只需放置一个隐藏神经元,权重为“1”就可以输出一个——它除了传递信号之外什么也不做。我知道它必须是一个神经元。给我一个简单的例子,其中一个将使用线性激活函数。