来自:CS的陋室
应好友邀约,写一篇有关我在NLP上学习的历程,以供大家作参考。点开的朋友,如果真的想了解这个过程,也想知道一些具体的信息,并从中有所收获,真心希望大家能认真看下去,尤其是一些近期和我在聊的新人,我虽不算大神,但是自认为还是有一定经验的,如果信得过我,请认真看吧。如果有什么想法欢迎和我多聊~
无广告,有鸡汤,肉我已经吃了,很舒服,希望大家喝下后日后也能自己吃到肉。
懒人目录
学习历程
学习路径
学习建议
其他建议
学习历程背景介绍为了更好地让大家去理解我的历程,我先说说我当时的背景。
时间起点就从大四开始吧,信息与计算科学(提醒一下,这是个数学类专业,不是计算机的)专业,数学理论上还是比较自信的,计算机会点皮毛吧,matlab会点,写过点Java和前端三剑客,python也是大四中后期才自学的,蹩脚得很。
就在这种情况下,开始机器学习和NLP方面的学习。
启蒙阶段大四期间(16-17学年)因为机缘巧合接触了李航老师的《统计学习方法》,并在团队合作的情况下通关了里面的内容,回想起来还是满满的求生欲。由于只是过了书上的内容,所以只是对理论有了比较完整的了解,但是具体怎么用,怎么实现,基本是不知道的。
这段时间,基本就是拼的自己的脑子在攻克这本书,实际上,对于数学专业来说,这本书相比微分方程、实分析之类的还是简单很多,所以数学出身的同学还是不用太担心,但是对于高数、线代、概率论不好的同学,吃力是毋庸置疑的。
当然的,书终究只是书,有时候书真的看不懂,我会结合着网上的别的材料材料一起看,博客之类的,可以帮助理解,当然有些会有些错误,包括书本身和博客,需要自己甄别,好在不太多,不至于有三观级别的查错。
很多人因为这本书的困难而放弃,而且很多人会非常追捧周志华老师的《机器学习》,诚然这是本好书,但是如果你因为《统计学习方法》看不懂而去看周志华老师的《机器学习》,那你后面的提升会被严重限制,例如你只知道HMM的三个问题却不知道这三个问题怎么解决。(因为难而躲避,你终究会为你的躲避付出代价,要想多赚点真不是说有就有的)。
有关方法实现,我的学习基本来自于百度,例如“pythonSVM”,这样就会出大量的文章来讲,选一个试试你就会了,这已经是非常简单的方法了。
懒人记录:
《统计学习方法》不仅在于里面的方法,还有里面的计算思想,正则化,极大似然估计,梯度下降等,所以理论搞懂,会为你以后的进步打下基础,欠的账迟早要还。
注意除了学方法,还要学实现,我当时欠了这块的账,在后续才补了回来,自己找个数据集玩玩(鸢尾花)之类的,做一遍就好
Python是这块的基操,没有不会的理由。
入门阶段机器学习想必是有些基础了,但是如何用,在哪用,其实非常苦恼,因此自己结合自己的研究生方向与当前社会现状,和老师沟通了一条线路,NLP,主要课题是研究如何通过NLP与网络信息实现对金融市场的预测,这也就奠定了整个研究生阶段的主要内容了。可惜的是,老师其实对NLP的了解不深,只能从金融市场有关内容中给我建议,但是NLP既然要做,也注定是一条孤独艰难的路。
17年9月入学,至12月,我完成了第一篇有关研究内容的初稿,从什么都不知道,到有论文吧,这段时间除了偶尔看看LPL的比赛,基本就在学校理学楼里面(学校一间几乎被废弃,桌子除了我的位置基本都是尘的教室里)自习,严格而言都不算实验室,只是一个可供自习落脚的地方吧,这么一个环境学习下来的。
当时完全不清楚NLP是什么,也不知道这东西怎么做,只能通过看论文、看博客慢慢去学,当时甚至连淘宝和网课都没有,前期每天只有两个工作,刷论文和写爬虫。爬虫那时候技术不是很强,用的自己比较熟悉的Ajax去网络抓包,论文方面是每看一篇就整理成笔记,笔记多少和文章摘要作用之类的有关,觉得有用了才回去深看,后来一篇综述成了一个转折点,这篇综述我至今仍然能口述,简直是救命的神药。论文虽然没有说具体的研究理论和方法,但是既然是综述,也就提到了很多名词,我也知道了要学什么,要做什么,目前的研究现状如何,因为这篇文章,我感觉我的瓶颈都解决了。
于是就开始按图索骥,查找有关方法和理论,慢慢把技术学起来,另外我还百度了一本大型著作——《统计自然语言处理》。从基本的语言模型,从简单的开始,慢慢开展(我的第一个文本分类的基线就是从TFIDF+SVM开始的),然后是,用着自己蹩脚的,现在看来简直是垃圾的代码技术,想一行,搜一行地完成了这块完整的代码,并通过各种实验最终完成了自己的第一稿论文(创新点啥的肯定都是有的),那时就是12月。
懒人记录:
别老说没灵感,艺术家如此,科研也如此,灵感来源于你的积累,积累从哪里来,论文。
动手查,动手做,多查资料,百度、论文、github,道理都懂,但是为啥还有很多人会问我百度就能知道的问题呢?
不是宣扬独立战斗,团队应该有团队的样子,但是你应该有独立解决问题的能力,否则团队要你干吗?会求助是好事,但是要问到别人手把手教你的层次,那就是个巨婴了。
综述是个好东西,带survey、review的多半是,看看会对研究现状有清晰的了解,近期的关键论文基本都被引在里面了,你也省去很多找论文和鉴别论文的时间。
《统计自然语言处理》最好看看,虽然里面谈的方法不多,但是引文很全,甚至建议引文都看看,简单过一遍至少你知道文本分析和自然语言处理的差别在哪里,别老是炒概念。
从最简单的开始,先做一个初步的,然后开始慢慢加大难度,这应该是一个正常的学习历程。
进阶阶段说到进阶,大概就是从18年上半年开始吧。当时面临的一个大问题是怎么找工作,当然还有论文的推进,到了工业界,技能要求更完善,因此这块也是我自学的集中期,论文在坚持看但是重在基础的完善(光看论文知识很难系统化、完善化)。
深度学习方面,自己的深度学习是平时积累的,BP是本科的课程就已经接触,CNN之类的也是在平时找个1天左右看博客看会的,RNN是后来自己用到了才临时看的,包括后续的LSTM之类的,真没有集中专项学习。我目前会tensorflow和keras,前者是淘宝花了4块钱买的教程,keras是看文档自学的,后来买了一本紫色封面的书边看边学会的。
自己在文本分类方面看过不少论文,也有重现,所以有一些理解。建议大家还是把文本分类能自己动手把几个常见模型都看一遍甚至重现(博客上、