保姆级nlp学习路线来啦!(代码片段)

Datawhale Datawhale     2022-11-28     803

关键词:

这个保姆级不是形容这份指南有多详细,而是形容这个指南会伴随你们一起成长哟(其实就是太多了写不完)。之后的更新都会定期发文并汇总在Github上,欢迎催更:

https://github.com/leerumor/nlp_tutorial

下面开始学!习!(敲黑板)

如何系统地学习

机器学习是一门既重理论又重实践的学科,想一口吃下这个老虎是不可能的,因此学习应该是个循环且逐渐细化的过程。

首先要有个全局印象,知道minimum的情况下要学哪些知识点:

之后就可以开始逐个击破,但也不用死磕,控制好目标难度,先用三个月时间进行第一轮学习:

  1. 读懂机器学习、深度学习原理,不要求手推公式
  2. 了解经典任务的baseline,动手实践,看懂代码
  3. 深入一个应用场景,尝试自己修改模型,提升效果

迈过了上面这道坎后,就可以重新回归理论,提高对自己的要求,比如手推公式、盲写模型、拿到比赛Top等。

Step1: 基础原理

机器学习最初入门时对数学的要求不是很高,掌握基础的线性代数、概率论就可以了,正常读下来的理工科大学生以上应该都没问题,可以直接开始学,碰到不清楚的概念再去复习。

统计机器学习部分,建议初学者先看懂线性分类、SVM、树模型和图模型,这里推荐李航的「统计学习方法」,薄薄的摸起来没有很大压力,背着也方便,我那本已经翻四五遍了。喜欢视频课程的话可以看吴恩达的「CS229公开课」或者林田轩的「机器学习基石」。但不管哪个教程,都不必要求一口气看完吃透,第一轮先重点看懂以下知识点就够了:

深度学习部分,推荐吴恩达的「深度学习」网课、李宏毅的「深度学习」网课或者邱锡鹏的「神经网络与深度学习」教材。先弄懂神经网络的反向传播推导,然后去了解词向量和其他的编码器的核心思想、前向反向过程:

Step2: 经典模型与技巧

有了上述的基础后,应该就能看懂模型结构和论文里的各种名词公式了。接下来就是了解NLP各个经典任务的baseline,并看懂源码。对于TF和Pytorch的问题不用太纠结,接口都差不多,找到什么就看什么,自己写的话建议Pytorch。

快速了解经典任务脉络可以看综述,建议先了解一两个该任务的经典模型再去看,否则容易云里雾里:

2020 A Survey on Text Classification: From Shallow to Deep Learning
2020 A Survey on Recent Advances in Sequence Labeling from Deep Learning Models 
2020 Evolution of Semantic Similarity - A Survey
2017 Neural text generation: A practical guide 
2018 Neural Text Generation: Past, Present and Beyond
2019 The survey: Text generation models in deep learning
2020 Efficient Transformers: A Survey

文本分类

文本分类是NLP应用最多且入门必备的任务,TextCNN堪称第一baseline,往后的发展就是加RNN、加Attention、用Transformer、用GNN了。第一轮不用看得太细,每类编码器都找个代码看一下即可,顺便也为其他任务打下基础。

但如果要做具体任务的话,建议倒序去看SOTA论文,了解各种技巧,同时善用知乎,可以查到不少提分方法。

文本匹配

文本匹配会稍微复杂些,它有双塔和匹配两种任务范式。双塔模型可以先看SiamCNN,了解完结构后,再深入优化编码器的各种方法;基于匹配的方式则在于句子表示间的交互,了解BERT那种TextA+TextB拼接的做法之后,可以再看看阿里的RE2这种轻量级模型的做法:

序列标注

序列标注主要是对Embedding、编码器、结果推理三个模块进行优化,可以先读懂Bi-LSTM+CRF这种经典方案的源码,再去根据需要读论文改进。

文本生成

文本生成是最复杂的,具体的SOTA模型我还没梳理完,可以先了解Seq2Seq的经典实现,比如基于LSTM的编码解码+Attention、纯Transformer、GPT2以及T5,再根据兴趣学习VAE、GAN、RL等。

语言模型

语言模型虽然很早就有了,但18年BERT崛起之后才越来越被重视,成为NLP不可或缺的一个任务。了解BERT肯定是必须的,有时间的话再多看看后续改进,很经典的如XLNet、ALBERT、ELECTRA还是不容错过的。

Step3: 实践优化

上述任务都了解并且看了一些源码后,就该真正去当炼丹师了。千万别满足于跑通别人的github代码,最好去参加一次Kaggle、天池、Biendata等平台的比赛,享受优化模型的摧残。

Kaggle的优点是有各种kernel可以学习,国内比赛的优点是中文数据方便看case。建议把两者的优点结合,比如参加一个国内的文本匹配比赛,就去kaggle找相同任务的kernel看,学习别人的trick。同时多看些顶会论文并复现,争取做完一个任务后就把这个任务技巧摸清。

总结
其实自己刚开始学的时候只到了minimum的水平,在后续的实践、面试中才逐渐把知识点补全,并归到自己的体系里。刚入门的同学们也不要气馁,先懵懵懂懂地看一看原理,哆哆嗦嗦地跑一跑代码,时间会给你答案。怀疑自我的时候,就算算自己到底学了多久,没到一万小时之前都还来得及

“干货学习,三连

androidframework保姆级开发学习路线,全套资料包开源分享

如今,Android开发工程师的招聘中对Framework已做出了明确要求,小米、网易等大厂更是以高薪招聘安卓Framework开发人才:技术在发展,行业再进步,开发人员也需要不断进阶。而Framework作为Android的一个深水区&#x... 查看详情

(保姆级)自学网络安全超详细学习路线,从青铜到王者的进阶之路

算上从学校开始学习,已经在网安这条路上走了10年了,无论是以前在学校做安全研究,还是毕业后在百度、360从事内核安全产品和二进制漏洞攻防对抗,我都深知学习方法的重要性。没有一条好的学习路径和好... 查看详情

机器学习神器scikit-learn保姆级入门教程(代码片段)

Scikit-learn保姆级入门教程Scikit-learn是一个非常知名的Python机器学习库,它广泛地用于统计分析和机器学习建模等数据科学领域。建模无敌:用户通过scikit-learn能够实现各种监督和非监督学习的模型功能多样:同时使用... 查看详情

保姆级深度学习环境搭建(亲测避坑)(代码片段)

一、安装显卡驱动1、查看显卡驱动型号可以打开任务管理器,点开性能,看到显卡名字;2、下载显卡驱动进入英伟达官网,下载对应的显卡驱动:官方驱动|NVIDIAhttps://www.nvidia.cn/Download/index.aspx?lang=cn选择对... 查看详情

保姆级深度学习环境搭建(亲测避坑)(代码片段)

一、安装显卡驱动1、查看显卡驱动型号可以打开任务管理器,点开性能,看到显卡名字;2、下载显卡驱动进入英伟达官网,下载对应的显卡驱动:官方驱动|NVIDIAhttps://www.nvidia.cn/Download/index.aspx?lang=cn选择对... 查看详情

耗时2周整理出来了:“pytest测试框架”保姆级教程(测试小白必看!)(代码片段)

哈喽,我是二黑,这里赠送一份软件测试资料.1、软件测试学习路线2、软件测试视频资料3、软件测试相关文档4、软件测试相关工具、安装包5、高级测试工程师简历模板6、面试题、模拟面试、PDF文档有需要的小伙伴们可... 查看详情

2023年如何学习python,保姆级新手入门指南,拿去吧你!(代码片段)

作为一种多功能编程语言,Python深受开发人员、数据科学家和软件工程师的喜爱。因为Python易于学习并且语法清晰,所以建议初学者和高级开发人员都可以使用它。Python提供了许多有用的库、框架和模块,可用于构建... 查看详情

hadoopmapreduce保姆级吐血宝典,学习与面试必读此文!(代码片段)

Hadoop涉及的知识点如下图所示,本文将逐一讲解:本文档参考了关于Hadoop的官网及其他众多资料整理而成,为了整洁的排版及舒适的阅读,对于模糊不清晰的图片及黑白图片进行重新绘制成了高清彩图。目前企业... 查看详情

折腾深度学习——用anaconda配置python开发环境(windows)保姆级教程(代码片段)

目录零、前言一、软件安装二、软件配置 三、安装CUDA以及cuDNN(GPU版需要,CPU请跳过)四、安装Pytorch五、检验安装六、结束七、IDE的安装八、Q&A零、前言    近期准备学习深度学习相关的知识,需要使用Pyth... 查看详情

springboot学习路线大全之springboot与分布式保姆式教程建议收藏(代码片段)

前面的话,已经分享了SpringBoot的相关知识,例如: 1,1SpringBoot一天快速入门,超级肝货!【一】2,SpringBoot一天快速入门,超级肝货!【二】3,肝完了,总结了SpringBoot与缓存的知识点&... 查看详情

肝了10万字,go语言保姆级编程教程2021最新版(建议收藏)(代码片段)

...c;如果你有C语言基础,学习Go语言会容易很多。Go语言保姆级教程目录什么是Go语言Go语言优势Go语言发展史Go作者Go语言现状Go语言应用场景如何学习Go语言源文件对比代码管理对比关 查看详情

mysql学习基于swing+jdbc+mysql的java图书管理系统保姆级教程(代码片段)

目录零、项目效果预览及设计准备项目效果预览数据库架构设计SQL源码表架构设计项目目录项目工具类代码配置DbUtil配置StringUtil配置所需工具ER图一、登录功能实现管理员登录功能实现效果预览User(用户实体类)源码UserDao(用户Dao... 查看详情

保姆级教程!开源python项目详细指南(代码片段)

点击机器学习算法与Python学习,选择加星标精彩内容不迷路来源:机器之心作者以SciTime项目(一个对算法训练时间进行估计的包)的发布为例,详细解释了发布的每个步骤。注意:本文假设你在GitHub上已... 查看详情

保姆级教程!开源python项目详细指南(代码片段)

点击机器学习算法与Python学习,选择加星标精彩内容不迷路来源:机器之心作者以SciTime项目(一个对算法训练时间进行估计的包)的发布为例,详细解释了发布的每个步骤。注意:本文假设你在GitHub上已... 查看详情

保姆级解读!css属性transform变形+2d转换+3d转换实例+代码+解析——web前端系列学习笔记(代码片段)

文章目录transfrom2D转换案例代码效果图元素变形原点3D转换3D转换——案例案例代码transfromtransform,翻译成中文的含义是“改变,使…变形;转换”,用于向元素应用2D或3D转换。transform属性的基本语法如下所示࿱... 查看详情

保姆级mybatis基础教程(代码片段)

一、为什么需要Mybatis?方便程序猿将数据存到数据库中。传统的JDBC代码太复杂了,Mybatis是简化的自动版框架以下是Mybatis官方对Mybatis的介绍简单易学:本身就很小且简单。没有任何第三方依赖,最简单安装只要... 查看详情

flink保姆级教程,超全五万字,学习与面试收藏这一篇就够了(代码片段)

本文目录:一、Flink简介二、Flink部署及启动三、Flink运行架构四、Flink算子大全五、流处理中的Time与Window六、Flink状态管理七、Flink容错八、FlinkSQL九、FlinkCEP十、FlinkCDC十一、基于Flink构建全场景实时数仓十二、Flink大厂面试... 查看详情

深度学习保姆级教程(附代码+数据)

近期正在出一套关于深度学习的实例教程,目前是入门阶段。【深度学习100例-卷积神经网络(CNN)实现mnist手写数字识别|第1天】【深度学习100例-卷积神经网络(CNN)彩色图片分类|第2天】【深度学习100例-卷... 查看详情