李宏毅深度学习--卷积神经网络

卷积神经网络

1.image classification
我们首先要知道图片是怎么做分类这个工作的,基本的流程是:输入图片到一个模型中,这个模型输出一个很长的向量,并用此向量来进行分类。这个向量是怎么进行分类呢?首先我们的 y ^ \hat{y} y^也就是真值向量,是类似于one-hot的一种形式,如果代表的是狗,那就是狗那一级为1,其他全部为0。而我们输出的向量则是 y ′ y' y,里面的参数与 y ^ \hat{y} y^进行cross entropy来进行训练。当然如果你希望辨识1000种2000种类别,那么向量就要设置对应的1000,2000行即可。
在这里插入图片描述
这里涉及到另外一个问题,就是图片如何来当作输入。其实我们的图片是一个三维的tensor,三维分别是:宽、高和channel的数目。一般彩色图片的channel数目是3,代表的是RGB,所以上图就是一个100×100×3的图片,我们可以将其进行拉伸,将其变为一个向量,向量即为100×100×3行,将其当作输入即可。

observation1 and simplification1

假如我们跟之前一样使用Fully Connected Network的话,那我们100×100×3的向量进入输入,假如有一hidden layer有1000个Neuron,那我们训练时就需要3×10^7个参数,这样的话我们虽然增加了模型的弹性和能力,同时也有了overfitting的风险,所以我们想到对图像进行处理时,依靠图像的特性是否可以减少模型弹性而得到更好的结果?

所以我们进行了observation1,我们观察到,比如说我们在进行鸟的辨别的时候,我们每一个Neuron其实是在判断鸟的一个特性,比如说鸟嘴、眼睛等,但我们其实并不需要看全部的图像,而是只需要看它的一个小范围里面的图像,所以这些neuron不需要以全部图像当作输入,而只需要一小部分。
以此为依据我们进行simplification1,即将图像分割成一个一个的Receptive field,每个receptive field都有neuron来守备。这样就达到了看小部分的结果。由此我们又可以引出经典的讲解中kernel size, padding, stride这些概念。

observation2 and simplification2

我们observation1虽然说是只看图像的一部分,但一些特征可能会出现在图像的不同的地方。那我们在训练的时候是否需要在两个地方都需要一个neuron来进行守备呢?

所以我们想到了simplification2,就是进行参数共享。在不同的receptive field的不同neuron上,如果他们都检测到鸟嘴,那么我们可以进行参数共享。从这里我们又可以得到经典的讲解中filter的概念,filter就是一系列的neuron共享的参数。
在这里插入图片描述

observation3

当对一个较大图像做subsampling后,图像就缩小了,这就是做了pooling,在实操上一般是convolution与pooling交替使用。使用pooling能使图像变小来减少运算量

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值