深度学习-几个常用概念
一、基础概念
1.偏置
除了权重,另一个线性组件应用于输入,称为偏置。它被添加到输入的权重乘法的结果中。这种偏置主要是为了改变权重的范围。在添加偏置后,结果看起来像a*W1+偏置。这是输入变换的最后一个线性分量。
2.神经元
神经网络中的神经元接收一个输入,处理它并产生一个输出,输出被发送到其他神经元进行进一步的处理,或者直接输出。
3.权重
当输入进入神经元时,会乘以一个权重。例如,如果一个神经元有两个输入,那么每个输入都会有一个相关的权重分配给它。我们在模型训练过程中随机初始化权重,并更新这些权重。神经网络经过训练后,赋予重要的输入更高的权重,而被认为不重要的输入会得到不那么重要的权重。0的权重表示该特性是无关紧要的。
4.激活函数
激活函数将输入信号转换为输出信号。激活函数应用后的输出看起来像f(a*W1+b),f()是激活函数。激活函数一旦将线性分量应用于输入,就会应用非线性函数。
假设有n个输入,从X1到Xn,以及相应的权重Wk1到Wkn。我们有一个偏置值,即bk,权重首先乘以相应的输入,加上偏置,共同组成u。激活函数被应用于u,即f(u),我们从神经元接收最终输出,如yk=f(u)。
最常用的激活函数是——Sigmoid、ReLU和softmax。
5.输入/输出/隐含层
输入层是接收输入数据的,并且是网络的第一层。输出层是生成输出数据的一层,或者是神经网络的最后一层。处理层是神经网络中的隐含层。这些隐含层对传入数据执行特定任务并生成输出数据传递到下一层。输入层和输出层是可见的,而中间层是隐含的。
6.神经网路
神经网络构成深度学习的主干。神经网络的目标是找到一个未知函数的近似值。它是由相互联系的神经元形成的。这些神经元有权重和偏置,在神经网络训练期间根据错误进行更新。激活函数对线性组合进行非线性转换,然后生成输出。再由被激活的神经元的组合给出输出。
神经网络是由许多相互关联的概念化的人工神经元组成的,它们之间传递数据,并且根据网络的“经验”来调整权重。神经元有激活阈值,如果通过的数据和权重组合满足阈值,就会被触发;而被激活的神经元的组合会导致“学习”。
7.MLP(多层感知机)
单个神经元无法执行高度复杂的任务,因此,我们使用堆栈的神经元来产生所需的输出。在最简单的神经网络中,会有一个输入层,一个隐含层和一个输出层,我们称其为感知机。每一层包括多个神经元,并且每一层中的所有神经元都连接到下一层的所有神经元。这个神经网络也可以被称为完全连接的神经网络。在输入层和输出层之间加入多层隐含层,即为多层感知机。
MLP和BP神经网络的区别:https://www.zhihu.com/question/403905831
8.前向传播
前向传播是指输入层数据通过隐含层到输出层的运动。在前向传播中,信息沿着一个方向前进。输入层将数据提供给隐含层,然后输出层生成输出。没有反向运动。
9.反向传播
当我们定义一个神经网络时,可以将随机权重和偏置值分配给每一个节点。一旦获取了单次迭代的输出值,就可以计算网络的错误。把这个错误反馈给网络,以及损失函数的梯度来更新网络的权重。权重更新后可以减少后续迭代中的错误。使用损失函数梯度来进行权重的更新被称为反向传播。
在反向传播中,网络的运动是向后的,误差随梯度从外层流入,穿过隐含层,权重被更新。
10.批量标准化
批量标准化确保数据的分布和下一层希望得到的一样。当我们训练神经网络时,每一步梯度下降后,权重会改变,这也改变了被发送到下一层的数据的形状。但是,下一层会预计这种分布与之前看到的类似。因此,我们在将数据发送到下一层之前应明确地将数据标准化。
11.梯度下降
梯度下降是一种用于最小化损失函数的优化算法。
例如,在爬山的时候,人应该一步一步走下来,而不是一下子跳下来。因此,梯度下降要做的是,从一个点x出发,向下移动一点,即delta h,并将位置更新为x-delta h,继续向下移动,直到达到底部,同时考虑最低成本点。在数学上,为了找到函数的局部最小值,应采取与函数的梯度的负数成比例的步长
12.学习速率
损失函数下降到最小值的速率就是学习速率,学习速率,不能非常高,也不能很低,这样才能使网络永远收敛。
13.批次
在训练神经网络时,并非把所有数据一次性输入进去,而是把数据分成几个大小相等的块。对数据进行批量训练的模型比整个数据集一次性输入的模型更加广义化。
14.训练周期
训练周期指的是前向传播和反向传播中所有批次的单一训练迭代。这意味着1个训练周期是所有输入数据的单次向前和向后传递。可以选择用来训练你的网络的训练周期的数量。更多的训练周期可能会显示出更高的网络精度,但是也需要耗费更长的时间。另外,你必须注意,如果训练周期过多,网络容易出现过拟合现象。
15.丢弃
这是一种正则化技术,可防止网络过拟合。顾名思义,在训练期间,隐含层中的一定数量的神经元被随机丢弃。即训练会发生在神经网络的不同组合的几个神经网络架构上。可以把丢弃视为一种综合技术,然后把多个网络的输出用于产生最终输出。
二、卷积神经网络
1.过滤器
卷积神经网络的一个过滤器就像一个加权矩阵,我们将输入图像的一部分相乘,生成一个复杂的输出。假设我们有一个28*28大小的图像。我们随机分配一个大小为3*3的过滤器,然后用不同的3*3部分的图像相乘,形成一个复杂的输出。过滤尺寸通常小于原始图像尺寸。在成本最小化的反向传播过程中,过滤器的权重值不断更新。这个过滤器是一个3*3矩阵。它与图像的每3*3部分相乘以形成卷积特性。
2.CNN(卷积神经网络)
卷积神经网络大部分用于处理图像数据。假设我们有一个大小为(28*28*3)的输入,如果我们使用一个正常的神经网络,就会有2352(28*28*3)个参数。随着图像的大小增加,参数的数量变得非常大。我们“卷积”图像来减少参数的数量(如17所示的过滤器)。当我们在输入数据的宽度和高度上滑动过滤器时,会产生一个二维的激活映射,在每一个位置都输出经过过滤器后的输出。我们将在深层维度上堆叠这些激活映射,并生成输出数据。
3.池化
在卷积层之间引入池化层更多是为了减少一些参数和防止过拟合。最常见的池类型是使用MAX操作的过滤大小(2*2)的池层。它用来选取原始图像的每4*4矩阵中的最大值。还可以使用其他操作(如平均池)进行池化,但是最大池在实践中表现更好。
4.填充
填充是指在图像中添加额外的零层,这样输出图像的大小与输入图像的大小相同,这就是同样的填充。
梯度消失问题出现在激活函数的梯度很小的情况下。当权重与这些低梯度相乘,逐层经过神经网络时,会变得非常小,甚至“消失”。这使得神经网络忘记了长期依赖。在循环神经网络中这通常是一个问题,因为长期依赖关系对网络的记忆非常重要。梯度消失问题可以通过使用像ReLu这种没有小梯度的激活函数来解决。
4.梯度爆炸
和梯度消失问题正好相反,梯度爆炸问题指的是激活函数的梯度太大。在反向传播过程中,梯度爆炸令特定节点的权重非常高,而其他节点的权重显得微不足道。梯度爆炸可以通过剪切梯度来解决,这样就不会超过某个值。
原文:https://blog.csdn.net/xuyuangdong/article/details/79626043(刚开始学习深度学习,所以将这篇博文的内容作为自己的学习笔记记了下来,感谢博主!)
总结一下:
1. 梯度下降是个优化方法,神经网络中的梯度其实就是损失函数对权重的导数,将损失(loss)反向(图的反向搜索)传给每个神经元然后求导(梯度)不断更新权重,直到网络收敛(loss缩小到一定小范围不在变化)。
2. 所有的训练数据量就是一个epoch,batch=epoch/batch_size; 走一轮batch前向传播(该过程每个神经元的输入wx+b被激活函数作用然后输出),计算一次loss,然后loss反向传输一次完成一次权重的更新。所以一次batch会包含一次前向传递和一次反向传递。反向传递的是loss,通过loss对神经元对应的权重求导(梯度下降优化算法)然后更新对应的权重。
3. 神经网络的输出作用函数:sigmod(二分类),softmax(多分类)。
4. 权重和偏执的更新方式(赢踏是学习率(步长),按照梯度的负方向更新)
,