美赛数学模型(二)——神经网络

神经网络基础

神经元

一个基本神经元模型

一个基本神经元模型有三个基本要素:
(i)一组连接(对应于生物神经元的突触),连接强度由各连接上的权值表示,权值为正表示激活,为负表示抑制。
(ii)一个求和单元,用于求取各输入信号的加权和(线性组合)。数学表示为 u k = ∑ j = 1 m w j x j u_k=\sum_{j=1}^{m}w_jx_j uk=j=1mwjxj.
(iii)一个非线性激活函数,起非线性映射作用并将神经元输出幅度限制在一定范围内(一般限制在(0,1)或(−1,1)之间)。

此外,还有一个阈值 θ k \theta_k θk(或偏置 b k = − θ k b_k=-\theta_k bk=θk)。结合阈值后得到非线性激活函数以及输出的数学表示 v k = u k − θ k v_k =u_k-\theta_k vk=ukθk y k = f ( v k ) y_k = f(v_k) yk=f(vk).

如果把输入的维数增加一维(增添固定数入 − 1 -1 1并视阈值 θ k \theta_k θk为该固定输入突出权值),则可以将阈值包括在求和节点内。

激活函数

激活函数主要分为两大类:饱和激活函数非饱和激活函数。sigmoid、双曲正切函数为饱和激活函数。Relu、Leaky Relu为非饱和激活函数。
相对于饱和激活函数,使用“非饱和激活函数”的优势在于两点:
1.首先,“非饱和激活函数”能解决深度神经网络的“梯度消失”问题,浅层网络才用sigmoid 作为激活函数。
2.其次,非饱和激活函数能加快收敛速度。

  • softmax
    f ( v i ) = e v i ∑ v j e v j f(v_i)=\frac {e^{v_i}}{\sum_{v_j} e^{v_j}} f(vi)=vjevjevi
    该函数用于多分类的过程中,将多个神经元的输出映射到(0,1)区间内。
  • 阈值函数/阶梯函数
    f ( v ) = { 1 , n ≥ 0 0 , n < 0 f(v)=\begin{cases}1,&\text{$n\geq0$}\\0,&\text{$n<0$}\end{cases} f(v)={1,0,n0n<0
  • 分段线性函数
    f ( v ) = { 1 , n ≥ 1 1 2 ( 1 + v ) , − 1 < n < 0 0 , n ≤ − 1 f(v)=\begin{cases}1,&\text{$n\geq1$}\\\frac12(1+v),&\text{$-1<n<0$}\\0,&\text{$n\leq-1$}\end{cases} f(v)=1,21(1+v),0,n1−1<n<0n−1
    该函数类似于一个放大系数为 1 的非线性放大器,当工作于线性区时它是一个线性组合器, 放大系数趋于无穷大时变成一个阈值单元。
  • sigmoid函数
    f ( v ) = 1 1 + e − α v f(v) =\frac{1}{1+{e^{-\alpha v}}} f(v)=1+eαv1
    参数 α \alpha α可以控制其斜率。 sigmoid 将一个实值输入压缩至[0,1]的范围,也可用于二分类的输出层。
  • 双曲正切函数
    f ( v ) = 1 − e − v 1 + e − v f(v) =\frac{1-{e^{-v}}}{1+{e^{-v}}} f(v)=1+ev1ev
    双曲正切函数将一个实值输入压缩至 [-1, 1]的范围,这类函数具有平滑和渐近性,并保持单调性。
  • Relu
    f ( v ) = m a x ( 0 , v ) f(v) = max(0,v) f(v)=max(0,v)
    与Sigmoid/tanh函数相比,ReLu激活函数的优点是:使用梯度下降(GD)法时,收敛速度更快。并且相比Relu只需要一个门限值,即可以得到激活值,计算速度更快。
    同时,其缺点是: Relu的输入值为负的时候,输出始终为0,其一阶导数也始终为0,这样会导致神经元不能更新参数,也就是神经元不学习了,这种现象叫做“Dead Neuron”。
    为了解决Relu函数这个缺点,在Relu函数的负半区间引入一个泄露(Leaky)值,所以称为Leaky Relu函数。
  • Leaky Relu
    f ( v ) = m a x ( 0 , v ) + l e a k ∗ m i n ( 0 , v ) f(v) = max(0,v)+leak*min(0,v) f(v)=max(0,v)+leakmin(0,v)
    与 ReLu 相比 ,leak 给所有负值赋予一个非零斜率, leak是一个很小的常数 \large a_{i} ,这样保留了一些负轴的值,使得负轴的信息不会全部丢失)。

神经网络

除单元特性外,网络的拓扑结构也是NN 的一个重要特性。从连接方式看NN 主要有两种。

  • 前馈型网络
    各神经元接受前一层的输入,并输出给下一层,没有反馈。结点分为两类,即输入单元和计算单元,每一计算单元可有任意个输入,但只有一个输出(它可耦合到任意多个其它结点作为其输入)。通常前馈网络可分为不同的层,第i层的输入只与第i −1层输出相连,输入和输出结点与外界相连,而其它中间层则称为隐层。
  • 反馈型网络
    所有结点都是计算单元,同时也可接受输入,并向外界输出。NN 的工作过程主要分为两个阶段:第一个阶段是学习期,此时各计算单元状态不变,各连线上的权值可通过学习来修改;第二阶段是工作期,此时各连接权固定,计算单元状态变化,以达到某种稳定状态。

从作用效果看,前馈网络主要是函数映射,可用于模式识别和函数逼近。
反馈网络按对能量函数的极小点的利用来分类有两种:第一类是能量函数的所有极小点都起作用,这一类主要用作各种联想存储器;第二类只利用全局极小点,它主要用于求解最优化问题。

BP神经网络

所谓神经网络的训练或者是学习,其主要目的在于通过学习算法得到神经网络解决指定问题所需的参数,这里的参数包括各层神经元之间的连接权重以及偏置等。因为作为算法的设计者(我们),我们通常是根据实际问题来构造出网络结构,参数的确定则需要神经网络通过训练样本和学习算法来迭代找到最优参数组。
BP学习算法全称为误差逆传播算法,通常用在最为广泛使用的多层前馈神经网络中。
其基本流程总结如下:

  • 输入:训练集以及学习率
  • 过程
    • 在(0, 1)范围内随机初始化网络中所有连接权和阈值
    • 循环以下步骤(每次循环均针对所有输入的训练集中的元素)
      • 根据当前参数计算当前样本的输出
      • 计算输出层神经元的梯度项
      • 计算隐层神经元的梯度项
      • 更新连接权与阈值
    • 直到达到停止条件
  • 输出:连接权与阈值确定的多层前馈神经网络

总的来看,训练一个BP神经网络首先需要进行前向传播(即从输入层到隐含层,再从隐含层到输出层),之后完成反向传播(即计算总误差并从隐含层反向传播使得输出层权值更新(采用链式求导法则),最后再重复隐含层到隐含层的权值更新)。

具体公式及实例见一文弄懂神经网络中的BP反向传播算法

BP神经网络的应用

  • 模式识别
    模式识别通常是指对表征事物或现象的各种形式的(数值的、文字的和逻辑关系的)信息进行处理和分析,以便确定他们属于哪种类别。
  • 函数逼近
    对于一些表达式过于复杂的函数,或者是难以表达的函数,我们可以利用神经网络来无限逼近他们,对他们进行模拟。
  • 预测
    先利用一些已知的数据对网络进行训练,然后再利用这个训练好的网络来对新来的数据进行预测。相比于传统的方法来说,神经网络提高了准确度,并且只需要较少的数据。
  • 数据压缩
    数字图像压缩实际上是以较少的比特数有损或者无损的来表示原来像素矩阵的一种图像处理技术,实际上就是减少图像数据中的时间冗余,空间冗余,频谱冗余等等作为目的,从而同过减少上述的一种或者多种冗余的信息而达到更加高效的存储与传输数据.图像的压缩系统其实无论采用什么样的具体的架构或者技术方法,基本的过程都是一致的,主要还是可以概述为编码,量化,解码这三个部分。从理论上讲,编解码问题其实就可以归结为映射与优化的问题,从神经网络的方面来看无非就是实现了从输入到输出的一个非线性的映射关系,并且衡量性能的标准可以从并行处理能力是否高效,容错率是否合适,以及是否具有鲁棒性.分析图像压缩的基本原理其实和上述的BP神经网络的原理一样。所以我们可以利用BP神经网络来解决图像压缩问题。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值