NLP.TM[25] | CS224N学习小结
【NLP.TM】
本人有关自然语言处理和文本挖掘方面的学习和笔记,欢迎大家关注。
往期回顾:
抱着对NLP有更加深入和全面的了解开始学习CS224N(学习还是要带着目的的),历时大概1个月吧,下面来总结一下自己的学习进程,也给大家提供一些学习经验。另外,我也想借这篇文章和大家聊聊一次专题学习我是怎么思考的。
首先是对课程的评价,课程设置合理,讲义对知识的讲解很完整,所以质量上是过关的。
学习思路
首先,我会确认学习目标:
对NLP基本任务的基本方案有基本理解,简单地说,就是大部分任务都能知道基本的解决方案和思路。
由于我不是为了了解,而是了解各个任务的基本解决方案,所以我需要的不是综述,列举几篇论文画个图完事,而是看到实打实的工具,后续再补充具体的代码实现。
而在学习策略上,由于我的时间不是很多,所以我不太可能花太多时间来看视频。最快的方式还是直接看讲义,然后再结合PPT补充可能缺漏的内容,从而完成了学习。
下面是我学习过程中涉及到的资料:
官方网站里面的各种资料:https://web.stanford.edu/class/archive/cs/cs224n/cs224n.1194/
一个比较好的笔记,感觉看起来非常舒服,可以参考,但是由于PPT讲解不完整,所以只能作为参考,Notes基本就是翻译了,可以看看:https://looperxx.github.io/CS224n-2019-01-Introduction%20and%20Word%20Vectors/
谷歌翻译。
学习内容
开始之前先聊聊先修课,这门课的先修课是有一定门槛的,下面的东西不会,你可能很多内容都看不懂。
精通Python。这里提到的是numpy和pytorch(注意,还真没有很多人喜欢的pandas)
大学微积分和线性代数。说白了就是高数线代了。
基本的概率统计。
机器学习基础。
说实话,这个先修的内容,真没有谈到很难的东西,这都是这个领域的基本操作,这里甚至没有谈到深度学习,只是有一些机器学习基础即可,所以要在这个领域就别想着避开啦。
然后再给大家去谈课程的设计和学习思路。
首先是一系列的语言模型,作为现代自然语言处理比较有划时代意义(我自己说的)的word2vector等相关模型做出了详细的解释。(其实没有讲完,后续RNN出现后其实又重新谈到新的语言模型,我的理解,新结构的诞生往往会伴随新的语言模型产生,而这个产生对NLP整体的发展带来一次新的突破)
以最简单的文本分类讨论NLP问题目前比较通用的思路方法。(这里包括反向传播和计算图)
依存句法分析。(NLP中挺重要但是往往容易被人忽视的点)
RNN系列与梯度消失梯度爆炸。(这章其实我建议非nlp的也可以看看,这块的讲得特别好)
机器翻译和阅读理解。这块应该是目前NLP中最难的问题了,这块难度的主要来源是涉及到文本生成,他们的主要思路是怎么样的,attention是怎么产生的,transformer又是怎么来的。
NLP的其他比较小的或者是边缘问题。消歧、预训练、多任务等。
其他学习建议
来说说自己学完后的一些经验吧。
谷歌翻译不准,英语允许的条件下,直接看。
尽量不要跳读,要是想深入理解,每个细节都不容错过,这也是和别人拉距离的地方。
多想为什么,结论这个东西记着很爽,但是知道为什么之后,你能处理更多问题。例如RNN为什么会有梯度消失问题。
不局限于一个材料,对于一个小点,你在这里看不懂,可以百度按其他人的博文,结合着理解。
迎难而上,难的问题你解决了,你就超越了那些不懂的人了不是,多看几种材料,综合分析理解。
不拘小节吧,很多东西很多人觉得没必要学,如依存句法分析之类的,会觉得英文和中文的不同(我也产生过),我还是咬咬牙看完了,虽然和中文不同,但是思路和方法论还是可以内化的,他给英文只是一个例子。
后续计划
短期内没有再专题学习的计划了,而是针对涉及的具体任务,查看一些针对性的方案,例如序列标注、文本分类等,当然的,自己的工程能力需要有一波新的升级。
不说了,召唤师峡谷在召唤我,大家新年快乐哈!