【深度学习基础】系列博客为学习Coursera上吴恩达深度学习课程所做的课程笔记。
本文为原创文章,未经本人允许,禁止转载。转载请注明出处。
1.序列模型
序列模型的常用领域举例:
- 语音识别:输入为一段音频,输出为文字。输入和输出均为序列数据。
- 音乐生成:输入可以是任何类型的数据(甚至为空)。输出为序列数据,比如为一段音乐。
- 情感分类:输入为序列数据,比如一句话。输出则不一定是序列数据,可能是评级或者类别等。
- DNA序列分析。
- 机器翻译。
- 视频行为识别,即识别视频中人物的动作。
- 命名实体识别。比如识别句子中的人名。
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)。