前面两篇文章确实有些晦涩,那这次我们就返璞归真,解释一下最简单的神经网络,以及阐释它背后蕴含的一些有意思的东西。
1、什么是BP神经网络?
答:先上图
BP,即back propagation(误差逆向传播),BP其实是这种神经网络的训练方法。网络如图,一个BP神经网络是由三部分组成,输入层,隐含层,输出层。其中输入层和输出层的维度来源于实际任务,隐含层维度是依据经验来调的,经验是:
m,n代表输入输出层的维度,a是一个1至10之间的数目。
2、层与层之间是如何连接的?
答:看图
是有前面节点的值乘以权重,加上偏置,走一个激活函数,便是神经元的值。
3、什么是激活函数?
答:就是一个函数,常用的激活函数有三个,下图的前三个
4、为什么要用激活函数?直接和权重乘一下不行么?
答:这个有意思,我们用分类问题来说明,并借用TensorFlow的游乐场来解释一下。
首先,如果不加激活函数,可以看出,神经元的值是一个线性函数,无论多少个线性函数叠加,都还是线性函数。确实,在上古时代,“神经网络”确实是不用激活函数的,我们称作“感知机”,感知机在一些线性可分的问题上,表现是没有问题的。假设有两组数据,如图:
使用线性分类器是很简单就可以分开的
但是如果数据复杂一些,不是线性分布的话
用感知器去训练是不会收敛的
而观察激活函数,发现都不是线性的,所以就避免了线性不可分的问题,如图,我们采用sigmoid激活
就完美解决了线性不可分的问题,然而实际生活中,数据基本上都是线性不可分的。所以要用激活函数。
5、天天说的深度学习就是这个么?和这个简单的东西有啥区别?
答:原理上区别不大。就是隐含层多了一些,神经元的连接方式变了一些,输入规整了一些,输出花样了一些。
6、隐含层是啥意思?
答:可以理解为特征的抽象,
比如某个神经元接收了来自它前一层的身高,体重两个输入,经过加权后,通过带激活阈值(偏置)后的激活函数,输出了一个新的值,这个值的抽象含义可能被解释为“身材匀称度”;另一个神经元接也收来自它前一层的眼睛大小,嘴巴大小输入,也经过加权、偏置和激活函数,输出了一个新的值,这个值的抽象含义可能被解释为“五官端正度”;这前一层抽象的“身材匀称度”和“五官端正度”以及其他更多的特征又会继续被输入下一层被以同样的方法处理,得出更多更高层次的抽象特征,比如“帅气度”,随着隐藏层的加深,深层的抽象特征可能抽象得连设计者自己也无法解释。
最后通过层层特征的抽象和输出,神经网络作出它对输入特征的分类——这个人是谁:吴彦祖还是宋小宝还是其他阿猫阿狗。
可见,浅层神经网络可以表示的特征抽象程度不高,而层次越深,特征的抽象程度越高,也就是在某些特定任务上所谓的“效果越好”,这也是为什么深度神经网络可以做出很多只有人类才能做到的需要高度抽象理解能力的事情。
7、是不是隐层越多越好?
答:看具体任务和实际情况,就像兰博基尼确实跑的快,但未必适合买菜,也不能去越野。即使我的任务就是去装个逼,但是自身的穷逼属性也无法让我选择这种看起来不错的“模型”。
8、那种中间的那些权重和偏置,怎么算出来的?
答:梯度下降。
9、啥是梯度下降?
答:有兴趣可以看一下我上篇文章,详细的讲解了LSTM的梯度下降方法及公式,没兴趣的知道通过某种“手段”,机器会自动算出来就够了。
10、BP神经网络能干嘛?
答:分类呗。
领取专属 10元无门槛券
私享最新 技术干货