BayesianMinimization [f,{conf1,conf2,…}]
给出一个对象,表示对函数 f 在配置 confi 上进行贝叶斯最小化的结果.
BayesianMinimization[f,reg]
在由区域规范 reg 表示的区域上最小化.
BayesianMinimization[f,sampler]
在通过应用函数 sampler 得到的配置上最小化.
BayesianMinimization [f,{conf1,conf2,…}nsampler]
应用函数 nsampler 依次生成由 confi 开始的配置.
BayesianMinimization
BayesianMinimization [f,{conf1,conf2,…}]
给出一个对象,表示对函数 f 在配置 confi 上进行贝叶斯最小化的结果.
BayesianMinimization[f,reg]
在由区域规范 reg 表示的区域上最小化.
BayesianMinimization[f,sampler]
在通过应用函数 sampler 得到的配置上最小化.
BayesianMinimization [f,{conf1,conf2,…}nsampler]
应用函数 nsampler 依次生成由 confi 开始的配置.
更多信息和选项
- BayesianMinimization[…] 返回 BayesianMinimizationObject[…],其属性可以通过使用 BayesianMinimizationObject[…]["prop"] 获得.
- 可能的属性包括:
-
"EvaluationHistory" 最小化过程中所尝试的配置和值 "Method" 用于贝叶斯最小化的方法 "MinimumConfiguration" 所得到的使 f 结果最小化的配置 "MinimumValue" 从 f 获得的估计最小值 "NextConfiguration" 如果最小化继续,下一个要尝试的配置 "PredictorFunction" 所得到的函数 f 的最佳预测模型 "Properties" 所有可用属性的列表 - 配置可以是 Predict 所接受的任何形式(单数据元素、数据元素列表、数据元素的关联,等)和 Predict 所接受的任何类型(数值、文本、声音、图像,等).
- 当应用于配置 conf 时,函数 f 必须输出实数值.
- BayesianMinimization[f,…] 尝试使用运算 f 最少的次数来得到良好的最小值.
- 在 BayesianMinimization[f,spec] 中,spec 定义函数 f 的定义域. 定义域可以通过配置列表、几何区域或者配置生成函数定义.
- 在 BayesianMinimization[f,sampler] 中,sampler[] 必须输出一个适用于 f 来应用的配置.
- 在 BayesianMinimization[f,{conf1,conf2,…}->nsampler] 中,nsampler[conf] 必须输出一个适用于 f 来应用的配置.
- BayesianMinimization 可取的选项如下:
-
AssumeDeterministic False 是否假定 f 为确定性的 InitialEvaluationHistory None 配置和值的初始集合 MaxIterations 100 迭代的最大次数 Method Automatic 用于确定所运算的配置的方法 ProgressReporting $ProgressReporting 如何报告进展情况 RandomSeeding 1234 应该在伪随机发生器内部完成的种子指定方式 - Method 的可能设置包括:
-
Automatic 自动选取方法 "MaxExpectedImprovement" 在当前的最佳值上最大化预期的改善 "MaxImprovementProbability" 在当前的最佳值上最大化改善的概率 - RandomSeeding 的可能设置包括:
-
Automatic 每次调用函数时都会自动重新设置种子 Inherited 使用外部种子随机数 seed 使用明确的整数或字符串作为种子
范例
打开所有单元 关闭所有单元基本范例 (3)
bo = BayesianMinimization[(# - 2) ^ 2 + 1&, Interval[{0, 4}]]使用得到的 BayesianMinimizationObject[…] 获取所估计的最小值配置:
bo["MinimumConfiguration"]bo["MinimumValue"]bo = BayesianMinimization[(# ^ 2 - 3 * # + 2)&, {5.7, 1.1, 3.4, 6.8, 2.3, 1.2}]bo["MinimumConfiguration"]bo = BayesianMinimization[ (# ^ 2 - 5 * # + 4)&, RandomReal[{0, 5}]&]bo["MinimumValue"]范围 (3)
f[x_] := (x - 4) ^ 2 + 1;
reg = Interval[{0., 7.}];bo = BayesianMinimization[f, reg]bo["Properties"]bo["EvaluationHistory"]bo["Method"]获取函数的当前概率模型(这是一个 PredictorFunction):
p = bo["PredictorFunction"]bo["NextConfiguration"]bo[{"ObjectiveFunction", "Method", "MinimumValue"}]Plot[{f[{x}], p[{x}]}, {x, 0, 7}, PlotLegends -> {"function", "model"}, Exclusions -> False ]在由随机邻域配置生成器定义的域上,最小化一个带有初始配置的函数:
f[x_] := x ^ 2 - 7 * x + 3;
neighborsampler[x_] := RandomReal[{x - 0.2, x + 0.2}];bo = BayesianMinimization[f, {1., 7., 2.} -> neighborsampler]p = bo["PredictorFunction"]Plot[{f[{x}], p[{x}]}, {x, 0, 7}, PlotLegends -> {"function", "model"}, Exclusions -> False]定义一个函数,取一个图像,计算由 ImageIdentify 将图像识别为实体
所返回的负概率,定义域由一个随机发生器在图像库上定义:
f[image_] := Module[{negprob}, negprob = -ImageIdentify[image, Entity["Concept", "Fruit::855t9"], 5, "Probability"];
Lookup[negprob, Entity["Concept", "Apple::857h7"], 0.]
];
images = WikipediaData["Apple", "ImageList"];
sampler[] := RandomChoice[images];bo = BayesianMinimization[f, sampler, AssumeDeterministic -> True]bo["MinimumConfiguration"]bo["EvaluationHistory"]选项 (4)
AssumeDeterministic (1)
f[x_] := -x Sin[x] + 3 Cos[x] + x / 2;
sampler[] := RandomReal[{-6., 6.}];bo = BayesianMinimization[f, sampler]函数被假定为随机的;一般而言,概率模型中的值将与配置已运算的函数值不同:
bo["MinimumValue"]f[bo["MinimumConfiguration"]]bo2 = BayesianMinimization[f, sampler, AssumeDeterministic -> True]对于确定性函数,模型值和配置已运算的函数值具有精度良好的一致性:
bo2["MinimumValue"]f[bo2["MinimumConfiguration"]]InitialEvaluationHistory (1)
f[{x_, y_}] := Cos[x] - Exp[(x - 0.5) * y];
reg = Disk[{0, 0}, 1.];bo = BayesianMinimization[f, reg, MaxIterations -> 5]evalhist = bo["EvaluationHistory"]bo2 = BayesianMinimization[f, reg, InitialEvaluationHistory -> evalhist]bo2["MinimumConfiguration"]MaxIterations (1)
f[x_] := Sin[x] + 4 * Cos[x] + x;
sampler [] := RandomReal[{-5, 5}];bo = BayesianMinimization[f, sampler]Length @ bo["EvaluationHistory"]bo2 = BayesianMinimization[f, sampler, MaxIterations -> 5]Length @ bo2["EvaluationHistory"]Method (1)
f[x_] := x ^ 2 - 3 * x + 2;
int = Interval[{-5., 5.}];bo = BayesianMinimization[f, int, Method -> "MaxExpectedImprovement"]bo2 = BayesianMinimization[f, int, Method -> "MaxImprovementProbability"]应用 (2)
定义一个训练集,训练使用 Predict 函数的预测函数,并定义一个测试集以衡量它们的效能:
trainingset = Table[n -> Sin[n], {n, 1, 15}];
testset = {3.9 -> Sin[3.9], 7.3 -> Sin[7.3]};创建一个“损失”函数,以检验 Predict 中不同方法的效能:
func[method_] := -PredictorMeasurements[Predict[trainingset, Method -> method], testset, "LogLikelihood"];
methods = {"LinearRegression", "NearestNeighbors", "NeuralNetwork", "GaussianProcess"};在由 Predict 的不同方法列表定义的域上最小化损失函数:
bo = BayesianMinimization[func, methods]bo["EvaluationHistory"]bo["NextConfiguration"]sampletest = RandomSample[ExampleData[{"MachineLearning", "FisherIris"}, "Data"]];
trainingsample = sampletest[[1 ;; 100]];
validationsample = sampletest[[101 ;; ]];创建“黑箱”函数. 这里函数是 Classify 函数中所用的两种不同方法下的损失(负对数似然)函数. 函数参数被称为超级参数.
训练具有两个超级参数( L1 和 L2 的正则化系数)的 logistic 回归分类器:
lossLogisticReg[{l1_, l2_}] := Module[
{class},
class = Classify[trainingsample, Method -> {"LogisticRegression",
"L1Regularization" -> Exp[l1], "L2Regularization" -> Exp[l2]}];
-ClassifierMeasurements[class, validationsample, "LogLikelihood"]
];
reg = Rectangle[{-3., -3.}, {3., 3.}];对超级参数取对数,在由矩形区域定义的域上最小化 logistic 回归分类器的损失函数:
boLogistic = BayesianMinimization[lossLogisticReg, reg]pLogistic = boLogistic["PredictorFunction"]pt = {Append[boLogistic["MinimumConfiguration"], boLogistic["MinimumValue"]]}Show[Plot3D[pLogistic[{x, y}], {x, -3, 3}, {y, -3, 3}, PlotLegends -> {"Logistic Regression"}, Exclusions -> False], ListPointPlot3D[pt, PlotStyle -> Directive[Red, PointSize[Large]]]]现在训练一个具有超级参数(软边缘参数和伽马缩放参数)的支持向量机(SVM)分类器:
lossSVMRBF[{c_, gamma_}] := Module[
{class},
class = Classify[trainingsample, Method -> {"SupportVectorMachine", "KernelType" ->
"RadialBasisFunction", "SoftMarginParameter" -> Exp[c], "GammaScalingParameter" -> Exp[gamma]}];
-ClassifierMeasurements[class, validationsample, "LogLikelihood"]
];
reg2 = Rectangle[{-3., -3.}, {3., 3.}];对超级参数取对数,在由矩形区域定义的域上最小化 SVM 分类器的损失函数:
boSVM = BayesianMinimization[lossSVMRBF, reg2]pSVM = boSVM["PredictorFunction"]pt2 = {Append[boSVM["MinimumConfiguration"], boSVM["MinimumValue"]]}Show[Plot3D[pSVM[{x, y}], {x, -3, 3}, {y, -3, 3}, ColorFunction -> "BlueGreenYellow", PlotLegends -> "Support Vector Machine-RBF", Exclusions -> False], ListPointPlot3D[pt2, PlotStyle -> Directive[Red, PointSize[Large]]]]可能存在的问题 (2)
当目标函数的域由初始配置集和邻域配置生成器定义时,结果取决于所提供的生成器的质量.
f[x_] := Sin[x] - x * Cos[x];
ns[x_] := RandomReal[{x - 0.1, x + 0.1}];bo = BayesianMinimization[f, {0, -3.} -> ns, Method -> Automatic, AssumeDeterministic -> True]p = bo["PredictorFunction"]由于起始的初始配置离全局最小值很“远”,生成器取相对较小的步长,该算法能收敛于局部最小值:
Plot[{f[x], p[x]}, {x, -8, 8}, Exclusions -> False]如果邻域配置生成器的步长”过大“或”过小“,就有可能导致问题:
bo = BayesianMinimization[Norm, Range[2, 5] -> (# ^ 2&), AssumeDeterministic -> True]在这种情况下,生成器在每一步提供一个配置值,该值是前一个配置值的平方,所以该值迅速变得非常庞大,造成概率模型不能正常工作.
文本
Wolfram Research (2016),BayesianMinimization,Wolfram 语言函数,https://reference.wolfram.com/language/ref/BayesianMinimization.html (更新于 2017 年).
CMS
Wolfram 语言. 2016. "BayesianMinimization." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2017. https://reference.wolfram.com/language/ref/BayesianMinimization.html.
APA
Wolfram 语言. (2016). BayesianMinimization. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/BayesianMinimization.html 年
BibTeX
@misc{reference.wolfram_2026_bayesianminimization, author="Wolfram Research", title="{BayesianMinimization}", year="2017", howpublished="\url{https://reference.wolfram.com/language/ref/BayesianMinimization.html}", note=[Accessed: 08-August-2026]}
BibLaTeX
@online{reference.wolfram_2026_bayesianminimization, organization={Wolfram Research}, title={BayesianMinimization}, year={2017}, url={https://reference.wolfram.com/language/ref/BayesianMinimization.html}, note=[Accessed: 08-August-2026]}