隐藏层

在最近的《科学美国人》杂志上,刊载了一篇题为“深度学习崛起带来人工智能的春天”文章。文中解释了为什么复杂的神经网络是人们长时间设想的人工智能的关键。想让电脑和人一样聪明,就必须得让程序的思维方式和人的大脑一样,这似乎是有逻辑可循的。然而,鉴于我们对大脑机能的所知甚少,这一任务看起来着实令人望而生畏。那么,深度学习究竟是如何工作的呢?

神经网络是个神器,她的表现让人有些琢磨不透。权重和偏置量能自动地学习得到,但是这并不意味着我们能立刻解释神经网络是怎么样得出的这些参数。现在仍然没人说清楚为什么某某节点的权重参数为什么取某个值,因此从这个角度讲,神经网络模型是个黑盒子。

隐含层,光看名字就给人以神秘感。下面通过一个例子来了解什么是隐藏层,假如区分以下三张图片哪个是人脸,也就是人脸识别,神经网络模型应该怎么建立呢?为了简单起见,输入层的每个节点代表图片的某个像素,个数为像素点的个数,输出层简单地定义为一个节点,标示是还是不是。

隐藏层_第1张图片

那么隐含层怎么分析呢? 我们先从感性地角度认识这个人脸识别问题,试着将这个问题分解为一些列的子问题,比如,

在上方有头发吗?
在左上、右上各有一个眼睛吗?
在中间有鼻子吗?
在下方中间位置有嘴巴吗?
在左、右两侧有耳朵吗?
...

假如对以上这些问题的回答,都是“yes”,或者大部分都是“yes”,那么可以判定是人脸,否则不是人脸。但是,这种判断忽略了某些特殊情况,比如某个人没有长头发,某个人的左半边脸被花丛遮挡了等等,等处在这些环境中时,这种方法的判断可能会有问题。

承上,将原问题分解为子问题的过程如果用神经网络来表达的话,可以这样表示,方框表示为某个子网络:

隐藏层_第2张图片

以上每个子网络,还可以进一步分解为更小的问题,比如判断左上是一个眼睛吗的问题,可以分解为:

有眼球吗?
有眼睫毛吗?
有虹膜吗?
......

因此,在左上是否有一个眼睛的子网络,可以进一步分解为如下:

隐藏层_第3张图片

以上,这个子网络还可以进一步分解,.一层又一层地分解,直到,回答的问题简单到能在一个单独的神经元上被回答。

总结下这个过程,输入层是一些列的像素节点,然后刚开始这些层回答了关于输入像素点的很简单、很具体的问题,然后经过很多层,建立了更复杂和抽象的概念,这种带有两个或多个隐含层的神经网络,称为深度神经网络,deep neural networks,简称为 DNN。

 

训练神经网络常用的技术包括,批梯度下降(SGD),反向传播(BP算法),再后来基于此,提出了很多好的想法,人们现在能训练的隐含层数已经越来越多,并且结果也表明,对很多现实问题,深层次的网络比浅层次的网络效果更好,原因便是深度神经网络建立了更加复杂的体系结构,这样得到的结果会更理想。

参考博客:

http://chuansong.me/n/349632251739

https://blog.csdn.net/xo3ylAF9kGs/article/details/78861801

你可能感兴趣的:(深度学习)