深度篇——神经网络(三) 网络拓扑与训练神经网络

返回主目录

返回神经网络目录

上一章:深度篇——神经网络(二)  ANN与DNN 和常用激活函数

下一章:深度篇——神经网络(四)  细说 调优神经网络

本小节,细说 网络拓扑与训练神经网络,下一小节细说 调优神经网络

二. ANN 与 DNN

3. 网络拓扑

(1). 单层网络

     

 

(2). 多层网络

     

     多层网络至少有 1 个 hidden 层,也可以有多个 hidden 层。有 bias 值,可以让函数不必一定要经过原点。

 

(3). 无论是 ANN,还是 DNN,网络连接都是全连接。

      output 层的激活函数与 hidden 层的激活函数可以相同,也可以不同,根据需求而定。output 层可以是单值输出,也可以是多值输出。

 

4. 训练神经网络

(1). 训练神经网络的两个阶段

  ①. 前向阶段

        前向阶段即正向传播

        正向传播根据数据集和激活函数,当前的 \large w 值,计算出  loss 损失函数

  ②. 后向阶段

        后向阶段即反向传播

        反向传播利用链式法则对 \large w 进行求导,代入数据集的值,求出梯度 \large g

  ③. 链式法则

        若函数 \large u = \varphi (t), \; v = \psi (t)  在点 \large t 上可导,\large z = f(u, v) 则

            \large \frac{\partial z}{\partial t} = \frac{\partial z}{\partial u} \times \frac{\partial u}{\partial t} + \frac{\partial z}{\partial v} \times \frac{\partial v}{\partial t}

  ④. 栗子

     a. 栗一

         有 \large f(x, y, z) = (x + y) \cdot z,且 \large x = -2, y = 5, z = -4

          解:令 \large q = x + y,则 \large f = q \cdot z

                  正向传播:

                      \large \because x = -2, y = 5, z = -4

                     \large \therefore q = x + y = 3, \;\;\; f = q \cdot z = -12

                  反向传播:

                      \large \frac{\partial f}{\partial q} = z = -4

                      \large \frac{\partial f}{\partial z} = q = 3

                      \large \frac{\partial q}{\partial x} = 1

                     \large \frac{\partial q}{\partial y} = 1

                     \large \frac{\partial f}{\partial x} = \frac{\partial f}{\partial q} \cdot \frac{\partial q}{\partial x} = z \cdot 1 = -4

                     \large \frac{\partial f}{\partial y} = \frac{\partial f}{\partial q} \cdot \frac{\partial q}{\partial y} = z \cdot 1 = -4

                 图解:

                  

 

     b. 栗二  Sigmoid 函数

           有 \large w = (w_{0}, w_{1}, w_{2}) \;\;\;\; x = (x_{0}, x_{1}, x_{2})

           且 \large w_{0} = -3, \; w_{1} = 2, \; w_{2} = -3

                \large x_{0} = 1,\; x_{1} = -1, \; x_{2} = -2

                \large z = wx

                \large g(z) = \frac{1}{1 + e^{-z}}

                \large f(w, x) = \frac{1}{1 + e ^{-(w_{1}x_{1} + w_{2}x_{2} + w_{0}x_{0})}}

           解:令 \large u = w_{1}x_{1}, \;\; v = w_{2}x_{2}

                   正向传播

                      \large f(w, x) = \frac{1}{1 + e^{-(w_{1}x_{1} + w_{2}x_{2} + w_{0}x_{0})}}

                                         \large = \frac{1}{1 + e^{-[2 \times (-1) + (-3) \times (-2) + (-3) \times 1]}}

                                         \large = \frac{1}{1 + e^{-1}}

                                         \large = 0.73

                    反向传播

                        \large \frac{\partial f}{\partial z} = g(z)(1 - g(z)) = 0.20

                       \large \frac{\partial f}{\partial w_{1}} = \frac{\partial f}{\partial z} \cdot \frac{\partial z}{\partial w_{1}} = 0.20 \cdot x_{1} = -0.2

                      \large \frac{\partial f}{\partial w_{2}} = \frac{\partial f}{\partial z} \cdot \frac{\partial z}{\partial w_{2}} = 0.20 \cdot x_{2} = -0.4

                      \large \frac{\partial f}{\partial w_{0}} = \frac{\partial f}{\partial z} \cdot \frac{\partial z}{\partial w_{0}} = 0.20 \cdot x_{0} = 0.2

                   图解:

                      

                        图解这里,没有 \large x_{0} 出现,是因为,\large x_{0} = 1,对 \large w_{0} 的乘积和导数都没影响,所以,可以人为的忽略它。但是,它实际上,是存在的。

 

(2). 梯度下降法

    根据反向传播求得的梯度 \large g,对 \large w 进行更新操作:

           \large w_{t + 1} = w_{t} - \alpha g_{t}

            \large w_{t+1}:为 \large t+1 时刻的 权重值 \large w

            \large w_t:为 \large t 时刻的权重值 \large w

            \large \alpha:为学习率

            \large g_{t}:为 \large t 时刻的梯度 \large g

 

(3). 神经网络的具体流程

    输入:训练集数据

    输出:一组最优解 \large w^{*}

  ①. 随机一组 \large w_{0} (这里的 \large w_{0} 是指 0 时刻 \large w 的值,和上面栗二 的 \large w_{0} 不同)

  ②. 根据当前 \large w_{t} 进行正向传播,求取 \large l(w_{t}) 的损失函数

         \large if \; |l(w_{t} - l(w_{t + 1}))| < \varepsilon :

                 输出(保存) \large w_{t}

         \large else:

                 反向传播求出梯度 \large g_{t},更新 \large w_{t}

                 \large w_{t + 1} = w_{t} - \alpha g_{t}

  ③. 反复迭代 ②,直到输出最优解 \large w^{*}

 

(4). 总结

      训练神经网络其实和单层的梯度下降法的思想是一样的:

          都是先初始化一组 \large w_{0}

          利用当前的 \large w_{t} 进行正向传播求出 \large l(w_{t})

          再根据梯度下降法求出梯度 \large g

          对 \large w 进行更新操作 \large w = w - \alpha g

          反复迭代,直至 \large |l(w_{t} - l(w_{t+1}))| < \varepsilon

          输出一组最优解 \large w^{*}

      只是,单层的梯度下降的导数关系相对简单点,容易求出梯度值 \large g;而神经网络的导数关系复杂,对于链式法则更依赖。用一句话总结神经网络的训练:正向求损失,反向求梯度,往复迭代,求出最优解 \large w^{*}

 

学到这里,已经掌握了ANN 和 DNN 的大体框架了,可以开始训练了。但是,训练是可以训练,可是,也许很难得到较好的 \large w^{*},为了得到这个较好的 \large w^{*},我们还需要对神经网络进行调优。这,也是我接下来为大家分析讲解的,有需要或有兴趣的,请点击下一小节观看。

                

返回主目录

返回神经网络目录

上一章:深度篇——神经网络(二)  ANN与DNN 和常用激活函数

下一章:深度篇——神经网络(四)  细说 调优神经网络

发布了42 篇原创文章 · 获赞 15 · 访问量 2768

猜你喜欢

转载自blog.csdn.net/qq_38299170/article/details/104118921
今日推荐