第八章-神经网络 深度之眼_吴恩达机器学习作业训练营

目录

一,非线性假设

二,神经网络 

2.1 简介

2.2The“One learning algorithm” hypothesis

2.3神经元

2.4 人工神经元

2.5 激活函数

2.6 网络架构

三,前向传播及其向量表示

四,神经网络算法的具体运用

4.1神经网络拟合布尔函数

4.2 多分类神经网络

五,总结


一,非线性假设

当分类问题不能通过简单的 y = ax+b等各特征均为一次项类型的直线决策边界划分时,称为非线性分类问题,如图8-1所示便是一个非线性分类问题。

图8-1 非线性分类问题

虽然该问题较为复杂,但其仍可用一条决策边界来正确分类。可运用已经学过的逻辑回归来解决,但需要使用更多特征以及高次幂的多项式来组成较为复杂的决策边界。如h_{\theta}(x) = g(\theta_{0} +\theta_{1}x_{1} + \theta_{2}x_{2} + \theta_{3}x_{1}^{2} + \theta_{4}x_{2}^{2} + \theta_{5}x_{1} x_{2} + ...... )。逻辑回归理论上确实可以解决任何用一条决策边界来正确分类的问题,但是面对决策边界较为复杂的情况,其有:

                ①需要较多特征。

                ②计算量很大。

                ③容易过拟合等缺点。

进一步,类似语言识别,图像识别等内部有复杂结构的问题运用逻辑回归更难求解,所以引出了本章要学习的神经网络算法。


二,神经网络 

2.1 简介

      神经网络(Neural Network)是一种起源于神经科学的算法,目的是构建能模拟大脑的机器,在20世纪80~90年代该算法非常流行,现在已经成为非常强大的机器学习算法,其有很强的表征能力,理论上三层的神经网络可以以任意精度逼近任意函数。

2.2The“One learning algorithm” hypothesis

      神经科学的研究表明,大脑中存在许多类似的简单神经元,每个神经元都只进行很简单的消息接收,传导以及加工;但组合起来便可完成人类日常生活中听说读写等任何行为。更重要的是,任意神经元区域都可以经过一定程度的训练以相同的方式学习理解到所连接的“传感器”(即器官)所传递的信号,并给与反应,即用一种方法学习所有知识。神经网络算法便基于这是一假设而设计的。

2.3神经元

      大脑中充满了相类似的神经元细胞。与普通细胞一样,神经元有着细胞核以及各类细胞器,但其独有的便是树突和轴突,其中树突是用来接收其他神经元所传递的时序电信号,经过细胞内部的简单加工后,信号再由轴突传递给其他神经元。众多神经元组成的多层神经网络便可产生出人的一切思考和决策。

图8-2 神经元

2.4 人工神经元

       通过对人脑神经元的研究,学者构建出了人工神经元模型。如图8-3,神经元有N+1给输入(图中N=3),x_{0}为偏置单元,值恒为1,输入与神经元相连的边上有对应的权值,表示了该输入对神经元输出的重要性,经过线性组合后可得到中间变量Z,再经过激活函数h(z)变换即可得到神经元的输出。

图8-3 人工神经元

2.5 激活函数

可证明如果激活函数(Activation Function)也是线性函数,那无论神经网络有多复杂依然只能表示线性函数。所以一般激活函数被设置为非线性变化函数,由此来提升神经网络的表征能力,使其能表征任何复杂函数。常采用的激活函数如下:

  1. sigmoid函数(即为逻辑函数)

                                    S(Z) = \frac{1}{1+e^{-Z}}               (公式 8.1.1)

                其导数为:  \frac{\mathrm{d} s(Z)}{\mathrm{d} Z} = \frac {e^{-Z}} {(1+e^{z})^2} = S(Z) * (1-S(Z))      (公式 8.1.2)

     2.tanh函数

                                    tanh(Z) = \frac{e^{Z}-e^{-Z}}{e^{Z}+e^{-Z}}             (公式 8.2.1)

                 其导数为:\frac{\mathrm{d} tanh(Z)}{\mathrm{d} Z} = \frac{ 4 }{e^{Z}+e^{-Z}} = than(Z) * (1-than(Z))   (公式 8.2.2)

     3.relu函数 

                                    relu(Z) = \left\{\begin{matrix} Z, Z >= 0\\ 0, Z < 0 \end{matrix}\right.         (公式 8.3.1)

                 其导数为: \frac{\mathrm{d} relue(Z)}{\mathrm{d} Z} = \left\{\begin{matrix} 1, Z>0 \\ 0, Z < 0 \end{matrix}\right.       (公式 8.3.1)   

                 注: 该函数在Z = 0时导数无定义,具体使用时需要人为定义,一般定义为0。

2.6 网络架构

人工神经网络即为由多层神经元所组成的网络架构,其中层次分为输入层,隐藏层和输出层。隐藏层的层数以及每一层神经元的个数均是可自由调整的,输入层的神经元个数即为特征数再加上一个偏置神经元,输出层一般是一个神经元,当遇到多分类问题时有N个类别即可有N个输出层神经元与其对应。

        神经网络最迷人的特性便是隐藏层能学到没有人为规定的中间特征,不需要人为的筛选特征

图8-4 人工神经网络

 

三,前向传播及其向量表示

          设输入层为 x_{0} = 1,x_{1},x_{2},.......,x_{n},网络第二层的输出为a_{1}^{2},a_{2}^{2},a_{3}^{2},.....,a^{2}_{k},输入层第i个神经元与第二层第j个神经元的边权为\theta^{1}_{ji},则有:

            a^{1}_{1} = g( \theta^{1}_{10} + \theta^{1}_{11}x_{1}+ \theta^{1}_{12}x_{2} +...... + \theta^{1}_{1n}x_{n} )

            a^{1}_{2} = g( \theta^{1}_{20} + \theta^{1}_{21}x_{1}+ \theta^{1}_{22}x_{2} +...... + \theta^{1}_{2n}x_{n} )

            ......

            a^{1}_{k} = g( \theta^{1}_{k0} + \theta^{1}_{k1}x_{1}+ \theta^{1}_{k2}x_{2} +...... + \theta^{1}_{kn}x_{n} )

        即得第二层的输出a_{1}^{2},a_{2}^{2},a_{3}^{2},.....,a^{2}_{k} 。设第L层为a^{L}_{0} = 1, a^{L}_{1} ,a^{L}_{2} ,......,a^{L}_{t},第 L + 1层为a^{L+1}_{0} = 1, a^{L+1}_{1} ,a^{L+1}_{2} ,......,a^{L+1}_{m},第L层中第i个神经元与第L+1层中第j给神经元的边权为\theta^{L}_{ji},则有:

            a^{L}_{1} = g( \theta^{L}_{10} + \theta^{L}_{11}a^{L}_{1}+ \theta^{L}_{12}a^{L}_{2} +...... + \theta^{L}_{1k}a^{L}_{k} )

            a^{L}_{2} = g( \theta^{L}_{20} + \theta^{L}_{21}a^{L}_{1}+ \theta^{L}_{22}a^{L}_{2} +...... + \theta^{L}_{2k}a^{L}_{k} )

            ......

            a^{L+1}_{m} = g( \theta^{L+1}_{m0} + \theta^{L+1}_{m1}a^{L}_{1}+ \theta^{L+1}_{m2}a^{L}_{2} +...... + \theta^{L+1}_{mk}a^{L}_{k} )

        由此方法可逐层推进,直到计算到输出层,即为前向传播算法。

       令 a^{L} =(1, a^{L}_{1} ,a^{L}_{2} ,......,a^{L}_{t}) ^{T},a^{L+1}= (1, a^{L+1}_{1} ,a^{L+1}_{2} ,......,a^{L+1}_{m})^T,\theta ^{L}= \begin{pmatrix} \theta^{L}_{10} &\theta^{L}_{11} &...... &\theta^{L}_{1k} \\ \theta^{L}_{20} &\theta^{L}_{22} & ......&\theta^{L}_{2k} \\ .... & ....& .... &.... \\ \theta^{L}_{m0} &\theta^{L}_{m1} &.... &\theta^{L}_{mk} \end{pmatrix}

      则有前向传播算法的向量表示 a^{L+1} = g( \theta^{L}a^{L})。                   (公式 8.4)

 

四,神经网络算法的具体运用

4.1神经网络拟合布尔函数

     a. 与门 Y = X1 and X2

图8-5 与门

     b.或门 Y = X1 or X2

图8-6 或门

            c.非门 Y = ~X1

图8-7 非门

       等等。

4.2 多分类神经网络

      当需要进行N分类问题时,将神经网络的输出层改为N给神经元即可,每个神经元对应一个类别(二分类任务只需要一个神经元即可),相应的数据的输出值也变为一个N*1维的向量,O = ( 0_{0}, 0_{1},......,0_{N} )^T,每一维即为判断为相应类别的概率,选择概率最大者为最终判定的类别。例如一个四分类问题的输出向量可为y^{i} = (0,1,0,0)^{T},y^{i+1} = (0,0,1,0)^{T}等。

图8-8 多分类神经网络

五,总结

  • 对于解决非线性问题,神经网络有很大的优势。
  • 激活函数能给与神经网络更强大的表征能力,不同的激活函数有不同的特性。
  • 神经网络能主动学习数据特征。
  • 简单的介绍了前向传播算法。
  • 单个神经元即可模拟基本的布尔函数,多分类问题也只需要增加神经元即可很容易的实现。

      

发布了18 篇原创文章 · 获赞 2 · 访问量 723

猜你喜欢

转载自blog.csdn.net/weixin_41542958/article/details/104076357
今日推荐