最近AllenNLP在EMNLP2018上做了一个主题分享,名为“写给NLP研究者的编程指南”(Writing Code for NLP Research)。
内容干货满满,仅仅只是看了slide就知道是非常有意思的一次演讲了。slide共有254页之多,这里我简单做个摘要,分享一些有意思的内容。Sebastian Ruder 近日公布了这次采访的谈话实录,以及大会演讲的 PPT,对整个采访进行了总结。
这些采访基于四个相同的问题,如下所示。机器之心摘录了部分受访者的回答内容,包括 Yoshua Bengio、阿兰•图灵研究所 Fellow Annie Louis、谷歌大脑研究科学家 George Dahl、纽约大学助理教授&FAIR 研究科学家 Kyunghyun Cho,其中有些研究者并没有回答完四个问题,这是基于受访者自身的意愿。
有时间的话推荐大家直接看slide,下面是地址
https://github.com/allenai/writing-code-for-nlp-research-emnlp2018/blob/master/writing_code_for_nlp_research.pdf
下面是整个分享的大纲。通过这次演讲,你可以学到如何写代码来促进你的研究,以及可复现的实验。
这里有两种写研究代码的模式,一种是写原型,一种是写组件。您能否列举目前困扰 NLP 领域的三大难题?
首先,如何构建更好的基准来大规模揭露我们当前方法存在的局限性?MultiNLI 是还不错的基准,但它仍有很多难以纠正的问题。
我们先从写原型的方式开始介绍。
当我们开始写一个原型代码的时候,我们要做到下面三点。
要做到快速编程,抠《153O667》杏彩总代理抠《153O667》《153O667》不要从头开始写所有内容,而是使用框架。这里的框架不仅指tensorflow或pytorch之类的框架,也可以理解为模板。比如上图中如果写trining loop的部分,已经有人写好了。我们只要看懂后,直接拿来用就行,没有必要从头开始自己写所有部分。不过我还是会选 Collobert & Weston (2008) 的研究《A unified architecture for natural language processing: deep neural networks with multitask learning》及其后续期刊论文《Natural Language Processing (Almost) from Scratch》。
上面提到的一些内容,都是可以找到现成框架来套用的。
Don’t start from scratch! Use someone else’s components.
如果有人把你想用的东西模块化了,还等什么,直接拿来用啊!
要想快速开发,另一个建议就是先复制,再重构。要记住,我们是在写原型,不用在乎什么可用性,先把代码写work了再说。如果实现的效果不错的话,再回去重构。那时深度学习成为主流方法。每次飞跃不仅带来实证方面的改进,还动摇了我们对 NLP 领域和待解决问题的既定理解。那么下一次飞跃将会是怎样的呢?每个人都有自己的猜测,我认为下一次飞跃将由新的人/群体开启,就像前两次那样。
另外,我们要有好的编程习惯。比如起有意义的变量名,写注释帮助理解。记住,我们是写给人看的,不是机器!
其次,我们如何将「方向盘」与文本生成模型连接在一起?我们如何创建能够听从高级指令(如生成什么)或遵循对生成内容的约束的模型?我希望模型能够基于简化或受限的自然语言指令(指令说明要做哪些高级改变)
可以准备一个Excel表格,来记录实验结果NLP/MT 领域最大的问题或许是下一次飞跃的时间和方向。NLP/MT 在过去半个世纪中经历了两次巨变。第一次发生在 90 年代早中期,彼时统计学方法成为主导,推动 NLP 领域远离基于规则的方法。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。