【深度学习基础】第三十九课:序列模型

序列模型

Posted by x-jeff on November 8, 2020

【深度学习基础】系列博客为学习Coursera上吴恩达深度学习课程所做的课程笔记。
本文为原创文章,未经本人允许,禁止转载。转载请注明出处。

1.序列模型

序列模型的常用领域举例:

  1. 语音识别:输入为一段音频,输出为文字。输入和输出均为序列数据。
  2. 音乐生成:输入可以是任何类型的数据(甚至为空)。输出为序列数据,比如为一段音乐。
  3. 情感分类:输入为序列数据,比如一句话。输出则不一定是序列数据,可能是评级或者类别等。
  4. DNA序列分析。
  5. 机器翻译。
  6. 视频行为识别,即识别视频中人物的动作。
  7. 命名实体识别。比如识别句子中的人名。

2.符号定义

定义在【深度学习基础】序列模型相关博客中常用的符号。

假设我们构建一个序列模型用于识别句子中人名的位置。输入x为一句话:“Harry Potter and Hermione Granger invented a new spell.”,我们期待的输出y为:110110000(对应单词位置上为1则为人名,为0则不是)。

用$x^{<t>}$表示x中的第t个单词,例如$x^{<1>}$表示单词“Harry”。使用$T_x$表示x的长度,本例中有$T_x=9$。同样的,用$y^{<t>}$表示y中的第t位,有$T_y=9$。

更进一步的,$X^{(i)<t>}$表示第i个样本中的第t个元素。$T_x^{(i)}$表示第i个样本的长度,即所含的元素个数。

接下来我们讨论如何表示x中的每一个单词,即$x^{<t>}$。首先,我们需要构建一个字典(字典中包含所有可能会用到的单词),大致形式如下:

\[\begin{bmatrix} a \\ aaron \\ \vdots \\ and \\ \vdots \\ harry \\ \vdots \\ potter \\ \vdots \\ zulu \\ \end{bmatrix}\]

然后,我们可以用one-hot编码去表示x中的每一个单词,例如单词“a”可以表示为:

\[\begin{bmatrix} 1 \\ 0 \\ \vdots \\ 0 \\ \end{bmatrix}\]

我们可以创建一个标识用于表示不在字典中的单词,例如“UNK”(Unknown Word)。