训练机器学习模型预测的最优参数搜索

2024-03-28 21:28:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经从以下电路创建了一个ML模型

enter image description here

作为输入,我只使用R3和R5的值,我正在改变范围:

R3:1至5 R5:10到150,以10步为单位

我的目标值是电路的效率,测量为R5消耗的功率与V1提供的功率之比

一旦我训练了模型,我就对更大范围的值进行了预测,得到了在Z轴上具有效率的曲面:

enter image description here

我的问题是,给定一组,例如:

X1=1 X2=3

这导致输出预测效率为50%

我如何自动化推荐更好价值的过程,例如:

X1=1 X2=1

这样可以产生57%的效率

我想做这个主题有一些限制,比如:在X1上只移动2个步骤,在X2上只移动3个步骤


Tags: 模型步骤单位功率ml电路效率v1
1条回答
网友
1楼 · 发布于 2024-03-28 21:28:47

这听起来像是梯度下降之类的优化器的工作(如果您可以在PyTorch或TensorFlow等具有自动差异的框架中实现您的ML模型,则建议您这样做)

如果基于梯度的优化器不适合您的特定函数,我建议Evolutionary Algorithms。根据您问题中的描述,我建议以下选项:

所有这些算法都适用于离散搜索空间,如果它们不提供用于约束搜索空间的方便API,您可以通过包装模型来解决该问题:

让您的ML模型成为一个函数:

f(x1: float, x2:float) -> float

您可以编写包装函数f_constrained,如下所示:

def f_constrained(x1: float, x1: float, 
                  x1_min: float, x1_max: float, 
                  x2_min: float, x2_max: float) -> float:
    if x1_min <= x1 <= x1_max and x2_min <= x2 <= x2_max:
        return f(x1, x2)
    # this assumes the objective function is maximizing the values,
    # when minimizing, return float("inf") instead
    return float("-inf")

相关问题 更多 >