1.神经元
神经元形成神经网络的基本结构。神经网络中的神经元接收输入,处理它并产生一个输出,输出被发送到其他神经元进行进一步的处理,或者直接输出。
2.权重
当输入进入神经元时,会乘以一个权重,每个输入都会有一个相关的权重。我们在模型训练过程中随机初始化权重,并更新这些权重。
神经网络经过训练后,赋予重要的输入更高的权重,而被认为不重要的输入会得到较小的权重。权重=0表示该特性是无关紧要的。
假设输入为a,与a相关的权重为W1。经过节点(神经元)后,输入变成了a*W1。
3.偏置
这种偏置主要是为了改变权重的范围。在添加偏置后,结果看起来像a*W1+偏置。这是输入变换的最后一个线性分量。(上图中的b1)
4.激活函数
一旦将线性分量应用于输入,就会应用非线性函数。这是通过将激活函数应用到线性组合来完成的。
激活函数将输入信号转换为输出信号。激活函数应用后的输出看起来像f(a*W1+b),f( )是激活函数。
在下面的图中,我们有n个输入,从X1到Xn,以及相应的权重Wk1到Wkn。我们有一个偏置值,即bk,权重首先乘以相应的输入,加上偏置,共同组成u。激活函数被应用于u,即f(u),我们从神经元接收最终输出,如yk=f(u)。
最常用的激活函数是——Sigmoid、ReLU和softmax。
Sigmoid
sigmoid函数会在0~1之间生成更平滑的值。有时候我们需要微调输入值,以观察输出值的变化时,sigmoid可以使我们做到这一点,因此其优于阶跃函数。
ReLu(线性修正单元)
最近的网络更倾向于使用ReLU激活函数来处理隐含层。
使用ReLU的主要好处是它对所有大于0的输入有一个恒定的导数值。常量导数值可以使网络训练速度更快。
Softmax
Softmax激活函数通常在输出层用于分类问题。
它与sigmoid函数类似,唯一的区别是输出被标准化到1。
如果我们有一个二进制输出,那么sigmoid函数就会起作用,但是如果我们有一个多类分类问题,那么,softmax可以更加容易地为每个类赋值,这些值可以很容易地解释为概率。
5.神经网络
神经网络的目标是找到一个未知函数的近似值。它是由相互联系的神经元形成的。这些神经元有权重和偏置,在神经网络训练期间根据错误进行更新。激活函数对线性组合进行非线性转换,然后生成输出。再由被激活的神经元的组合给出输出。
6.输入/输出/隐含层
输入层是接收输入数据的,并且是网络的第一层。输出层是生成输出数据的一层,或者是神经网络的最后一层。处理层是神经网络中的隐含层。这些隐含层对传入数据执行特定任务并生成输出数据传递到下一层。输入层和输出层是可见的,而中间层是隐含的。
7.MLP(多层感知机)
单个神经元无法执行高度复杂的任务,因此,我们使用堆栈的神经元来产生所需的输出。在最简单的神经网络中,会有一个输入层,一个隐含层和一个输出层,我们称其为感知机。每一层包括多个神经元,并且每一层中的所有神经元都连接到下一层的所有神经元。这个神经网络也可以被称为完全连接的神经网络。在输入层和输出层之间加入多层隐含层,即为多层感知机。
8.向前传播
前向传播是指输入层数据通过隐含层到输出层的运动。在前向传播中,信息沿着一个方向前进。输入层将数据提供给隐含层,然后输出层生成输出。没有反向运动。
9.成本函数
当我们建立一个神经网络时,神经网络试图使输出预测尽可能接近实际值。我们使用成本/损失函数来衡量神经网络的准确性。成本或损失功能会在发生错误时尝试修正网络。我们在运行网络时的目标是提高我们的预测精度,并减少误差,从而最大限度地降低成本。最优化的输出是成本或损失函数值最小的输出。
如果将成本函数定义为均方误差,则可以写为:
其中m是训练输入的数量,a是预测值,y是该特定示例的实际值。学习过程围绕最小化成本。
10.梯度下降
梯度下降是一种用于最小化成本的优化算法。
因此,梯度下降要做的是,从一个点x出发,向下移动一点,即delta h,并将位置更新为x-delta h,继续向下移动,直到达到底部,同时考虑最低成本点。
在数学上,为了找到函数的局部最小值,应采取与函数的梯度的负数成比例的步长。
11.学习速率
学习速率被定义为每一次迭代中成本函数中最小化的量。简单来说,我们下降到成本函数最小值的速率就是学习速率。学习速率选择起来要仔细,不能非常高,也不能很低,而且不能非常低,这样才能使网络永远收敛。
12.反向传播
当我们定义一个神经网络时,可以将随机权重和偏置值分配给每一个节点。一旦获取了单次迭代的输出值,就可以计算网络的错误。把这个错误反馈给网络,以及成本函数的梯度来更新网络的权重。权重更新后可以减少后续迭代中的错误。使用成本函数梯度来进行权重的更新被称为反向传播。在反向传播中,网络的运动是向后的,误差随梯度从外层流入,穿过隐含层,权重被更新。
13.批次(batch)
在训练神经网络时,并非把所有数据一次性输入进去,而是把数据分成几个大小相等的块。对数据进行批量训练的模型比整个数据集一次性输入的模型更加广义化。模型训练 (#model_training)的一次迭代 (#iteration)(即一次梯度 (#gradient)更新)中使用的样本集。
14.训练周期(epoch)
训练周期指的是前向传播和反向传播中所有批次的单一训练迭代。这意味着1个训练周期是所有输入数据的单次向前和向后传递。一个周期表示(N/批次规模 (#batch_size))次训练迭代 (#iteration),其中 N 是样本总数。更多的训练周期可能会显示出更高的网络精度,但是也需要耗费更长的时间。另外,如果训练周期过多,网络容易出现过拟合现象。
15.丢弃
这是一种正则化技术,可防止网络过拟合。在训练期间,隐含层中的一定数量的神经元被随机丢弃。即训练会发生在神经网络的不同组合的几个神经网络架构上。可以把丢弃视为一种综合技术,然后把多个网络的输出用于产生最终输出。
16. 批量标准化
批量标准化可以被看作是设置的特定检查点。批量标准化确保数据的分布和下一层希望得到的一样。当我们训练神经网络时,每一步梯度下降后,权重会改变,这也改变了被发送到下一层的数据的形状。
但是,下一层会预计这种分布与之前看到的类似。因此,我们在将数据发送到下一层之前应明确地将数据标准化。
17. 过滤器
卷积神经网络的一个过滤器就像一个加权矩阵,我们将输入图像的一部分相乘,生成一个复杂的输出。假设我们有一个28*28大小的图像。我们随机分配一个大小为3*3的过滤器,然后用不同的3*3部分的图像相乘,形成一个复杂的输出。过滤器尺寸通常小于原始图像尺寸。在成本最小化的反向传播过程中,过滤器的权重值不断更新。
它与图像的每3*3部分相乘以形成卷积特性。
18. CNN(卷积神经网络)
卷积神经网络大部分用于处理图像数据。假设我们有一个大小为(28*28*3)的输入,如果我们使用一个正常的神经网络,就会有2352(28*28*3)个参数。随着图像的大小增加,参数的数量变得非常大。我们“卷积”图像来减少参数的数量(如17所示的过滤器)。当我们在输入数据的宽度和高度上滑动过滤器时,会产生一个二维的激活映射,在每一个位置都输出经过过滤器后的输出。我们将在深层维度上堆叠这些激活映射,并生成输出数据。
19. 池化
在卷积层之间引入池化层是很常见的。这基本上是为了减少一些参数和防止过拟合。最常见的池类型是使用MAX操作的过滤大小(2*2)的池化层。它用来选取原始图像的每4*4矩阵中的最大值。
还可以使用其他操作(如平均池)进行池化,但是最大池在实践中表现更好。
20. 填充
填充是指在图像中添加额外的零层,这样输出图像的大小与输入图像的大小相同。这就是同样的填充。在过滤器的应用中,相同填充的情况下的卷积层的大小与实际图像大小相等。有效填充是指将图像保存为具有实际或“有效”的图像的所有像素。在这种情况下,经过过滤器后,每个卷积层输出的长度和宽度不断减小。
21.数据增强
数据增强是指在给定数据基础上添加新数据,帮助预测。例如,增加图像亮度可以更容易看到较暗的图像中的猫,或者识别数字9时可以选择稍微倾斜或旋转。在这种情况下,旋转能够解决问题,并提高模型的准确性。通过旋转或增亮,我们可以提高数据的质量。这就是数据增强。
22. 循环神经元
神经元的输出在T时间内被发送回输入。如下图中输出值被作为输入值经过T次发送回来。展开的神经元就像连在一起的T个不同的神经元。这种神经元的基本优点是,它给出了一个更广义的输出。
23. RNN(循环神经网络)
循环神经网络用于连续的数据,上一个输出被用来预测下一个。在这种情况下,网络内部有循环。隐含神经元内的循环可以在一段时间内存储关于前几个单词的信息,从而能够预测输出。隐含层的输出在T时间戳内再次被发送到隐含层。展开的神经元看起来像22条中的图。在完成所有的时间戳后,循环神经元输出到下一层。发送的输出更广泛,而先前的信息将保留较长时间。
最后根据展开的网络对误差进行反向传播以更新权重,这被称为通过时间的反向传播(BPTT)。
24.梯度消失
梯度消失问题出现在激活函数的梯度很小的情况下。当权重与这些低梯度相乘,逐层经过神经网络时,会变得非常小,甚至“消失”。这使得神经网络忘记了长期依赖。在循环神经网络中这通常是一个问题,因为长期依赖关系对网络的记忆非常重要。梯度消失问题可以通过使用像ReLu这种没有小梯度的激活函数来解决。
25.梯度爆炸问题
和梯度消失问题正好相反,梯度爆炸问题指的是激活函数的梯度太大。在反向传播过程中,梯度爆炸令特定节点的权重非常高,而其他节点的权重显得微不足道。梯度爆炸可以通过剪切梯度来解决,这样就不会超过某个值。