深度学习第二章 导数的应用

深度学习与卷积神经网络

        说起深度学习,首先想到的是卷积神经网络、神经元等概念,开始时候由于没有全面的知识体系,借助网上资源,又容易一头扎进细节里,对于它没有一个全面的认知。

        深度学习是实现人工智能的一个领域或学科, 当前,卷积神经网络是深度学习落脚点,抑或是实现方法,通过卷积神经网络可以构建一个数学模型,利用该模型实现对图片、语言的的自动化解析。

深度学习第二章 导数的应用_第1张图片

 

        卷积神经网络构建的数学模型,其构建的模型,需要在横向与纵向进行延伸。

        在横向上:把输入的数据做为方程的输入值,结合需要优化的模型参数,进行数学运算。由于输入数据有多个,于是有多个方程需要计算。为了方便理解与推广,一些资料便把这一个个方程抽像成了神经元,如上图 LayerL1、LayerL2中的各个圆形 。

        在纵向上:怎么丰富一个数学方程的功能或增大方程的表现力,直观的方法,增加方程参数,方程+方程,一个方程的输出做为一个方程输入。在卷积神经网络中也是这样,通过在纵向上引入新方程,便可增加模型表现力。

        深度学习的深度二字,也是卷积神经网络有多层(纵向上多个方程)的体现。上面提到了,一个单独的数据运算抽象成了神经元,多个神经元在横向与纵向上扩充,就可以形成一个拥有特定功能的神经网络 。这也是卷积神经网络名称的由来。(其中卷积运算很多)。

导数的应用

        在学习深度学习过程中,逃不过的一些概念如,导数、梯度、正反向过程等概念,不理解这些概念,便很难深入,即使有丰富的代码工程经验,调通了一些网络模型,也会陷入知其然不知其所以然的境地。

        拿图片分类来讲,一张图片喂给卷积神经网络模型,模型最终输出的是一个标签值,诸如0,1,2 分别代表人、猫、狗。在这期间,模型通过接收图片作为输入(很多个像素值),通过内部的方程运算最终得到一个数(标签值)。导数在这期间发挥的作用,下面的例子会展开。

         先重温下导数的定义:因变量在自变量发生改变时的相对变化率。

        下图方程:y = 1 * x  自变量x 由1变为2,因变量y 也变为2,x 、 y 的变化量都为1,相对变化率也为1.

深度学习第二章 导数的应用_第2张图片

 

         假设现在有一个已知方程:y = kx,y = 100,x=10。那么k等于多少?对于屏幕前的我们来说,口算就可以了。甚至对于计算机来说,用其内置的计算器功能,也能算出来。但今天不这样搞。我们要求计算机像我们一样,自己计算,而不是能过其内置的计算器功能。

        脱离了人工设计好的计算器功能,电脑只能靠猜,虽然是猜但也不能乱猜,这就需要建立一套机制,这次猜大了,下次就猜小点,这次猜小了,下次就猜大点。它不断猜的过程,可以认为是正向过程。这套引导它猜的机制可以认为是反向过程。

        正向过程:假设电脑先猜K的值为2。2*10 =20

        反向过程:20比100要小。小多少呢,小了80,这个80称作误差

        我们的目的是缩小误差,现在用80(误差)做为因变量,x 做为自变量,进行求导,得出结果为8,这个8就是我们可以优化的方向。理想的情况是,直接在K为2的基础上加8,即可得到正确结果。实际情况是在卷积神经网络训练过程中,采用的是小步快走的思想,一次反向只更新一点点。正反向过程多次交替,从而达到目的

梯度

        以上例子是一个一元一次方程,在实际网络中,每一层网络有很多个输入,对应就是多元一次方程,导数也扩展至梯度,但应用思想还是一致的,由反向求导,更新梯度值,逐渐缩小误差。

        

  

        

你可能感兴趣的:(深度学习,深度学习,人工智能)