参数空间局部受限场景下的深度学习模型性能问题咨询
问题描述
我计划用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
相关产品推荐
相关产品推荐

