《阿里云天池大赛赛题解析(深度学习篇)》导读

前言

时隔一年左右,天池团队在之前机器学习篇的基础上又推出了深度学习篇,同样第一时间收到了作品。抱着学习的心态仔细的阅读了下,也再次感觉受益匪浅,配合之前的机器学习篇,两本书在算法的介绍和赛题的介绍上形成了闭环,如果都能够把里面的知识点搞懂则可以在算法设计领域达到较高的水平。以下是对于深度学习篇的一个简单导读。

深度学习和机器学习的区别

其实对于两者的区分并不用太过关心,严格的来说深度学习也是机器学习的一部分。目前来说,通常把涉及神经网络的算法包括FNN、CNN或RNN等称为深度学习算法,而传统的一些算法包括常见的XGBoosting或者LightGBM等通常称为机器学习算法。从场景上来说,深度学习通常被用在图像、视频和自然语言的场景,机器学习通常被用在结构化数据上,当然场景之间的边界也并不是那么清晰,比如Tabnet网络,属于典型的深度学习算法,但是经常被用在处理结构化数据,并且效果非常不错。当然从本书的角度来说,因为是结合赛题来进行介绍,因此场景集中在自然语言处理、视频和图像三个场景。

本书的使用方法

本书的编写方式是结合案例的实战教学,采用的都是天池比赛的真题数据,由于侧重于深度学习的关系,对于数值挖掘的场景并没有进行介绍。因此相对还是要一些基本功才能更好的读通书里的案例,这个基本功包括两部分:

(1) 基本的数学知识

很多人觉得机器学习很难,深度学习更难,被数学知识吓得不敢靠近。其实没有必要有惧怕的心理,从数学知识上来讲,从事应用或者竞赛的数学水平为,线性代数的基础知识,高等数学微积分的基础知识,所需要的深度仅仅为基础(当然如果要自己发明算法,这对数学有极高要求,这里不展开)。这些基础知识的作用是用来理解算法的原理,事实上pytorch、Tensorflow乃至国产的Paddle框架都已经把算法写好了,基础知识是帮助更好的辨别在不同场景下如何选择最合适的算法。

(2)基本的代码技能

本书由于是采用案例教学,是实战的方向。因此出现大量的代码,需要有基本的代码技能才能看懂,目前数据竞赛通用的语言为Python和R语言,其中Python又占了绝大多数。但同样不用因为不懂代码而恐惧,事实上数据科学的代码水平要求并不高。大约是基础水平偏上一点点而已,学习周期2个月基本可以入门看懂书里的代码。唯一要做的是多动手做实验。

(3)机器学习原理

本书并没太多介绍传统的机器学习知识,因为之前单独出版过机器学习篇的缘故。完全从深度学习入门并非完全不可能,但是有难度,因为包括损失函数、误差指标、超参数这些概念上机器学习和深度学习是类似的,从传统机器学习入门,深入理解1种或2种基础模型比如线性回归或者逻辑回归能够深入的理解这些概念的原理。进一步到深度学习的理解方面,只需要关注神经网络的原理,而不必再同时去学习通用概念给自己的学习增加难度。

竞赛套路的学习

目前的竞赛中,基本都是使用多模融合的套路。在竞赛体系的不断发展之下,多模融合甚至成为了独立的一个子学科,并且有专门的论文来研究融合的方法。可能学习完本书后参加实战发现成绩并没有那么好,那是因为本书还是以介绍单套模型的原理和应用为主,并没有对多模融合进行展开。

从学习的角度来说,个人是建议从基础做起,跟随书里的解决方法进行实验,逐步提升自己的水平。不宜直接对标竞赛结果,当自己水平逐步到天花板后,自然而然的会去找新的方法和技术来突破这个天花板,因此,起点放低,但是保持持续性是最好的学习方法。步骤如下:

(1)学习数据的处理方式

所有场景不管是不是竞赛,数据的处理都是第一步,这个阶段很烦,但是必须要掌握。深度学习的数据处理比机器学习更复杂一些,比如CNN、RNN、LSTM等模型对于数据输入的形状都有一定的要求,并且这个形状至关重要,是整个挖掘过程中绕不开的坎。唯有通过反复研究、琢磨、实验、失败、改进的过程才能最终掌握处理技术,在这个阶段,唯一的目标是把模型跑通并且能够顺利运行。

(2)比较不同模型的效果

特别是CNN,有大量的前人的经验可以供使用,也有很多的预训练模型。在自己能够跑通1到2个模型后,这个阶段可以迅速铺开,了解目前常用的CNN模型种类和背景,进而了解大致的网络结果,比如VGG16、VGG19、Resnet、Efficient Net等。比较不同网络的区别包括结构、实验中的分类效果,是否已经被更好的网络淘汰等。这个阶段对于技术的提升非常大,有条件的话自己实施一些现成的网络结构,只要能够跑通,没有结果也并没有什么关系。

(3)超参数的调参和优化器

在模型跑通后,往更细节里抠参数的优化成为了竞赛中取得好成绩的必经阶段。超参数的调节方面有三种方式,从学习的角度可以自己随意的在实验中调节尝试,研究不同的参数调节后对于训练结果的影响,对于不同参数的特性大致有一个概念。实际运用中,可以关心各种自动化调参工具,采用网格搜索或者随机搜索的方式,通俗来说,其实就是服务器对模型的参数做穷举法或者是一定规律范围内的穷举法。

优化器方面,可以关注文献,现成的如SGD、Adam这些是比较常用的,可以通过查阅文档的方式了解其中的原理和使用场景。最佳的方式是通过看不同比赛的解决方案,了解大部分的选手的选择。在自己做题实施的时候,保持这方面的知识能够跟上主流节奏即可。

(4)多模融合

以上几步都做到之后自然而然的会因为单套模型竞赛成绩不佳而延伸到多模融合的学习阶段。融合的方法从简单的算术平均,加权平均到更先进的方法有非常多的种类,到这一阶段,对于数据挖掘的理解已经比较深入了,在竞赛中对于赛题的处理和操作也已经抠的非常细致了。多模融合所要做的就是降低偏差、减低方差,如果偏差已经低到难以进一步突破,则因为竞赛的关系降低方差。所要做的就是反复尝试,特别是深度学习的各种场景,模型的训练所需要的时间都比较长,再去训练多套模型,融合,进一步迭代,需要投入不少的时间。如果不是以竞赛为目的则浅尝即止即可,如果是以竞赛获奖为目的,则最好通过团队合作的方式进行,加上坚持死磕的心态。

总结

本书的内容覆盖以上学习步骤的前3步,内容非常的丰富和全面,足够作为教材学习采用。最后提供的建议就是,如果有可能,把本书的上一本机器学习篇一起买来学习。另外,掌握好基础学习和全面铺开的时间点,对于基本功,放慢脚步把基础打实,对于不同模型种类和神经网络结构,则并行推进快速学习实验。

上一篇:【ASP.NET 插件】分享一个可视化HTML编辑器 CKEditor.NET


下一篇:《一站式大数据开发治理DataWorks使用宝典》官方电子书开放下载