神经网络——介绍

神经网络介绍

  • 传统神经网络结构比较简单,训练时随机初始化输入参数,并开启循环计算输出结果,与实际结果进行比较从而得到损失函数,并更新变量使损失函数结果值极小,当达到误差阈值时即可停止循环
  • 神经网络的训练目的是希望能够学习到一个模型,实现输出一个期望的目标值。学习的方式是在外界输入样本的刺激下不断改变网络的连接权值。传统神经网络主要分为一下几类:前馈型神经网络,反馈型神经网络和自组织神经网络。这几类网络具有不同的学习训练算法,可以归结为监督型学习算法和非监督型学习算法

前馈神经网络

前馈神经网络(Feed Forward Neural Network) 是一种单向多层的网络结构,即信息是从输入层开始,逐层向一个方向传递,一直到输出层结束。所谓的“前馈”是指输入信号的传播方向为前向,在此过程中并不调整各层的权值参数,而反传播时是将误差逐层向后传递,从而实现使用权值参数对特征的记忆,即通过反向传播(BP) 算法来计算各层网络中神经元之间边的权重。BP算法具有非线性映射能力,理论上可逼近任意连续函,从而实现对模型的学习。

感知器

  • 感知器是一种结构最简单的前馈神经网络,也称为感知机,它主要用于求解分类问题
  • 一个感知器可以接收????个输入????=(????1, ????2, … , ????????),对应????个权值????=(????1, ????2, … , ????????),此外还有一个偏置项阈值,就是图中的????,神经元将所有输入参数与对应权值进行加权求和,得到的结果经过**函数变换后输出,计算公式如下:
    y=f(xw+b)y=f(x*w+b)
    神经网络——介绍
  • 神经元的作用可以理解为对输入空间进行直线划分,单层感知机无法解决最简单的非线性可分问题----异或问题
  • 感知器可以顺利求解与(AND) 和或(OR)问题,但是对于异或(XOR)问题,单层感知机无法通过一条线进行分割
    神经网络——介绍

**函数

  • **函数经常使用Sigmoid函数、tanh函数、ReLu 函数
  • **函数通常有以下性质:
    • 非线性
    • 可微性
    • 单调性
    • f(x)xf(x) \approx x
    • 输出值范围
    • 计算简单
    • 归一化

Leaky RuLU函数

  • 带泄漏修正线性神经元( Leaky RuLU)的出现是解决“死亡神经元”的问题
    神经网络——介绍
    如何选择**函数?
  • 通常使用ReLU函数,并注意设置好学习率
  • 如果存在死亡神经元的问题,就尝试Leaky ReLU或Maxout函数
  • 尽量避免使用Sigmoid函数
  • tahn函数大部分情况下效果不如ReLU和Maxout函数

损失函数

  • 损失函数评价的是模型对样本拟合度,预测结果与实际值越接近,说明模型的拟合能力越强,对应损失函数的结果就越小;反之,损失函数的结果越大。损失函数比较大时,对应的梯度下降比较快。为了计算方便,可以采用欧式距离作损失度量标准,通过最小化实际值与估计值之间的均方误差作为损失函数,即最小平方误差准则(MSE):
    神经网络——介绍
  • 其中????(????)是模型根据输入矩阵X输出一个预测向量,预测值????(????)和真值????的欧式距离越大、损失就越大,反之就越小,即求||???? ???? − ????||2的极小值。如果是批量数据,则将所有数据对应模型结果与其真实值之间的差的平方进行求和。合适的损失函数能够确保深度学习模型更好地收敛,常见的损失函数有Softmax、欧式损失、Sigmoid交叉时损失、Triplet Loss、Moon Loss、Contrastive Loss等

softmax

使用Softmax函数的好处是可以使分类问题的预测结果更加明显,不同类别之间的差距更大。在实际应用中,特别是在Tensorflow中推荐采用交叉熵与Softmax结合作为损失函数,可以避免数值不稳定的情况

交叉熵

  • 目标为二分类问题,分类误差越小,则损失越小,对正负分类计算各自的损失。但是会产生梯度爆炸问题
    神经网络——介绍
  • 交叉熵损失函数的用途主要应用在互相排斥的分类任务中
  • 交叉熵也可以用于目标为[0,1]区间的回归问题

均方差损失函数

  • 均方差损失函数公式如下:
    神经网络——介绍

学习率

  • 学习率控制每次更新参数的幅度,过高和过低的学习率都可能对模型结果带来不良影响,合适的学习率可以加快模型的训练速度
  • 常见学习率调整方法 (步长的调整)
    • 基于经验的手动调整
    • 固定学习率
    • 动量法动态调整 (越接近极小值的地方,动荡越大)
    • 随机梯度下降
    • Adam自动调整

过拟合

  • 过拟合是指模型在训练集上预测效果好,但在测试集上预测效果差
  • 常用的防止过拟合的方法有
    • 参数范数惩罚:惩罚性成本函数,正则化
    • 数据增强
    • 提前终止
    • Bagging等集成方法
    • Dropout
    • 批正则化

过拟合的防止

惩罚性成本函数

惩罚性成本函数:加了惩罚函数能降低复杂度

  • 一个选项是明确将惩罚项添加至损失函数以获得高权重
  • 该方法类似于岭回归(为了使JJmin 则在加大lambda时,有些WiW_i则需要取极小的值或者0,0则说明某层网络不连接)
    神经网络——介绍
  • 具有与分类交叉熵类似的表达

漏失 Dropout

  • 在漏失机制的每个训练迭代(批次)中,我们随机删除一个神经元子集
  • 这有助于防止神经网络过度依赖单个路径,增强其健壮性
  • 在测试时,我们重新调节神经元的权重,以反映其处于活跃状态的时间比率

尽早终止 Early Stopping

  • 另一个更具启发性的规正则方法是尽早终止
  • 表示选择一些规则来提前终止训练
  • 示例:
    • 每实施10个epoch查看一次验证对数损失的结果
    • 如果该损失高于上次,停止操作并使用上个模型(即10个epoch之前的模型)

动量 Momentum

  • 概念: 每次仅略微改变方向
  • 保持步进方向的“连续平均数”,消除个别点的变化
    神经网络——介绍
  • 加上扰动项,则不完全沿着梯度方向走,让它走偏一点。迭代次数可能增加了,但是防止进入局部极小值跳不出来。
    神经网络——介绍
  • 此处的η\eta表示动量,通常小于1

模型训练中的问题

  • 选择恰当的**函数
  • 权重初始化
  • 学习率
  • 周期/训练迭代次数
  • 训练过程可视化