八千字深度学习入门实战经验贴

NLP从入门到放弃

共 8387字,需浏览 17分钟

 · 2021-11-29

大家好,我是DASOU
前几天,为了帮助大家更好入门深度学习,我在B站录制了一个深度学习从零入门的路线讲解视频,对视频感兴趣的可以看这里:深度学习从零入门,超详细路线图
我把视频内容整理成文字稿,今天分享给大家;
这个路线图范围六个部分:
  1. 基础知识
  2. 机器学习理论入门;
  3. 机器学习竞赛实战;
  4. 深度学习理论入门;
  5. 深度学习竞赛实战;
  6. 深度学习面试题汇总;
整个路线图的思维导图如下,由于微信不能跳转外部链接,所以我把文章中涉及到的视频或者博客链接放到了思维导图的备注里。
大家后台回复【资料】两个字,获取这个思维导图就可以了;

针对这六个部分,我们一个个的来看:

1.基础知识学习

首先,我们来看基础知识部分;
你需要掌握两个方面;第一个是数学,第二个是Python面向对象编程的基础;
首先对于数学来讲,我想很多搜索入门路线图的朋友,都会被推荐很多数学方面的大部头的书籍和视频和科目,比如说:微积分、线性代数、概率论、复变函数、数值计算等等;
我觉得如果当前的任务是入门,而不是做一些开创性的研究,这些并不全是没有必要;
从的建议来说,首先掌握线性代数里面的:向量、矩阵、运算、范数、特征向量和特征值;
我这里推荐一个中文视频,【两个小时快速复习线性代数】;链接看我思维导图思维导图的对应位置;
在复习的时候,不需要你完全记住,但是需要你用笔记画一个大致脉络图出来,把各个细节写上去,在以后需要用到的这个时候,像查字典一样能够查到就可以;
其次对于高数来说,需要掌握的主要就是4个:导数,梯度,泰勒公式,和概率论;概率论快速的过一遍就可以,了解一些基本概念,比如说条件概率,最大似然估计等等,我这里推荐一个视频,【1个小时快速复习概率论】;链接看我思维导图思维导图的对应位置;
有了这些数据基础,对于入门深度学习就够了;之后,如果遇到不懂的,在这个之外,我们再去学来得及;
这两个视频后期可能会让你跳转到外部网站学习,其实完全不用付费,在B站随便找一个播放量高的快速回复概率论和线性代数的视频就可以。
第二个基础知识是Python;
Python是一种编程语言,是我们后面机器学习和深度学习中数据处理,实现模型的主力语言;
对于Python而言,不需要你很精通,只需要有一定的Python 面向对象编程的的基础就可以;
在这里,理论方面,我推荐廖雪峰的Python课程,这个课程没有必要都看,地址在这里吗,大家可以去看一眼:
https://www.liaoxuefeng.com/wiki/1016959663602400
这个视频里面的目录,并不是都去学习,我们只需要从第一个简介开始,学习到常用的第三方模块;之后,有了一定的Python基础,就可以不用学习了;
之后需要提升的你的实战能力,我给你大家推荐一本书,学起来也很快,叫做【用Python做数据分析】;
中文版翻译在这里:
https://github.com/iamseancheney/python_for_data_analysis_2nd_chinese_version
这本书,不用全都看,看重点章节就可以;当然全看了,也很快,因为这本书本身学习起来就很简单;
我为什么推荐这本书呢?首先第一点,这本书确实看起来很简单,入门门槛极低,第二,这本书的内容,在我们往后的机器学习和深度学习关系很密切,因为我们在构建模型之前,需要很多操作去处理数据,用到这本书介绍的这两个api包;
看完廖雪峰的教程和这本书,你会掌握两个东西,一个python基础知识,一个是究竟怎么用Python实战去处理数据;

2.机器学习理论入门

第二个部分,我来重点介绍机器学习理论入门路线图;
对于机器学习理论算法,我推荐一本书籍和一个博客和一个Python包
书籍是:李航的统计学习,注意,不是全都看,我一会会告诉你看哪几个章节;
博客是刘建平老师的博客,Python包是sklearn;
我们先来看这个统计学习,我谈三个准则
三个准则是:
第一,作为入门选手,不要每章都去看;
第二,不要用python从零去造轮子去实现这本书里面的算法,千万不要这样做,太浪费时间;
第三个,对于重点章节算法必须能做到手推公式,重点算法其实不多,一会说;
这本书一共是分为了11章,你只需要去看其中的六章内容,分别是:1,2,4,5,6,8
我带大家看一下这本书目录:
第一章是统计学习概论;这章是在学习整个机器学习的一些基础概念,比如说什么是回归问题,什么是分类问题;什么是正则化,什么是交叉验证,什么是过拟合等等基础概念;必须掌握,没有商量的余地;
第二章是感知机,是最简单机器学习模型,也和后面的神经网络有关系,必须掌握。
第三章是K近邻算法,这个你现在不需要看,跳过它;
第四章是朴素贝叶斯算法,这个非常重要,里面的概念比如说后验概率,极大似然估计之类的,必须掌握。
第五章是决策树:这很简单,就是如何特征选择,两个决策树算法;也要掌握
第六章是逻辑回归和最大熵;要看
第七章支持向量机,我说一下我的观念哈,我认为这章不需要看;为什们呢?首先在我自己的工作中,几乎没用过支持向量机;而且现在,在今天,如果你在面试深度学习岗位的时候,有的面试官还在让你手推SVM公式的话,我认为这个面试官是不合格的,这个公司可能未必是你很好的一个选择;
第八章提升树,必看,这个提升树算法非常重要;
第九章第十章第十一章,都不需要看;对于隐马尔科夫和条件随机场,之后你如果想深入学NLP,再来看;对于EM算法,入门之后你碰到的时候再去看;
我刚才谈到,对于重点算法必须能够手推公式,哪几个重要呢?不多,逻辑回归,朴素贝叶斯,以及提升树里的xgboost算法;别的算法,你能够自己复述一遍讲出来,就够了;
在看的过程中,如果有不懂的怎么办?就是我刚才推荐一个刘建平老师的博客;
在这里:https://www.cnblogs.com/pinard/category/894692.html?page=4
这个博客很好,有对应理论介绍,也有使用sklearn实现代码;
我刚才还谈到一个准则,是不要去从零造论文实现算法,因为sklearn可以很好的帮助你;
在这个过程中,你要去搞清楚这个算法输入数据,输出数据,每个参数的含义是什么;可以自己自己调一下参数,看看不同参数下最终效果有什么不同;但是在这里不要花费太大精力在调参上,因为你现在代码实现的是一个demo,数据量很小,调参没什么意义;什么调参呢?我一会会讲到;
整个机器学习理论部分,如果你真的认真去学习,三周时间,你肯定能搞定;你想啊,总共看6章,每章你看四天,这四天,你期中三天看理论部分,一天用代码跑一遍熟悉一下感觉;
其实代码这块要跑起来,很快,都不需要一天,两三个小时就可以;四天搞定一章,三周看完一点问题没有;

3.机器学习竞赛实战

然后重点来了,理论部分看完了,也用sklearn做简单的代码实践了,接下来做什么呢?要把这些算法用到实践中去;
也就是我要谈的机器学习竞赛代码实战:在这里,我只推荐一本书,叫做:
阿里云天池大赛赛题解析——机器学习篇;
记住啊,是机器学习篇,不是深度学习篇;
我先说这本书要不要买:首先我自己是买了这本书,但是我发现书很厚,但是有大量的代码占据了很大篇幅;后来发现代码在天池上已经开源了,所以买完之后有一点点后悔;不过就全当为知识付费了;
拿你们要不要买呢?我觉得没啥必要,反正代码是开源的,一会我告诉链接;不过要想支持一下书的作者的话,可以买一本支持一下;就不要下次一定了;
天池是一个竞赛平台,这本书里面它包含了四个实战型的任务:
  1. 工业蒸汽预测
  1. 天猫用户重复购买预测
  1. O2O优惠券预测
  1. 阿里云安全恶意程序检测
我来告诉大家怎么看这本书:
有四个任务是吧,你挑其中的一个或者两个,不需要都看,没必要;
怎么确定把这一个或者两个任务吃透呢?
七个步骤:赛题理解、数据探索、特征工程、模型训练、模型验证、特征优化、模型融合7个步骤;
开源代码的链接我放在了思维导图的备注;
就像我说的,四个任务中挑一个或者两个,在一周,七天,三天看一个,七天看两个,或者七天你就看一个,比如第一个,把它吃透就够了;
看完之后,你会对之前学习的统计学习书籍里面机器学习算法有一个非常清楚的认识;
所以整个机器学习的理论和代码时间,花费时间为1个月;

4.深度学习理论学习

我把深度学习的入门仿照机器学习,也分为两个部分,先学理论,再实战打比赛;
其实说心里话,深度学习入门比机器学习入门要简单的多;
在网上很多朋友在推荐深度学习入门路线的时候,会谈到李沐老师【动手深度学习】;我自己也在跟着学习这个课程,我也学到了很多;
但是讲心里话,如果是带入一个初学者的角度去看这门课程,可能会有听不懂的情况;所以这门课程可以先放一放,我给大家推荐两个视频和一本书;
我们都知道深度这块主要就是分为NLP和CV;
NLP任务上大概可以分为四种:文本分类 文本匹配 序列标注 文本生成,
CV任务大致也可以分为图像理解和生成:理解这块大致可以分为:分类、检测、分割、追踪;生成这块基本就是GAN模型。
对于入门来说,我们不用学这么多,我们只需要学籍基础的神经网络,然后通过文本分类和图片分类任务去熟悉掌握整个徐娜林和预测流程,比如数据处理,模型搭建等呢吧;
所以我推荐的这两门课程也是很出名的:
就是大家常说的cs231n 和CS224n;
我来告诉大家怎么看这两个视频,同样不是全部都看;
4.1. 推荐的视频cs231n
B站视频链接见思维导图;
整个视频在B站是分为了33讲,作为入门来说,主要是学习p1-p22;
也就是从第一讲课程介绍-计算机视觉概述到循环神经网络;
我们来打开看一眼:
然后这个视频不是让你一直看,看完一部分之后,去完成对应作业;
它的作业有三个,我把实现代码链接放在这里:https://github.com/rishabh-16/cs231n-2019-assignments
你去做前两个,实现图像分类任务,实现卷积神经网络:bn,dropout,cnn 都要看一下;
第三个作业比较复杂,大家不用去看,只需要做前两个;
注意,不需要自己从零去做这个作业,直接看给的代码仓库,去看人家怎么实现的,当然你如果有自信而且想要锻炼自己,没问题,可以从零去实现。但是对于大部分人,你去对照着代码一行行的看,去理解为什么这儿写,输出输入是什么;
在这个过程,就会涉及到一点,就是框架的学习,我推荐大家使用Pytorch;
框架框架学习,我这里我后面会讲到,我先在这里插一句,就是大家可以去看B站刘二大人,地址在这里:https://www.bilibili.com/video/BV1Y7411d7Ys?from=search&seid=1631997590037031874&spm_id_from=333.337.0.0
它这个pytorch学习曲线比较平滑,大家在在看计算机视觉视频之后,完成代码的部分,如果有不懂的地方,穿插着去看这个刘二大人的视频;
因为刘二大人这个视频会涉及到CNN和RNN,所以如果你一开始就看,可能会有点费劲;
我举个例子吧,比如说你看完CNN网络,然后你去完成第二个作业,突然你发现里面有些不懂,不知道为什么这么弄,然后你去看刘二大人对应的视频讲CNN代码的;是这么个顺序啊;
整个计算机市局视频和代码学习完之后,你必须要掌握到什么程度呢?
必须要把下面这些完全掌握:
反向传播梯度回传,损失函数,优化算法,多层感知机,卷积神经网络,普通的循环神经网络,以及一些dropout和BN掌握住;
4.2. 自然语言处理:
推荐一个视频,非常经典的 CS224n:
https://www.bilibili.com/video/BV1pt411h7aT?from=search&seid=11365156277928976769&spm_id_from=333.337.0.0
这个课程不是需要都看,要有选择的看:
在B站的官方主页,它包含了18讲的内容;在入门阶段,你只需要看P1-P5和P8,P9,P11;
通过看这个视频你要能够达到什么地步呢?
其实这个视频和cs231n在基础部分是重叠的,对于基础部分,大家可以都看,两者兼学会更好
必须熟悉的掌握:反向传播,词向量,RNN,GRU,Lstm,Seq2Seq以及attention机制;初步了解卷积神经网络;
有作业,一定要认真做,自己写不出来,仿照着别人的写:
https://github.com/Luvata/CS224N-2019/tree/master/CS224N-2019/
作业也不是都写:重点看a1,a2,a4,a5;其实a5这个不做的话,也没问题,把前面给的这个三个一定自己走一遍;
作业涉及到词向量和机器翻译;
有的朋友常常会和我反应,不知道att这种细节是如何实现的,其实这些都是最基础的东西,一定要从零看代码,有余力的话,可以自己实现一遍,非常有帮助;
在学习这两个视频的过程中,视频是英文的,而且涉及到的一些经典概念,不太容易理解,那么必须要看这本书:
邱锡鹏
https://nndl.github.io/https://nndl.github.io/nndl-book.pdf
代码的学习过程中,不用去过度的关注调参之类的,而是关注代码是怎么写的;因为调参这块tricks后面我会有专门的部分提升;
4.3.Pytorch框架学习
pytorch框架的学习:其实这个pytorch学习应该是融合在上面这个计算机视觉学习中的;可以在看完视频只有,写作业之前,先刷一遍这个Pytorch教学视频;
B站的刘二大人:《PyTorch深度学习实践》完结合集
https://www.bilibili.com/video/BV1Y7411d7Ys?from=search&seid=1631997590037031874&spm_id_from=333.337.0.0
但是它好像没有源代码,评论区有小伙伴手敲了代码,地址在这:https://blog.csdn.net/bit452/category_10569531.html

5.深度学习竞赛实战:

重点来了,上面谈到的这些深度学习的东西,都是在给你打基础;
但是要记住,我们学习深度学习是为了实战:我给大家准备了两个学习曲线非常平滑的实战项目;
一个是新闻分类项目,一个是街景字符识别,也就是图片分类项目,有的人可能会认为这两个项目非常简单,但是我认为千万不要小瞧这两个项目,扎扎实实做完这两个项目,对你的帮助绝对比你想象的要大;
先说NLP的新闻文本分类任务;地址在这里:
https://tianchi.aliyun.com/competition/entrance/531810/introduction?spm=5176.12281973.1005.22.3dd52448NfUWzv
就像我所说的,这个任务是一个NLP中一个基础任务-文本分类任务;这也是绝大部分从业的业务型NLP工程师日常工作最常见的工作需求;所以掌握好这个任务非常关键;
那么怎么掌握呢?在天池上,有开源的赛题解析,我挑选几个我认为很好的notebook给到大家;
task1:赛题理解:
jupyter notebook 链接:
https://tianchi.aliyun.com/notebook-ai/detail?spm=5176.12586969.1002.30.6406111aQqRTBR&postId=118252
就是仿照你工作的时候,运营人员怎么给你提的需求,你听完需求要去分析它是什么问题,是个分类问题,回归问题,NLP问题,CV问题,多模态问题?
task2:分析数据:去看字符分布,最大长度,等一些长度
https://tianchi.aliyun.com/notebook-ai/detail?spm=5176.12586969.1002.18.6406111aE3Lglg&postId=118253
task3:基于机器学习的文本分类任务:先做一个baseline出来,不是先搞大模型复杂东西出来;
https://tianchi.aliyun.com/notebook-ai/detail?spm=5176.12586969.1002.15.6406111aE3Lglg&postId=118254
task4:不同深度学习模型:
fastext:它是一种词向量,也是一种文本分类模型:对应的论文链接在这里:对应的我的博客解读,在这里
https://tianchi.aliyun.com/notebook-ai/detail?spm=5176.12586969.1002.12.6406111aE3Lglg&postId=118255
w2C:在视频有介绍对应的论文链接对应的我的博客解读在这里:https://tianchi.aliyun.com/notebook-ai/detail?spm=5176.12586969.1002.9.6406111aE3Lglg&postId=118268
textcnn:也就是用CNN模型来做文本分类:
https://tianchi.aliyun.com/notebook-ai/detail?spm=5176.12586969.1002.21.6406111aE3Lglg&postId=118258
textrnn:使用RNN做文本分类:
https://tianchi.aliyun.com/notebook-ai/detail?spm=5176.12586969.1002.24.6406111aE3Lglg&postId=118259
之前深度学习视频学了,CNN,RNN等基础网络,这里你就去实战这些模型;
bert;这个可以先不看,等你入了深度学习的门,认为自己想搞NLP这个方向了,你再去看相关的论文;我把链接放在这里吧:https://tianchi.aliyun.com/notebook-ai/detail?spm=5176.12586969.1002.24.6406111aE3Lglg&postId=118259
第二个任务是CV任务:图片分类任务:街景字符编码识别
链接:
https://tianchi.aliyun.com/competition/entrance/531795/introduction?spm=5176.12281973.1005.23.3dd52448NfUWzv
task1 赛题理解
https://tianchi.aliyun.com/notebook-ai/detail?spm=5176.12586969.1002.15.2ce879deGunCpk&postId=108659
task数据读取与数据扩增
https://tianchi.aliyun.com/notebook-ai/detail?spm=5176.12586969.1002.24.2ce879deGunCpk&postId=108150
task3构建模型
https://tianchi.aliyun.com/notebook-ai/detail?spm=5176.12586969.1002.6.2ce879deGunCpk&postId=108711task4
模型的训练与验证:
https://tianchi.aliyun.com/notebook-ai/detail?spm=5176.12586969.1002.3.2ce879deGunCpk&postId=108780
task4模型的集成:
https://tianchi.aliyun.com/notebook-ai/detail?spm=5176.12586969.1002.21.2ce879deGunCpk&postId=108656
做完这个任务,你会对在CV领域,如果加载自己的图片数据集,如何构建CV模型,增强数据,模型验证都有一个很清晰的了解;
在这两个任务实施的时候,大家可以尽情的调参,尝试各种各样的tricks提升自己的成绩;
面试题这块,推荐百面机器学习,非常好,一定要看。
整个深度学习的入门路线就是这样,希望能够帮助到大家。
求转发,求三连,求一切!!!
浏览 44
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报