深度学习入门篇之反向传播

306 阅读5分钟

在这里我想分享一下我对深度学习的理解。如果说人工智能是人们通向新生活的钥匙,那么深度学习就是再度开启人工智能的新钥匙。

什么是深度学习

人工智能的体现是什么,就是我们给他一段语音,它输出一段识别的文字,或者是一张图片,它输出识别包含的内容,又或者是类似与ChatGpt,我们输入一个问题,它输入一个文字的回答。那么人工智能就可以简单理解为输入x,机器反馈给我们的y的过程。那么深度学习是什么,深度学习是一种机器学习的技术,机器学习是人工智能的一种实现方法。

其实深度学习已经有数十年的历史,它并不是一个新算法,只是局限于时代的数据量和GPU计算力没能一鸣惊人。就像是钢铁侠父亲所说的,终于一天你会解开它,现在是深度学习大展身手的时代了。下面结合我的理解讲讲深度学习的实现方式。

b05e8127-30ff-4f58-ac7d-a3bd9d0962ed-3157074.jpg

深度学习的实现方式就是通过一系列的参数与输入的X进行计算,最终计算输出结果Y。如下图就是一个多层的神经网络。

image.png

举个栗子

我脑海中深度学习实例化出来的是一个落珠模型,如下图,我输入了一张图片X,图片的参数会与神经网络里的参数进行计算,最终得到图片的颜色结果Y

image.png 计算的过程就像是落珠与橙色小球的碰撞过程,经过一系列碰撞改变小球的下落角度,最终小球会从一个出口Y中出去。可以看到小球最终从蓝色的出口出去的,并不是我们想要的正确答案,那是因为我这里举例的是一个还没有经过良好训练的神经网络模型,仅是一个初始化的模型。

image.png 那么如何训练一个神经网络使它具备识别图片颜色的能力呢?深度学习的做法是通过反向传播加梯度下降的方式来改变神经网络中的参数,也就是改变橙色小球的形状或者位置,从而改变小球的下落轨迹,让不同的小球准确的下落对应的出口。(反向传播依赖于损失函数的差值求导,也就是正确的值和输出的值差距,这个差值是改变橙色小球形状和位置的关键。)

image.png 经过多次的训练迭代,橙色小球的位置的形状得到改变,拥有了可以确定红色小球运动轨迹到正确的出口的能力,那这个神经网络模型就具备了识别红色图片的功能。

image.png 神经网络的训练依赖大量的数据,红色小球的路线可能存在非常多种,并且也会存在不同颜色的小球,模型需要尽可能多、覆盖度广的样例去改变神经网络中的参数,使其能够在不同颜色、不同轨迹依旧具备识别图片颜色的功能。

导出专用 (5).jpg

讲讲理论

那么我们输入x,它是如何输出y?假定我们有一个函数 y = wx+b,那么w和b就可以理解为是一个深度学习的神经网络,我们输入一个x与w相乘后再加上常量b就可以得到一个固定的答案。我们输入2,得到的是3,输入4,得到的是5,那么我们就可以推算出这个这个函数是 y = x+1,当然这是在y是一个直线的函数条件下,当w是多维的情况下,例如 y = w1x+w2x+b,我们就难以推算了。

image.png

当我们不确定w的维度时我们就需要反向传播和梯度下降来推算它了。我们要做的就是根据X,Y推算出W的值。

导出专用 (7).jpg

首先介绍下正向传播,就是输入x求y的值的过程。反向传播就是根据Y和X求W的过程。这个做法就是我们初始化w和b的值,输入到函数y中我们会得到机器输出的值y',拿y'和正确的值y做损失计算(也就是计算y和y'相差多少),通过求导损失函数加上梯度下降来修正w和b的值,从而得到一个正确的函数y。

再举个栗子

我们举个例子,假设神经网络是y = wx+b ,我们初始化为 y = x+1,也就是w=1,b=1。我们选用的损失函数为 L = (y'-y)²,我们对dy求导可得dy' = dL/dy' = 2y'-2y,那么dw = dL/dy'* dy/dw = x*(2y'-2y),我们要做的就是通过dw来更新w让函数y能够计算正确。

  1. 我们输入x = 1,我们初始化的函数会得到y = 2,也就是点(1,2),假设正确的输出应该是y = 4,正确的神经网络应该过(1,4)这个点。损失值是L = 4。

image.png

  1. 我们按照上述的流程,计算出dw = -4,再用梯度下降法来优化一个参数w(可以理解为w = w - dw),当学习率α为0.25时,w将更新为2,函数将更新为 y = 2x+1,这样一个求导更新的过程就完成了一次神经网络优化,损失值变成了L = 1。再次迭代可以得到 dw = -2,w = 2.5,函数更新为y = 2.5x +1,损失值L = 0.25。随着我们初始化的神经网络不断的正向传播后再反向传播,也就是一次次的更新迭代,输出值和正确的值相差越来越小,最终得到一个趋于完美的参数w。

image.png

  1. w更新过程类似于牛顿迭代法,损失函数的差值会像切线的斜率一样越来越小,越到后面更新的粒度dw也会越小。

image.png

以上就是深度学习的反向传播学习总结了,感兴趣可以学习吴恩达的专业课程: www.coursera.org/deeplearnin…

mooc.study.163.com/university/…

[双语字幕]吴恩达深度学习deeplearning.ai_哔哩哔哩_bilibili

以上仅为个人学习总结,欢迎评论讨论