lhy机器学习(六): ML Lecture 10 Convolutional Neural NetWork (卷积神经网络)

1.为什么要用CNN

对于一般的神经网络,在图像分类上,我们期望把每个神经元当做一个分类器,每个分类器输出不一样的特征,但是假如输入是一个3*100*100(3是rgb)的输入,我们如果第一层有1000个神经元,那么第一层就有3*100*100*1000个参数,那样参数就太多了

cnn就是可以简化这个过程,使得不用那么多参数

 

对于每一个神经元来说,比如某个神经元是寻找鸟嘴的特征,那其实他不需要整块图像,只需要一小块就可以知道这是一个鸟嘴的特征

同样的图案(特征)可能在不同位置,但是他们代表的是同一个特征,比如鸟嘴,因此不需要两个神经元分别代表他们,这两个神经元共用一组参数就可以代表鸟嘴了

对于同一张图片,可能较少的pixcel就可以代表同样的图,因此这样就减少了输入的数量

2.CNN的架构

 

 

 

Filter与扫描到图像的地方求内积,就是对应位置相乘最后相加总和

stride是Filter移动的步长

有多少个Filter就有多少个Feature Map(即pattern图案)

如果输入是RGB三层,那每个Filter也是三层,最后输出的三个层加起来合成一个Feature Map就行了,

看到这里可能有疑问,卷积网络与我们普通的全连接层网络有毛关系?有毛区别?

下图一目了然:

接下来是Max Pooling

 

最后Flatten的意思是,将卷积后的图像拉成一个一维向量,然后输入全连接层的神经网络中去

 

Cnn in Keras

 

3.如何知道CNN做了些什么呢?

 

(1)

定义一个ak,图中的矩阵是经过第k个filter后的Feature Map,那么ak就是Feature Map中所有元素的和,代表第k个Filter的激活强度(因为这里我们就是要探究第k个filter代表的是什么样的图案特征

 

1.以前的神经网络训练的输入图片x是固定的,神经网络内的参数是变化的,通过不断训练找到一批最好的参数θ

2.这里思路是反过来,我们的神经网络已经训练完毕,网络内的参数是固定的,我们就是要寻找一个图片(图案)x,使得ak最大

(注:因为上文可以知道,filter在原图扫描的过程中,与filter的图案越接近,并且包含的filter图案越多,那么输出的feature Map的ak肯定越大

于是我们对12个Filter分别操作,求出来了十二组pattern,分别代表着十二个Filter所描述的东西

(2)

上面我们是对cnn中的Filter进行研究,ak的值是针对第k个filter的,因此每个图案只代表整个图像一部分特征

而下面我们再看后面的全连接神经网络,定义某一层的第j个神经元的值为aj,现在从整个cnn的起始位置输入一个图片x,使得aj的值最大,x就是我们看到的对应的这个神经元aj所代表的图案

因为在cnn架构中,全连接层的输入是卷积操作后的整张图片的向量,因此这次求出来的图片x是这个神经元描述的整张图片的某个特征图案

(3)

同理,例如我们需要获得使数字0对应的output的y值最大的x*,就是如下图中0对应的图片

也就是说机器内心中认为这就是它心目中的分别0、1、2、3...的图片

那如何让我们寻求的x*更像我们想看到的数字图片呢,其实就是告诉machine,有些图像虽然输出的分值y很高,但是它不是数字,我们可以加上一些约束:对一个数字的图像来说,只有某一张图的一小部分有墨水,因此它的像素值总和不会太大

找一个新图片x*,使最终输出的yi最大的同时,使图像x中的像素和是比较小的,只有非常小的地方是有墨水的

注意!!下图右式中yi与∑|xij|的符号应该是“—”号,不是“+”号

剩下的自己瞎看看吧!

 

 

 

 

这里还有很多可以根据你的输出y生成很清晰的x*数字的图片的东西(GAN或者VAE)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值