深度学习(Deep Learning)是机器学习的一个分支领域:它是从数据中学习表示的一种新方法,强调从连续的层中进行学习,这些层对应于越来越有意义的表示。
1. 为什么选择序列模型?
循环神经网络(RNN)之类的模型在语音识别、自然语言处理和其他领域中引起变革。我们先来了解一些例子,理解它们是如何有效适用序列模型的。
- 语音识别:给定一个输入音频片段 x,并要求输出对饮的文字记录 y。这个例子里输入和输出数据都是序列模型,因为 x 是一个按时播放的音频片段,而输出 y 是一系列单词。
- 音乐生成问题:只有输出数据 y 是序列,而输入数据可以是空集,也可以是个单一的整数,这个数可能指代你想要生成的音乐风格,也可能是你想要生成的那首曲子的头几个音符。输入的 x 可以是空的,或者就是个数字,然后输出序列 y。
- 处理情感分类:输入数据 x 是序列,你会得到类似这样的输入:“There is nothing to like in this movie.”,你认为这句评论对应几颗星?
- DNA序列分析:你的 DNA 可以用 A、C、G、T 四个字母来表示,所以给定一段 DNA 序列,你能够标记出哪部分是匹配某种蛋白质的吗?
- 机器翻译:在机器翻译过程中,你会得到这样的输入句:“Voulez-vou chante avecmoi?”(法语:要和我一起唱吗?),然后要求你输出另一种语言的翻译结果。
- 视频行为识别:可能会得到一系列视频帧,然后识别其中的行为。
- 命名实体识别:可能会给定一个句子来识别出句中的人名。
这些问题都可以被称作使用标签数据(x,y)作为训练集的监督学习。从这一系列的例子中,可以看出序列问题有很多不同类型,有一些,输入数据 x 和输出数据 y 都是序列,也可能,x 和 y 会不一样长。或者 x 和 y 有相同的数据长度。在另一些问题里,只有 x 或者 只有 y 是序列。
以上就是适用于不同情况的序列模型,下一节中我们会定义一些定义序列问题要用到的符号。
2. 数学符号
我们从定义符号开始一步步构建序列模型。
例如,要建立一个序列模型,它的输入语句是:“Harry Potter and Herminoe Granger invented a new spell.”。假如要建立一个能够自动识别句中人名位置的序列模型,那么这就是以恶搞命名实体识别问题。命名实体识别系统可以用来查找不同类型的文本中的人名、公司名、时间、地点、国家名和货币名等等。
加入你想要一个序列模型输出 ,使得输入的每个单词都对应一个输出值,同时表明输入的单词是否是人名的一部分。
这个输入数据是 9 个单词组成的序列,所以最终我们会有 9 个特征集合来表示这 9 个单词,并按序列中的位置进行索引,、、 . . . 来索引不同的位置,用来索引这个序列的中间位置。
输出数据也是如此,用、、 . . . 来表示输出数据。同时我们用来表示输入序列的长度,这个例子中输入是 9 个单词,所以 。我们用来表示输出序列的长度。特别的,在这个例子里 。