雜貨鋪 2019-11-19
【51CTO.com原创稿件】人工智能是这几年非常火的技术,上至九十九下至刚会走都对人工智能或多或少的了解。神经网络是人工智能的核心,也就是说没有神经网络就没有人工智能,那么这篇文章就带大家学习一下神经网络相关的知识。这篇文章没有数学公式、没有代码,旨在帮助读者快速掌握神经网络的核心知识。
概念 所谓神经网络简单说就是包含多个简单且高度相连的元素的系统,每个元素都会根据输入来处理相关信息。神经网络是由节点(神经元)组成,这些节点相互链接,信息传入到输入层之后由多个隐藏层进行处理,处理完后再传递给输出层进行最终处理。这里所说的最终处理有可能是输出结果,也有可能是作为输入数据传入到另外的神经网络或者节点进行下一轮的处理。 在上面的内容中我们多次提到节点,那么什么是节点呢?节点也被称为神经元,是一个神经网络的基本单元。它通过接收输入的数据来计算出应该输出的数据,输入的数据可能来自于其他节点或者是外部的输入源。针对每个输入的数据都会有权重,权重是根据输入数据的重要性进行分配得来的。当节点收到输入的数据后,将输入的信息加权和之后再传递给激活函数,然后激活函数通过计算输出最后的输出数据。
训练简述 前面我讲解了神经网络和节点的概念,下面我们就看一下神经网络是怎么训练的。简单说就是修改输入层的输入权重,通过隐藏层处理数据,再通过激活函数对它们进行最终处理。最常见的神经网络学习方式叫做 delta 。 delta 是一种监督规则,每当向神经网络发送一种学习模式时都会调用它,这种情况被称为循环。 在神经网络训练中还涉及到一个概念:误差率。误差率简单地说就是我们向神经网络输入一张图片时,它识别出的结果和正确答案之间的差异。我们训练神经网络最根本的目的就是降低误差率,让每次识别都无限接近于0。
梯度下降 说到误差率就不得不提梯度下降,它是一个一阶最优化算法也称为最速下降法,在最小化损失函数时,可以通过梯度下降法来一步步的迭代求解,得到最小化的损失函数和模型参数值,这个算法很重要因此需要具体讲解一下。 例如我们要从某个大山的深处下山,但是我们不知道下山的路在哪,于是就决定走一步看一步,在每走到一个位置的时候求解当前位置的梯度,然后沿着是当前最陡峭的位置向下走一步,接着继续求解当前位置梯,再向所在位置最陡峭最易下山的位置走。这样一步步的走下去,一直走到觉得我们已经到了山脚。但是这样走下去可能我们不能走到山下而是到了一个局部的最低处。从这段描述中我们可以看出梯度下降不一定能找出全局最优解,有可能找出的是局部最优解。
常见的神经网络 目前已知的神经网络多达上千种,这里面有很大一部分并不是通用的,这部分我们不提。在通用的神经网络中用的最多的有27种,其中经常能见到的是:RNN、感知机网络和前馈网络,下面我进行一个简单的讲解。
一个孩子家长要教他很多事情,但是家长不能任何事情都要教他,有时也需要他通过其他方式学习。在人工智能中也存在这种情况,因此神经网络就出现了三种不同的学习类型,分别是有监督学习、无监督学习和强化学习。
如果说节点是神经网络的核心,那么激活函数和感知器就是神经网络核心的核心,几乎在所有的神经网络中都可以看到他俩,这一小节我就来讲解一下激活函数和感知器。
前面所讲的都是前向传播,和前向传播相反的就是后向传播,后向传播是提升神经网络准确率的重要内容。后向传播又称误差向后传播,是使用梯度下降有监督学习神经网络算法的一种。后向传播通过在神经网络中反向移动来计算梯度。先计算最后一层权重的梯度,最后计算第一层的梯度。后向传播计算取决于前向阶段的激活函数和输出数据,这些值都必须在后向传播开始之前进行计算,因此前向计算必须在后向传播之前完成。 前向和后向传播对于很多刚刚步入人工智能这一行的人很难以理解,下面我就来说说他俩的区别。前向传播数据以获取输出,然后将输出与预期值进行比较从而获得误差。为了能达到最小化该误差,还必须算出每个权重的误差导数来向后传播,然后从权重中减去误差导数。通过前向传播,可以显示神经网络的行为并找到误差。找出误差率后可以后向传播并使用梯度下降的形式更新权重值。