从0到1理解神经网络结构(上)
从0到1理解神经网络结构(上)
一、 前言
下图为经典的神经网络,主要有三层,第一层为输入层,第二层为隐藏层,第三层为输出层。
图1 神经网络结构图
需要着重记住几点:
- 在设计神经网络时,输入层与输出层节点是固定的,隐藏层可以随意指定。
- 箭头方向代表模型预测过程中的流向。
- 神经网络中最重要的是神经元之间的连线,连线对应的是不同的权重,也是神经网络预测的目标。将权重调整到最佳的状态,使网络的预测效果最好。
二、神经元模型
神经元模型是根据生物神经元结构进行了抽象,得到的模型。它包含输入、输出、以及计算的功能。下图为神经元模型,3个输入、1个输出、2个计算功能。
图2 神经元模型
在神经元模型中,每个有向的箭头表达的是值加权传递。
图3 加权传递
如果将神经元运算通过符号表示,输出的计算公式为
图4 符号表示
Z为最后的输出,g为**函数,经过输入的权重传递,进行叠加,作为g函数的输入。
神经元可以最终看为计算和存储的单元,对输入进行计算,对结果进行储存并且传递到下一层。对于神经元模型的使用,我们可以理解,有一个数据也就是样本,它有四个属性,其中三个已知一个未知,则使用神经元的目的就是通过已知的去预测未知的。已知属性称为特征,未知的属性称为目标。确定他们存在线性关系,得到权重,则可以使用神经元模型预测新的样本。
三、单层神经网络(感知器)
简单来说就是将神经元模型中的输入变成了输入单元。
图5 单层神经网络
如果我们预测的目标从单个值变成了向量,那么需要在输出层加入一个单元。
图6 两个神经元的神经网络
我们使用二维的下标来表示一个神经元到另一个神经元之间的权重。
图7 权重下标改变
将两个输出公式,用矩阵形式表达。输入向量为 ,输出向量可以改写为 。此公式就是神经网络中,前一层计算后一层的矩阵运算。
感知器的权重是可以通过训练得到,但是只能做简单的线性分类任务。
四、两层神经网络(多层感知器)
两层神经网络包含输入层,输出层,中间层。中间层和输出层都是计算层。
图8 中间层计算
输出层计算
图9 输出层计算
预测的目标如果是一个向量,那么就在输出层上加一个输出单元。
图10 输出为向量
使用矩阵形式运算。
偏置单元除了输出层没有,其他层都包含。
图11 加入偏置
加入偏置的神经网络的矩阵运算如下:
两层神经网络开始使用sigmoid函数作为**函数,神经网络正是通过参数与**函数来拟合真实的函数关系。神经网络需要的是线性代数库。两层的神经网络弥补了感知器的不足,引用的隐藏层加**函数可以无限逼近任意连续函数。
图12 决策分解
上图中红蓝代表数据,可以看出决策边界是一个平滑的曲线。两层神经网络的输出层也是线性分类层,为什么可以做非线性分类任务?
图13 空间变换
因为输出层到隐藏层之间,数据发生了空间变换。输出层的决策分界划出了一个线性分界线,进行分类。因为矩阵和向量相乘,本质就是对向量的坐标空间进行变换。所以隐藏层的参数矩阵的作用就是使数据的原始坐标空间从线性不可分,转换成线性可分。
中间层的节点数,应该通过Grid Search(网格搜索),设定几个预选值,来分别测试哪个比较好。
参考:
https://www.cnblogs.com/subconscious/p/5058741.html
https://blog.****.net/u014303046/article/details/78200010