此贴仅做课程作业使用!!!按自己的理解对上课内容进行总结
一、神经网络实现一般步骤
实现数据集的生成/加载-->实现数据集的读取-->建立模型-->定义损失函数-->定义优化函数-->训练(初始化模型参数、训练模型参数)-->测试模型的训练效果
二、线性神经网络
1.线性回归
考虑比较简单的回归问题:假设自变量x和因变量y之间的关系是线性的,即y可以表示为x中元素的加权和,这里通常允许包含观测值的一些噪声;其次,我们假设任何噪声都比较正常,如噪声遵循正态分布。给定样本与回归模型,通过学习样本数据的方式将自变量与因变量之间的关系进行回归,从而得到可以根据自变量比较准确预测因变量的模型。
对于简单的线性回归问题,可以采用以下的步骤训练解决:
1.初始化模型参数(w,b)
2.取出用于训练的数据
3.经由模型函数正向传播预测自变量
4.计算损失函数(平方损失函数)
5.反向传播求解损失函数对各模型参数的导数
6.梯度下降法更新模型参数
7.循环执行2-6步直到训练完所有数据
2.线性分类(线性二分类/多分类)
线性分类与线性回归有所不同,线性分类器则透过特征的线性组合来做出分类决定,以达到此种目的,使样本通过直线(或超平面)可分。
由于最后我们需要得到的是概率,因此考虑引入Sigmod函数作为输出层的激活函数,将模型预测的结果数据转化为(0,1)的范围,即映射概率:
对于线性分类问题,可以采用以下的步骤训练解决:
1.初始化模型参数
2.取出用于训练的数据
3.经由模型函数正向传播预测自变量
4.计算损失函数(交叉熵损失函数)
5.反向传播求解损失函数对各模型参数的导数
6.梯度下降法更新模型参数
7.循环执行2-6步直到训练完所有数据
三、多层感知机
1.单神经元模型与激活函数
其中,f(x)有多种形式,比较常见的几种如下:
(1)sigmoid函数
(2)Tanh函数
(3)Relu函数
(4)对称型阶跃函数
2.多层前馈网络(BP神经网络)
多层感知机是一种多层前馈网络,由多层神经网络构成,每层网络将输出传递给下一层网络。神经元间的权值连接仅出现在相邻层之间,不出现在其他位置。如果每一个神经元都连接到上一层的所有神经元(除输入层外),则成为全连接网络。
3.BP算法
BP学习算法由正向传播和反向传播组成:
① 正向传播是输入信号从输入层经隐层,传向输出层,若输出层得到了期望的输出,则学习算法结束;否则,转至反向传播。
② 反向传播是将误差(样本输出与网络输出之差)按原联接通路反向计算,由梯度下降法调整各层节点的权值和阈值,使误差减小。
网络训练的目的,是使对每一个输入样本,调整网络参数,使输出均方误差最小化。这是一个最优化问题。
BP算法的基本步骤:
前向传播:
误差反传 --输出层
误差反传--隐含层
4.性能优化
(1)模型初始化
简单的考虑,把所有权值在[-1,1]区间内按均值或高斯分布进行初始化。
Xavier初始化:为了使得网络中信息更好的流动,每一层输出的方差应该尽量相等。因此需要实现下面的均匀分布:
(2)训练数据与测试数据
数据包括:训练数据、验证数据、测试数据。通常三者比例为70%,15%,15%或60,20,20,当数据很多时,训练和验证数据可适当减少。
(3)训练数据与测试数据:𝐾折交叉验证
原始训练数据被分成 K 个不重叠的子集。 然后执行 K 次模型训练和验证,每次在 K−1 个子集上进行训练, 并在剩余的一个子集(在该轮中没有用于训练的子集)上进行验证。 最后,通过对 K 次实验的结果取平均来估计训练和验证误差。
(4)改善欠拟合与过拟合
权重衰减:为防止过拟合和权值震荡,加入新的指标函数项
暂退法:在整个训练过程的每一次迭代中,标准暂退法包括在计算下一层之前将当前层中的一些节点置零。
(5) 其他优化方法
动量法可有效改善收敛速度,以及避免一些陷入局部极小值
AdaGrad(自适应梯度)及Adam等算法可自适应调节学习速率,加速收敛