计算机图像识别能力到底有多强?这份报告再次超越人类想象

本文由腾讯数码独家发布

现在如果你打开谷歌照片,输入“海滩”两个字,就可以看到你过去去过的各个海滩的照片,奇怪的是你从来给这些照片分类或给它们贴标签,相反谷歌根据照片的内容识别出海滩。这个看似很普通的功能其实是基于一种叫做深度卷积神经网络的技术,该技术允许软件以一种很特别的方式理解并分析图像,在以前的技术是达不到的。

近年来研究人员发现,随着网络越来越深层次,软件背后的数据库也越来越庞大,软件的准确性也越来越高。同时也使得人们对计算能力产生了越来越高的需求,几年前谷歌开发了自己的定制神经网络芯片,其他公司争相效仿谷歌的做法。

以特斯拉为例,特斯拉已聘请深度学习专家Andrej Karpathy负责其自动驾驶系统项目,特斯拉目前正在为未来的自动驾驶仪神经网络操作系统开发一款定制芯片。当然还有苹果,最近几款iPhone的核心芯片A11和A12都包含神经引擎,优化了图像和语音识别。

在2012年之前,深度神经网络在机器学习领还处于起步阶段,之后Krizhevsky和他多伦多大学的同学们在竞赛中展示的一份图像识别作品,该成品以往任何都要精确得多,几乎一夜之间,深度神经网络成为图像识别的主要技术。

接下来我们将深入探讨解释什么是神经网络,它们是如何被开发的,以及为什么它们有如此高效的计算能力。然后具体解释一种特殊类型的神经网络,深度卷积网络,特别适用于图像识别。

一个简单的单神经元的例子

如果单提神经网络大家可能感觉有点难以理解,所以让我们举一个简单的例子,假设你要用神经网络来决定一辆车根据交通信号灯的绿灯、黄灯和红灯行驶。神经网络用单个神经元就可以完成这项任务。

神经元的每个输入值(1表示打开,0表示关闭),将其乘以相关的权重,并将所有权重值相加。然后确定神经元激活的阈值。如果输出结果是正的,神经元就已经被激活了,反之就没有被激活。这个神经元等价于不等式“绿-红- 0.5 > 0”,也就是说绿灯亮,红灯暗,车辆就可以行驶。

在真实的神经网络中,人工神经元又多了一步,将加权输入相加并加入偏差后,神经元再应用非线性激活函数,一般是sigmoid函数,它是一个S形函数。

激活函数的使用不会改变红绿灯模型的结果(除了使用0.5而不是0的阈值),但是非线性激活函数对于更复杂的神经网络的建模是必不可少的。没有激活函数,每一个神经网络不管多么复杂,都可以简化成它的输入的线性组合。线性函数不能模拟复杂的现实现象,非线性激活函数能使神经网络能够接近任何数学函数。

神经网络

当然,有很多方法可以近似函数,而神经网络的特别之处在于,可以用微积分、数据和大量的计算能力来训练它们,而不是程序员直接设计神经网络的特定的任务,我们可以构建软件,用一个通用的神经网络开始,然后修改和调整神经网络,越来越定制化。

1986年,三位研究人员发表了一篇关于反向传播的里程碑式论文,反向传播算法是一种帮助训练复杂神经网络在数学上更简化操作的技术。

为了直观地了解反向传播算法是如何工作的,我们来看看Michael Nielsen描述的一个简单的神经网络。这个网络的目的是采取28×28像素图像代表一个手写的数字,正确辨识出数字0,1,2,等等。每个图像有28个×28 = 784输入值,Nielsen构建了这样一个神经网络:

在这幅图中我们可以看到,中间和右边的每一个圆都是代表一个神经元,就像我们在上一段说的,每个神经元取其输入的加权平均值,加上一个偏差值然后再应用一个激活函数。注意左边的圆圈不是神经元,这些圆圈代表的是输入值。虽然图像上只有8个输入圆圈,但实际上有784个,每个像素对应一个。

每个神经元从它前面一层的神经元输入,所以中间这15个神经元每一个都有784个输入值,这15个神经元中的每一个都有一个权重参数,对应它的784个输入。意味着这一层只有15×784 = 11760加权参数。同样输出层包含10个神经元,加另一个15×10 = 150加权参数。除此之外,这个网络还有25个偏差变量,每个偏差变量对应25个神经元,如上图所示。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181219A1650H00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券