#深度学习

 

每一个神经元代表一个分类。

举例来说第一层的神经元做的事情简单来说就是判断有没有绿色,黄色,斜条纹出现

第二个layer做的是比他更复杂的东西,

然后再根据第二个layer的output,第三个layer会做更复杂的事情,

当我们用一般的fully-connected network做影像处理的时候,可能需要过多的参数

假设一张100*100的彩色图片把他拉成一列含100*100*3个pixel的数列,假设第一层有1000个神经元,就会产生30000*1000个参数。

CNN就可以简化这一架构,我们根据人的知识,根据对影像处理的理解,知道某些参数是用不到的

假如某一个神经元检测鸟嘴的存在 ,并不需要检测整张图,

所以每个神经元只需要连接到某一小块区域 

同样的鸟嘴可能出现在图片的不同部位,但不需要分别做专门侦测上部鸟嘴和中部鸟嘴,只要将他们共用同一组参数,就可以减少参数的量。

 我们可以对图片进行下采样,并不会影响人对这张图片的理解,就可以减少需要用的参数

 整个CNN的架构

首先input一张图片 然后几次卷积和下采样 可以反复几次,然后flatten输入全连接层,最后得到影响便是的结果

基于三个经验组建cnn架构

1.一个图形不需要观测整张图片,只需要观测图片的一小部分 (通过卷积实现)

2.同一个图形会出现在图片的不同的区域(通过卷积实现)

3.我们可以通过subsampling而不会改变对象(通过马修pooling实现)

 例如0代表没图墨水,1代表有墨水,每一个convolution有一组fliter,每一个filter其实就等同于fully—connected 里的一个·神经元

每一个fliter的参数必须是通过学习得到的

假如filter是3*3的那么他坚测得就是3*3的区域有没有这个pattern

先将filter放在左上角,对应值做内积,然后移动filter的位置 ,移动多少(stride)要事先确定好

 然后,因为卷积层含有不同的filter,得到不同的matrix,所有matrix组合在一起叫做feature map

如果要处理彩色图片,那filter就不再是matrix而是一个立方体 image就是3*6*6,fliter就是3*3*3

 

convolution其实就相当于fully-connected 把一些 参数去掉

如果fully-connected需要36个weights,那convolution那就只需要9个 weights

当我们移动一格,经过convolution我们得到另外一个值-1,我们假设-1是另外一个nerual的输出

他们的weights是一样的,原本在fully-connected network中二者的weights是不同的,但是在convolution中shared weights,我们不仅把连接的weights减少,而且与之相连的weights共享的(某些nerual),训练过程中,用与backpropagation一样的做法,一些weight永远是0,若想将两个weight拥有相同的值,只需用一般的backpropagation,各算出一个gradion,然后平均,update

 卷积后就是maxpooling

 有多少filter深度就是多少 假设有25个filter得到25个feature map,在再一次卷积时获得的的featuremap不是25*25个还是25个 但每层filter的参数是3*3*25

拉直 放入全连接网络

DNN中input是一个vactor(向量),CNN的话会考虑他的几何空间

 

 

分析cnn学到了什么

第一个convolution可以根据可以根据output值及filter的值确定它在学什么

难点在后面的filter,第二层3*3的filter有50个,filter的input并不是pixels,而是卷积池化后的值,它的影响范围也不是3*3个pixels,

第k个filter的output为50*11*11 

定义Degree of the activation of the k-th filter 为input的图像与第k个filter有多相近(ak)

 想知道第k个filter的作用,可以寻找一张图片使得ak最大

 可以用gradient ascent updata 

原来在训练cnn时 ,input是固定的,model的参数是用gradient descent找到的,是找到一组参数让loss被minmax

现在刚好相反,现在model的参数是固定的,我们用gradient descent updata x

下图为12个filter的x*

 input的与图越相近output的值越大

分析fully-connected layer中每一个nerual的工作

流程同上

 x*如下所示,与上述filter不同,上述filter只考虑image的一部分,现在每一个nerual考虑的是整张图,但现在也并不是真曾一个完整的数字,而是一个比较大的特征

 分析output

output为10维,每一维代表一个digit

我们要找一张image使得这个维度output最大

 实际上image如下

 将上述结果丢到cnn确实可以正确分类

 +应为-,我们应告诉机器有些图像不是数字,对x做一些限制,即我们希望找到的image大部分是

 相同颜色的,如下为结果,隐约可以看到数字

 与deepdream的思想相近

 将该照片丢到cnn中,将某一个layer的output拿出来,是一个vactor,把正值调大负值调小,将调整后得知当作一个目标,并找一张图片,使得output的值最大,也就是让cnn夸大化他看到的东西

 

 deepstyple

 

 

 先将原图丢到cnn得到filter的output,output代表这张图里有啥内容

然后将呐喊也丢到cnn中也得到filter的output,此时我们考虑的不再是这张图output的value,而是关注filter与fliter间output的关系代表了一张image的style

然后用同一个cnn找一张图,让它output的value像左边照片,同时image的style像右边的照片

 在image有该有的特性如上述三点

 

 我们可以对一个image做subsampling,不会影响看这张图的样子,

但是对围棋来说,max pooling怎么解释呢?

48为棋盘每一个位置都用48个value描述 ,也就是说不光看是否为黑子白子,而且还关注是否为叫吃的的状态等,并在周围补上0,变成23*23的image,第一个layer用的是5*5的filter,一共192个,

2-12层得到21*21的image,然后用3*3的filter,所以并没有用max pooling

 

 上图为‘你好’的频率时间图,不同人说的‘你好’可能只是频率上的shift

 

 input一个句子,首先将每个词都用一个向量表示(embedding dimension),排在一起变成一个image

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值