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

BigQuery ML Linear Regressor设置多轮迭代却仅训练1次停止问题

问题描述

我在BigQuery中训练Linear Regressor,使用约20000行数据,目标输出列取值为{0, 1}。我将EARLY_STOP选项设为False,MAX_ITERATIONS选项设为10,但训练始终在1轮迭代后停止,此时MAE约为0.2。
以下是我的创建模型查询:

CREATE OR REPLACE MODEL `sketching.linear_regressor_08-13--11-59-03.811249`
OPTIONS (model_type=@model_type, 
input_label_cols=@input_label_cols, 
max_iterations=@max_iterations, 
data_split_method=@data_split_method, 
early_stop=@early_stop) AS
SELECT * FROM `ds.training_table`

查询中使用的参数如下(Python对象打印结果):

[ScalarQueryParameter('model_type', 'STRING', 'linear_reg'),
ArrayQueryParameter('input_label_cols', 'STRING', ['target_output']),
ScalarQueryParameter('max_iterations', 'INT64', 10),
ScalarQueryParameter('data_split_method', 'STRING', 'RANDOM'),
ScalarQueryParameter('early_stop', 'BOOL', False)]

备注:我已检查QueryJob的bytes_processed指标,确认其正常处理了全表数据。

更新1

看起来BQ忽略了我传入的大部分模型选项,我在BigQuery Web界面的模型状态页看到,训练选项区域没有展示我配置的参数,反而显示了我未设置的选项,仅修改data_split_method参数时界面会同步变更。

更新2

我额外添加L1_REG参数并设为0.1后,问题得到解决,训练正常执行到我设置的10轮迭代;如果不添加任何可选参数或仅配置early_stop参数,模型仍仅训练1轮就停止。请问该问题的根本原因是什么?有无其他解决方案?


回答

根本原因

这是BigQuery ML线性回归模型的默认优化逻辑导致的:

  • 当你没有显式设置L1_REG、L2_REG这类正则化参数时,BQ ML会自动启用闭式解(closed-form solution) 替代梯度下降来训练线性模型,闭式解可以一步直接算出最优参数,不需要多轮迭代,所以不管你设置多大的MAX_ITERATIONS,训练都会在1轮结束。
  • 只有当你显式设置了正则化参数(L1_REG>0 或者 L2_REG>0),或者训练数据量过大导致闭式解计算效率太低时,BQ ML才会切换到迭代式的梯度下降优化算法,此时你设置的MAX_ITERATIONS、EARLY_STOP这类迭代相关的参数才会生效。
  • 你看到的「参数未在界面显示」也是同理:闭式解训练模式下,迭代相关的参数本身不生效,界面就不会展示这类不生效的配置项,只有属于当前训练模式的参数(比如data_split_method)才会正常展示。

其他解决方案

除了设置L1_REG之外,你还可以通过以下方式触发迭代训练,让MAX_ITERATIONS配置生效:

  • 显式设置L2_REG参数为非0值,效果和设置L1_REG一致
  • 手动指定优化器参数optimize_strategy='BATCH_GRADIENT_DESCENT',强制使用梯度下降优化,不需要额外加正则化参数也能按你设置的迭代次数运行

内容的提问来源于stack exchange,提问作者user2268997

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 19:21:01