2019年3月下的时候,我当时在读研一下学期,课程很少,于是找了个实习,是一家创业公司,主要做NLP文本摘要方面的工作。我本来是通信专业的学生,对于NLP没有一点了解,只是研一上学习了一门机器学习的课程,所以当时找实习费劲巴力的进了一家公司,进去之后也是上手很慢。于是,想着找一门训练营学习,帮助入门吧。偶然间在朋友圈看到了深度之眼关于CS224n课程的介绍,在搜集了一些相关资料之后,确定要报名,价格很nice,才98元。当时报名之后,其实已经开课一周了,所以刚开始很吃力,学习新课程的同时,也在补习之前的知识。
我认为CS224n算是NLP入门的经典课,内容不算多,而且很多内容对于有机器学习背景的来说都算是常识了。总体来说,有机器/深度学习基础,上手还是比较轻松吧,更多的是了解NLP的任务以及常见解法,把知识系统化。
首先第一个问题是词向量,这是NLP问题的基础,词向量好不好直接影响到下层的任务。从词向量发展历史来看,主要有LSA,word2vec,GloVe,wordpiece,elmo。涉及到的额外知识点包括:softmax优化(NCE、分层softmax)、语言模型、矩阵分解SVD。
有了词向量,就可以做下层任务了,NLP任务很多,包括词性标注、机器翻译、问答系统、情感分析、命名实体识别、自动摘要等等。这些任务很多都是seq2seq的,那么一个直观的框架就是encoder-decoder了。
当然对于seq2seq任务,除了RNN以外,还有其他的处理方式,例如时间卷积、Transformer、递归网络等。其中Transformer自Attention is All you need提出以来,在Bert中发扬光大,其高效的特点与SOTA的效果,成为目前很多任务的首选模型。BERT基于预训练的无监督语言模型基于迁移学习的思想。
这门训练营主要以2017版的CS224N为主,同时也会学习2019版最新的内容。每天都会发布学习视频和资料供大家学习,同时会有助教和老师进行讲解,大家可以在微信群进行提问或者在知识星球提问。每天每个人要打卡,会得到积分,在训练营结束,会对完成作业优秀的同学进行奖励,赠送VIP或者任意一门训练营。自己打卡之后,也会看到别人的打卡,这样就为我这样的新手提供了参考大神学习的机会,也是一种帮助吧。
同时在学习课程本身的同时,会有训练营的老师带大家参加kaggle或者其他的比赛,一是可以带领大家熟悉比赛的流程,二是可以更好的学习NLP的知识,为我们自己的简历加一些干货,同时为面试做准备。
在学习课程的同时,深度之眼会组织建立一些群,比如怎么读论文,大家分享自己的经验,对于我这样的新手会很有帮助。每周会组织一次直播,老师会根据我们的问题进行回答,和总结。
学习这门课三个月,我有很大的收获,一是算是掌握了NLP的一些基础知识,对于整个NLP发展历史有了了解,同时系统的学习了NLP;二是找到了自己感兴趣的方向,我认为这是最重要的;三是接触了比赛,为以后准备比赛提供了基础。