NLP小白的入门学习路线

新学期开始了,看了一些经验贴,现在学习前辈的经验给自己总结点规划,希望今年是收获满满的。

NLP小白的入门学习路线_第1张图片

一、推荐Github/博客系列(持续更新……)

NLP/ML/CV

[1] Algorithm_Interview_Notes-Chinese

[2] THUNLP机器阅读理解

[3] 52nlp

[4] 深度学习前沿笔记

[5] cs224n-camp

[6] 火爆 GitHub 的《机器学习 100 天》

[7] 深度学习500问

[8] Papers with Code

[9] Deep Learning - All You Need to Know

https://github.com/osforscience/deep-learning-ocean#what-s-the-point-of-this-open-source-project

[10] 专知NLP知识资料大全集(入门/进阶/论文/数据/综述等)2017

http://www.zhuanzhi.ai/document/0b18475b4fa55a745c9a46adfa3005e2

数据结构与算法

[1] 数据结构和算法必知必会的50个代码实现

[2] 排序算法可视化

 

精选指南

热点问题

对话清华NLP实验室刘知远:NLP搞事情少不了知识库与图神经网络

自然语言处理怎么最快入门?

李纪为:初入NLP领域的一些小建议

目前常用的自然语言处理开源项目/开发包有哪些?

2019年在NLP领域,资源有限的个人/团队能做哪些有价值有希望的工作?

论文写作

最新|NLP论文阅读列表,囊括90%NLP任务

如何学会看arxiv.org才能不错过自己研究领域的最新论文?

如何写一篇合格的NLP论文 :必看!

如何不出国门走进NLP学术前沿

初学者如何查阅自然语言处理学术资料(2016修订版)

学完了在线课程?如何开启深度学习论文的阅读模式

 

TensorFlow/Pytorch

TensorFlow

Gathers machine learning and Tensorflow deep learning models for NLP problems(❤365)

https://github.com/huseinzol05/NLP-Models-Tensorflow

Tensorflow-Cookbook:简单易用 TensorFlow 代码集

弗吉尼亚理工博士 Amirsina Torfi-简单tensorflow

TensorFlow Examples

NLP-Models-Tensorflow(NLP不同任务深度学习模型大全)

NLP基础模型的Tensorflow实现

《机器学习实战:基于Scikit-Learn和TensorFlow》

 

Pytorch

PyTorch 中文手册(pytorch handbook)

CS224N深度学习模型的PyTorch实现

基于 PyTorch 和 keras 的 NLP 学习教程

项目里面有 4 个资源:神经机器翻译、问答匹配、新闻分类和电影分级

PyTorch资源列表:450个NLP/CV/SP、论文实现、库、教程&示例:https://github.com/bharathgs/Awesome-pytorch-list

 

二、NLP知识点清单

1、机器学习篇

需掌握的原理  

1)朴素贝叶斯

2)逻辑回归,线性回归  

3)决策树,不同的划分方式,ID3,C4.5,CTAR,XGBoost等等  

4)Ensemble模型

5)SVM,核函数选择,不同SVM形式

6)HMM,CRF

7)最大熵原理,图解最大熵原理(The Maximum Entropy Principle)  

8)KNNK-Means,DBSACN也了解一下,以及各种距离计算方式,关于机器学习距离的理解  

以上列出的算法都需要掌握其基本原理以及优缺点  

 

需会写的公式 

1)BP后向传播过程的推导,先定义Loss函数,然后分别对输出层参数和隐藏层参数进行求导,得到参数的更新量。  

2)softmax交叉熵推导,分成i=j 和 ij 两种情况来算

3)各种Loss函数  

4)似然函数,负对数似然函数的推导  

5)最小二乘法,利用矩阵的秩进行推导  

6)贝叶斯定理拉普拉斯平滑  

 

补充进阶的公式  

1)RNN在BP过程中梯度消失的原因,也把这个链式求导过程写出来。  

2)各种优化方法的公式,SGD,Momentum,Adagrad,Adam 

3)Batch Normalization,就是个归一化过程,再加一个scale操作  

4)SVM推导,拉格朗日了解一下

5)最大熵模型相关推导

 

2、深度模型篇

掌握基础原理

1)CNN原理,如何用在文本上,在什么情况下适合用CNN,在什么情况下用LSTM

2)RNN系列,掌握RNN、LSTM和GRU的内部结构,RNN产生梯度消失的原因,LSTM如何解决,GRU对LSTM的改进。

3)Word2vec工具,怎么训练词向量,skip-gram和cbow

4)Attention机制

5)NLP基础任务,比如分词算法(序列标注任务),分类算法

 

掌握实战技巧

1)数据预处理,权重初始化,为什么不能全部初始化为0,词向量怎么预训练

2)过拟合问题,原因是什么,怎么解决,主要从数据和模型两方面出发

3)调参技巧,比如,卷积核大小怎么按层设置,bn放在哪里比较合适,激活函数之间的区别(sigmoid,tanh和relu),词向量维度怎么设置,等等。

4)模型评估指标,acc,pre,recall,f1,roc曲线和auc曲线,分别适用于什么任务,怎么降低偏差,怎么降低方差

5)优化方法,批量梯度下降,随机梯度下降,mini-batch梯度下降的区别,adam,adagrad,adadelta,牛顿法

6)梯度消失问题,原因(链式求导,激活函数),解决方法(主要是batch norm);以及梯度爆炸问题(梯度截断)

7)关于训练集和验证集,为什么要划分,如何划分(留出法,交叉验证)

8)如何处理数据不均衡问题,也是从数据和模型两方面出发解决。

 

3、算法编程篇

编程分成三种:普通算法编程,海量数据编程,模型编程。

普通算法编程

一般用C++或Java,需要掌握数组,链表,二叉树,递归,贪心,动态规划,各种容器,各种排序算法,在时间或者空间上的优化思路,以及复杂度的分析。

容器是个好东西,用vector代替数组,用map实现桶思想,用set排序,用queue写bfs,用stack写dfs等等。

刷题指南:剑指offer,然后上牛客网做题。或者刷LeetCode。

随手列几道常考的代码题:

1)复杂链表的复制,链表的删除

2)最长公共子序列,逆序对

3)快排,归并排序,堆排序

4)二分查找,以及衍生的题目

5)深度优先搜索

海量数据编程

这种用python写比较方便一点,可以把大文件划分成小文件,或者分治加哈希。

模型编程

有时候可能会让你用某个深度学习框架搭某个模型。做科研比较推荐pytorch,业界用tf 比较多。

NLP小白的入门学习路线_第2张图片

参考文献

[1]BAT NLP实习offer共勉

 

 

你可能感兴趣的:(NLP)