如何在 Spearmint 中表达超参数分布?

How to express hyperparameter distributions in Spearmint?

我正在尝试使用贝叶斯优化库 Spearmint 来调整机器学习分类器的超参数。我的问题是如何表达不遵循均匀分布的参数搜索 spaces?

出自project's github page,这里举例说明如何设置两个均匀分布的参数搜索spaces:

"variables": {
    "X": {
        "type": "FLOAT",
        "size": 1,
        "min":  -5,
        "max":  10
    },
    "Y": {
        "type": "FLOAT",
        "size": 1,
        "min":  0,
        "max":  15
    }
}

我们如何在 Spearmint 中定义搜索 space 如下所示?

SVC_PARAMS = [
    {
        "bounds": {
            "max": 10.0,
            "min": 0.01,
        },
        "name": "C",
        "type": "double",
        "transformation": "log",
    },
    {
        "bounds": {
            "max": 1.0,
            "min": 0.0001,
        },
        "name": "gamma",
        "type": "double",
        "transformation": "log",
    },
    {
        "type": "categorical",
        "name": "kernel",
        "categorical_values": [
            {"name": "rbf"},
            {"name": "poly"},
            {"name": "sigmoid"},
        ],
    },
]

是否有地方可以查找 Spearmint 当前支持的所有随机表达式(即 uniformnormallog 等)?

Spearmint 会自动从数据中学习这些类型的转换。如果你看这里:https://github.com/HIPS/Spearmint/tree/master/spearmint/transformations 你可以看到应用的 beta 扭曲的实现(本文详述:http://arxiv.org/abs/1402.0929)。 Spearmint 没有办法指定这些先验条件,但您可以让 Spearmint 在例如参数的日志(通过给出参数范围的日志并在你的末端求幂)。