ML5训练XOR异或数据集失败 预测结果不符合预期
ML5训练XOR异或数据集预测结果异常
现有代码与配置
// 训练数据集 [ { a: 0, b: 0, output: 'zero' }, { a: 1, b: 0, output: 'one' }, { a: 0, b: 1, output: 'one' }, { a: 1, b: 1, output: 'zero' }, ] // 训练配置 const options = { task: 'regression', }; // 实际预测输出 // (0,0) => zero // (1,0) => one // (0,1) => one // (1,1) => one
异常现象
训练流程无报错,表面已完成收敛,但输入(1,1)时预测输出为one,不符合XOR逻辑预期的zero,其余三组输入预测结果正常。
问题原因
- 核心配置错误:当前输出为
zero/one两个离散类别标签,属于分类任务,但配置中错误指定为regression(回归任务,用于预测连续数值),模型无法正确学习离散类别的非线性决策边界,对字符串类标签的映射逻辑完全不匹配分类场景。 - 默认网络结构不足:ML5神经网络默认隐藏层配置无法拟合XOR问题的非线性分割面,即使改对任务类型,也需要手动指定隐藏层参数保证收敛。
修复方法
修改训练配置,将任务改为分类,同时添加适配XOR问题的隐藏层配置,参考如下:
const options = { task: 'classification', // 修正为分类任务 hiddenUnits: [4], // 新增1层含4个神经元的隐藏层,足够拟合XOR的非线性关系 epochs: 100, // 适当调高训练轮次,保证模型充分收敛 };
修改后重新训练,四组输入的预测结果即可完全符合XOR逻辑预期。
内容的提问来源于stack exchange,提问作者Ploppy
相关产品推荐
相关产品推荐

