【超参数寻优】量子遗传算法(QGA) 超参数寻优的python实现
遗传算法用于模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,种群通过选择、交叉和变异操作使染色体的十进制数值逼近最优参数值。 遗传算法容易陷入局部最优的陷阱。量子遗传算法是将量子计算与遗传算法结合,引入量子编码和量子旋转门,增加染色体变化的可能性。
一、量子编码
1、染色体量子编码
遗传算法中染色体的取值采用二进制编码,只要编码确定,染色体的取值就是确定的,后续的选择、交叉和变异操作都是在已经确定的二进制编码的染色体上进行。为了增加染色体取值的变化,量子遗传算法引入量子编码方法为染色体的取值进行编码。
在量子编码中,染色体每一个二进制位被称为量子比特,量子比特不是确定的0或1,而是0和1的叠加,一个量子比特的状态可以取值0或1,其状态表示为:
∣ φ ⟩ = α ∣ 0 ⟩ + β ∣ 1 ⟩ \left| \varphi \right\rangle = \alpha \left| 0 \right\rangle + \beta \left| 1 \right\rangle ∣φ⟩=α∣0⟩+β∣1⟩
其中 ∣ α ∣ 2 {\left| \alpha \right|^2} ∣α∣2和 ∣ β ∣ 2 {\left| \beta \right|^2} ∣β∣2代表0和1出现的概率,初始染色体取值时,随机选择一个位于 a = ( 0 , 2 π ) a=\left( {0,2\pi } \right) a=(0,2π)的角度,令 α = sin ( a ) \alpha = \sin \left( a \right) α=sin(a), b = cos ( a ) b = \cos \left( a \right) b=cos(a)。
2、量子编码转换为二进制编码
如上所说,量子编码表示染色体二进制位为0或1的概率,但是具体操作还是要现将染色体量子编码转化为二进制取值进而转化为十进制取值。生成一个位于 ( 0 , 1 ) \left( {0,1} \right) (0,1)的随机数,如果该随机数小于 ∣ α ∣ 2 {\left| \alpha \right|^2} ∣α∣2,则该二进制位取值为1,否则取值0。
二、量子进化
1、全干扰交叉
量子遗传算法中,交叉的操作对象是种群中所有染色体取值的比特位角度。交叉是为了增加染色体的变化,防止陷入局部最优的陷阱【参考资料1】。全干扰交叉不同于其它的交叉方法,种群中所有的染色体取值都参与交叉,进一步增加了染色体的变化。假设只有一个参数(一个染色体),种群数为5,染色体长度(染色比特位数)为5,则全干扰交叉前后种群中染色体所有取值分别为:
全干扰交叉前:
染色体取值在种群中的位置 | 第1位 | 第2位 | 第3位 | 第4位 | 第5位 |
---|---|---|---|---|---|
1 | A(1) | A(2) | A(3) | A(4) | A(5) |
2 | B(1) | B(2) | B(3) | B(4) | B(5) |
3 | C(1) | C(2) | C(3) | C(4) | C(5) |
4 | D(1) | D(2) | D(3) | B(4) | D(5) |
5 | E(1) | E(2) | E(3) | E(4) | E(5) |
全干扰交叉后:
染色体取值在种群中的位置 | 第1位 | 第2位 | 第3位 | 第4位 | 第5位 |
---|---|---|---|---|---|
1 | A(1) | E(2) | D(3) | C(4) | B(5) |
2 | B(1) | A(2) | E(3) | D(4) | C(5) |
3 | C(1) | B(2) | A(3) | E(4) | D(5) |
4 | D(1) | C(2) | B(3) | A(4) | E(5) |
5 | E(1) | D(2) | C(3) | B(4) | A(5) |
2、量子变异
量子变异是通过量子旋转门实现的,本质是通过改变种群中所有染色体取值的每一位量子比特的量子角度,使得染色体取值向更好的染色体靠拢。具体方法可参考【资料2】
三、QGA多参数寻优的python实现
完整代码及样本地址:https://github.com/shiluqiang/QGA_python
1、训练模型及待寻优参数
本博文选用的多参数机器学习模型为非线性SVM(参考资料【3】),模型的优化问题为:
min W , e 1 2 ∥ W ∥ 2 + C 2 ∑ i = 1 m e i 2 s . t . y i ( W ⋅ φ ( x i ) + b ) ≥ 1 − e i , i = 1 , ⋯   , m e ≥ 0 , i = 1 , ⋯   , m \begin{array}{l} \mathop {\min }\limits_{W,e} \frac{1}{2}{\left\| W \right\|^2} + \frac{C}{2}\sum\limits_{i = 1}^m { {e_i}^2} \\ s.t.{y_i}\left( {W \cdot \varphi ({x_i}) + b} \right) \ge 1 - {e_i},i = 1, \cdots ,m\\ e \ge 0,i = 1, \cdots ,m \end{array} W,emin21∥W∥2+2Ci=1∑mei2s.t.yi(W⋅φ(xi)+b)≥1−ei,i=1,⋯,me≥0,i=1,⋯,m
通过Lagrange乘数法并转化为对偶问题,优化问题转换为:
min α 1 2 ∑ i m ∑ j m α i α j y i y j K ( x i , x j ) − ∑ i = 1 m α i s . t . ∑ i = 1 m α i y i = 0 0 ≤ α i ≤ C , i = 1 , ⋯   , m \begin{array}{l} \mathop {\min }\limits_\alpha \frac{1}{2}\sum\limits_i^m {\sum\limits_j^m { {\alpha _i}{\alpha _j}{y^i}{y^j}K\left( { {x_i},{x_j}} \right) - \sum\limits_{i = 1}^m { {\alpha _i}} } } \\ s.t.\sum\limits_{i = 1}^m { {\alpha _i}{y^i} = 0} \\ 0 \le {\alpha _i} \le C,i = 1, \cdots ,m \end{array} αmin2