当前位置: 首页 > 科技观察

浅谈人工神经网络与BP算法

时间:2023-03-18 23:45:00 科技观察

【.com原稿】1引言在深度学习技术也叫机器学习技术越来越火的今天,深度学习技术涉及的领域也越来越多广泛的。这些领域包括图像识别、语音识别、自然语言处理和游戏、机器人等。并且随着深度学习技术的完善和成熟,未来深度学习技术的应用将会更加广泛。对于这一块的学习,不仅需要一定的软件知识,还需要一些硬件的技术知识和理论方法。由于我是电子信息专业的,大学期间接触过一些机器学习的知识,毕业后顺利进入一家世界500强的互联网公司,在人工智能研发中心工作,接触到了软件与深度学习技术相关的平台和软件。开发工具。所以对这方面的知识比较熟悉,可以掌握。在这篇论文中,我将对深度学习的方面做一个基本的阐述,并在此基础上展开,以便后面完成一个深度学习技术的平台实践。与前文提到的推荐系统的实现类似,深度学习技术可以作为推荐系统的“计算引擎”,进一步提升推荐效果。因此,学习深度学习技术知识对于软硬件行业的发展尤为重要。2深度学习技术现状在以往的人工智能研发中,虽然理解深度学习技术的日益普及,但也深切感受到这方面的困难,因为目前在这个领域,我国还没有做到突破性进展,我们也称这个阶段为人工智能或机器学习的“瓶颈期”。人工智能领域在可解释性、普及性和无监督学习方面的进展并不明显。尽管该领域的发展仍处于“瓶颈期”,即所谓“雷声大雨点小”的局面,但任何国家都不应在该领域的研究上有所懈怠,只要度过“瓶颈“期”,那么人工智能领域将实现质的飞跃,也会冲出瓶颈,一落千丈。当然,作为软件开发行业,我也很期待这一天的到来,即使3深度学习与神经网络3.1深度学习深度学习又称机器学习,是通过实现具有自我能力的智能机器来代替人类完成一些复杂繁琐的任务。-学习,也称为人工智能。这台机器的学习模型也是通过模仿人类的行为来模拟的。也就是说,在生活中,对于需要解决的新问题,我们会根据自己的历史行为经验,对问题进行整理和总结,从而发现此类问题的潜在可能性。规律,最后利用这些规律来完成预测未来的功能。同样,对于人工智能机器来说,对于需要处理的新数据(新问题),也就是记录历史数据,它也是依靠自己的“经验”来建立模型(类似于人寻找规律),然后通过模型(定律)来预测未知的属性或问题。这些过程完全依赖于机器本身的自学习能力。模型遇到的新数据越多,历史数据越丰富,学习能力越强。这也是一个良性的正反馈过程。如下图所示:3.2神经网络提到类似于人类学习的深度学习,就不得不提到神经网络这个词。我们都知道人类的学习能力主要依赖于人的大脑,而神经网络就是用来在大脑中传递信息的。因此,在深度学习中,它也模仿人脑神经网络的运行机制,形成相应的深度学习神经网络。类比人脑神经网络的神经元,在深度学习中,神经网络模型的构建也依赖于每一个“神经元”。如下图所示,是一个模拟的“神经元”:在这个“神经元”中,输入为X1,X2,X3,截距b为+1;输出是一个函数,w是每个输入的权重,激活函数是f(x),所以。在这类“神经元”中,常用的激活函数有sigmoid(逻辑回归函数)和tanh(双曲正切函数),如下:3.3感知器神经网络中最简单的神经单元也称为感知,因为只有当返回激活函数的值为两个固定值,此时的神经网络可以称为感知器,其返回值可能有以下两种情况:因此,感知器的返回值只有两种情况,和只能解决两类线性可分的问题,适用于模式分类的应用场景。3.4线性神经网络除了最简单的神经网络——感知器之外,线性神经网络也是一种可以包含多个神经元的简单神经网络。对应的激活函数是线性函数,可以返回多个值。最常用的激活函数就是以上两个函数:sigmoid函数和tanh函数。线性神经网络也只适用于线性可分类的问题,但使用的分类效果优于感知器,并且可以进行多种条件分类,不局限于二分类情况。3.5浅层神经网络可以在线性神经网络的基础上加入少量隐藏层,更进一步,称为浅层神经网络,也称为传统神经网络。通常,浅层神经网络只有1或2个隐藏层。浅层神经网络如下图所示:(layerL1为输入层,layerL2为隐藏层)3.6深层神经网络对应浅层神经网络中的少量隐藏层,所以必须有一个深层神经网络网络(DNN)对应大量的隐藏层,深度神经网络是深度学习的基础,或者说深度学习技术是建立在深度神经网络之上的,是神经网络的一种发展。深度神经网络如下图所示:对于隐藏层,加入隐藏层得到的最终输出效果会比线性神经网络更准确,更符合要求。但是,隐藏层数越多,效果越好吗?有一个成语可以说明这一点,那就是欲罢不能。任何事情,一旦不受控制,超过了它所能承受的限度,就可能会远远落后于之前的局面。隐藏层也是如此。隐藏层的少量增加确实可以获得更好的输出。但是如果不加限制地增加,那么最终的效果变化不大,这无疑是多余的。这种情况也称为神经网络的过拟合。4一个问题——过拟合?4.1隐藏层越多越好?理论上,一个神经元可以划分数据集。当隐藏层神经元数量足够多时,隐藏层神经网络可以逼近任何连续函数。虽然在网络工程的效果上,多隐层神经网络的效果要好于单隐层神经网络,但是对于一些分类数据集问题,三层神经网络的效果确实要好于单隐层神经网络。双层神经网络。网络,但是将隐藏层层数增加到5层以上,对最终效果的改变不会太大,同时也会让神经网络过于复杂。增加隐藏层的数量也会增加神经元的数量,使得神经网络更加复杂,即使网络具有更强的处理能力和空间表达能力,但是对于一些简单的数据集问题,比如分类问题就显得大材小用了,这可能会导致过度拟合问题。虽然神经网络模型在预测集上表现出了不错的数据结果,但是神经网络并不适用于视频/图片识别等问题,这也是神经网络模型的局限性。4.2过拟合问题的解决那么如何解决神经网络的过拟合问题呢?目前,解决神经网络过拟合问题的方法主要有3种:(1)交叉验证:主要是将数据集分为训练集、验证集和测试集三部分。其中,训练集作为子集对神经网络模型进行训练,通过验证集评估该模型的性能和预测效果指标。满足预测效果后,将最终的测试集作为输入,得到最终的预测效果;(2)剪枝:训练子集每个epoch结束后,将计算得到的指标准确率与前一个进行比较。如果精度没有变化,则停止训练;(3)正则化:就是在目标函数中加入一个参数,使目标函数成为带参数的函数,最后用参数来惩罚那些权重大的向量,这里的参数称为正则化系数,这个过程称为正则化加工。因此,当=0时,表示没有使用正则化来防止过拟合。5反向传播算法目前有激活函数,隐藏层也知道采取相应的方法来处理过拟??合问题,那么还需要计算什么呢?我们知道输出效果好坏。看数据是否符合预测的数据,那么里面就会有误差,所以需要计算预测误差,用误差来判断另一个。对于任何神经网络来说,一个关键的参数是不容忽视的,那就是权值W,它对于神经网络的处理尤为关键。并且对于每一层网络,对于每一层的输出数据效果,可以知道每一层网络造成的数据丢失。因此,对于数据丢失和神经网络层权重的解决,最常用的方法是FP(前向传播)和BP(反向传播)算法。通过前向传播得到损失,通过反向传播来回传递误差,根据误差值修改网络各层的权值,不断迭代,直到误差最小,即为最优效果。当误差计算已知时,需要使误差越来越小。这里可以利用前面提到的推荐算法中的随机梯度下降法,不断调整权重W参数,得到最小误差值。此时得到的权重W就是想要的权重参数。至于具体的BP(BackPropagation)算法求解权重W的过程,我会在深入Python之后继续使用Python软件模拟演示这个过程,并给出模拟输出效果的散点图。这里我就不细说了。6.总结本文主要介绍深度学习和神经网络的知识。对于这个问题,后续会有更深入的内容。其中,神经网络中有比较晦涩的卷积神经网络。网络和递归神经网络。而这些内容,我会放在下一篇稿子中去详细阐述,一步步深入了解这个技术领域。【原创稿件,合作网站转载请注明原作者和出处为.com】