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

参数空间局部受限场景下的深度学习模型性能问题咨询

问题描述

我计划用Keras结合CNN完成一维回归任务:通过2个参数和待预测的温差生成256×256的8位灰度图像,图像生成涉及3个参数,其余为随机变量,图像可直观体现温差。
网络有两个输入:由2个标量组成的向量(图像生成的额外参数)和图像,训练目标是从输入图像中推导温差。
目前遇到的问题:受几何约束,图像生成并非总能成功,3个生成参数存在失败子区域(下图红色圆圈标注)。图中两个轴为对数坐标,参数采样采用类指数分布。
模型在参数区域的左下部分学习效果良好,但在另一端完全失效。想咨询:模型性能不佳是否由训练参数的分布形态(尤其是生成失败区域)导致?

补充说明

使用的图像为256×256 8位灰度图,训练代码如下:

def createMlp(aRepeatParameter:int):
  vectorSize = aRepeatParameter * 2
  inputs = Input(shape=(vectorSize,))
  x = inputs
  return Model(inputs, x)

def createCnn():
  filters=(64, 16, 4)
  inputShape = (256, 256, 1)
  chanDim = -1
  inputs = Input(shape=inputShape)
  x = inputs
  for (i, f) in enumerate(filters):
    x = Conv2D(f, (3, 3), padding="same")(x)
    x = LeakyReLU(alpha=0.3)(x)
    x = BatchNormalization(axis=chanDim)(x)
    x = MaxPooling2D(pool_size=(2, 2))(x)
  x = Flatten()(x)
  x = Dense(128, activation=LeakyReLU(alpha=0.3))(x)
  x = Dense(16, activation=LeakyReLU(alpha=0.3))(x)
  x = BatchNormalization(axis=chanDim)(x)
  x = Dropout(0.5)(x)
  x = Dense(4)(x)
  x = LeakyReLU(alpha=0.3)(x)
  return Model(inputs, x)

repeatParameter:int = 2
mlp = createMlp(repeatParameter)
cnn = createCnn()

combinedInput = Concatenate(axis=1)([mlp.output, cnn.output])
x = Dense(4, activation=LeakyReLU(alpha=0.3))(combinedInput)
x = Dense(1, activation="linear")(x)
model = Model(inputs=[mlp.input, cnn.input], outputs=x)

batchSize = 32
sampleSize = 96000
validationSize = 16000
port      = 12345
trainingSteps = math.ceil(sampleSize / batchSize)
learningRate = ExponentialDecay(initial_learning_rate=0.001, decay_steps=trainingSteps, decay_rate=0.05)
opt = Adam(learning_rate=learningRate)
model.compile(loss="mean_squared_error", optimizer=opt, metrics=["mean_absolute_percentage_error"])
model.fit(landscapeGenerator.generate(batchSize, repeatParameter, port), validation_data=landscapeGenerator.generate(batchSize, repeatParameter, port),
  epochs=50, steps_per_epoch=trainingSteps, validation_steps=validationSize/batchSize )

参数分布。蓝色:图像生成成功,红色:生成失败。


回答

模型性能的区域差异大概率和训练参数的分布形态(包括生成失败区域)直接相关,具体可从以下角度分析:

1. 参数分布偏斜导致学习优先级失衡

你采用类指数分布采样参数,左下区域的样本量远多于右上区域。MSE损失的特性会让模型优先拟合样本密集、误差更容易降低的区域,对样本稀疏的右上区域学习资源分配不足,最终导致该区域预测失效。

2. 生成失败区域的双重干扰

红色失败区域恰好覆盖右上部分参数空间,带来两个核心问题:

  • 该区域的有效样本量进一步被压缩,模型几乎没有足够数据学习该区域的图像-温差映射规律;
  • 若失败区域存在未被过滤的“伪成功”样本(比如生成图像有几何缺陷但被误判为有效),这类噪声会误导模型学习错误特征,加剧该区域的预测偏差。

3. 现有网络结构的适配缺陷

当前网络结构也会放大区域性能差异:

  • MLP分支未做任何特征变换(直接返回输入),浪费了额外参数的辅助信息,无法帮助模型区分不同参数区域的特征模式;
  • 连续的MaxPooling会丢失大量细节,而高参数区域的图像可能包含更细微的温差特征,导致模型无法捕捉关键信息。

建议改进方向

  • 平衡数据集采样:对右上稀疏区域采用过采样,或给稀疏区域样本设置更高的损失权重,强制模型关注该区域;
  • 严格过滤无效样本:完善图像生成的校验逻辑,确保训练集不含生成失败的图像,避免噪声干扰;
  • 优化网络结构:
    • 给MLP分支添加1-2层Dense层,让它学习额外参数的特征表示,辅助CNN做区域特征区分;
    • 减少MaxPooling次数,或替换为步长卷积(Strided Conv),保留更多图像细节;
    • 在CNN后期添加注意力机制,引导模型聚焦与温差相关的关键图像区域;
  • 特征可视化分析:提取右上区域图像的CNN中间层特征,对比左下区域的特征差异,确认模型是否能捕捉到该区域的有效特征。

内容的提问来源于stack exchange,提问作者Balázs Bámer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 09:45:47