神经网络基础知识点自学整理

激活函数

1.单个样本的反向传播算法在每次迭代时的流程为:

正向传播: 利用当前权重和偏置值计算每一层对输入样本的输出值

反向传播: 对输出层的每一个节点计算其误差,反向传播算法计算误差项时每一层都要乘以本层激活函数的导数, 根据误差计算损失函数对权重的梯度值,用梯度下降法更新权重和偏置:

2.训练算法有两个版本:批量模式和单样本模式。

批量模式:每次梯度下降法迭代时对所有样本计算损失函数值,计算出对这些样本的总误差,然后用梯度下降法更新参数。

单样本模式:是每次对一个样本进行前向传播,计算对该样本的误差,然后更新参数,它可以天然的支持增量学习,即动态的加入新的训练样本进行训练。

3.标准的前馈型神经网络第I层实现的变换可以分为线性组合、激活函数两步。 在某些开源框架中,这两步可能会拆分成不同的层,以利于代码复用和灵活组合.

4.梯度消失:如果激活函数导数的绝对值小于1,多次连乘之后误差项很快会衰减到接近于0,参数的梯度值由误差项计算得到,从而导致前面层的权重梯度接近于0,参数没有得到有效更新。

5.梯度爆炸:如果激活函数导数的绝对值大于1,多次乘积之后权重值会趋向于非常大的数,这称为梯度爆炸。梯在很长一段时间内,梯度消失问题是困扰神经网络层次加深的一个重要因素。

25个神经网络

25个神经网络总结

One-Hot和Embedding

One-Hot Encoding(One-Hot 编码)和 Word Embedding(词嵌入)是把单词变成向量的两类方法

One-Hot

One-Hot 编码,又称一位有效编码。其方法是使用 N位 状态寄存器来对 N个状态 进行编码,每个状态都有它独立的寄存器位,并且在任意时候,其中只有一位有效。

假设feature1有两种可能的取值,feature_2 有3种可能的取值,feature_3 有4种取值(状态),one-hot 编码就是保证每个样本中的单个特征只有1位处于状态1,其他的都是0。

feature1feature2feature3
样本1010010001
样本2100100010
样本3011000100
样本4100011000

缺点:

(1) 它是一个词袋模型,不考虑词与词之间的顺序(文本中词的顺序信息也是很重要的);

(2) 它假设词与词相互独立(但在大多数情况下词与词是相互影响的);

(3) 它得到的特征是离散稀疏的,会造成维度灾难。

Embedding-- --word2vec

Embedding就是用一个低维的向量表示一个物体,可以是一个词,或是一个商品,或是一个电影等等,性质是能使距离相近的向量对应的物体有相近的含义
图片引用word2vec具体讲解
word2vec两种数据构造模式: cbow(每个词都是由相邻的词决定的)和skip-gram模式(每个词都决定了相邻的词),Skip-gram的效果好一点
CBOW
在这里插入图片描述word2vec详述

随机数种子

  • 需要复现带有一定随机性的一些操作和算法时,就需要用到随机种子来固定随机的结果。
  • 随机数函数都是通过概率分布来产生随机数,不同的seed函数参数修改概率分布函数中的参数,所以会出来不同的随机值。
  • 随机种子生成器,使下一次生成的随机数为由种子数决定的特定的随机数,如果seed中参数为空,则生成的随机数完全随机。
    参考博客
import random
for i in range(5):
    random.seed(8)
    print(random.random())

每次生成的随机数相同
在这里插入图片描述

import random
for i in range(5):
    random.seed()
    print(random.random())

每次生成的随机数不同
在这里插入图片描述

random.seed(8)
for i in range(5):
    print(random.random())
  • random.seed()设定的随机种子仅有一次有效,也就是说,第一次调用random时使用的是我们随机数种子给定的初值列表,第二次调用时设置的seed对生成随机数无效。

在这里插入图片描述

  • 设置seed(参数)的时,可以调用多次random()向该随机数的列表中添加信息;而再次使用设置的seed()值时,仅一次有效,也就是说调用第二次random()时则脱离该随机数的列表。
  • seed方法设立的目的是为了能够实现实验的可重复进行,得到相同的随机值结果。

批量归一化BN

随机梯度下降法(SGD)对于训练深度网络简单高效,但是它需要人为的去选择参数,比如学习率、参数初始化、权重衰减系数、Drop out比例等。这些参数的选择对训练结果至关重要,以至于很多时间都浪费在这些的调参上。

神经网络训练开始前都要对输入数据做一个归一化处理,原因在于
(1)神经网络学习过程本质就是为了学习数据分布,一旦训练数据与测试数据的分布不同,那么网络的泛化能力也大大降低;
(2)一旦每批训练数据的分布各不相同(batch 梯度下降),那么网络就要在每次迭代都去学习适应不同的分布,这样将会大大降低网络的训练速度。

全连接层和卷积层的BN
BN参考博客

  • BN算法(Batch Normalization)其强大之处如下:
    (1)可以选择比较大的初始学习率让训练速度飙涨,因为它具有快速训练收敛的特性;
    (2)改善正则化策略:作为正则化的一种形式,轻微减少了对dropout的需求。不用去理会过拟合中dropout、L2正则项参数的选择问题,采用BN算法后可以移除这两项了参数,或者可以选择更小的L2正则约束参数了,因为BN具有提高网络泛化能力的特性;
    (3)不需要使用使用局部响应归一化层(局部响应归一化是Alexnet网络用到的方法),因为BN本身就是一个归一化网络层
    (4)可以把训练数据彻底打乱

  • BN作用:要解决在训练过程中,中间层数据分布发生改变的情况。归一化将网络中层与层之间传递的数据限制在一定范围内,从而避免了梯度消失和爆炸的发生

  • BN的地位:与激活函数层、卷积层、全连接层、池化层一样,BN(Batch Normalization)也属于网络的一层。

  • BN的本质原理:在网络的每一层输入的时候,又插入了一个归一化层,也就是先做一个归一化处理(归一化至:均值0、方差为1),然后再进入网络的下一层。BN 依靠均值和方差来归一化隐藏层。那么输出值与当前batch数据也就紧密相关。并且这种转换会增加一些噪音,具体取决于当前batch中使用的输入。

  • BN层是对于每个神经元做归一化处理,甚至只需要对某一个神经元进行归一化,而不是对一整层网络的神经元进行归一化

  • 训练过程中,我们无法得知使用整个数据集来估计平均值和方差,所以只能根据每个小批次的平均值和方差不断训练模型。而在预测模式下,可以根据整个数据集精确计算批量归一化所需的平均值和方差。

  • 由于批量归一化在完整的小批次上运行,因此我们不能像以前在引入其他图层时那样忽略批处理的尺寸大小。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值