深度学习|对隐含层的感性认识
请点击上面公众号,免费订阅。
《实例》阐述算法,通俗易懂,助您对算法的理解达到一个新高度。包含但不限于:经典算法,机器学习,深度学习,LeetCode 题解,Kaggle 实战。期待您的到来!
01
—
神经网络模型是个黑盒子
神经网络给人留下深刻的印象,但是它的表现让人有些琢磨不透。权重和偏置量能自动地学习得到,但是这并不意味着我们能立刻解释神经网络是怎么样得出的这些参数。现在仍然没人说清楚为什么某某节点的权重参数为什么取值为某个值,因此,从这个角度讲,神经网络模型是个黑盒子。
02
—
对隐含层的感性认识
提起神经网络,不得不说隐含层,光看名字就给人以神秘感,如何通俗易懂地认识隐含层到底是做什么的呢?
让我们从一个问题开始,假如区分以下三张图片哪个是人脸,也就是人脸识别,神经网络模型应该怎么建立呢?为了简单起见,输入层的每个节点代表图片的某个像素,个数为像素点的个数,输出层简单地定义为一个节点,标示是还是不是。
那么隐含层怎么分析呢? 我们先从感性地角度认识这个人脸识别问题,试着将这个问题分解为一些列的子问题,比如,
在上方有头发吗?
在左上、右上各有一个眼睛吗?
在中间有鼻子吗?
在下方中间位置有嘴巴吗?
在左、右两侧有耳朵吗?
...
假如对以上这些问题的回答,都是“yes”,或者大部分都是“yes”,那么可以判定是人脸,否则不是人脸。但是,这种判断忽略了某些特殊情况,比如某个人没有长头发,某个人的左半边脸被花丛遮挡了等等,等处在这些环境中时,这种方法的判断可能会有问题。
承上,将原问题分解为子问题的过程如果用神经网络来表达的话,可以这样表示,方框表示为某个子网络,
以上每个子网络,还可以进一步分解为更小的问题,比如判断左上是一个眼睛吗的问题,可以分解为:
有眼球吗?
有眼睫毛吗?
有虹膜吗?
......
因此,在左上是否有一个眼睛的子网络,可以进一步分解为如下:
以上,这个子网络还可以进一步分解,.一层又一层地分解,直到,回答的问题简单到能在一个单独的神经元上被回答。
03
—
深度神经网络
总结下这个过程,输入层是一些列的像素节点,然后刚开始这些层回答了关于输入像素点的很简单、很具体的问题,然后经过很多层,建立了更复杂和抽象的概念,这种带有两个或多个隐含层的神经网络,称为深度神经网络,deep neural networks,简称为 DNN。
训练神经网络常用的技术包括,批梯度下降(SGD),反向传播(BP算法),再后来基于此,提出了很多好的想法,人们现在能训练的隐含层数已经越来越多,并且结果也表明,对很多现实问题,深层次的网络比浅层次的网络效果更好,原因便是深度神经网络建立了更加复杂的体系结构,这样得到的结果会更理想。
请记住:每天一小步,日积月累一大步!
《实例》阐述算法,通俗易懂,助您对算法的理解达到一个新高度。包含但不限于:经典算法,机器学习,深度学习,LeetCode 题解,Kaggle 实战。期待您的到来!