Week 17: 深度学习补遗:Boosting和量子逻辑门

摘要

本周继续跟随李宏毅老师的课程,学习了上周的Adaboost训练分类器后的集成方法,同时学习了量子计算相关进阶内容。对Boosting的一般方法进行了学习,同时对量子逻辑门的基本概念有了一定的了解。

Abstract

This week, I continued following Professor Hung-yi Lee’s course, learning ensemble methods following last week’s study of Adaboost training classifiers, while also covering advanced topics in quantum computing. I studied the general methodology of Boosting and gained a foundational understanding of the basic concepts of quantum logic gates.

1. Adaboost聚合分类器的方法

对于训练出的TTT个分类器f1(x),…,ft(x),…,fT(x)f_1(x),\dots,f_t(x),\dots,f_T(x)f1(x),,ft(x),,fT(x),需要经过下述步骤聚合成一个模型。

  • 统一权重
    • H(x)=sign(∑t=1Tft(x))H(x)=sign(\sum_{t=1}^Tf_t(x))H(x)=sign(t=1Tft(x))
  • 非统一权重
    • H(x)=sign(∑t=1Tαtft(x))H(x)=sign(\sum_{t=1}^T\alpha_tf_t(x))H(x)=sign(t=1Tαtft(x))

即,当H(x)≥0H(x)\geq0H(x)0时,属于类别1;而当H(x)<0H(x)<0H(x)<0时,属于类别2。而其中,αt=ln⁡(1−ϵt)/ϵt\alpha_t=\ln\sqrt{(1-\epsilon_t)/\epsilon_t}αt=ln(1ϵt)/ϵtut+1n=utn×e−yn^ft(xn)αtu^n_{t+1}= u_t^n\times e^{-\hat{y^n}f_t(x^n)\alpha_t}ut+1n=utn×eyn^ft(xn)αt。简单来说,更小的误差会给分类器带来更大的权重。在合并分类器时,统一权重的方法不好,因为分类器有强和弱的分别,用非统一权重的方式更符合直觉。

2. Gradient Boosting方法

Adaboost是Boosting方法中的一个特例,普通的Boosting方法如下。

  • 初始化函数g0(x)=0g_0(x)=0g0(x)=0
  • t=1t=1t=1TTT,找到一个函数ft(x)f_t(x)ft(x)αt\alpha_tαt来提升gt−1(x)g_{t-1}(x)gt1(x)gt−1(x)=∑i=1t−1aifi(x)g_{t-1}(x)=\sum_{i=1}^{t-1}a_if_i(x)gt1(x)=i=1t1aifi(x)
  • gt(x)=gt−1(x)+αtft(x)g_t(x)=g_{t-1}(x)+\alpha_tf_t(x)gt(x)=gt1(x)+αtft(x)
  • 输出Output=H(x)=sign(gT(x))Output=H(x)=sign(g_T(x))Output=H(x)=sign(gT(x))

学习目标是最小化损失L(g)=∑nl(yn^,g(xn))=∑ne−yn^g(xn)L(g)=\sum_nl(\hat{y^n},g(x^n))=\sum_n e^{-\hat{y^n}g(x^n)}L(g)=nl(yn^,g(xn))=neyn^g(xn)
gt(x)=gt−1(x)−η∂L(g)∂g(x)∣gt(x)=gt−1(x) g_t(x)=g_{t-1}(x)-\left.\eta\frac{\partial L(g)}{\partial g(x)}\right|_{g_t(x)=g_{t-1}(x)} gt(x)=gt1(x)ηg(x)L(g)gt(x)=gt1(x)
利用梯度下降最小化损失函数,并且希望−η∂L(g)∂g(x)∣gt(x)=gt−1(x)-\left.\eta\frac{\partial L(g)}{\partial g(x)}\right|_{g_t(x)=g_{t-1}(x)}ηg(x)L(g)gt(x)=gt1(x)αtft(x)\alpha_tf_t(x)αtft(x)同向。

如果把∑ne−yn^g(xn)\sum_n e^{-\hat{y^n}g(x^n)}neyn^g(xn)作为损失函数的话,实际上求解的ftf_tftαt\alpha_tαt就是Adaboost求解的结果,但是Gradient Boost可以修改损失函数,作为更一般的解决方案来解决问题。

3. 量子计算初步

在描述多个粒子的量子态时,可以写作∣01⟩\ket{01}01,也可以写作∣0⟩⊗∣1⟩\ket{0}\otimes\ket{1}01∣0⟩∣1⟩\ket{0}\ket{1}01,并且可以运用分类率把多个量子比特的状态像乘法一样进行运算。
∣S⟩=110∣00⟩+110∣01⟩−25∣10⟩−25∣11⟩∣S⟩=15∣0⟩⊗(12∣0⟩+12∣1⟩)−45∣1⟩⊗(12∣0⟩+12∣1⟩)∣S⟩=(15∣0⟩−45∣1⟩)⊗(12∣0⟩+12∣1⟩) \begin{aligned} \ket{S}&=\sqrt{\frac{1}{10}}\ket{00}+\sqrt{\frac{1}{10}}\ket{01}-\sqrt{\frac{2}{5}}\ket{10}-\sqrt{\frac{2}{5}}\ket{11} \\ \ket{S}&=\sqrt{\frac{1}{5}}\ket{0}\otimes(\sqrt{\frac{1}{2}}\ket{0}+\sqrt{\frac{1}{2}}\ket{1})-\sqrt{\frac{4}{5}}\ket{1}\otimes(\sqrt{\frac{1}{2}}\ket{0}+\sqrt{\frac{1}{2}}\ket{1})\\ \ket{S}&=(\sqrt{\frac{1}{5}}\ket{0}-\sqrt{\frac{4}{5}}\ket{1})\otimes(\sqrt{\frac{1}{2}}\ket{0}+\sqrt{\frac{1}{2}}\ket{1}) \end{aligned} SSS=10100+1010152105211=510(210+211)541(210+211)=(510541)(210+211)
因此,两个粒子的量子态就可以模拟四个维度上的空间的概率分布,即nnn个电子就可以模拟2n2^n2n个维度上的概率分布,通常来说,需要记录这么多概率的数字,需要2n2^n2n个单元。但实际上nnn个量子比特并不能完全替代2n2^n2n个经典比特,因为量子比特实际上并没有“存储”概率分布的数字,无法输出单一维度的概率,我们能做的只有测量,并且以本征态系数平方的形式输出。

4. 量子逻辑门

量子逻辑门对比经典逻辑门的一个显著区别是,经典逻辑门可以输出数量和输入数量不同,但量子逻辑门的输出数量和输入数量永远一致。

4.1 Hadamard门

哈达玛门对输入做了一个态向量的反射, 关于与xxx轴夹角为22.5度的一条对称轴进行输入的反射,任何输入的量子态都会被作用到反射之后的位置上。
∣0⟩→Hadamard→∣0⟩+∣1⟩2∣1⟩→Hadamard→∣0⟩−∣1⟩2 \ket{0}\to Hadamard\to \frac{\ket{0}+\ket{1}}{\sqrt{2}} \\ \ket{1}\to Hadamard\to \frac{\ket{0}-\ket{1}}{\sqrt{2}} \\ 0Hadamard20+11Hadamard201

4.2 CNOT门

CNOT门由两个输入构成,分别是控制位和目标位:假如控制位为0,那么直接将目标位输出;假如控制位为1,那么就翻转目标位。
∣0⟩⊗∣1⟩→CNOT→∣0⟩⊗∣1⟩∣1⟩⊗∣0⟩→CNOT→∣1⟩⊗∣1⟩ \ket{0}\otimes\ket{1}\to CNOT \to \ket{0}\otimes\ket{1} \\ \ket{1}\otimes\ket{0}\to CNOT \to \ket{1}\otimes\ket{1} \\ 01CNOT0110CNOT11
量子逻辑门和经典逻辑门的一个最大的本质区别是,量子逻辑门的每个输入实际上是一个叠加态,对每一个输入的处理实际上是将其每一个本征态分别操作,变为其新的本征态,再进行叠加
a∣00⟩+b∣01⟩+c∣10⟩+d∣11⟩→CNOT→a∣00⟩+b∣01⟩+d∣10⟩+c∣11⟩ a\ket{00}+b\ket{01}+c\ket{10}+d\ket{11}\to CNOT\to a\ket{00}+b\ket{01}+d\ket{10}+c\ket{11} a00+b01+c10+d11CNOTa00+b01+d10+c11
这个特性叫做量子门的线性叠加,量子门必须保证输出的系数是来自某些输入的系数的线性叠加,同时,输入和输出所有系数的平方和保持为1,数学上称为幺正变换 。

总结

本周对Boosting相关内容进行了收尾,对Adaboost训练出的多个分类器进行聚合的方法进行了了解,同时对Boosting的一般化方法Gradient Boosting进行了学习。最后,对量子逻辑门的概念进行了了解,其区别与普通逻辑门一系列特性,预计下周继续推进量子计算相关学习,在深度学习方面继续学习Stacking相关知识。

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐