自然语言处理8——神经网络基础


这次任务内容较多

1. 神经网络概述

神经网络学习模型是由各神经元模型组成的并行互连的机器学习模型,发展到今天,神经网络模型已经有多种繁杂的变种,下面先介绍最常用的也是基础的前馈神经网络。

1.1 神经网络基本结构

输入层(Input layer),众多神经元(Neuron)接受大量非线形输入消息。输入的消息称为输入向量。
输出层(Output layer),消息在神经元链接中传输、分析、权衡,形成输出结果。输出的消息称为输出向量。
隐藏层(Hidden layer),简称“隐层”,是输入层和输出层之间众多神经元和链接组成的各个层面。隐层可以有一层或多层。隐层的节点(神经元)数目不定,但数目越多神经网络的非线性越显著,从而神经网络的强健性(robustness)(控制系统在一定结构、大小等的参数摄动下,维持某些性能的特性)更显著。
网络层数:通常网络层数指的是除去输入层外的网络层数,即隐藏层与输出层的层数之和。

1.2 激活函数

如果没有激活函数,每一层节点的输入都是上层输出的线性函数,无论神经网络有多少层,输出都只是输入的简单的线性组合,与没有隐藏层效果相当,也就是最原始的感知机(Perceptron)。所以,引入非线性函数作为激活函数,这样深层神经网络表达能力就更加强大。
目前,常用的激活函数有sigmoid函数,tanh函数,Relu函数及Relu的一些改进函数。

1.2.1 sigmoid函数

是使用范围最广的一类激活函数,具有指数函数形状,在物理上最接近神经元。它的输出范围在(0,1)之间,可以被表示成概率,或者用于数据的归一化。
缺陷

  1. 软饱和性——导数 f’(x)=f(x)(1-f(x)),当x趋于无穷时,f(x)的两侧导数逐渐趋于0。
    在后向传递时,sigmoid向下传递的梯度包含了一个f’(x)因子,因此,一旦落入饱和区f’(x)就变得接近于0,导致了向后传递的梯度也非常小。此时,网络参数很难得到有效训练,这种现象被称为梯度消失。一般在5层以内就会产生梯度消失的现象。
  2. sigmoid函数的输出均大于0,这就使得输出不是0均值,这称为偏置现象。这将会导致后一层的神经元将得到上一层输出的非0均值的信号作为输入。

1

1.2.2 tanh函数

2
tanh函数与sigmoid函数相比,输出均值为0,这就使得其收敛速度要比sigmoid快,从而可以减少迭代次数。

缺点
同样具有软饱和性,会造成梯度消失。

1.2.3 Relu函数

针对sigmoid和tanh的饱和性,产生了ReLU函数。
ReLU全称为Rectified Linear Units,可以翻译成线性整流单元或者修正线性单元。 它在x>0时不存在饱和问题,从而使保持梯度不衰减,从而解决了梯度消失问题。这让我们能够直接以监督的方式训练深度神经网络,而无需依赖无监督的逐层预训练。然而,随着训练的推进,部分输入会落入硬饱和区,导致对应权重无法更新,这种现象称为“神经元死亡” 与sigmoid类似,ReLU的输出均值也大于0,所以偏移现象和神经元死亡共同影响网络的收敛性。
3

2. 感知机的简单实现

3. 深度学习中的正则化

正则化是选择模型的一种方法,具体来说,选择经验风险与模型复杂度同时较小的模型(防止过拟合),这样可以较少泛化误差而不是训练误差。

常用正则化方法

  • 参数范数惩罚:L1正则化、L2正则化;
    参数范数惩罚通过对目标函数 J添加一个参数范数惩罚 Ω(θ) ,限制模型的学习能力。
    L0范数:权重向量 W WW 中非0的元素的个数,通常表示为 ∣ ∣ W ∣ ∣ 0 ∣∣W∣∣_0 W0
    L1范数:权值向量 W WW 中各个元素的绝对值之和,通常表示为 ∣ ∣ W ∣ ∣ 1 ∣∣W∣∣_1 W1
    L2范数:权值向量 W WW 中各个元素的平方的和的开方值,通常表示为 ∣ ∣ W ∣ ∣ 2 ∣∣W∣∣_2 W2
    L1范数也称叫“稀疏规则算子”(Lasso regularization),L1范数和 L0范数 可以实现稀疏,L1因具有比L0更好的优化求解特性而被广泛应用。
    L2范数,在回归中称为:“岭回归” (Ridge Regression) 或 “权值衰减weight decay”。
    让L2范数的规则项 ∣ ∣ W ∣ ∣ 2 ∣∣W∣∣_2 W2最小,可以使得 W W W的每个元素都很小,都接近于0(不会让它等于0)。而越小的参数说明模型越简单,越简单的模型则越不容易产生过拟合现象。

  • 数据集增强;
    一般而言,比较成功的神经网络需要大量的参数,许许多多的神经网路的参数都是数以百万计,而使得这些参数可以正确工作则需要大量的数据进行训练,而实际情况中数据并没有我们想象中的那么多
    数据增强的作用 :
    增加训练的数据量,提高模型的泛化能力
    增加噪声数据,提升模型的鲁棒性

  • 噪声添加;
    噪声添加:将其直接添加到学习到的权重上。这项技术主要被用于循环神经网络的情况下。
    在某些假设下,施加于权重的噪声可以被解释为与更传统的正则化形式等同,鼓励要学习的函数保持稳定。

  • early stop;
    为了获得性能良好的神经网络,网络定型过程中需要进行许多关于所用设置(超参数)的决策。超参数之一是定型周期(epoch)的数量:亦即应当完整遍历数据集多少次(一次为一个epoch)?如果epoch数量太少,网络有可能发生欠拟合(即对于定型数据的学习不够充分);如果epoch数量太多,则有可能发生过拟合(即网络对定型数据中的“噪声”而非信号拟合)。
    早停法旨在解决epoch数量需要手动设置的问题。它也可以被视为一种能够避免网络发生过拟合的正则化方法(与L1/L2权重衰减和丢弃法类似)。
    早停法背后的原理其实不难理解:
    将数据分为定型集和测试集
    每个epoch结束后(或每N个epoch后):
    用测试集评估网络性能
    如果网络性能表现优于此前最好的模型:保存当前这一epoch的网络副本
    将测试性能最优的模型作为最终网络模型

  • Dropout层
    训练深度神经网络的时候,总是会遇到两大缺点:容易过拟合,费时较长;Dropout可以比较有效的缓解过拟合的发生,在一定程度上达到正则化的效果。

4. 深度模型中的优化

参数初始化策略;自适应学习率算法(梯度下降、AdaGrad、RMSProp、Adam;优化算法的选择);batch norm层(提出背景、解决什么问题、层在训练和测试阶段的计算公式);layer norm层。

概念有点多,看不过来了,后续慢慢补齐吧。感觉后边可以拆分成几篇分开仔细学习一下了,有些概念之前就比较模糊,现在都忘得差不多了,还是抽时间要多复习啊。

参考

[1]几种常见的激活函数 - 简书 - (https://www.jianshu.com/p/dc4e53fc73a0)
[2]【NLP】Task5:神经网络基础 - CSDN - (https://blog.csdn.net/u012736685/article/details/88858430)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Growing_Snake

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值