每天给小编五分钟,小编用自己的代码,让你轻松学习人工智能。本文将剖析循环神经网络(RNN)的工作原理,精讲循环神经网络的特点和实现方式。野蛮智能,小白也能看懂的人工智能。
循环神经网络从何而来?
我在我的这篇文章介绍了卷积神经网络(CNN)卷积神经网络(CNN)核心知识点汇总,三分钟让你从小白到精通,卷积神经网络主要用来处理计算机视觉问题,在计算机“看”的过程中,主要是进行特征的对比,通过特征的对比,可以分辨出来这个图片(视频)是哪一种,是不是我们想要的。这在很大程度可以帮助我们实现计算机的智能化。
但是单单靠计算机视觉能力并不能实现自主的智能,其他人类能力的实现也是很重要的。例如,人类可以根据一个故事的开头猜到一个故事的结尾;可以根据对方说的话,揣测他背后的目的;这就是人类的分析能力,根据前因后果、语言的规则、说话的习惯,我们可以得到很多重要的信息。智者往往处理事情有理有据,层次分明,我们期待计算机也有这样的能力。所以学者们设计了神奇的循环神经网络。
循环神经网络的最大创新点
简单来说,序列指的就是前因后果。这种分辨因果的能力,对于计算机的智能化具有重要意义,所以序列问题倍受计算机学界关注。为了解决序列问题,循环神经网络在1982年被提出,由于当时计算能力不足,无法实现。所以很长一段时间,序列问题的解决方案一直被传统机器学习算法所垄断,但是机器学习依赖于人工提取特征,这也使得序列问题一直没有被很好的解决。
RNN的第一大创新点是与深度学习结合,自动提取特征。深度学习的核心本质是自动提取特征,这是深度学习对比于机器学习的优势所在,因此在深度学习理论成熟后,循环神经网络快速发展,获得了成熟的应用。例如,谷歌的翻译系统抛弃掉原来的机器学习算法,采用RNN,获得了远远好于之前的效果。
RNN的第二大创新点是,RNN的输入不仅有数据,也有序列。一个RNN网络运行过程中,数据输入进来后,就会被网络记住,然后把这个被记住的数据表达为一个向量,下一次再输入数据,就继续填到这个向量里,这样反复循环,这个向量就记住了这些数据的先来后到,这个向量叫做隐状态。所以说,RNN的输入包含两部分,第一部分是数据,第二部分是上一时刻的隐状态。
循环神经网络记忆的具体过程
上图基本概括了循环神经网络的核心。假设我们输入一句话:我爱北京,这句话就会被分为三个词我,爱,北京,第一时刻,“我”也就是X1进入系统,经过分解产生一个隐状态h1,接下来,这个隐状态h2和第二个词X2一起输入网络,再经过运算,又产生了第二个时刻的状态h2,然后X3再和h2一起输入,最终得到h3作为输出。h3作为一个向量,表示了这句话的内容。用一句总结,当前时刻的数据 + 上一时刻的状态 = 当前时刻的状态。
公式表示为:h(i+1) = f { [w*x + b] ,[W*h(i) + B] },公式中“w”表示数据x的权重,b表示数据x的偏置值。“W”表示隐状态的权重,B表示隐状态的偏置值。这两部分进过函数f就得到了下一个隐状态,经过循环,最终得到最终的隐状态。
循环神经网络的具体应用
既然是解决了序列问题,那么对顺序有依赖的问题都将迎刃而解。
机器翻译系统:把一种语言经过上述过程,变成一个隐状态向量,然后再反向用另一种语言解释出来,就得到了翻译的结果。你一直以为高大上的翻译系统其实就是这么简单。在小编的后续文章中,会专门写一篇文章,附加代码,来手把手带你做一个自己的翻译系统。
语音识别,人说的话,其实就是一组音频,如果每个固定的频率表示一定的含义,那么就可以得到语音的全部表达了。解决这一问题的关键在于,这样的特征是用语言描述不清楚的,所以可以交给深度学习自动提取音频特征,进行学习,利用RNN的序列特性,就可以清晰表达所说的内容。
除了以上应用,循环神经网络在自然语言处理等其他众多领域,也有十分可观的前景。所以下一篇文章,我会带领大家用代码敲出来一个循环神经网络。让理论扎根于实践!
野蛮智能,小白也能看懂的人工智能。大家有什么见解欢迎评论!