laji 发表于 2023-10-12 11:58:40

自学nlp好难啊,有没有大神指导一下?

研一,导师散养,自学nlp,没有方向,请大神指导一下学习路线,非常感谢!

ruozhis 发表于 2023-10-12 11:59:36

1:nlp基础你要先懂些原理,比如必须知道的,梯度下降,优化器,损失函数,这些机器学习基础里面你要稍微明白怎么回事,至于机器学习的算法XGBOOST,GBDT,SVM,KNN,朴素贝叶斯,这些毕业后面试会问到你
2:数据预处理这部分占NLP很大部分,考验你基本功的时刻,而且进大厂会考你算法和数据结构这块,利用研1刷些“力扣”上面的题和“剑指offer”,当你实际工作中要考虑时间和算力这块和算法有直接关系。
3:NLP的相关必会的知识,一个商业项目第一步都是数据处理,然后做词嵌入,然后喂入模型,你需要掌握词嵌入,和训练词向量,word2vec,glove,会使用bert,会做embedding, word2vec面试常问。
4:掌握2个框架 tensorflow 和pytorch框架,现在主流用的很多,先把pytorch框架掌握了。
5:掌握各种NLP常见模型和结构,基础的有dnn,rnn,bilstm,gru,mlp ,fasttext,textcnn,elmo,gpt,bert,seq2seq,transformer 学习这些基础网络,bert和transformer最好多写几遍代码,尤其注意力机制,很多任务里会见到。后面还有预训练衍生的模型不说了,掌握这些够了,里面的维度和原理要琢磨透 ,每个模型有哪些参数要记住,面试常拿出任意2个模型问你区别,比如语言模型有哪些?rnn和lstm和gru区别?。
6:数据准备好,网络搭建好,就是训练了,需要知道流程和一些组件,优化器,损失函数,数据填充和截断,迭代器取批次数据,等等。
数据是最难搞的,一般公司都会给,但是如果质量不好你自己还要想办法,要学会搞数据,大部分都是爬,还要学会数据增强有哪些方式,面试可能也会问你。
7:基本每个项目都差不多这个流程,对着这个项目流程每个环节学,否则你掌握一堆理论让你搞你不知道从哪开始
8:学完以上基本你也就迷迷糊糊说懂不懂,不懂还懂的状态,这时候搞几个常见项目,文本分类,ner命名实体识别,seq2seq做聊天机器人,bert做个文本相似度计算这些常见的
9:准备一个完整的大型项目,可以是NER,基本掌握以上找工作没啥问题,大厂看你基本功,数据结构算法一定过硬。记住你的模型多大,数据什么样,数据量大小和来源。
10:怎么优化的?遇到什么难点,这个是最核心的,面试也会经常问你的!不可能没做过优化的。还有可能问你损失函数什么样,模型结构什么样?面试官一般追命三联问,从你的回答继续找点追问。GPU型号和模型size学习中都要注意一下,很多都不知道的(我面试一般直接问这个问题先过滤一下)。你用过哪些包?哪些库?想想平时敲代码时要注意了,掌握不熟练面试一紧张你可能就忘记了。
11:项目完成后要考虑性能问题,现在基本都是预训练模型,效果是好,但模型大,不能满足上线标准,要做模型压缩,知识蒸馏掌握下。
12:部署一般用tornado 支持高并发,flask有的也用. nginx+supervisor 部署中用的,linux命令多练练,部署都在linux系统中。
13:工作中会遇到 分类问题;检索和推荐问题(召回和排序的算法,相似度计算最常见)faiss 和es 快速学下;ner实体识别;知识图谱中三元组抽取,图模型,图数据库这些;生成式模型 等等!具体看你的项目涉及到哪些了。
看到这里可能很多小伙伴心一抖仔细一想我 X !要学的这么多,开始动摇了,大可不必,可以先搞1-2个方向,ner方向和相似度计算(思路:文本和语义计算相似度 2路召回,然后精排返回结果)然后部署在你简历上,把我以上内容提到的点都展示出来,说明白就可以了。其他进公司再学!不会的千万不要写在简历上。
进公司后多花时间学习,前4个月你会很痛苦,为了好过些,这时候要体现你的情商了,需要找个师傅了,中午和同事一起吃饭,工作中问个问题,第一次对方肯定会帮助你,然后中午买个饮料回赠表示感谢,学会说话别太直,觉得你不错,这师傅就到手了。
切记别问白痴问题,实在没思路再请教别人,这行要有“搜商”,就是学会查找资料,别啥都问别人白嫖,一开始就要锻炼你的搜商和自学能力。
以上掌握基本入门了,下一步要开始进化了,这时候找公众号有很多写的不错的,然后看论文大概60多篇带源码!学到这步了可以联系我,发你论文获取路径。
有必要说一下,这行学历越高越有优势,卡学历卡的比较死,有机会就提升下学历。力扣一定要刷,找算法工作还是要考你基础的。
在这里只说了一个学习方向,这么做可以让你有一个清晰的学习思路,并且契合工作中的开发流程。知识点方面可以关注我发表的文章,陆续我会发表针对0基础可以看懂的,接地气,并且从项目角度出发的知识点文章。
建议0基础开始不要直接钻进公式里,明白每部分原理是用来实际中解决什么问题,能看懂对应的代码,会使用现成的代码调试跑通程序实现功能,才是最开始正确的打开方式。实现功能也会增加你的学习兴趣,获得满满的成就感。另外不要懒,代码要敲一遍,增加感觉,因为就业面试会有笔试环节,上机环节,只看不敲你肯定过不去。
学习很枯燥,坚持很重要,想要意想不到的惊喜,必须先塑造优秀的自己。加油!

aiayuan 发表于 2023-10-12 12:00:11

我是使用 Notion 来管理我的 nlp 学习过程的,我的 notion 地址在下面。
Notion – The all-in-one workspace for your notes, tasks, wikis, and databases.我使用学习卡片来管理每一个学习阶段,以及每个学习阶段所需要学习的内容的,这样的方式能够帮助我更好的跟踪自己的学习进展,并且能够让我有一种闯关的感觉,让自己坚持下去。
下面是我的模板的截图。

http://pica.zhimg.com/v2-1dad86111c4ad334f237e98ed389b001_r.jpg?source=1940ef5c
以下为模板内容的介绍:

[*]‼️学习框架介绍
[*]第 0 阶段 – 准备阶段(选做)
[*]第 1 阶段 – 适应自然语言处理
[*]第 2 阶段 – 语言学计算和向量表示
[*]第 3 阶段 – 深度学习入门
[*]第 4 阶段 – 使用深度学习处理自然语言
[*]第 5 阶段 – 序列模型
[*]第 6 阶段 – 自然语言处理中的迁移学习
[*]第 7 阶段 – 对话机器人
[*]未完待续
<hr/>学习框架介绍

这部分我会介绍一下,这套学习路径的框架。这套学习框架使用 Notion 作为你的学习任务管理的工具(你也可以使用其他工具,我只是觉得 Notion 的交互设计能够让我有更强的学习反馈),你可以在这里使用我的学习路径的管理模版,里面也包含了所有的学习资料。
Notion – The all-in-one workspace for your notes, tasks, wikis, and databases.这套框架主要由四个部分构成:

[*]学习阶段(Phases of Learning):学习阶段会从0开始,随着你不断的学习,提升经验,就好像打游戏升级一样,你 可以从0级升到7级,从对NLP完全不懂,到能够使用NLP技术,开发类似于对话机器人这样的比较复杂的程序。
[*]目标(Objective): 目标主要是想告诉你,在本模块的时间内,你能学习到的那些知识?如果把这套学习路径想象成是一个闯关的地图,那么这个目标就是告诉你,在你学完部分之后,你所在的位置是哪里,你将打败哪些 Boss。
[*]推荐学习的时间(Time Suggested): 我推荐的一个平均的模块的学习时间,这里你可以根据自己的时间和基础情况进行相应的修改,但是希望这种修改实在你做每个模块之前就确定好的,在本模块的实施的过程中不要随意的进行改动。
[*]学习内容(Resource to Learn): 这部分是要告诉你,在学习时间内你需要完成的学习内容,包括一些视频、文章和一些用来验证你是不是掌握知识点的项目,你需要完成他们,并且使用学习管理工具标记他们的完成状态。
这些模块当中,可能有一些是你已经掌握的了,你可以直接跳到本阶段的项目部分,看看自己能不能做出项目,如果做不出来的话,可以回头再去看一遍学习的内容。

http://picx.zhimg.com/v2-8d9ae3e9063858aad363363046fbeac1_r.jpg?source=1940ef5c
你可以使用 todo list 来做学习进度的管理,在学习进度管理的模版中,你可以对于学过的资料画 ✔️<hr/>第 0 阶段 – 准备阶段(选做)


http://pica.zhimg.com/v2-5b0bd05d7c28cd8b2dfb6ce7f78d372a_r.jpg?source=1940ef5c
目标:
这个阶段是给那些还不是很了解 Python 和数据科学(Data Science)相关知识的人准备的,帮你预热到一个能够接受后面知识的状态。在这个阶段的最后,你应该学会怎样使用 Python 并且使用 Python 做一些简单的机器学习的项目。
推荐时间:
6小时/周
学习内容:

[*][ ] 数据科学中的 Python:
[*][ ] 学习统计学:
[*][ ] 机器学习中的数据处理:

[*]训练和测试
[*]数据分割

[*][ ] 几种常见的机器学习模型:

[*][ ] 线性回归
[*][ ] 逻辑回归
[*][ ] 决策树
[*][ ] 支持向量机
[*][ ] K-fold 交叉验证

<hr/>第 1 阶段 – 适应自然语言处理

目标:
恭喜你进入到自然语言处理学习的第一个阶段,这个模块主要是让你熟悉一些文本预处理的技术。你应该能够在学习完这个模块后,搭建一个文本分类的模型。
推荐学习时间:
5 小时/周
学习内容:

[*][ ] 从多种不同的数据源中加载文本数据
[*][ ] 使用正则表达式
[*][ ] 使用各种工具包对文本做预处理
[*][ ] 探索并分析文本数据
[*][ ] 从文本数据中抽取信息
[*][ ] 项目:使用抽取出来的文本信息,创建一个文本分类的任务
<hr/>第 2 阶段 – 语言学计算和词向量

目标:
这个阶段你将开始看到一些神奇的 NLP 技术。你会学习使用语法信息从文本中抽取一些关键的信息。你也会学习在 NLP 中非常核心的技术 — 词向量。
推荐学习时间:
5 小时/周
学习内容:

[*][ ] 抽取语言学特征

[*][ ] 使用 Spacy 做词性标注(POS)
[*][ ] 使用 Spacy 做命名实体识别(NER)
[*][ ] 依赖分析

[*][ ] 在向量空间中的文本表示

[*][ ] 词袋(bag of word)
[*][ ] 词向量

[*][ ] 主题模型

[*][ ] LDA

[*][ ] 信息抽取
[*][ ] 项目:使用词向量制作情感识别任务
[*][ ] 项目:使用主题模型给新闻做分类
<hr/>第 3 阶段 – 深度学习入门


http://pica.zhimg.com/v2-0b68b1a52d8a7ea856402563d8ebafa7_r.jpg?source=1940ef5c
目标:
在最近这些年,使用深度学习之后自然语言处理技术有了长足的进步和突破。从 Google 的Bert到 OpenAI 的 GPT-3, 每一个想要进入自然语言处理领域的人都应该了解深度学习的工作原理以及一些框架的使用方法。在这个阶段中,你将学习到深度学习的概念、算法和相关的开发工具。
推荐学习时间:
5小时/周
学习内容:

[*][ ] 神经网络
[*][ ] 优化算法
[*][ ] 循环神经网络(RNN)和 LSTM
[*][ ] Pytorch
第 4 阶段 – 使用深度学习处理自然语言


http://picx.zhimg.com/v2-fa5d2dddb947853df84892ae24a45723_r.jpg?source=1940ef5c
目标:
现在你应该已经了解了一些深度学习的知识了,那么这个模块就让我们应用它来做自然语言处理的任务吧。这个阶段我们会聚焦在一些处理自然语言常用的进阶的深度学习模型,比如说 RNN 、LSTM 和 CNN。
推荐学习时间:
5小时/周
学习内容:

[*][ ] RNN
[*][ ] CNN
[*][ ] LSTM
[*][ ] 项目:使用 LSTM 完成 NER 任务。
第 5 阶段 – 序列模型

目标:
在这个模块,你将会学习到一种处理序列输入的模型。这种模型对于我们后面继续探索 NLP 至关重要。
推荐学习时间:
小时/周
学习内容:

[*][ ] 语言模型
[*][ ] 序列到序列的模型
[*][ ] 项目:使用语言模型创建一个自动完成的系统
[*][ ] 项目:创建一个基于深度学习的翻译模型
第 6 阶段 – NLP 中的迁移学习

目标:
迁移学习是目前在 NLP 中主流的一种方法。这些技术能够帮助你快速的得到 SOTA 的模型。在这个阶段我们会介绍 BERT、GPT-2,ULMFiT 和 Transformers。
推荐学习时间:
5小时/周
学习内容:

[*][ ] ULMTiT:
[*][ ] Transformers:
[*][ ] 预训练模型(BERT 和 GPT-2)
[*][ ] Fine-Tuning 预训练模型
第 7 阶段 – 对话机器人


http://picx.zhimg.com/v2-c2dae961bbeb08b6c90614a8e5aef651_r.jpg?source=1940ef5c
待续 ...

像椰子的心 发表于 2023-10-12 12:00:41

先对机器学习有一个比较基本的认识,把Coursera版吴恩达过一遍就可以了,然后直接上CS224n
它设计上就不依赖于其他的前置知识

abc12 发表于 2023-10-12 12:01:06

先打好基础,别上来就扎进论文堆里,只知其一不知其二。
课程推荐斯坦福cs224n,吴恩达,英文听的困难的话强烈推荐台大李宏毅的课程,有趣易懂:
Hung-yi Lee书籍的话,花书、统计机器学习、都可以看看,不过说实话我也没怎么看过,都是看网上博客学的,因为实在太难啃了。
同时带着写写代码,cs224n有配套代码作业的,我记得最开始写的是词向量。
基础先打牢,对NLP整个大方向脉络有个了解,常用基础知识都了解到。然后再看看论文,挑自己感兴趣的方向,首选最新的综述,然后看里面提到的论文,dfs顺序看下去,直到对你这个领域的整个脉络有个了解。然后就可能会提出自己的想法,提出批判和改进了。
代码的话,先跑通优质论文的代码,在SOTA基础上修修改改模型之类的,把他们代码搞懂,很多都写的很不错的。有能力的话再自己从头写,不然的话太耗时间了,如果你是大神,忽略。

wjml223 发表于 2023-10-12 12:01:46

首先把周志华老师的西瓜书或者李航老师的统计学原理看一遍,打好基础(可以跳过,但是如果基础打牢会对自己帮助比较大,但是切忌这一步的时间不要过长);
其次在github上找几个简单的项目看一下,例如:新闻文本分类和简单的命名实体识别,这样可以了解nlp两大任务分类和序列标注,有一个大体了解;
然后,可以找一个比赛打一下,检验自己学到的东西,并且可以在比赛的过程中,可以更加深入了解每个nlp任务的本质;
最后,找一个自己感兴趣的任务,从头开始,看论文,对任务进行深入了解,并且对模型发展史有一定了解。
如果对文本生成感兴趣,本人写了一个基于gpt2的新闻标题生成项目,有详细的代码注释,可以看一下。
https://github.com/liucongg/GPT2-NewsTitle喜欢的话,记得star一下呦~~
页: [1]
查看完整版本: 自学nlp好难啊,有没有大神指导一下?