0. 写在前面
要说NLP最近最火的是什么,那必是BERT无疑了。强悍如BERT,在十多项NLP的任务上强势屠榜,业界声称BERT将开创NLP领域新的纪元。在BERT刚出来的时候,就在各种公众号上看过各种原理解释,但一直没有去认真研究论文。后来在PaperWeekly公众号上阅读了万字长文《NLP的巨人肩膀》,算是把BERT的诞生史过了一遍。在看这篇文章的过程中发现Word2Vec到BERT中间的那么多演变自己都没有好好研究过,于是打算写BERT发展史系列文章,从传统的词嵌入开始,详细讲解词嵌入往BERT发展的过程及其中的思想的演变过程。这一系列涉及到很多算法,基本上涵盖了大部分比较重要的NLP技术和思想,有些是我接触过的,有些我还没有接触过,因此也希望写作的过程能够push自己去学习,去进步。
我希望在这一系列文章中尽量以自己的话语阐述各个算法背后的思想和原理,多输出一些自己的理解,并在最后附上我个人认为学习这些算法比较好的材料和教程。如果看我的文章没有太理解,也可以多去看看参考材料。
1.机器学习流程
什么是机器学习?抛开严肃的定义,在我看来,机器学习(这里特指有监督学习)就是使用计算机对事件的结果进行建模的过程。用数学符号来表示就是f(x)->y,y其中代表事件的结果,x代表影响事件结果的各个因素,f代表我们使用的机器学习算法。即,我们希望将事件结果与影响结果的因素以某种函数的形式映射起来。
比如,主人公算法小白菜现在在上小学五年级,我们要预测他在期末考试中能否及格。事件的结果就是能及格和不能及格,影响事件结果的因素则有很多,这些因素有的对预测结果很重要,有的则无关紧要。比如算法小白菜在每次月考中的成绩,对于预测就很重要,而算法小白菜的身高则无关紧要。机器学习中,挖掘影响事件结果因素的过程称为特征工程,这一步的目的是依据现有数据挖掘出对结果有影响的因素(也叫特征),然后使用这些特征对结果进行建模。
因此,一个大致的数据挖掘流程为:数据预处理—>特征工程—>建模。很多时候,挖掘和发现出好的特征对最后结果的影响甚至要大于模型本身。
其实说了这么多,我只是想说明,好的特征对于建模的重要性。就像我们这世界有果皆有因,一件事情发生的背后,定有各种因素在