神经网络中的隐藏层

问题

神经网络中隐层有确切的含义吗?

还是说神经网络的内部结构只能是黑盒,我们无从得知自己训练的每一个隐层节点权重的确切含义呢。

一层隐层网络就是一层特征层次,每一个神经元可以类似看作一个特征属性

先解释一层隐层网络就是一层特征层次这一点,有一点拗口。这在传统的神经网络中还不是很明显,在CNN中尤为明显。要明白这一点,首先得理解感受野。感受野是指CNN卷积核在卷积过程中关注的区域,比如第一层5×5的卷积核关注的区域大小就是5×5,卷积核关注的区域很小,所以浅层的网络关注的是细节特征,比如颜色、角点、直线曲线等等。但是由于CNN有池化采样的操作,feature map会逐渐变小,假如你第一层做了一个2×2的pooling池化,你第二层再做5×5的卷积核的卷积操作时,你关注的区域就是原图中的10×10的大小了,感受野变大了。以此类推,高层的卷积核关注的区域(感受野)就会越来越大,关注了也为更加抽象的局部/全局特征,比如中层的胳膊、大腿、白色的皮包、车轮等等;高层的比如人、飞机、大象等等。就用下面这张图来近似表示一下吧,不严谨但大概就是这个意思。概括一下就是浅层的隐层网络更加关注局部的细节特征,高层的隐层网络更加关注全局的抽象特征,也就是不同的特征层次。

img

再解释一个神经元可以等效为一个属性这一点,这一点题主可以自己去做下实验,训练一个分类网络,输入一张图片,把中间隐层的值给打印出来,做完BN之后,你会发现大部分的值都是0,少部分的值会零点几或者1这就代表这一层的某些特征被激活了,浅层的比如直线、纹理、颜色等等,中层的比如白色的皮具、黄色的动物毛、黑色的头发等等;高层的比如猫、狗、人等等。推荐大家去看下黑科技!GalaxyNet - 深度学习模型可视化_腾讯视频,这个视频可视化了CNN分类的过程,下面这个是一张截图可以看出两类四张不同的类别激活了不同的特征属性,甚至有的一层只激活了一个属性,另外一点同一类的两张图因为有不一样的地方所以中间有些特征属性激活是不一样的,这也就是网络在学些什么,另外一点同一类的两张图因为有不一样的地方所以中间有些特征属性激活是不一样的,这也就是网络在学些什么,两个相同类别的图片激活的神经元也大体相同。

img

神经网络确实是黑箱,让我每天都在work和不work之间苦苦冥想烧香拜佛,阿Q般的work就是自己牛逼,不work就是数据质量不好,但是大家还是在研究可视化技术尽量来探寻里面的真理。根据任务目标来做些调整,比如识别问题可以选择Resnet的top层特征,但是你做颜色识别问题那么用Resnet浅层的卷积层特征做fine-tuning反而可能会更加有效

神经网络是不是黑盒, 前提是你看待它的角度是怎样的.

科普: 神经网络的黑盒不黑 (深度理解神经网络)

如果你把他看成黑盒, 就意味着不去管每层隐藏层的含义, 这样, 就是样神经网络自己自动调参啦. 下图是最普遍的一种搭建方式, 中间的 hidden 就是黑盒了.

imgimg

如果不把它看成黑盒, 就意味着你尝试将每层隐藏层拆开来看待, 上一个隐藏层输出变成了下一个隐藏层的输入. 我们等会按照这样的逻辑来想. 这样的理解方式, 每个隐藏层就是一个 特征代表层 (feature representation).

举例说明:

“将黑盒用手电照亮, 看看里面缠绕的电线是怎么连的”

下图有两层hidden layers,

  • 如果 input -> hidden + hidden (black box) -> output, 那就和最开始提到的神经网络系统一样看待了.
  • 如果 input + hidden -> hidden (black box) -> output, 这是一种理解, 我们的特征不再是最原始的 input 了, 而是经过加工后的 input, input+hidden 后出来的就是另一个 input (给下层的 input, 也能理解成另外一种 feature representation).
  • 如果 input + hidden + hidden -> output, 哈哈, 你懂了, input 经过了两次加工, 变成了另一种 feature representation 再传递给output 输出.

所以你可以想象每层隐藏层在做的事就是将数据变成另一种 格式/模式/ feature representation.

imgimg

关于你说的每个节点的含义如何理解:

我们不能只看单个节点, 应该要看这一层中所有的节点. 这一层中所有节点的就代表了之前所有数据的 representation. 下图是我的机器学习短视频 (莫烦 Python) 中的一张 AutoEncoder 神经网络的截图:

imgimg

正中间那一个节点是简化的一个神经层, 里面有着对原数据的简化特征代表(feature reperentation), 那我们对他进行可视化的时候, 你就能发现: “噢, 原来是这么回事”.

可视化实验(莫烦 Python): 将原数据(手写数字图片所有像素点)经过隐藏层加工, 变成另一种特征代表 (3个神经元输出3个特征), 将这3个特征可视化出来. 就有了下面这张图, 我们发现中间的隐藏层对于"1"的图片数据有了清晰的认识, 能将"1"的特征区分开来.

imgimg

这就是你需要了解的隐藏层的内涵了.

  • 15
    点赞
  • 60
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

nine_mink

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值