来源:getwallpapers.com深度学习是机器学习的重要分支之一。它的目的是教计算机做对人类来说很自然的事情。深度学习也是自动驾驶汽车背后的一项关键技术,可帮助它们识别停车标志并将行人与路灯柱区分开来。它是手机、平板电脑、电视和免提扬声器等设备语音控制的关键。深度学习最近因其前所未有的成果而受到广泛关注。在深度学习中,计算机模型直接从图像、文本或声音中学习如何执行分类任务。深度学习模型可以达到最先进的准确性,有时甚至超过人类的表现。我们通常使用大量标记数据和包含许多层的神经网络架构来训练模型。资源深度学习模型可以应用于各种复杂的任务:1.用于回归和分类的人工神经网络(ANN)2.用于计算机视觉的卷积神经网络(CNN)3.用于时间序列分析的递归神经网络(RNN)4.自-组织用于特征提取的地图5.用于推荐系统的深度玻尔兹曼机6.用于推荐系统内容的自动编码器。“人工神经网络(ANN)是一种信息处理范例,其灵感来自于生物神经系统(大脑)处理信息的方式。它由大量高度互连的处理元素(神经元)组成,它们协同工作以解决特定问题“主要内容:1.神经元2.激活函数3.激活函数的类型4.神经网络如何工作5.神经网络如何学习(反向传播)6.梯度下降7.随机梯度下降8.随机梯度下降TrainingNeuralNetworksNeuronsNeurons(也称为神经细胞)是大脑和神经系统的基本单位。它们通过树突接收外界的刺激信息,对信息进行加工处理,并通过轴突输出给其他细胞。生物神经元细胞体(Soma):神经元细胞的主要部分,包含细胞核,进行必要的生化反应。树突:神经元周围的毛发状管状结构。主要负责接受输入信号。轴突:这是一种细长的管状结构,类似于传输线。突触:神经元以复杂的空间排列相互连接。轴突末端再次分支,是一个高度复杂、高度专业化的结构,我们称之为突触。两个神经元之间的连接正是在这些突触处发生的。树突从其他神经元接收信息输入。细胞体处理这些传入的信息并产生通过轴突和突触发送到其他神经元的输出。电信号流过神经元。下图表示受生物神经元启发的人工神经网络的一般模型。它也被称为感知器。单层神经网络,通常称为感知器,在给定输入的情况下计算输出。感知器在上图中,x0、x1、x2、x3...x(n)代表网络的输入(自变量),每个输入在通过所谓的树突时乘以相应的权重。该权重表示为w0、w1、w2、w3….w(n),表示特定节点的强度。b是偏差值。偏置值可以向上或向下移动激活函数。在最简单的情况下,将这些乘积相加并输入传递函数(激活函数)以获得结果,然后将其作为输出发送。激活函数激活函数对于ANN学习和理解真正复杂的东西很重要。它们的主要目的是将人工神经网络中一个节点的输入信号转换为输出信号,作为下一层的输入。激活函数通过计算加权和偏差值来决定是否激活神经元。目的是引入非线性。如果我们不应用激活函数,那么输出信号将只是一个线性函数(一阶多项式)。线性函数易于求解且功耗相对较小,但其复杂度有限。因此,如果没有激活函数,我们的模型就无法学习,也无法对复杂数据建模,例如图像、视频、音频、语音等。为什么我们需要非线性函数?非线性函数是具有曲率的函数。现在我们需要神经网络能够学习,能够表示将输入映射到输出的任意复杂函数。因此神经网络也被认为是“通用函数逼近器”。激活函数的类型:1.阈值激活函数——(二进制阶跃函数)二进制阶跃函数是基于阈值的激活函数。如果输入值高于某个阈值,则激活神经元并将完全相同的信号发送到下一层;低于某个阈值,它不会被激活。二元函数这个函数的问题是创建一个二元分类器(1或0),但是如果我们想连接多个这样的神经元以引入更多类,如Class1、Class2、Class3等,该怎么办?在这种情况下,所有神经元都会给出1我们将无法判断。2.SigmoidActivationFunction-(LogicalFunction)Sigmoid函数是一种数学函数,具有特征“S”形曲线或S形曲线,取值范围为0到1,因此在需要预测概率作为输出时使用.Sigmoid曲线Sigmoid函数是可微分的,这意味着我们可以求解曲线在任意两点的斜率。sigmoid激活函数的缺点是,如果给定一个较大的负输入,它会导致神经网络在训练时卡住。3.双曲正切函数—(tanh)类似于Sigmoid,但性能更好。它本质上是非线性的,所以我们可以叠加层。这个函数的取值范围是(-1,1)。双曲正切函数该函数的主要优点是负输入映射到负输出,而只有零值输入映射到接近零的输出。因此,在训练过程中发生口吃的几率较小。4.RectifiedLinearUnit-(ReLu)ReLu是CNN和ANN中最常用的激活函数,范围从零到无穷大。[0,∞]如果x为正则ReLu给出输出“x”,否则如果x为负则输出0。ReLu看似是线性函数的问题,其实本质上是非线性的,ReLu的组合也是非线性的。事实上,它是一个很好的逼近器,可以通过结合Relu来逼近大多数函数。它通常应用于神经网络的隐藏层。对于输出层,softmax函数通常用于分类问题,线性函数用于回归问题。这里的一个问题是一些梯度可能会在训练过程中消失。这会导致权重更新,并且没有数据点可以激活该神经元。ReLu基本上会导致神经元死亡。为了解决这个问题,引入了LeakyReLu。LeakyReLu引入了一个小斜率来保证不会出现上述问题。LeakyReLu的范围从-∞到+∞。ReLuvsLeakyReLuLeaky增加了ReLu函数的输出范围。通常,a=0.01。当a不为0.01时,称为随机ReLu。神经网络如何工作?我们以房地产价格为例,首先,我们将不同的因素聚合成一行数据:面积、卧室数、与城市的距离和年龄。输入值通过加权突触直接到达输出层。四个输入值被分析并输入激活函数以产生输出。这很简单,但是通过在输入层和输出层之间添加一个隐藏层,您可以增强神经网络的能力并提高其准确性。具有隐藏层的神经网络(仅显示非零值)现在在上图中,所有4个变量都通过突触连接到神经元。然而,并不是所有的突触都是加权的。权重包括0和非零值。这里,非零值表示重要性,0值表示输入被丢弃。让我们举一个例子,第一个神经元的Area和DistancetoCity不为零,这意味着它们对第一个神经元很重要。其他两个变量Bedrooms和Age的权重为0,因此它们不会通过第一个神经元。您可能想知道为什么第一个神经元只考虑四个变量中的两个。离市区越远,房子越便宜,这在房地产市场上很常见。所以这个神经元所做的很可能是寻找离城市更近的房子。有许多神经元,每个神经元使用这些变量的不同组合执行相似的计算。一旦满足标准,就使用激活函数计算神经元。下一个神经元加权突触可能是到城市的距离和卧室。所以神经元以一种非常灵活的方式工作,全面搜索以找到特定的东西。神经网络如何学习?让我们从一个类比开始。神经网络的学习与我们平时的学习方式息息相关。我们先完成某项工作,得到教练的指正,下次我们会把这项工作做得更好。同样,神经网络需要训练器来描述网络如何响应输入。使用实际值和预测值之间的差异,计算误差值(也称为成本函数)并将其发送回系统。成本函数:实际值与输出值的平方差的一半。对于网络的每一层,都会分析一个成本函数,并使用它来调整下一个输入的阈值和权重。我们的目标是最小化代价函数。成本函数越低,实际值越接近预测值。随着网络继续学习,这减少了每次运行的错误。我们通过整个神经网络提供结果数据。将输入变量连接到神经元的加权突触是我们唯一可以控制的东西,因此只要实际值和预测值之间存在差异,我们就需要调整权重。一旦我们稍微调整一下并再次运行神经网络,就会产生一个新的成本函数,我们希望它可以比上一个更小。重复此过程,直到成本函数降低到尽可能小的水平。上述过程称为反向传播,并在网络中不断进行,直到误差值保持在最小值。反向传播调整权重的方法有两种:1.蛮力法2.批量梯度下降蛮力法适用于单层前馈网络。这里我们需要考虑很多可能的权重。在这种方法中,我们想要丢弃除U形曲线底部以外的所有权重。可以使用简单的消除技术找到最佳权重。如果我们只需要优化一个权重,这种方法很有效。但是对于具有很多权重的复杂神经网络,这种方法维数太高而不实用。BatchGradientDescent它是一种一阶迭代优化算法,在训练具有不同权重的模型期间找到最小成本值(损失)。梯度下降在“梯度下降”中,我们不是一次查看每个权重并剔除错误的,而是查看函数的斜率。如果斜率→负值,这意味着你正在沿着曲线向下走。如果斜率→正,什么也不做。这样就可以剔除大量不正确的权重。随机梯度下降(SGD)当我们有如上所示的凸曲线时,梯度下降效果很好。然而,如果我们没有凸曲线,梯度下降就会失败。术语“随机”是指与随机概率有关的系统或过程。因此,在随机梯度下降中,每次迭代都会随机选择一些样本而不是整个数据集。随机梯度下降在SGD中,我们一次获取一行数据,通过神经网络运行该数据,然后调整权重。对于第二行,我们运行它,然后比较成本函数,然后再次调整权重。SGD帮助我们避免了局部最小值的问题。它比梯度下降快得多,因为它一次运行每一行并且不必将整个数据加载到内存中进行计算。需要注意的一件事是,由于SGD通常比典型的梯度下降更嘈杂,由于其下降的随机性,它通常需要更多的迭代才能达到最小值。虽然它需要比典型的梯度下降更多的迭代次数才能达到最小值,但它的计算成本仍然比典型的梯度下降低得多。因此,在大多数情况下,SGD优于批量梯度下降。使用随机梯度下降训练神经网络Step1→将权重随机初始化为接近0但不为0的小数。Step2→在输入层输入数据集的第一个观察值,每个特征放在一个节点中。Step3→ForwardPropagation:从左到右依次激活神经元,直到获得预测值。每个神经元的影响都受到权重的限制。Step4→将预测结果与实际结果进行比较,衡量误差(成本函数)。步骤5→反向传播:从右到左,错误被反向传播。权重根据它们对错误的贡献进行更新。学习率决定了我们更新权重的程度。Step6→重复步骤1到5,每次比较后更新权重(强化学习)Step7→当整个训练集通过ANN时,就完成了。结论来源:techcrunch.com神经网络是一个具有巨大潜力的全新概念。它可以应用于各种不同的概念,并在测试阶段通过特定的反向传播和纠错机制进行学习。这些多层系统有一天可能会通过单独学习来减少错误的可能性,而无需人工纠正。
