本文将主要讲解全连接神经网络的基本结构,包括对神经元、网络的输入 & 输出,权重w & 偏置b,激活函数的理解与符号约定。主要参考Neural Networks and Deep Learning这本书,非常适合初学者入门。
一、神经元—神经网络的组成单元
神经元模型的符号约定:输入:,权重(weight):,偏置(bias):,未激活值:,激活输出值:
神经元可用于解决部分二分类问题——当有一个类别未知的输入感知机,若输出值a = 1时,感知机被激活,代表x属于第一类;若输出值a = 0时,感知机未激活,则代表x属于第二类。而对于sigmoid神经元,若输出值a ≥ 0.5时,代表x属于第一类,否则为第二类。
二、sigmoid神经元的优势
不难看出,感知机可以轻松实现“与非”逻辑,而与非逻辑可以组合成其他任意的逻辑,但对于一些过于复杂的问题,我们难以写出其背后地逻辑结构。这时候神经网络就能大显身手:它可以自适应的学习规律,调节网络地权重和偏置等参数,我们只需要用大量的数据对其正确地训练,即可得到我们想要的效果!
那有一个很有意思的问题:相比于阶跃函数,为什么我们在神经网络中更愿意采用sigmoid函数作为激活函数呢?
首先,由于感知机的激活函数为阶跃函数(在0处突变),权重的一个小的变化就可能导致输出值的突变,而如果将激活函数替换为sigmoid函数,输出值的变化就能发生相应的小的变化,有利于网络学习;另外,由于采用二次代价函数作为损失函数时,利用BP算法求梯度值需要对冲激函数求导,sigmoid函数正好时连续可导的,而且导数很好求。
三、全连接神经网络结构
为了便于理解,先画一个三层的全连接神经网络示意图,激活函数都选用sigmoid函数。全连接神经网络指除输出层外,每一个神经元都与下一层中的各神经元相连接。网络的第一层为输入层,最后一层为输出层,中间的所有层统称为隐藏层。其中,输入层的神经元比较特殊,不含偏置,也没有激活函数。
神经网络结构的符号约定:代表第层的第个神经元与第层的第个神经元连线上的权重;代表第层与第层之间的所有权重构成的权重矩阵。分别代表第层的第个神经元对应的偏置、未激活值、激活值;则分别代表第层的所有偏置组成的列向量、所有未激活值组成的列向量以及所有激活值组成的列向量。
注意!的上角标数字是连线右边的层的层数,而下角标数字是先写连线右边的层中神经元所在的位置,再写连线左边的层中神经元所在的位置,此顺序是为了使时无需转置,方便书写。
下面展示了一个手写体识别的三层全连接神经网络结构:
隐藏层的功能可以看作是各种特征检测器的组合:检测到相应特征时,相应的隐藏层神经元就会被激活,从而使输出层相应的神经元也被激活。
近期的更新计划是 1. 如何利用梯度下降法更新各层网络参数——权重与偏置,使损失函数的值尽可能小、2. 如何利用BP反向误差传播算法优化损失函数对各层网络参数梯度求解、3. 梯度下降算法的常见变种。后面也会更新一些BP网络、CNN网络源代码,欢迎关注,有不严谨之处请指正~