神经网络和 XOR 作为分类

Posted

技术标签:

【中文标题】神经网络和 XOR 作为分类【英文标题】:Neural network and XOR as a classification 【发布时间】:2018-02-11 23:10:28 【问题描述】:

我在某处读到,均方误差损失适用于回归,交叉熵损失适用于分类。

当我尝试将 XOR 训练为具有交叉熵损失的分类问题时,网络未能收敛。

我的设置:

网络为 2-2-2

第一个输出是信号 0,第二个是 1(所以有两类输入)。

交叉熵用于计算网络输出层的误差,而不是均方误差。

作为激活函数,我用的是logsig。

显然,我错过了什么,我的错误在哪里?

【问题讨论】:

请提供代码。 对不起,我不能,我写了自己的lib用于教育目的,所以即使我发布代码,没有lib也将毫无意义。问题是,你知道我思想的缺陷吗?例如,在训练经典异或时,必须使用 tansig 激活,否则将无法收敛。你知道,我正在寻找这种问题,所以我相信,缺少代码不是问题。 这是一个编程网站,如果你没有代码,那问题就跑题了。 【参考方案1】:

这是这个网络在 Mathematica 中的实现:

net = NetChain[2, Tanh, 2, Tanh, 1, LogisticSigmoid, "Input" -> 2];

eps = 0.01;
data = 0, 0 -> eps, 1, 0 -> 1 - eps, 0, 1 -> 1 - eps, 1,
      1 -> eps;

trained = 
 NetTrain[net, data, CrossEntropyLossLayer["Binary"], 
  MaxTrainingRounds -> Quantity[5, "Minutes"], TargetDevice -> "GPU"]

几千轮后收敛。所以,我认为您没有遗漏任何内容 - 您的库中可能存在错误

【讨论】:

以上是关于神经网络和 XOR 作为分类的主要内容,如果未能解决你的问题,请参考以下文章

在 sklearn 逻辑回归中使用分类数据作为特征

如何在分类中包含单词作为数字特征

使用随机森林作为带有 adaboost 的基础分类器

训练级联分类器,同时包括图像注释作为特征

scikit learn 使用多项式朴素贝叶斯作为三元分类器?

c# List根据某个属性进行分类,变成以属性名称作为分类的多个List