目录:
- 火炬张量库简介
- 计算图和自动差异化
- 深度学习构建基础:仿射图,非线性和目标
- 优化和培训
- 在Pytorch中创建网络组件
- 单词嵌入:编码词汇语义
- 示例:n-gram语言建模
- 练习:学习单词嵌入的持续单词袋
- 序列建模和长期术语记忆网络
- 示例:用于词性标签的LSTM
- 练习:通过角色级功能增强LSTM标记器
- 高级:动态工具包,动态编程和Bilstm-CRF
- 示例:命名实体识别的BI-LSTM条件随机字段
- 练习:判别标签的新损失功能
这个教程是什么?
我写本教程是因为尽管那里还有很多其他教程,但它们似乎都有三个问题之一:
- 他们在计算机视觉和Conv网上有很多内容,这与大多数NLP无关(尽管Conv网络已以很酷的方式应用于NLP问题)。
- Pytorch是全新的,NLP教程的深入学习是在较旧的框架中,通常不在诸如Pytorch之类的动态框架中,Pytorch具有完全不同的风味。
- 这些示例不会超越RNN语言模型,并且在尝试进行lingusitic结构预测时可以显示您可以做的很棒的事情。我认为这是一个问题,因为Pytorch的动态图使结构预测成为其最大的优势之一。
具体来说,我正在为佐治亚理工学院(Georgia Tech)的自然语言处理课撰写本教程,以简化我为班上写的有关深度过渡解析的班级编写的问题。该问题集使用一些高级技术。本教程的目的是涵盖基础知识,以便学生可以专注于问题集的更具挑战性的方面。目的是从基础知识开始,并提升到语言结构预测,我认为在其他Pytorch教程中几乎完全不存在。一般的深度学习基础知识有简短的论述。尽管我认为完整的描述会重新发明方向盘并占用太多空间时,但主题更特定于NLP特定于深入的讨论。
依赖性解析问题集
如上所述,这是通过在Pytorch中实现高性能依赖解析器的问题集。我想在此处添加一个链接,因为它可能很有用,只要您忽略了班级的特定内容即可。一些笔记:
- 有很多代码,因此问题集的开始主要是为了让人们熟悉我的代码表示相关数据的方式以及您需要使用的界面。问题集的其余部分实际上是为解析器实现组件。由于我们以前从未在班上做过深入的学习,因此我在编写它时试图提供大量的评论和提示。
- 每个可交付的都有一个单位测试,您可以使用该测试使用该测试。
- 由于我们在班级中使用了此问题,因此请不要公开发布解决方案。
- 如果您正在寻找书面源以补充问题集,则相同的存储库中有一些注释,其中包括有关Shift-Reduce依赖解析的部分。
- 如果在新学期开始时,上面的链接可能无法正常工作。
参考:
- 我从本教程中的关于Dynet的教程中在EMNLP 2016上学到了很多关于CMU的Chris Dyer和Graham Neubig以及Bar Ilan University的Yoav Goldberg的知识。 Dynet是一个很棒的软件包,特别是如果您想使用C ++并避免动态键入。 Bilstm CRF练习和角色级特征练习是我从本教程中学到的东西。
- 一本关于结构预测的好书是诺亚·史密斯(Noah Smith)的语言结构预测。它不使用深度学习,但这还可以。
- 我知道的最好的深度学习书是深度学习,这是该领域的一些主要贡献者,并且非常全面,尽管没有NLP的重点。它是免费的,但值得在您的架子上。
练习:
教程中有一些练习,可以实现流行模型(CBOW)或增强我的模型之一。角色级特征练习尤其是非常不平凡的,但非常有用(我不能引用确切的数字,但是我之前已经运行了实验,通常是字符级特征提高了精度为2-3%)。由于它们不是简单的练习,因此我很快将自己实施它们,并将它们添加到存储库中。
建议:
如果您发现任何错误或认为有一个特定的模型可以添加,请打开GitHub问题。