本文主要对 Tree-structured Parzen Estimator Approach (TPE) 进行介绍
SMBO 算法框架包含一系列优化算法,基本框架如下,而这个框架下的一系列算法的区别主要就在于选取的 surrogate model
M
M
M 以及 评价标准
S
S
S。
这里介绍一种基于这个框架的优化方法,Tree-structured Parzen Estimator Approach (TPE)
TPE
该方法选择的评价标准 S S S为 Expected Improvement (EI),即 f ( x ) f(x) f(x)会小于某个阈值 y ∗ y^* y∗的期望。
E I y ∗ ( x ) = ∫ − ∞ ∞ m a x ( y ∗ − y , 0 ) p ( y ∣ x ) d y EI_{y^*}(x)=\int_{-\infty}^{\infty}max(y^*-y,0)p(y|x)dy EIy∗(x)=∫−∞∞max(y∗−y,0)p(y∣x)dy
TPE 定义如下两个概率密度,
p ( x ∣ y ) = { l ( x ) , y < y ∗ g ( x ) , y ≥ y ∗ p(x|y)=\left\{ \begin{aligned} l(x), \ y<y^*\\ g(x),\ y \geq y^*\\ \end{aligned} \right. p(x∣y)={l(x), y<y∗g(x), y≥y∗
l ( x ) l(x) l(x)为 f ( x i ) f(x^i) f(xi)的值小于 y ∗ y^* y∗对应的 { x i } \{x^i\} {xi}集合的概率密度; g ( x ) g(x) g(x)为 f ( x i ) f(x^i) f(xi)的值大于等于 y ∗ y^* y∗对应的 { x i } \{x^i\} {xi}集合的概率密度。这两个概率密度即为 M M M。
那么 y ∗ y^* y∗如何决定呢?
TPE 采取的方法是,选取在 { y i } \{y^i\} {yi}的一定分位数 γ \gamma γ处的数值作为 y ∗ y^* y∗,即 p ( y < y ∗ ) = γ p(y<y^*)=\gamma p(y<y∗)=γ。
接下来的问题就在于如何求解上面伪代码中第3行的优化问题了。
因为我们无法直接得知 p ( y ∣ x ) p(y|x) p(y∣x),所以使用贝叶斯公式进行如下转换,
E I y ∗ ( x ) = ∫ − ∞ ∞ m a x ( y ∗ − y , 0 ) p ( y ∣ x ) d y = ∫ − ∞ y ∗ m a x ( y ∗ − y , 0 ) p ( y ∣ x ) d y = ∫ − ∞ y ∗ m a x ( y ∗ − y , 0 ) p ( x ∣ y ) p ( y ) p ( x ) d y EI_{y^*}(x)=\int_{-\infty}^{\infty}max(y^*-y,0)p(y|x)dy \\ =\int_{-\infty}^{y^*}max(y^*-y,0)p(y|x)dy \\ = \int_{-\infty}^{y^*}max(y^*-y,0)\frac{p(x|y)p(y)}{p(x)}dy EIy∗(x)=∫−∞∞max(y∗−y,0)p(y∣x)dy=∫−∞y∗max(y∗−y,0)p(y∣x)dy=∫−∞y∗max(y∗−y,0)p(x)p(x∣y)p(y)dy
又因为 γ = p ( y < y ∗ ) \gamma = p(y<y^*) γ=p(y<y∗)并且 p ( x ) = ∫ p ( x ∣ y ) p ( y ) d y = γ l ( x ) + ( 1 − γ ) g ( x ) p(x)=\int p(x|y)p(y)dy=\gamma l(x) + (1-\gamma)g(x) p(x)=∫p(x∣y)p(y)dy=γl(x)+(1−γ)g(x),
所以
E
I
y
∗
(
x
)
=
∫
−
∞
y
∗
m
a
x
(
y
∗
−
y
,
0
)
p
(
x
∣
y
)
p
(
y
)
p
(
x
)
d
y
=
∫
−
∞
y
∗
m
a
x
(
y
∗
−
y
,
0
)
p
(
x
∣
y
)
p
(
y
)
d
y
p
(
x
)
=
l
(
x
)
∗
∫
−
∞
y
∗
m
a
x
(
y
∗
−
y
,
0
)
p
(
y
)
d
y
p
(
x
)
=
l
(
x
)
y
∗
γ
−
l
(
x
)
∫
−
∞
y
∗
p
(
y
)
d
y
γ
l
(
x
)
+
(
1
−
γ
)
g
(
x
)
∝
(
γ
+
g
(
x
)
l
(
x
)
(
1
−
γ
)
)
−
1
EI_{y^*}(x)= \int_{-\infty}^{y^*}max(y^*-y,0)\frac{p(x|y)p(y)}{p(x)}dy \\ = \frac{ \int_{-\infty}^{y^*}max(y^*-y,0)p(x|y)p(y)dy}{p(x)} \\ = \frac{ l(x)*\int_{-\infty}^{y^*}max(y^*-y,0)p(y)dy}{p(x)} \\ = \frac{ l(x)y^*\gamma-l(x)\int_{-\infty}^{y^*}p(y)dy}{\gamma l(x) + (1-\gamma)g(x)} \\ \propto(\gamma+\frac{g(x)}{l(x)}(1-\gamma))^{-1}
EIy∗(x)=∫−∞y∗max(y∗−y,0)p(x)p(x∣y)p(y)dy=p(x)∫−∞y∗max(y∗−y,0)p(x∣y)p(y)dy=p(x)l(x)∗∫−∞y∗max(y∗−y,0)p(y)dy=γl(x)+(1−γ)g(x)l(x)y∗γ−l(x)∫−∞y∗p(y)dy∝(γ+l(x)g(x)(1−γ))−1
所以我们可以看出,通过 l ( x ) l(x) l(x)求出概率较高,通过 g ( x ) g(x) g(x)求出概率较小的 x x x,会使 E I EI EI较大。 l ( x ) l(x) l(x)和 g ( x ) g(x) g(x)用 tree-structured 的形式表示,会比较方便根据 l ( x ) l(x) l(x)进行采样,并计算 g ( x ) / l ( x ) g(x)/l(x) g(x)/l(x)。
上述伪代码在每一轮迭代都返回有最大 E I EI EI的 x ∗ x^* x∗。
参考资料:《Algorithms for Hyper-Parameter Optimization》