深度神经网络(DNN)是一种机器学习技术,通过训练,计算机可以完成传统编程技术难以完成的任务。神经网络算法的灵感来源于人脑及其功能:就像我们人类的大脑一样,它的工作原理不仅是遵循预先设定的一系列规则,而且还能根据先前的迭代和经验预测解决方案并得出结论。
什么是神经网络架构?
神经网络由多层节点组成,这些节点接收来自其他层的输入并产生输出,直至得出最终结果。神经网络可以有任意数量的隐藏层:网络中的节点层数越多,复杂度就越高。以下是不同的神经网络架构:
- 传统的神经网络,通常由 2 或 3 个隐藏层组成;
- 深度学习网络,最多可有 150 个隐藏层;
神经网络和深度神经网络有什么区别?
深度神经网络是一个比 "简单 "神经系统复杂得多的系统。神经网络就好比一盘棋,根据算法行事:根据对手的棋步和行动,提出不同的战术建议。这种神经网络将受限于程序员的输入:
- 棋子如何移动;
- 棋盘的大小;
- 针对不同情况采取不同策略;
超越输入数据并能从以往经验中学习的神经网络成为深度神经网络
例如,在同一台计算机上,你可以训练一个神经网络,然后用它与其他人对弈,让它在对弈中学习。如果神经网络能从不同的棋手身上学习,那么即使是国际象棋大师,也很难甚至根本不可能战胜深度神经网络。
深度神经网络可以识别语音命令、识别声音、识别声音和图形,其功能远远超过神经网络。深度学习网络利用 "大数据 "和算法来解决问题,这些深度神经网络可以在有限或没有人工输入的情况下解决问题。
如何可视化深度神经网络的工作?
看一个例子最能理解深度神经网络的工作过程。想象一下,你有成百上千张图片,其中有些图片里有狗,你决定编写一个计算机程序来识别图片中的狗。
你有两个选择。你可以编写一个明确识别狗的程序,也可以编写一个 "学习 "如何识别狗的程序。
你不明智地决定尝试前者。
使用传统编程技术时间长、难度大,而且结果不一定准确
为了识别狗的图片,你需要使用 "如果 "和 "那么 "语句创建一个软件程序,每当你识别出毛发、软耳和尾巴等狗的特征时,你看到狗的可能性就会增加。然而,这种神经系统在很多层面上都很难实现:
例如,如果一簇像素像一条尾巴,就会增加您看到的是一只狗的可能性。你的深度神经网络需要识别出与狗相似属性相对应的像素群。即使你能做到这一点,你的算法也会遇到一些问题:
- 许多拍摄的物体都有一些类似狗的属性,尤其是类似动物的照片。您需要添加规则;
- 有时,属性是存在的,但被掩盖了。你的算法无法捕捉到它们;
- 有时,只有当其他属性都存在时,属性才具有重要性。这就需要更多的决策规则;
分类失败。你意识到自己无法手动识别整套属性,更不用说设计处理所有这些特殊情况所需的所有规则了。
你明智地放弃了,决定尝试后一种方法。使用神经网络,甚至更好的是深度神经网络。
深度学习模型可为您节省编码时间,并提供更好的结果
神经网络之所以如此命名,是因为这种编程方法与大脑的工作方式有相似之处。
就像大脑一样,神经网络算法使用的是由神经元或节点组成的网络。和大脑一样,这些神经元也是离散的功能(或者说是小机器),它们接受输入并产生输出。这些节点分层排列,一层神经元的输出成为下一层神经元的输入,直到网络外层的神经元产生最终结果。
因此,就像大脑一样,每一层神经元都接受非常有限的输入,并产生非常有限的输出。第一层神经元(或输入层)接收输入,最后一层神经元(或输出层)输出结果。
称这种算法为 "神经网络 "是否准确?
当然,人脑远比神经网络复杂和强大。将算法命名为 "深度神经网络 "是一种品牌营销策略,但它可能会让人们对这些技术所能达到的效果产生不切实际的期望。尽管如此,还是有人试图利用非常复杂的神经网络来重新设计大脑,希望通过这样做能够在机器人开发中复制出类似人类的一般智能。那么,神经网络和机器学习技术如何帮助我们解决狗的识别问题呢?
深度神经网络算法无需编程,就能识别重要属性并处理所有特殊情况,而不是手动定义类狗属性。
深度神经网络如何运行?
具体做法如下
输入层上的每个神经元都从图像中接收一点信息作为输入,然后随机加权(在 0 到 1 之间),判断该信息是否暗示着一只狗。低权重(小于 0.5)意味着该信息与狗相关联的可能性较小,而高权重则意味着该信息与狗相关联的可能性较大。这种多层神经网络方法被称为深度学习。神经网络和深度学习是实现计算机理解的非常强大的技术。
深度神经网络由多层节点组成,其行为类似于我们大脑中的神经元
因此,为了继续深度神经网络,这些神经元的权重会作为输入输入到其他神经元层,而其他神经元层也会随机分配权重,并将其作为输入传递给网络中更多的神经元。这一过程一直持续到神经元输出层给出二进制判断为止。如果传递给它们的权重的平均值大于 0.5,那么它就是一只狗,否则就不是。神经元在多层节点之间的连接和激活正是深度神经网络应用的强大之处。
深度神经网络如何知道自己是否得出了正确答案?
此时的相关问题是:深度神经网络是否猜对了,猜对了或猜错了会发生什么?神经网络如何知道自己是否猜对了?
它知道的一种方法是,如果你进行一项极其耗时的分类任务,根据照片中是否有狗,给所有照片贴上 "狗 "或 "非狗 "的标签。神经网络只需查看标签,就能知道它是否正确识别了狗。
当然,我们并不关心它是否在一张狗的照片上回答对了 "是否有狗 "的问题。我们感兴趣的是,它是否在每张照片上都答对了这个问题,或者至少找出它在评估照片中是否有狗时的准确率。
深度神经网络如何利用训练来学习?
神经网络通过数据的每次迭代学习,以提高其准确性
对于网络中所有神经元的给定权重集,神经网络将对所有照片进行猜测,然后确定其准确性。它得到正确结果的百分比是多少,例如,当狗出现在照片中时,它就说狗出现在照片中;它得到错误结果的次数是多少,当狗不在照片中时,它就说狗出现在照片中;或者当狗出现在照片中时,它就说狗不在照片中。这种显示人工智能算法准确度的方法对神经网络模型来说是至关重要的反馈。
在对所有照片运行一次后,它可以随机(或以其他方式)调整一些权重,然后再次进行猜测照片内容的整个过程。如果第二次运行的结果更好,它就会继续运行,而不会返回到上一组权重。如果第二次运行的结果较差,它可能会恢复到前一组权重,然后尝试对这些权重进行不同的修改。
这个过程将一直持续下去,直到神经网络能够很好地识别照片中的狗(希望如此)。
当算法能够准确识别狗时,就可以说它已经收敛。它已经成功地 "训练 "出了识别狗的能力。
神经网络有哪些不同类型?
卷积神经网络
卷积神经网络(CNN)是一种人工智能,旨在处理或学习大型数据集。卷积神经网络是专门描述这种网络或一般人工智能技术的新造术语。
CNN 是一种功能强大的图像识别人工智能工具,它不仅能利用深度学习执行生成任务,还能执行描述任务。生成任务的例子包括自动裁剪、撰写标题、摄像、油印和图像叠加。卷积神经网络包含所谓的卷积层。这些层中的每个神经元只处理视野中一小部分的信息。每个神经元的输入都以类似校验的方式排列起来,从而生成一个特征图。
人工神经网络
人工神经网络(ANN)是由许多不同深度或层的感知器组成的网络,可以理解为逻辑回归。人工神经网络通常被称为前馈神经网络,因为输入只在前向进行处理:一层接收输入并以线性方式发送输出。
人工神经网络也被称为通用函数近似器。纯粹的神经网络算法,如人工神经网络和可作为深度学习实现的映射函数,可以让计算机学习任何函数。通用近似之所以重要,原因之一在于激活函数。激活函数在学习输入和输出之间的任何复杂关系时,将非线性特性引入网络。它有助于不同类型的网络相互学习。
深度神经网络如何随着时间的推移不断改进?
一种想象算法的方法是,将每个神经元想象成一种确定性测试。每个神经元都经过校准,以增加或减少照片中物体是狗这一最终判断,而不是对所有这些 "如果-那么 "语句进行编码以识别狗。这就好比判断(如是否是狗)被分割成大量相互关联的判断,这些判断共同组成了最终判断。
当然,首要目标是在可能的情况下实现趋同。在合理的时间内,最好是在很短的时间内,实现这一目标也是一个重要目标。
深度学习算法的学习过程让人类难以理解
有趣的是,让神经网络识别图片中狗的逻辑并不是人类所能理解的。深度学习模型具有隐藏逻辑,本质上是一个由隐藏层节点组成的黑盒子,创建了自己的深度网络。尽管如此,还是有人尝试将神经网络背后的逻辑可视化地呈现在图像识别任务中。在其他情况下,无法看到算法在幕后做了什么,深度学习方法仍然是隐藏的。
神经网络和机器学习现在很流行,但其中许多算法在 50 年前就已为人所知。
为什么深度神经网络在各行各业越来越受欢迎?
神经网络现在比刚发明时更受欢迎,其中一个主要原因是处理能力比以前更快、更便宜。计算能力是实现快速收敛的关键。另一个原因是,数据现在无处不在,这就提高了能够利用数据的算法的价值,如chatbots ,用于商业领域。
先进的神经网络需要强大的处理能力和大量数据
深度学习神经网络是一种对数据和处理器要求极高的技术,可以实现程序员使用编程技术无法实现的结果。它们非常适合解决某些问题,在这些问题中,数据无处不在,而且很容易对结果进行分类或排序。
如果没有数十万甚至数百万张狗的照片,就不可能对算法进行训练。只有在拥有大量数据的情况下,这些技术才能发挥作用。这一点相当明显,因为所有的特殊情况都不可能在一组 1000 张照片中体现出来。
神经网络可面对结构化数据或非结构化数据
上述例子中的一个问题是,给所有照片贴标签需要大量的人工工作。对于算法来说,使用以结构化方式标注的数据更容易。使用结构化数据的神经网络机器学习被称为监督学习。
这就引出了一个核心问题:有没有可能避免所有的标记工作?这将是一件好事,因为你不仅可以避免大量的手工工作,而且互联网上的大部分数据都是非结构化的,即没有经过仔细标注或结构化。
神经网络能否处理非结构化数据?
处理非结构化数据的人工神经网络和机器学习被称为无监督学习。当然,这是机器学习的圣杯,更类似于人类的学习方式。不过,即使是机器的无监督学习,也需要比人类多得多的数据来 "学习",而且机器无法轻易地推断出它们所训练过的示例之外的示例。
许多深度学习模型试图重现人脑的工作过程
有些人认为,可以通过重新设计大脑来开发这类算法,使其开始接近人类水平的 "理解"。他们认为,可以利用复杂的大脑扫描技术,让我们了解大脑神经网络的实际运作方式。通过复制这些设计和模式,我们可以复制出人类水平的智能。
虽然这些技术无疑是独创的,而且非常有用,特别是在有大量数据集的情况下,但很难想象这种简单的算法会成为具有高度创造性的类人智能的基础。