You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用ml5.js实现y=2x-1线性回归预测错误排查求助

问题原因与解决方案

核心问题

你的预测结果异常主要来自两个关键点:

  1. 默认网络的非线性限制:ml5.js的neuralNetwork默认会带非线性激活函数(如sigmoid)的隐藏层,这类函数会把模型输出限制在训练数据的y值范围(-3到7)内,无法外推到x=20这种远超出训练范围的输入。
  2. 网络结构不匹配线性任务:你要实现的是y=2x-1的纯线性回归,但默认的非线性网络更适合复杂任务,反而无法精准拟合简单的线性规律。

修复步骤

1. 定义线性网络结构

显式指定仅含线性激活函数的网络层,去掉非线性隐藏层,让模型专注拟合线性关系:

const model = ml5.neuralNetwork({
    task: 'regression',
    inputs: ['x'],
    outputs: ['y'],
    debug: true,
    layers: [
        // 直接映射输入到输出,使用线性激活函数
        { type: 'dense', units: 1, activation: 'linear', inputShape: [1] }
    ]
});

2. 调整训练轮次

增加epochs数量,让线性模型有足够迭代次数收敛到最优参数:

model.train({epochs: 1000}, () => {
    console.log('Model trained');

    const inputData = {x: 20};
    model.predict(inputData, (error, result) => {
        if (error) {
            console.error(error);
        } else {
            console.log(`Prediction: ${result[0].value}`);
        }
    });
});

3. 可选:简化归一化操作

你的训练数据范围很小,线性模型训练不会出现数值不稳定问题,也可以尝试注释掉model.normalizeData(),同样能得到正确结果。

修复后效果

调整后的模型会精准学习到y=2x-1的线性规律,输入x=20时会输出接近39的结果(可能存在微小浮点误差)。

内容的提问来源于stack exchange,提问作者Дмитрий Савенко

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 00:21:26