反向传播算法揭秘
机器学习最重要的一个方面是它能够识别输出中的误差范围,并能够随着越来越多的数据集通过其神经网络输入而更精确地解释数据。通常被称为反向传播,它是一个不像你想象的那么复杂的过程。
深度学习:神经网络,权重和偏差
神经网络是一个非常复杂的机器:你有一个输入,你把它放进机器,然后你得到一个输出。有多个任务组成了这台机器,以便你最终得到你想要的。您还可以调整作为此过程一部分的每个任务,以便在最后得到工作最好、最准确的结果。在神经网络中,“任务”是隐藏层,而任务性能的调整称为权值。这将决定如何考虑隐藏层中的每个节点,从而影响最终输出的结果。机器学习的原理是通过输入大量的数据集(如试错)来调整任务,从而得到最优的最终输出。
隐藏层中的节点可能看起来像上面的图片; 这被称为感知器。我们可以看到有多个二进制输入产生单个二进制输出。
设X1,X2和X3表示输入,O表示输出。有两种不同的计算方法:
- 取输入的总和:O = X1 + X2 + X3。这个过程在考虑每个输入的同时,没有考虑到每个输入的重要性。您无法分辨其中一个输入如何影响另一个 - 只是它们如何单独影响结果。
- 应用线性函数运算:O =(X1 * X2)+ X3。这可能看起来很熟悉,那是因为它是线性函数的形式y = mx + b。X1是输入,X2是权重,X3是偏差。这意味着X2(因为它乘以X1)决定了X1的重要性。X2越接近0,它对输出的影响就越小。如果X1或X2 = 0,也有可能O = X3。在这种情况下,X3是偏差:它认为这个输出将被激活,不管输入是多少。
你输出的结果是:
- 如果{weight * X +b≤0},则输出为0
- 如果{weight * X + b> 0},则输出为1
神经网络中的权重和偏差的原理可以在上图中看到:
- 如果{(X的权重)* X +(Y的权重)* Y + b> 0},则输出为1
- 否则输出等于0
输出的值是离散的:它是0或1.在应用激活函数之前,每个隐藏单元可以被认为是多元线性回归。
什么是反向传播?
很多时候,你会听到反向传播被称为优化技术:它是一种使用梯度下降的算法,以最大限度地减少机器学习模型预测中的误差。这将计算任何给定误差函数和人工神经网络的误差函数的梯度,同时考虑该神经网络内的不同权重。
梯度下降
梯度下降法是一种算法,它的目的是最小化某种成本函数(误差空间),从而使输出尽可能精确。
但是在你开始训练之前,你需要知道你想要最小化的函数(成本函数),它的导数,它的当前输入,权重,偏差这样你就能得到你想要的:最精确的输出。您将得到的回报是权重和偏差(参数)的误差最小。
这是几乎每个机器学习(ML)模型中使用的算法。梯度下降用于找到成本函数的最小值 - 这基本上是其最低点。成本函数是用于查找机器学习模型预测中的误差的函数。
通过微积分,您知道函数的斜率是函数相对于值的导数。相对于一个权重的斜率,您知道到达山谷最低点所需的方向。迭代数据时,需要计算每个权重的斜率。通过权重的平均值,您知道需要在何处调整每个权重以获得最小的标准偏差。
要想知道你实际需要调整多少权重,你需要使用一个学习率,它被称为超参数。这基本上是试错,通过给神经网络提供更多的数据集来改进。如果梯度下降算法工作正常,成本函数也会随着每次迭代而减小。当它不能再减少时,就称为收敛。
还有几种不同类型的梯度下降——它们处理数据集的方式不同——包括:
- 批量梯度下降:此方法计算误差范围,但仅在评估整个数据集后更新模型。它计算效率高,但需要内存,并不总能获得最准确的结果。
- 随机梯度下降:在评估数据集之后更新模型,而不是在每个训练示例之后更新模型。
- Mini-Batch Gradient Descent:这是在深度学习和训练神经网络中最常用的方法,它是BGD和SGD的组合。数据集分为大约50到256的small batches,然后分别评估每个批次。
反向传播Sums
如前所述,权重之和可以用z = a + b + c + d + ...表示,其中z是输出,a,b,c和d ......是加权输入。
我们想知道当我们在网络中调整权重时误差会改变多少;这可以通过斜率找到。两个神经元a、b之间的误差范围和加权连接可以表示为:
∂error /∂a=(∂z/∂a)*(∂error /∂z)
对于z = a + b + c + d + ...,其导数为1,这意味着当其中一个输入元素增加1时,输出z也增加1。
反向传播Sigmoid函数
Sigmoid是人工神经元中激活函数的一种。如果它们存在于神经元中,它就变成了一个Sigmoid神经元,而不是一个感知器。就机器学习而言,这条曲线显示了每个权重对节点输出的影响,如下所示:
x轴表示输入的值,y轴表示该特定加权节点的输出值。
在x = 0时,函数的输出为y = 0.5。sigmoid函数总是给出y值或节点的加权输出,介于0和-1之间。请记住,加权输出是指隐藏层内的输出,而不是神经网络本身的最终输出。
如果人工神经元图中存在sigmoid,您就可以判断是否存在sigmoid神经元。为了反向传播sigmoid函数,我们需要找到它的方程的导数。如果a是输入神经元而b是输出神经元,则等式为:
b = 1 /(1 + e ^ -x)=σ(a)
这个特殊的函数有一个属性,你可以将它乘以1减去自己得到它的导数,如下所示:
σ(a)*(1 - σ(a))
反向传播ReLU
权重的影响也可以通过线性整流函数来表示。这意味着所有的负权重都被认为是0。
虽然感知器具有0或1的离散值,而sigmoid神经元具有从0到1的连续值,但是经ReLU仅返回正值,因此由其参数的正部分定义。其值范围从0到无穷大。与sigmoid函数类似,ReLU的曲线图将x轴显示为输入值,并将y轴显示为该特定加权节点的输出值。
如果a是加权输入而b是加权输出:当a> 0时b = a ,否则b = 0。当a> 0时,等式的导数等于1,否则导数等于0。
机器学习的本质
既然你已经了解了机器学习中反向传播的一些主要原理,你就会明白,让技术变成现实,让它们能够消灭人类,并不是一回事。而是要教会他们在预测分析领域内思考、正确识别趋势和预测行为。机器学习预测的错误率的降低增加了它的准确性,使它能够超过任何人类的能力。这对现实世界有很大的影响,因为它的应用程序种类繁多,并且有巨大的机会发展到远远超过它现在所能做的任何事情。