多层神经网络

《python machine learning 》chapter 12 Implementing a Multilayer Artificial Neural Network from Scratch

【主要内容】

(1)总体理解多层神经网络

(2)从头开始实施神经网络训练的基本反向传播算法

(3)训练基本的神经网络用语图像分类

【单层神经网络概要】

ADAptive LInear NEuron (Adaline): https://blog.csdn.net/Amy_mm/article/details/79668201

多层神经网络_第1张图片

【多层神经网络体系结构】

多层神经网络_第2张图片

完全连接的网络也叫做多层感知机 ——Multilayer Perceptron (MLP)

上图为一个三层MLP,包括输入层,隐藏层,输出层。当隐藏层多于一层时,也叫做深层神经网络deep artificial neural

network.——DNN.

如上图所示,我们将网络中第L层的第i单元的激活函数写作,为了是代码以及数学公式看起来更加直观,用上标in,h,out分别代表输入层,隐藏层以及输出层。 即代表偏置值,设为1.

输入层的激活函数为:

多层神经网络_第3张图片

字母说明:

层的每个单元都与的每个单元通过权值系数相连接 , 这样我们将第层的第K个单元与第层的第j个单元之间的权值系数写为. 将输入层与隐藏层之间的权值矩阵写为,隐藏层与输出层之间的权值矩阵为

看一下3-4-3的多层感知机展示图

多层神经网络_第4张图片


【通过向前传播激活神经网络】

本节主要介绍用向前传播算法(forward propagation)计算MLP(多层感知机模型)的输出的过程。

【MLP学习过程】

1、从输入层开始,通过网络向前传播训练集数据来产生输出。

2、基于网络的输出,操作cost函数计算错误。

3、向后传播这个错误,计算错误对于网络中每个权值系数的导数,更新模型。

重复上述三个步骤多次得到MLP的权值系数,用向前传播方法计算网络输出,定义临界函数,用one-hot表示预测的类标签。

【详细过程】

计算隐藏层第一个单元的激活函数



是网络输入,是激活函数,由于要解决像图像处理之类的比较复杂的问题,这里采用非线性函数作为我们MLP模型的激活函数,比如sigmoid函数,将输入数据映射为一个逻辑分布,取值为0-1之间。


多层神经网络_第5张图片


为了便于书写和阅读,将上述公式写成向量的形式,码代码的时候也可以直接用numpy计算代替循环。

多层神经网络_第6张图片

指输入样本的1*m维特征向量加上偏置项。

 m*d维权值矩阵,d是隐藏层单元数。二者相乘的1*d维矩阵,并由此得到激活函数。

泛化到n个样本集上,可得到

即输入层的n*m维矩阵, m*d维权值矩阵,矩阵相乘得到n*d维矩阵,运用得到下一层的激活函数


同理可得输出层的激活函数









































你可能感兴趣的:(多层神经网络)