在上一讲中,我们有提到一个算法“人工神经网络”,虽然这是一个专业名词,但是近来想必很多不是做技术的同学,甚至不是互联网行业的同学都对这个词有所耳闻,就算没有听过人工神经网络,“深度学习”这个词也一定听说过。

在我们日常的数据中,包含了大量的文本或者说自然语言和图像数据,这些数据最贴近人们的认知,但是如何让机器理解这种非结构化且非标准的数据,一直是算法专家想要突破的难题。

其实从很早之前,就有很多人在研究这两个方向,但是主要局限在制定规则方面,比如说自然语言处理的乔姆斯基范式,期望通过总结语言规则来进行处理。但是语言没有统一的标准,要想穷尽里面的规则是不可能的。这些年,随着人工神经网络和深度学习的爆发式增长,在自然语言处理和计算机视觉方面有了非常大的突破,这节课,我们就来看一下,如今这些领域可以做些什么事情。

人工神经网络

上节课我们说过,机器学习的目标看起来就是仿照人认知事物的方式,学习其中的规律并应用到数据当中。那么能不能直接去模仿人的大脑呢?在我们的大脑中充满了无数的神经元,在对神经系统进行研究时,模仿神经元的生物机理而产生的计算模型就是人工神经网络

神经元由细胞体树突轴突三部分构成:

  • 细胞体主要为神经活动提供能量;
  • 树突接收从其他神经元传来的信号;
  • 轴突将神经元产生的信号传出。

一个神经元和另外一个神经元联系传递信号的结构是突触,需要注意的是,在传递信号的时候并不是从一个神经元直接完全地传递到下一个神经元,信号具有强弱,只有当接收的信号累加到足够的强度才会进行下一步传输。

自然语言处理 计算机视觉面临的问题 视觉和自然语言处理_图神经网络


神经元结构图


据此产生了最简单的人工神经网络,也就是只有一个人造神经元的神经网络,像下图展示的,这个神经网络有一个输入层和将输入单元与输出单元相连的一组连接。假设我们使用这个网络进行图片分类,输入层中的每一个输入可以理解成一部分图像数据(或者说图像特征),输入单元把每个输入和中间连接上的权重相乘,并把乘积总和传递给输出单元。在传输中间使用一个称为激活函数的函数进行运算,它通常是一种阶跃,当输入的值达到某个阈值的时候就会输出 1,而没有达到阈值则都输出 0。每输入一张图片,算法就会对获得的结果与标注的结果进行比较,然后去调整连接权重,因此,只要训练样本够多,总能选到合适的权重,这就是人工神经网络的美妙之处。

自然语言处理 计算机视觉面临的问题 视觉和自然语言处理_大数据_02


单层人工神经网络结构图


深度学习

关于神经网络的研究在 1960 年代就已经有了,但是像我们上面讲的简单人工神经网络顶多算是模仿了一个神经元,比起我们复杂的大脑可以说还相差十万八千里。很容易想到的就是,能不能把若干个神经元堆叠起来,就像我们的大脑一样,上百亿个神经元组成一个庞大的神经系统呢?想法虽然好,但是那个年代的硬件性能不足以支撑如此大规模的运算,而且样本数据也没有理想的那么多,随后的很长一段时间,神经网络的研究进入了一个沉寂期。

但是随着互联网的兴起,大量的数据可以作为神经网络学习的样本,而不断升级的硬件则提供了强大算力支撑,因而大数据和深度学习的搭配称得上天作之合。关于神经网络的研究也越来越多,神经网络变得越来越复杂,其中的隐藏层越来越多(可以理解为神经元的层数),这个领域也获得了一个新的名字——“深度学习”。在这个后神经网络时代,诸如卷积神经网络、递归神经网络、循环神经网络、生成网络等等分支也快速发展起来,用以解决各种各样的问题。

2016 年,使用深度神经网络学习的 AlphaGo 在围棋比赛中战胜了顶尖职业棋手李世石,可以说是深度学习在大众视角下的一个里程碑。当然,深度学习的应用并不仅仅在围棋这一个领域之中

在计算机视觉方面,原本有一个著名的比赛——ImageNet 比赛。它的举办方收集了大量的图像数据,并构建了一系列的任务,比如说图像分类、物体检测等。

在深度模型进入之前,分类的最好效果是 25% 的错误率。在 2012 年,AlexNet 使用 8 层卷积神经网络,一下把错误率降到 15.4%,超过之前最佳效果差不多 10 个百分点。随后的年份,深度模型大放异彩。在分类任务上,2015 年,有 152 层的 ResNet 错误率已经降到了 3.57%,这个错误率已经超过了人类的视觉识别能力。到了 2016 年,ImageNet 中含有超过 1500 万由人手工注释的图片网址,也就是带标签的图片,标签说明了图片中的内容,超过 2.2 万个类别。其中,至少有 100 万张里面提供了边框(bounding box)。在这么庞大且复杂的数据集上,深度学习已经表现出毋庸置疑的能力,优化项主要集中在堆叠更高层的模型上(增加计算资源),2017 年,分类任务 Top5 的错误率降到 2.25%,同年,ImageNet 比赛宣告终结。

自然语言处理 计算机视觉面临的问题 视觉和自然语言处理_计算机视觉_03

既然深度学习如此强大,很快成为解决非标准数据,也就是我们的自然语言处理和计算机视觉相关问题的有力方式。接下来我们来看一下,在自然语言处理和计算机视觉方面常见的深度学习应用有哪些。

自然语言处理

自然语言也就是我们人类说的语言,我们使用语言进行交流、传递各种信息。在我们常见的应用中,比如今日头条中的新闻文本、淘宝中的商品描述、用户评论文本、喜马拉雅中的有声读物、知乎中的问答等等,自然语言几乎会出现在每一个地方。伴随着这些应用场景,深度学习基本上介入了所有的方面,并且取得了不错的效果

1.自然语言基础处理

关于自然语言需要进行的一些基本操作,比如分词、词性标注、句法分析、实体识别等等,这些大多数是序列标注问题,主要是为了构建一些底层特征而进行的

2.文本分类

文本分类可以说是应用最广泛,最容易理解,也最成熟的一项能力。对于新闻分类、评论的情感分析、广告和标题党的识别,非常多的任务可以使用文本分类的方式解决。

3.文本生成

比起文本分类,文本生成则要困难一些。使用文本生成可以给没有标题的内容生成一个新的标题,或者生成对应的摘要。之前 OpenAI 还使用最新的GPT 模型来续写哈利·波特,这些都属于文本生成,不过单纯文本生成的效果当前还很难达到工业级别的需求,在实际的工作中,对于这方面的需求往往需要增加很多辅助工作。

4.语音识别

语音识别其实分为两个步骤,第一步是要对音频中的音节进行分割然后识别出是什么音,第二步要把这个音转换成对应的文字,这时候就需要语言模型的介入,因为一个音可能对应很多的文字,加入语言模型可以让语音识别的效果更上一层楼,通过上下文关系来决定哪一个字。现在语音识别技术也已经非常成熟,有很多 App 都可以做到几乎实时录音转文字。

5.机器翻译

机器翻译就是使用计算机实现不同语言之间的翻译转换。语言与语言之间的转换有太多细节的特征,这正适合深度神经网络发挥它可以自行学习深层特征的能力。可以把循环神经网络、编解码器框架和注意力机制很快应用到机器翻译上来。如果你使用过十几年前的谷歌翻译,再看现在的谷歌翻译效果,真的是有天壤之别。

6.智能问答

智能问答也是当前非常火热的一个领域,比起前面的几项,智能问答更像是一种应用,其中会用到意图理解、文本分类、文本生成、文本匹配,甚至是知识图谱的相关知识,这里面自然也少不了深度学习的身影。

计算机视觉

看完自然语言处理相关的一些应用,别忘了我们的数据中还有很多图像相关的数据。比起语言,图像更加直观,但是图像的信息密度更低。在我们常见的 App 中,新闻会加入图像来还原事发的状况,电商网站也会加入图片和视频来吸引用户购买,更不用说像 B 站、抖音、爱奇艺这种几乎完全是视频构成的应用。深度学习在图像的处理方面,也发挥了强悍的能力。

1.图像识别

在图像识别方面,我们前面也讲过,深度学习模型的效果已经超越了人类的识别效果。跟图像识别相关的应用非常多,比如人脸识别、图像分类、物体检测。在交通违章上使用的车辆识别,车牌识别;在审核方面使用的图像色情低俗识别、暴力恐怖识别等等,都是图像识别在发挥着作用。

2.图像生成

图像生成方面,有很多有意思的应用,比如可以根据对不同的人脸学习,进而自动生成一些新的实际上并不存在的人脸;还可以进行风格的迁移,学习一张图的样式以及另一张图的绘制风格,进而生成一张新的图片;甚至是与自然语言处理结合,根据一段语言描述生成新的图片。

3.图像变换

图像变换主要是对原图像进行一些处理,使得原本不符合某些需求的图片质量提升,能够符合我们的需求。在这方面,有图像的智能裁剪、图像放缩、图像超分辨(让原本模糊的图片变得清晰)、图像去噪等等。

4.OCR

OCR 技术说的是识别图像中的文字,目前的 OCR 技术已经比较成熟,对于固定场景下的文本识别效果非常好,尤其是印刷体文本的识别基本上可以达到 100% 的准确率。

总结

如果你想动手实践一些深度学习项目,现在有很多框架可以使用,比如说谷歌的 TensorFlow、Facebook 的 PyTorch、百度的 PaddlePaddle,这些框架把很多深度学习所需要的底层建设进行了优化和封装,提供大量更加可用的 API,让深度神经网络的构建更加容易,这些框架中甚至给出了一些非常稳定的神经网络模型。针对很多任务搭建的神经网络或者训练好的模型,你也可以在 GitHub 上面寻找,经过简单的调整即可运行。有任何问题都欢迎在评论区与我沟通。

这节课,我介绍了人工神经网络和深度学习的简单知识,深度学习在自然语言处理和计算机视觉方面已经取得了非常辉煌的成绩,并且在我们日常使用的场景中大量应用,但是我觉得这还是处于比较初级的阶段。关于自然语言处理和计算机视觉仍然有很多问题需要解决。

数据挖掘与算法是我们发现数据中知识的过程和工具,有关数据挖掘的算法部分,我们告一段落。下节课我们以电商场景为例,看看该如何进行数据分析,数据分析中有什么样的指标和过程能够帮助我们的系统进行分析,到时见。