阅读大概需要5分钟
因为最近在准备本科毕设的论文部分,所以最近原创的相对比较少,但是为了坚持每天学点新知识,我也逼着自己每天抽出晚上的1小时左右把自己想到的并且自己还没理解的小知识点的网上搜索下好的文章,能一下子读懂的,最好有图之类的文章,再根据自己的一些小理解,将文章编辑下,分享给大家。末尾再附上自己的当天准备的五个托福单词,这五个单词我也不是我先学过的,而是托福单词随机到的,在我编辑的时候我也刚好学下。正是在这种逼自己的情况下,我觉得我在这一个多月的时间里真的涨了不少知识。我也真心希望我的粉丝们跟我一样,每天逼着自己,学点知识,用不了一个月,即使一个星期你也会有很多收获的。当然大神们就继续自己的学习方法哈。嘿嘿。
好了,哈哈,想说的太多了,但是该进入我们今天的主题了。因为有很多人问我怎么入门自然语言处理,深度学习,机器学习等问题。我回答的太多了,也真的帮助了很多人。因为我知道入门这件事在有人指点下,真的很节省时间的,没有什么比我们的时间更重要了,要有的话,只能是咱们的亲人了。所以,今天我就总结下,作为小白过来的我的一些经验,若有不对的地方或者更好的经验,欢迎下面评论区写上,大家共享。
怎么能表示自己自然语言处理入门了呢?
那就是写一个分类器,我大三进入NLP实验室,听到新来的研究生师兄师姐们第一个任务总是写一个分类器。而我期间干了很多杂事以及上课,并没有真正的写过一个分类器。再加上考研的原因,我真正写一个自己基本都懂各种细节的文本分类器是在考完研的那个寒假。这个的功能就是给你一句话,你给这句话分个类即可。刚开始最好用CNN这个神经网络,因为这个简单。而你得需要数据,这个你可以去github上搜索,比如cnn text classification +自己喜欢用的框架(tensorflow,pytorch等),里面有代码,也基本会有数据。github真是个好东西,一定要充分利用。
实现分类器的时候,你能学很多东西。
编程语言:python
这个编程语言一定要学,为什么呢?因为俗话说,人生苦短,我用
python。python实现我们的想法确实快,而且我们是机器学习方向,所以需要很多数据,python有很好的数据处理包,并且大家也都知道很多大公司出了python的深度学习框架,比如tensorflow,pytorch等。但是python确实比C++慢,等你学会了用python实现各种算法的应用时,转成C++也会很快的。python只是推荐,如果你直接上手C++也行,只是推荐。
CNN神经网络
因为你要学会CNN来写分类器,所以你应该先把CNN彻底了解了。在你了解CNN的时候,你会学会很多东西。比如神经网络在NLP中到怎么使用的?为什么这么使用?你会了解什么是神经单元,它的计算公式是什么?句子是怎么提取特征放进CNN的,词如何embedding,什么是窗口大小,窗口是怎么计算的,滑动步长代表什么,什么是宽卷积,窄卷积,常用的窗口大小是什么,什么是pooling,pooling细分为哪些pooling,为什么要pooling,什么是全连接,什么是线性变换,怎么映射到类别上的等。你可能会问我能不能先彻底的学习什么是深度学习?我的推荐是,在了解CNN的时候,遇到什么不懂得再去查什么这样学的最快了。在这个期间你学习神经网络的话,推荐看网易云课堂吴恩达的深度学习微专业课程。总之,在解决问题的时候学东西真的效率很高。只是推荐。
是否要系统的学下数学?
我们需要的数学大致为统计学,线数,微积分。入门的时候,微积分会求复合函数导数即可;线数了解矩阵概念,会点乘,叉乘即可;统计学,你的分类器的损失函数一般会是交叉熵,这个时候你具体了解下什么是熵,信息熵,交叉熵。在NLP入门的时候在深度学习火之前是统计的天下,而现在是深度学习和统计一起的天下。现在你不需要系统学这个,只需要遇到问题的时候,涉及什么具体的学什么。
看理论 看github源码 写自己代码
一行一行分析,期间你会学到怎么清洗数据,中文和英文的不同处理法。建立字典,为什么要将文本数字化,什么是padding,怎么表示未登录的词,选择什么样的优化器,设置怎样的学习率,在搭建网络中,你会学到怎么对准维度,数据具体怎么流动,什么是softmax,什么是激活函数,评估方法都有哪些等。
最后一些话
等你入门了,其他的学的就很快了。NLP,CV等入门思路是一样的。机器学习和数学知识在自己有时间的时候还是慢慢学学最好,毕竟万变不离其宗,懂了这些,即使出了新的算法,也能很快理解。前提是有时间的话,我就是抽空就看看这些知识,并总结写成公众号。如果可以的话,找几个比你厉害的人一起学更好!今天就这么多吧,写到凌晨了。真心希望能帮到你!一起坚持,加油!