前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[机智的机器在学习] 卷积神经网络入门教程(2)

[机智的机器在学习] 卷积神经网络入门教程(2)

作者头像
用户1622570
发布2018-04-11 15:37:53
6910
发布2018-04-11 15:37:53
举报
文章被收录于专栏:机器学习和数学

今天继续回归卷积神经网络的入门教程,主要是介绍全连接网络的训练过程,通俗的讲就是我们入门教程(1)里面讲的是全连接网络长什么样,神经元之间的关系是什么样的,里面的参数代表什么意思,这些都是说了的,对吧!然后全连接网络的训练就是怎么计算参数的值是多少,比如说我们有一直线方程y=kx + b,里面的k和b就是两个未知的参数,然后计算这两个参数就是通过两个点的坐标,利用二元一次方程组来计算。这个计算的过程,在NN里面叫做训练!也就是说网络(也可以理解为模型或者方程)建好了以后是不知道里面的参数值是多少的,需要根据计算得到。然后我们把计算的方法叫做算法,而今天要讲的是反向传播算法,他是训练NN的一个经典算法,而且是很多网络的基础,所以要清楚的掌握!!!

这里先澄清一下概念,我们题目里面的卷积神经网络这个鬼,他不是一个定理或者定义,什么意思呢,就是它是可变的,你可以让他是什么样,他就是什么样,别犯糊涂。一般的卷积神经网络包含卷积层和下采样层,最后是全连接的NN。什么是下采样的?还记得入门教程(1)里面最后那张gif图吗,一个5x5的原始图像,经过一个大小为3x3的卷积核得到了一个3x3大小的图片(最后得到图片大小的计算公式:5-3+1=3,这里默认strides=1,padding=0,先埋个坑,后面再讲什么是strides和padding)。这里是得到了3x3的图片,如果我们的输入图像很大呢,比如是256x256的,那么用3x3的卷积核卷积一下得到的图片大小就是(256-3+1)x(256-3+1)=254x254大小的一张图,如果给这张图再做一次下采样,那么这张图就变为了原来图片的1/4。看一下下面这个图,先简单有个认识,后面我会把卷积神经网络的常用的层(Conv,BN,Pooling,Sampling,Activation,etc)都单独讲一次。

划重点:1. BP反向传播算法是对全连接神经网络的一种训练过程,他其实就是梯度下降+链式求导法则组成。2.一般的CNN也包括全连接层,全连接层前面的卷积层,下采样层都是直接对像素进行操作(有没有很熟悉?看前面的图像滤波的文章)。所以BP也可以训练CNN。

还是那句话,讲这个的教程网上一大堆一大堆的,但是我就是比较无聊,在重复一遍吧!No,我要和别人讲的不一样,而且让你看了以后一定可以学会,就是这么自信!今天我将会通过我见过的最直观的讲解方式,加上我自己幽默风趣(dou bi)的语言讲给大家。停!

开始正题

Step 0: 今天的图1是一个包含1个Inputs,3个Hidden Layer,1个Outputs的全连接神经网络。圈圈代表?神经元。神经元里面写的f1,f2, f3, f4, f5 这些是激活函数,也就是输入和权重相乘相加(相爱相杀)之后得到的值在作为函数f的输入,其他同理。

图1(如果显示不完全,请点开看大图)

Step 1:由输入x1,x2组成的输入向量和权重w1,w2相乘得到的值作为f1的输入,计算结果y1作为Hidden 2 的第一个输入向量。同理可得y2, y3, y4, y5, y,看图2-6 ,今天图有点过,费点流量能彻底学会BP算法不过也值了,下次再有人问你的时候,就不会有任何问题。

图2-6

Step 2: 图7是根据y的值计算损失,z是真实值,真实值和预测值之差就得到我们的损失。

Step 3:重点来了,Step 2计算得到的是Hidden 3和Outputs之间的损失,现在要计算Hidden 2和Hidden 3之间的损失,就是Hidden 3和Outputs之间的损失和权重的积deta4。

同理可以计算deta5,deta6,deta1,deta2,deta3。如图8-12.

图8-12

Step 4:Step 4开始利用梯度下降法计算新的权重参数,计算新的参数的过程就是神经网络的训练过程,神经网络的学习过程就是计算参数的过程,当全部参数都更新完的时候,神经网络就完成了一次训练。接下来计算新的参数的方法就是我们上一篇讲的梯度下降法的内容。其中w1是权重初始值,aita是学习率(以前说过哦~),注意看清新的权重加号后面一部分,是由4项组成的哦,应该清楚每一项代表的意思。同理可以得到图13-18的.

看完这么图,不知道有没有看懂,有没有哪里还不明白的地方?下面我把需要注意的地方说下。

划重点:

  1. 每个神经元中的函数f,在不同的网络中其形式是不同的,这意味这求导的时候计算过程的不同。
  2. 在简单的方程中,我们一般把未知数叫做参数,想想高中数学,里面不是有很多求参数的问题么。然后在deep learning里面我们把这些参数一般叫做超参数,这个知道名字即可,没必要纠结什么是超参数,记住了哈。
  3. 卷积神经网络中超参数的设定是一个实验性的东西,就是说面对不同的问题的时候,我们需要根据具体问题来挑选合适的超参数的值,而那个值可以得到好的效果,这些都是要去试的。

今天就写到这里了,下一次我会把常用的网络层做一个总结介绍,希望大家关注哦!

[参考文献]

  1. http://galaxy.agh.edu.pl/~vlsi/AI/backp_t_en/backprop.html
  2. https://www.zhihu.com/question/27239198
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-04-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器学习和数学 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档