目录

  • 一、参考
  • 二、线性搜索与信赖域算法区别
  • 三、信赖域算法
  • 四、信赖域子问题的求解
    • 1. 精确求解方法
    • 2. 折线方法(Dogleg Method 狗腿法)

一、参考

《数值最优化算法与理论》

二、线性搜索与信赖域算法区别

数值最优化—无约束问题最速下降法和Newton法 和 数值最优化—无约束问题共轭梯度法 中介绍的求解无约束问题的几类算法的共同点是基于方向和步长确定一个下降方向d(k)d^{(k)}d(k),然后从x(k)x^{(k)}x(k)出发,沿方向d(k)d^{(k)}d(k)进行线性搜索确定步长αk\alpha _kαk​,得到下一个迭代点x(k+1)=x(k)+αkd(k)x^{(k+1)} = x^{(k)} + \alpha _kd^{(k)}x(k+1)=x(k)+αk​d(k)。称这类算法为线性搜索算法

下面介绍求解无约束问题:
minf(x),(x∈Rn)min \ f(x), \quad (x \in R^n) min f(x),(x∈Rn)
的另一类算法—信赖域算法。信赖域算法的基本思想是:在当前迭代点x(k)x^{(k)}x(k)的附近用一个简单函数近似目标函数fff。用该近似函数在x(k)x^{(k)}x(k)的某个邻域内的极小值点作为下一个迭代点。与线性搜索型算法比较,信赖域算法在每次迭代同时确定搜索方向和步长。

三、信赖域算法

由于信赖域方法用fff的某个近似函数在x(k)x^{(k)}x(k)邻域的极小值点作为下一个迭代点,因此,设计信赖域算法需要考虑如下相关问题:

  1. 目标函数fff的(简单)近似形式。
  2. 点x(k)x^{(k)}x(k)的邻域(称为信赖域)大小的确定。
  3. 函数值序列的下降性检测。
  4. 近似问题(称为信赖域子问题)的求解。

考虑到一般非线性函数在任何点的邻域内都可以用二次函数近似,而且二次函数的极小值问题相对容易求解。因此,在信赖域算法中,通常我们采用二次函数作为目标函数fff的近似,用该二次函数在x(k)x^{(k)}x(k)某邻域内的极小值点作为下一个迭代点,即x(k+1)x^{(k+1)}x(k+1)为下面问题的解:
minf(x(k))+∇f(x(k))T(x−x(k))+12(x−x(k))TBk(x−x(k))min \ f(x^{(k)}) + \nabla f(x^{(k)})^T (x - x^{(k)}) + \frac 1 2 (x - x^{(k)})^T B_k(x - x^{(k)}) min f(x(k))+∇f(x(k))T(x−x(k))+21​(x−x(k))TBk​(x−x(k))s.t.∣∣x−x(k)∣∣≤Δks.t. \ ||x-x^{(k)}|| \le \Delta _k s.t. ∣∣x−x(k)∣∣≤Δk​
其中,Bk∈Rn×nB_k \in R^{n \times n}Bk​∈Rn×n是fff在xxx处的Hessian矩阵或其近似,参数Δk>0\Delta _k > 0Δk​>0控制x(k)x^{(k)}x(k)的邻域大小。若令d=x−x(k)d = x - x^{(k)}d=x−x(k),则上面的问题可改写为如下等价的二次函数极小值问题
minf(x(k))+∇f(x(k))Td+12dTBkd=△qk(d)min \ f(x^{(k)}) + \nabla f(x^{(k)})^T d + \frac 1 2 d^T B_kd \overset {\bigtriangleup } {=} q_k (d) min f(x(k))+∇f(x(k))Td+21​dTBk​d=△qk​(d)s.t.∣∣d∣∣≤Δks.t. \ ||d|| \le \Delta _k s.t. ∣∣d∣∣≤Δk​
设d(k)d^{(k)}d(k)是问题的解。则下一个迭代点为x(k+1)=x(k)+d(k)x^{(k+1)} = x^{(k)} + d^{(k)}x(k+1)=x(k)+d(k)。问题中的可行域:
D={d∈Rn∣∣∣d∣∣≤Δk}D = \{d \in R^n \ | \ ||d|| \le \Delta _k \} D={d∈Rn ∣ ∣∣d∣∣≤Δk​}
称为信赖域,参数Δ>0\Delta >0Δ>0称为信赖域半径,等价的二次函数极小值问题称为信赖域子问题,其中范数可任意选取。本章采用Euclid范数。

信赖域子问题是仅有一个不等式约束的二次函数极小值问题。

由函数的二阶Taylor展开可知,当Δk\Delta _kΔk​充分小时,二次函数qqq在信赖域DDD中是fff的一个很好的近似。另一方面,当fff本身是一个二次函数或近似与二次函数时,qqq可能在某一个较大范围内也是fff的一个很好的近似。如何确定信赖域半径是信赖域算法的一个重要环节。一方面,我们希望在DDD中qqq与fff的近似程度好,另一方面希望信赖域半径尽可能大。为了合理确定信赖域半径,我们定义ΔFk\Delta F_kΔFk​为fff在第kkk步的实际下降量。即:
Δfk=f(x(k))−f(x(k)+d(k))\Delta f_k = f(x^{(k)}) - f(x^{(k)} + d^{(k)}) Δfk​=f(x(k))−f(x(k)+d(k))
其中,d(k)d^{(k)}d(k)是信赖域子问题的解。令Δqk\Delta _{q_k}Δqk​​为对应的预测下降量,即:
Δqk=f(x(k))−qk(d(k))\Delta _{q_k} = f(x^{(k)}) - q_k(d^{(k)}) Δqk​​=f(x(k))−qk​(d(k))
注意到rkr_krk​从某种程度反映了二次函数qk(d(k))q_k(d^{(k)})qk​(d(k))与目标函数f(x(k)+d(k))f(x^{(k)} + d^{(k)})f(x(k)+d(k))的近似程度。若rkr_krk​接近于1,则可认为二次函数qk(d(k))q_k(d^{(k)})qk​(d(k))在信赖域DDD上与目标函数f(x(k)+d(k))f(x^{(k)} + d^{(k)})f(x(k)+d(k))的近似程度很好。反之,若rkr_krk​离1较远,我们认为qk(d(k))q_k(d^{(k)})qk​(d(k))在信赖域DDD上与目标函数f(x(k)+d(k))f(x^{(k)} + d^{(k)})f(x(k)+d(k))的近似程度不好。基于上述观察,我们可以用rkr_krk​与1的近似程度作为对信赖域半径是否合适的准则。即,可通过如下方式调整信赖域半径

给定常数η,η1,η2∈(0,1)\eta , \eta _1, \eta _2 \in (0,1)η,η1​,η2​∈(0,1)满足η<η1<η2\eta < \eta _1< \eta _2η<η1​<η2​(一般地,η\etaη接近于或等于0,η2\eta _2η2​接近于1,如η2=34\eta _2=\frac 3 4η2​=43​)。

① 若rk≥η2r_k \ge \eta _2rk​≥η2​,我们可认为qqq在DDD中是fff的一个很好的近似,或者说得到一个成功的迭代点x(k+1)=x(k)+d(k)x^{(k+1)} = x^{(k)} + d^{(k)}x(k+1)=x(k)+d(k)。此时,qqq有可能在一个更大一点的区域也是fff的一个很好的近似。因此,我们可将信赖域半径扩大,即令Δk+1>Δk\Delta _{k+1} > \Delta _kΔk+1​>Δk​。

② 若η1<rk<η2\eta _1 < r_k <\eta _2η1​<rk​<η2​,即qqq在DDD中是fff的一个好的近似,或者说得到一个好的迭代点x(k+1)=x(k)+d(k)x^{(k+1)} = x^{(k)} + d^{(k)}x(k+1)=x(k)+d(k)。此时可以保持信赖域半径不变,即令Δk+1=Δk\Delta _{k+1} = \Delta _kΔk+1​=Δk​(为了下一次得到一个更成功的点,也可减少信赖域半径,即令Δk+1<Δk\Delta _{k+1} < \Delta _kΔk+1​<Δk​)。

③ 若rk≤ηr_k \le \etark​≤η,即qqq在DDD中是fff的一个不好的近似,或者说得到一个不成功的迭代点x(k+1)=x(k)+d(k)x^{(k+1)} = x^{(k)} + d^{(k)}x(k+1)=x(k)+d(k)。说明信赖域半径过大,此时需要减少信赖域半径,即令Δk+1<Δk\Delta _{k+1} < \Delta _kΔk+1​<Δk​。

在上面的基础上,给出求解无约束问题的信赖域算法如下:

  1. (初始化)取初始点x(0)∈Rn,Δˉ>0,Δ0∈(0,Δˉ),η∈[0,14)x^{(0)} \in R^n,\bar \Delta >0, \Delta _0 \in (0,\bar \Delta),\eta \in [0, \frac 1 4)x(0)∈Rn,Δˉ>0,Δ0​∈(0,Δˉ),η∈[0,41​),精度ϵ>0\epsilon >0ϵ>0。令k=0k=0k=0。
  2. (收敛性检测)若∣∣∇f(x(k))∣∣≤ϵ||\nabla f(x^{(k)})|| \le \epsilon∣∣∇f(x(k))∣∣≤ϵ,则算法终止。得问题的解x(k)x^{(k)}x(k)。否则,转2。
  3. (子问题求解)解信赖域子问题得解d(k)d^{(k)}d(k)。
  4. (信赖域修正)计算rkr_krk​。
    若rk>34r_k>\frac 3 4rk​>43​,则令Δk+1=min{2Δk,Δˉ}\Delta _{k+1} = min\{2\Delta _k,\bar \Delta \}Δk+1​=min{2Δk​,Δˉ}。
    若14<rk<34\frac 1 4 < r_k<\frac 3 441​<rk​<43​,则令Δk+1=Δk\Delta _{k+1} = \Delta _kΔk+1​=Δk​。
    若η<rk<14\eta < r_k < \frac 1 4η<rk​<41​,则令Δk+1=12Δk\Delta _{k+1} = \frac 1 2 \Delta _kΔk+1​=21​Δk​。
  5. (可接受检测)若rk≤ηr_k \le \etark​≤η,令x(k+1)=x(k),k=k+1x^{(k+1)} = x^{(k)},k=k+1x(k+1)=x(k),k=k+1,转2;否则令x(k+1)=x(k)+d(k),k=k+1x^{(k+1)} = x^{(k)} + d^{(k)},k=k+1x(k+1)=x(k)+d(k),k=k+1。转1。

注:算法中的常数1/4,3/4,1/2是根据经验选取的。实际计算时,可根据问题对它们进行调整。

四、信赖域子问题的求解

信赖域算法中子问题的求解是算法实现的关键。子问题是一个目标为二次函数的约束优化问题。下面介绍采用Euclid范数时,精确求解与非精确求解子问题的特殊算法。为了方便起见,省略迭代指标,用x∈Rnx \in R^nx∈Rn表示当前迭代点,此时信赖域子问题为:
{minf(x)+∇f(x)Td+12dTBd=△qk(d)s.t.∣∣d∣∣≤Δ\begin{cases} min \ f(x) +\nabla f(x)^T d + \frac 1 2 d^TBd \overset {\bigtriangleup } {=} q_k (d) \\\\ s.t. \ ||d|| \le \Delta \end{cases} ⎩⎪⎨⎪⎧​min f(x)+∇f(x)Td+21​dTBd=△qk​(d)s.t. ∣∣d∣∣≤Δ​

1. 精确求解方法

不难发现,若BBB正定且dˉ=△−B−1∇f(x)\bar d \overset {\bigtriangleup } {=} -B^{-1} \nabla f(x)dˉ=△−B−1∇f(x)满足∣∣d∣∣≤Δ||d|| \le \Delta∣∣d∣∣≤Δ,即无约束问题:
minf(x)+∇f(x)Td+12dTBdmin \ f(x) +\nabla f(x)^T d + \frac 1 2 d^TBd min f(x)+∇f(x)Td+21​dTBd
的解是信赖域子问题的可行点,则dˉ\bar ddˉ是信赖域子问题的解。

定理:d∗d^*d∗是信赖域子问题的全局最优解当且仅当d∗d^*d∗可行,存在常数λ∗≥0\lambda ^* \ge 0λ∗≥0满足B+λ∗IB+\lambda ^*IB+λ∗I半正定,且有:
{(B+λ∗I)d∗=−∇f(x)λ∗(Δ−∣∣d∗∣∣)=0\begin{cases} (B+\lambda ^* I) d^* = - \nabla f(x) \\\\ \lambda ^*(\Delta - ||d^*||) = 0 \end{cases} ⎩⎪⎨⎪⎧​(B+λ∗I)d∗=−∇f(x)λ∗(Δ−∣∣d∗∣∣)=0​
利用此定理构造求解子问题的算法。设矩阵B+λ∗IB+\lambda ^*IB+λ∗I正定。若线性方程组:
Bd+∇f(x)=0Bd+\nabla f(x) = 0 Bd+∇f(x)=0
的解dˉ\bar ddˉ满足∣∣dˉ∣∣≤Δ||\bar d|| \le \Delta∣∣dˉ∣∣≤Δ,则d∗=dˉd^*=\bar dd∗=dˉ。此情形对应于λ∗=0\lambda ^* = 0λ∗=0且BBB正定。否则,必有λ∗>0\lambda ^* > 0λ∗>0。此时求解信赖域子问题等价于解如下方程组:
{(B+λI)d=−∇f(x)∣∣d∣∣=Δ\begin{cases} (B+\lambda I) d = - \nabla f(x) \\\\ ||d|| = \Delta \end{cases} ⎩⎪⎨⎪⎧​(B+λI)d=−∇f(x)∣∣d∣∣=Δ​
取λ>0\lambda >0λ>0充分大使得B+λIB+\lambda IB+λI正定,可通过解如下关于λ\lambdaλ的一元非线性方程:
ϕ1(λ)=∣∣(B+λI)−1∇f(x)∣∣−Δ=0\phi _1(\lambda) = ||(B+\lambda I)^{-1} \nabla f(x)|| - \Delta = 0 ϕ1​(λ)=∣∣(B+λI)−1∇f(x)∣∣−Δ=0
得到解λ∗\lambda ^*λ∗。然后得子问题的解d∗=d(λ∗)=−(B+λI)−1∇f(x)d^* = d(\lambda ^*) = -(B+\lambda I)^{-1} \nabla f(x)d∗=d(λ∗)=−(B+λI)−1∇f(x)。

基于此求信赖域子问题的方法称为子问题的精确解法。利用矩阵的对角化分解可知,ϕ1(λ)\phi _1(\lambda)ϕ1​(λ)是非线性程度高的系统。为了简化方程的计算,定义:
ϕ2(λ)=1Δ−1∣∣d(λ)∣∣\phi_2(\lambda) = \frac {1} {\Delta} - \frac 1 {||d(\lambda)||} ϕ2​(λ)=Δ1​−∣∣d(λ)∣∣1​
ϕ2(λ)\phi_2(\lambda)ϕ2​(λ)近似为线性方程系统。该方程可应用牛顿迭代法建立其迭代计算式为:
λl+1=λl−ϕ2(λl)ϕ2′(λl)=λl+(∣∣dl∣∣∣∣ql∣∣)2(∣∣dl∣∣−ΔΔ)\lambda _{l+1} = \lambda _l - \frac {\phi _2 (\lambda _l)} {\phi _2 ' (\lambda _l)} = \lambda _l + (\frac {||d_l||} {||q_l||})^2 (\frac {||d_l|| - \Delta} {\Delta}) λl+1​=λl​−ϕ2′​(λl​)ϕ2​(λl​)​=λl​+(∣∣ql​∣∣∣∣dl​∣∣​)2(Δ∣∣dl​∣∣−Δ​)
根据如上分析可建立信赖域子问题精确求解的计算步骤如下:

  1. 给定λ0>0,Δ>0\lambda _0 >0, \Delta > 0λ0​>0,Δ>0。令l=0l=0l=0。
  2. 若λl\lambda _lλl​是问题的解,则解线性问题得解d(l)d^{(l)}d(l)。否则,转2。
  3. 作Cholesky(乔列斯基)分解B+λ(l)I=RTRB+\lambda ^{(l)}I = R^TRB+λ(l)I=RTR。解方程组:
    RTRdl=−∇f(x),RTql=dlR^TRd_l = -\nabla f(x),\ R^Tq_l = d_l RTRdl​=−∇f(x), RTql​=dl​
    得解dl,qld_l,q_ldl​,ql​。
  4. λl+1=λl+(∣∣dl∣∣∣∣ql∣∣)2(∣∣dl∣∣−ΔΔ)\lambda _{l+1} = \lambda _l + (\frac {||d_l||} {||q_l||})^2 (\frac {||d_l|| - \Delta} {\Delta})λl+1​=λl​+(∣∣ql​∣∣∣∣dl​∣∣​)2(Δ∣∣dl​∣∣−Δ​)
  5. 令l=l+1l=l+1l=l+1。转1。

2. 折线方法(Dogleg Method 狗腿法)

上面介绍的信赖域子问题精确求解计算量较大。而且当B+λ∗IB+\lambda ^* IB+λ∗I非正定时,子问题的求解较为复杂。

我们考虑非精确求解子问题,下面我们介绍非精确求解信赖域子问题的折线方法。有信赖域子问题知其解d∗d^*d∗是信赖域半径Δ\DeltaΔ的函数,记为d∗(Δ)d^*(\Delta)d∗(Δ)。几何上为一条曲线,称其为最优解曲线。如下图:

折线法的思想是用一条折线代替精确解曲线d∗(Δ)d^*(\Delta)d∗(Δ)。为了构造合适的折线,首先分析子问题解的特性。若BBB正定且∣∣−B−1∇f(x)∣∣≤Δ||-B^{-1} \nabla f(x)|| \le \Delta∣∣−B−1∇f(x)∣∣≤Δ,则精确解为:
d∗(Δ)=−b−1∇f(x)=△dBd^*(\Delta) = -b^{-1} \nabla f(x) \overset {\bigtriangleup } {=} d^B d∗(Δ)=−b−1∇f(x)=△dB
否则,我们可作如下分析。当Δ\DeltaΔ很小时,信赖域子问题中目标函数的二次项的作用不大。因此,可用函数f(x)f(x)f(x)的一次(线性)近似,此时约束在∣∣d∣∣≤Δ||d|| \le \Delta∣∣d∣∣≤Δ下,子问题的近似解为d∗(Δ)≈−Δ∇f(x)∣∣∇f(x)∣∣d^*(\Delta) \approx - \Delta \frac {\nabla f(x)} {||\nabla f(x)||}d∗(Δ)≈−Δ∣∣∇f(x)∣∣∇f(x)​。这显示可采用最速下降方向作为解曲线的近似。基于最速下降的考虑和省略信赖域约束,我们取子问题解的形式为d=−τ∇f(x)d = -\tau \nabla f(x)d=−τ∇f(x)。通过目标函数极小化可确定子问题沿最速下降方向的解为:
dU=−∇f(x)Tf(x)∇f(x)TB∇f(x)∇f(x)d^U = - \frac {\nabla f(x)^Tf(x)} {\nabla f(x)^TB\nabla f(x)} \nabla f(x) dU=−∇f(x)TB∇f(x)∇f(x)Tf(x)​∇f(x)
另一方面,为了得到收敛性能更好的搜索方向,我们可以选择牛顿方向dBd^BdB。由两方向dUd^UdU和dBd^BdB可分段构造折线搜索方向(如上图)。记由上图方式构造出的折线为d~(τ)\tilde d(\tau)d~(τ),数学上的定义为:
d~(τ)={τdU,0≤τ≤1dU+(τ−1)(dB−dU),1≤τ≤2\tilde d(\tau) = \left\{ \begin{aligned} & \tau d^U ,& 0 \le \tau \le 1\\\\ & d^U + (\tau -1)(d^B - d^U), &1 \le \tau \le 2 \end{aligned} \right. d~(τ)=⎩⎪⎨⎪⎧​​τdU,dU+(τ−1)(dB−dU),​0≤τ≤11≤τ≤2​
上式说明当τ\tauτ较小时方向选用最速下降方向dUd^UdU,否则取dUd^UdU和dBd^BdB的组合方向。

数值最优化—无约束问题信赖域算法相关推荐

  1. 信赖域算法-The Dogleg Method(含例题及Python实现)

    文章目录 前言 一.What is The Dogleg Method? 信赖域算法原理 Dogleg Method 方法 信赖域算法流程 二.How to use The Dogleg Method ...

  2. 基于堆栈二值化自动编码器和二值化神经的无约束人脸表情识别算法(An efficient unconstrained FERa based on BAEs and BNN)

    摘要(abstract) 虽然深度学习在许多模式识别任务中都取得了良好的效果,但对于含有大量参数集.标记数据有限的深度网络,过拟合问题仍然是一个严重的问题.在这项工作中,二进制自动编码器(BAEs)和 ...

  3. 数值优化 Ch.4 信赖域方法

    目录 信赖域方法 信赖域方法概述 基于柯西点的算法 柯西点 为什么要改良柯西法 狗腿法 二维子空间极小化 全局收敛性 柯西点收益 平稳点的收敛性 子问题的迭代解法 困难的情况 定理4.1的证明 基于近 ...

  4. 【优化算法】信赖域折线(狗腿)法(Trust Region Dogleg Method)

    出发点 刘红英老师的最优化课程需要用到信赖域方法,求解问题并画图,网上找到的中文内容的矩阵实验室(MATLAB)信赖域折线(狗腿)法求解代码,都很繁琐,而且心理感觉不可靠(手动狗头),而且我没心思一点 ...

  5. 数学知识-- 信赖域(Trust Region)算法是怎么一回事

    信赖域(Trust Region)算法是怎么一回事 转载自: https://www.codelast.com/原创信赖域trust-region算法是怎么一回事/ 如果你关心最优化(Optimiza ...

  6. 信赖域(Trust Region)算法

    文章来源:http://www.codelast.com/ 如果你关心最优化(Optimization),你一定听说过一类叫作"信赖域(Trust Region)"的算法.在本文中 ...

  7. 信赖域(Trust Region)算法和L-M算法

    近期在将样条数据进行公式化. 这时候发现多项高斯函数函数很好用,里面发现了两种优化高斯函数参数的算法一种是信赖域算法(Trust Region),另一种是L-M算法(Levenberg-Marquad ...

  8. 迭代求解最优化问题——信赖域方法

    信赖域方法 前面提到了Line Search算法分为两步,首先确定方向,然后确定步长,实际上是假设近似模型在某一方向上可以较好的代表真实模型.Trust region算法则在此基础上,假设在一个选定的 ...

  9. 优化工具包—无约束非线性优化求解器(fminsearch)

    优化工具包-无约束非线性优化求解器(fminsearch) 原创不易,路过的各位大佬请点个赞 室内定位/导航/优化技术探讨:WX: ZB823618313 目录 优化工具包-无约束非线性优化求解器(f ...

最新文章

  1. 备战金九银十,阿里P8师兄指导完整攻略(附:学习资料+面试宝典+项目实战笔记)
  2. 【tensorflow】 GPU 显存分配设置
  3. javaweb学习总结(十五):JSP基础语法
  4. Juniper SRX防火墙批量导入set格式配置
  5. php cookie 加密解密,php实现cookie加密的方法
  6. SpringBoot集成Cache缓存(Redis缓存,RedisTemplate方式)
  7. (3)FPGA面试题2倍分频
  8. #define与const定义常量的区别
  9. 阿里云轻量应用服务器/腾讯云轻量应用服务器如何安装宝塔面板?
  10. windows下用notepad++配置go语言开发环境
  11. SpringBoot +自定义dao框架 自定义注解管理多数据源与事务
  12. Itunes恢复备份失败解决办法(C盘空间不足)
  13. CPU纯软件全虚拟化技术
  14. 栈evaluate-reverse-polish-notation-leetcode练习题
  15. win计算机名长度限制,Win7,Server 2012文件名过长无法删除解决方案
  16. CentOS配置Jenkins+Android+fir+pyger(蒲公英)+qiniu(七牛)
  17. 人机交互技术课程实验报告《社交点评APP》系统移动界面分析报告
  18. 让企业订单交期满足率提升3.5倍,新一代APS(高级生产计划与排程系统)是什么样的?
  19. 服务器机器hba卡型号,服务器hba卡需要配置什么
  20. 关于DWA导致的程序崩溃或挂死问题

热门文章

  1. cesium实现天地图加载调用
  2. 2021011206贾天乐实验四
  3. python之九九乘法表打印功能深入讲解
  4. linux添加一个nand设备,[教程]使用buildroot完全自定义自己的embedded linux系统(nand)...
  5. ILSVRC 2015-VID数据集下载解压记录
  6. JS方法参数设置为默认值的几种方式
  7. 2017第3周二假期里该做的事
  8. 聚类算法之层次聚类方法
  9. java调用c/c++
  10. Intro to Deep Learning Backpropagation 深度学习模型介绍及反向传播算法推导详解