赞
踩
本文构建的全连接神经网络模型结构图如上。其中中间隐藏层的数量以及各层(输入层、隐藏层、输出层)的神经单元数量均可 自由设置,本文构造的神经网络并不是专门为识别手写数字而写死的,而是可以根据 任务的需要,自由改变神经网络的参数(如层数、神经单元数、学习率、学习率衰减值 等)。在本文里以识别手写数字为例,输出层的神经单元数为 9,结构图为了能够表示得更清晰(使其看 起来不混乱),遂只绘制了 3 个神经单元。
本文已将神经网络模型程序封装成类,神经网络的各参数为类中属性,神经网络的生成、训练、预测、保存、评估等为类中方法,以便可以更加快捷地调用,同时降低代码冗余、提高代码可读性。
本文作者:A WHU SIM Student
目录
4.6包含6万条手写数据的数据集+本文章构建的全连接神经网络模型+训练好的准确率为93.21%的全连接神经网络模型:全连接神经网络
人工神经网络(artificial neural network,ANN)是一种模仿生物神经网络的结构和功能的数学模型或计算模型。神经网络由大量的人工神经元联结进行计算。大多数情况下人工神经网络能在外界信息的基础上改变内部结构,是一种自适应系统。现代神经网络是一种非线性统计性数据建模工具,常用来对输入和输出间复杂的关系进行建模,或用来探索数据的模式。
生物神经网络的主要工作原理如下:
①神经元形成网络。
②对于从其他多个神经元传递过来的信号,如果它们的和不超过某个固定大小的值(阈值),则神经元不做出任何反应。
③对于从其他多个神经元传递过来的信号,如果它们的和超过某个固定大小的值(阈值),则神经元做出反应(称为点火),向另外的神经元传递固定强度的信号。
④在②和③中,从多个神经元传递过来的信号之和中,每个信号对应的权重不一样。
将神经元的工作在数学上抽象化,并以其为单位人工地形成网络,这样的人工网络就是神经网络。将构成大脑的神经元的集合体抽象为数学模型,这就是神经网络的出发点。
单个人工神经单元结构如下图:
多个神经单元组成的神经网络如下图:
激活函数对于ANN学习和理解真正复杂的东西很重要。它们的主要目的是将ANN中节点的输入信号转换为输出信号,此输出信号将作为下一层的输入。常用激活函数有:单位阶跃激活函数、Sigmoid激活函数、tanh双曲正切激活函数、ReLU整流线性单元激活函数、softmax激活函数。本文使用的是sigmoid(中间层使用)和softmax激活函数(输出层使用)。
Sigmoid函数是一个有着优美S形曲线的数学函数,在逻辑回归、人工神经网络中有着广泛的应用。
公式:
导数:
图像:
优点:平滑、易于求导。
缺点:激活函数计算量大(在正向传播和反向传播中都包含幂运算和除法);Sigmoid导数取值范围是[0, 0.25],由于神经网络反向传播时的“链式反应”,很容易就会出现梯度消失的情况。例如对于一个10层的网络, 根据 0.25^10 ≈ 0.000000954,第10层的误差相对第一层卷积的参数 W1 的梯度将是一个非常小的值,这就是所谓的“梯度消失”;Sigmoid的输出不是0均值(即zero-centered);这会导致后一层的神经元将得到上一层输出的非0均值的信号作为输入,随着网络的加深,会改变数据的原始分布。
softmax用于多分类过程中,它将多个神经元的输出,映射到(0,1)区间内,可以看成概率来理解,从而来进行多分类,其多用于神经网络的最后一次层。
公式:
导数:
对 softmax 导数,就是求第 i 项的输出对第 j 项输入的偏导:
当i=j时:
当i != j时:
优点:softmax 是用于多类分类问题的激活函数,在多类分类问题中,超过两个类标签则需要类成员关系。对于长度为 K 的任意实向量,softmax 可以将其压缩为长度为 K,值在(0,1)范围内,并且向量中元素的总和为 1 的实向量。
缺点:在零点不可微,负输入的梯度为零,这意味着对于该区域的激活,权重不会在反向传播期间更新,因此会产生永不激活的死亡神经元。
交叉熵是信息论中的概念,最初用于估算平均编码长度。给定两个概率分布p和q,通过q来表示p的交叉熵为:
交叉熵损失(Cross-entropy cost)是用来衡量深度神经网络(DNN)预测的概率分布与实际概率分布的差异的一种方式。它刻画的是实际输出(概率)与期望输出(概率)的距离,即交叉熵损失的值越小,两个概率分布就越接近。与平方损失相比,它能更有效地促进训练全连接神经网络。若
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。