递归神经网络,B-P,LSTM,注意力网络,记忆网络,神经图灵机,机器翻译,问答系统,语音识别,句法和语义分析,神经网络的GPU优化 三大练习:实践深度学习的好机会 牛津深度 NLP 课程当中,最值得一看的就是课程附带的练习题(practice)。Hacker News 有评论称,只要你沉下心来,认真把这些题目做完,你定能受益匪浅。 练习1:word2vec word2vec 这个练习当会提供你 IPython notebook(有地方需要你自己填写),还有一个在线的 Python 计算环境,你可以在这里混合文本、代码并进行脚本交互。 练习的内容是使用 TED 演讲和英文维基百科数据训练 word2vec 模型,这会涉及 word2vec 部署中的 Python 包 gensim。训练完模型以后,对模型学到的嵌入(embedding)进行分析和可视化。 下面简单介绍一下整个练习的过程。 前期准备:完成设置与安装(详见 Github),然后对数据进行预处理。在这个练习当中,下载和预处理数据集的代码都是提前写好了的。不过,在以后的练习中,遇到原始数据,还是需要你自己写代码。完成这项工作一般是用 nltk 库,但这个练习是用的 Python re 模型使用常规表达。最后是做一个列表,将最常见的词语以及它们的使用频率列出来。 接下来就是训练 word2vec 模型了。首先阅读 word2vec 的 gensim 文档,了解如何使用 Word2Vec 类。使用 CBOW(默认值)了解 $mathbbR^{100}$ 中的嵌入。其他选项应为默认值,但是 min_count = 10,这样便于忽略不常出现的单词。整个训练过程应该不会超过半分钟。 最后,将训练好的模型与使用 WikiText-2 数据训练的向量做比较。课程提供了 WikiText-2 数据集的下载/预处理代码(类似于上面的代码)。该代码使用数据的随机子采样,因此大小与 TED Talk 数据相当。 使用这个新的数据集,重复上面的分析。 练习2:文本分类 TED代表“技术、娱乐和设计”。TED Talk 语料库中的每个谈话都带有开放的标签,包括“技术”、“娱乐”和“设计”。虽然有些演讲涉及的内容不止一个标签,但由大约一半的演讲都没有被标记! 这个练习的目的就是构建一个文本分类模型,预测一个 TED 演讲是有关技术、娱乐或设计中的哪一个,atv,或者哪个都不是。 这就是所谓的“多标签分类”(MLC)的实例,其中每个实例可以有许多不同的标签。 不过,这门课将其转换为一个多类分类的实例,其中每个文档从一个有限的离散的可能标签集合中,接收单个的标签。 还是设置和安装,这个练习推荐的深度学习框架是 PyTorch 和 TensorFlow。其次是 CNTK、Torch 和 Caffe。 接下来就是多类型分类了。在数据处理环节,你需要保留 TED Talk 数据集前 1585 个文档用于训练,接下来 250 个用于验证,最后 250 个用于测试。每个文档将被表示为一对(文本,atv,标签)。 使用训练数据,确定你想要用什么词汇描述模型。对文本进行标记(tokenise)和小写(lowercase)是不错的做法。 测试时,你会遇到训练集中没有的单词(这些单词也不会有嵌入)。要处理这一点,将这些词映射到一个特殊的 token。最好还确保你的训练数据集也含有 token。 接下来一些具体的内容,比如标签、模型以及嵌入函数,这里就暂不介绍了。下面讲一些比较有趣的问题。 要完成这个练习,你需要在你最喜欢的框架中构建一个单层的前馈神经网络。这个网络应将标签视为 8 个独立类。 比较从随机嵌入开始的模型的学习曲线,从 GloVe 嵌入开始或固定为 GloVe 值。批量培训更稳定(例如 50),这种模式在培训和测试上效果最好?哪种型号在保持精度方面效果最好? 如果你尝试替代非线性(逻辑 sigmoid 或ReLU 而不是 tanh)会发生什么? 如果添加 dropout 到网络里会发生什么? 如果改变隐藏层的大小会发生什么? 如果要添加第二个隐藏层,代码如何改变? 训练算法如何影响模型的质量? 将标签的嵌入项投影到 2 个维度上并可视化(投影矩阵 V 的每一行对应于标签嵌入)会看到什么有趣的结果? 练习3:用 RNN 实现文本分类 (责任编辑:本港台直播) |