许多
ML培训的常规参与者认为参加竞赛是进入该行业的最快方法。 我们甚至有
一篇关于这个主题
的文章 。 今天的讲座Arthur Kuzin的作者使用他自己的例子,展示了如何在几年之内从完全与编程无关的领域重新训练成为数据分析专家。
大家好 我叫Arthur Cousin,我是Dbrain的首席数据科学家。
埃米尔(Emil)有一份相当全面的报告,讲述了很多方面。 我将专注于我认为最重要和最有趣的部分。 在开始讨论报告主题之前,我想介绍一下自己。 一般来说,我毕业于物理专业,从第三年起大约三年,我在位于NK地板上的实验室工作。 该实验室从事微结构和纳米结构的创建。

一直以来,我都是研究员,这与ML甚至编程都没有关系。 这表明进入机器学习的门槛有多低,您可以在其中发展多快。 此外,在2013年左右,我的朋友打电话给我去一家从事ML的初创公司。 在2-3年的时间里,我同时学习了编程和ML。 我的进度相当缓慢-我研究了材料,对其进行了深入研究,但进展并不像现在这样快。 对我来说,当我开始参加机器学习竞赛时,一切都变了。 第一场比赛是来自Avito的汽车分类。 我真的不知道该如何参加,但是设法获得了第三名。 此后不久,又开始了另一场比赛,该比赛已经致力于广告分类。 有图片,文字,说明,价格-这是一个复杂的竞争。 在该比赛中,我获得了第一名,此后我几乎立即收到了要约,他们把我带到了Avito。 然后没有初级职位,我立即被中间人接受-几乎没有相关经验。
此外,当我已经在Avito工作时,我开始参加Kaggle的比赛,并在大约一年的时间内收到了大师奖。 现在,我在整体排名中排名第58位。 这是我的个人资料。 在Avito工作了一年半之后,我搬到了Dbrain,现在我是一位数据科学总监,负责协调7位数据科学家的工作。 我从比赛中学到的所有工作内容。 因此,我认为这是一个非常酷的话题,我以各种可能的方式提倡参加比赛和发展。

有时他们问我,如果您想成为一名数据科学家,该怎么办。 有两种方法。 首先听一些课程。 它们很多,质量都很高。 但是对我个人而言,它根本不起作用。 所有人都是不同的,但我不喜欢它,仅仅是因为,通常,这些课程是非常抽象的任务,而当我完成一个部分时,我并不总是理解为什么我需要知道它。 与这种方法相比,您只需采取并开始解决竞争。 就方法而言,这是完全不同的流程。 它的不同之处在于,当您遇到未知的事物时,您会立即获得一定的知识并开始学习新的主题。 也就是说,您开始决定并了解自己缺乏有关如何训练神经网络的知识。 您可以通过Google学习来学习-仅在需要时使用。 就动机,进步而言,这非常简单,因为您已经在竞争的框架中严格制定了一项任务,一个目标指标以及在开放数据科学聊天方面的大量支持。 而且,作为一个遥远的收获,是您的决定将是一个尚不存在的项目。

为什么这么有趣? 积极情绪从何而来? 他们的想法是,当您发送提交时,它比上一个提交的要好一些,他们说-您改进了指标,这很酷。 您爬上了页首横幅。 相反,如果您什么也不做,并且不发送提交,那么您就失败了。 它会引起反馈:进步时您会感觉良好,反之亦然。 看来,这是一个很酷的机制,只能利用Kaggle。 还有一点:Kaggle利用了与老虎机和Tinder相同的依赖机制。 您不知道您提交的文件好坏。 这会导致您对结果不了解。 因此,Kaggle非常容易上瘾,但是却很有建设性:您可以发展并尝试改善自己的决定。
如何获得第一剂? 您需要进入内核部分。 他们布置了一些管道或整个解决方案。 一个单独的问题是为什么人们这样做。 一个人花时间开发-将其公开发布有什么意义? 他们可以利用并绕过作者。
这个想法是,首先,没有提出最佳解决方案。 通常,从培训模型的角度来看,这些解决方案不是最佳的解决方案,它们没有所有细微差别,但是从头到尾都有一条完整的管道,因此您不必解决与数据处理,后处理,提交收集等有关的日常任务。这降低了进入门槛,以吸引新进入者。 您需要了解,数据科学家社区非常乐于讨论,并且总体而言非常积极。 我在科学界还没有看到这一点。 主要动机是新人们提出新想法。 这引起了对问题,竞争的讨论,并使整个社区得以发展。
如果您做出了别人的决定,启动了决定,开始进行培训,那么我强烈建议您接下来要做的就是调查数据。 通俗的建议,但您不会相信有多少高层人士不使用它。 要了解为什么这很重要,我建议您查看Eugene Nizhibitsky的报告。 他谈到
电影竞赛中的
面孔和空客中的
面孔,也可以通过查看数据来简单地看到它们。 这不会花费很多时间,并且有助于理解问题。 图片中的面孔是关于在不同的平台和不同的比赛中可以从火车上获得测试答案的事实。 也就是说,您不能训练任何模型,而只能查看数据并了解如何部分或完全收集测试答案。 与数据科学家一起工作时,这种习惯不仅在比赛中很重要,而且在实际操作中也很重要。 在现实生活中,最有可能制定的任务很糟糕。 您无需制定公式,但需要了解其本质和数据本质。 查看数据的习惯非常重要,请花时间在上面。
接下来,您需要了解任务是什么。 如果您查看数据并了解目标是什么……如果我正确理解的话,您在很大程度上大部分是来自Fiztekh。 您必须具有一些批判性思维,使您想到一个问题:为什么设计比赛的人做对了所有事情? 为什么不更改例如目标指标,寻找其他指标并从新指标中收集正确的内容呢? 我认为,既然有大量的教程和其他人的代码,那么预测提要就不成问题了。 训练模型,训练神经网络是一项非常简单的任务,很多人都可以使用。 但重要的是要了解目标是什么,预测是什么以及如何组合目标指标。 如果您预测与客观现实无关的事物,那么该模型将根本无法学习,并且速度会很差。
例子 在Topcoder Konica-Minolta举行了比赛。

它包含以下内容:您有两张图片,最上面一张,其中一张上有污垢,右侧是一个小点。 有必要突出显示和细分它。 这似乎是一个非常简单的任务,神经网络应该一次解决它。 但是问题在于,这是两张具有时间差或来自不同相机的照片。 结果,一张图片相对于另一张图片有些移动。 规模确实很小。 但是此任务的另一个特点是口罩也很小。 有一张图片相对于另一张移动,而蒙版仍相对于另一张移动。 大致清楚困难是什么。

Aleksey Buslaev位居第三,他采用带有两个输入的暹罗神经网络,以便这些暹罗负责人了解到有关此失真图像的一些转换。 之后,他结合了这些特征,进行了一系列卷积,并得到了某种预测。 为了弥补数据中的这种缺陷,他建立了一个相当复杂的网络。 例如,我从未训练过一个暹罗网络,也不必这样做。 他做到了,这很酷,他获得了第三名。 首先是Evgeny(nrzb。),他只是调整了图片的大小。 他将其视为数据中的优势,因为他查看了数据,调整了图片的大小并训练了原始的UNet。 这是一个非常简单的神经网络,仅在教科书中和文章中使用。 这表明,如果您查看数据并选择正确的目标,则可以使用简单的解决方案在顶部。
我最终排名第二,因为我是与Zenya的朋友,之后由于某些原因,顶级编码器被冒犯了,因此没有带我去Kaggle团队。 但是他们非常酷,Topcoder排名5-6,这是(NRZB。)和Victor Durnov。 亚历山大·布斯拉耶夫(Alexander Buslaev)排名第三。 他们进一步合作,在Kaggle的比赛中向全班展示了课程。 这也是一个非常漂亮的解决方案的例子,当帅哥不仅开发了一个怪异的架构,而且选择了正确的目标。

此处的任务是分割细胞,而不仅仅是说出细胞在哪里,在何处不是,而是有必要分离单个细胞,例如每个独立细胞的阶段内分割。 此外,在本次比赛之前,有很多分段比赛,有人声称,ODS社区很好地解决了分段问题,在工艺水平上,具有一定的科学前沿,使我们能够很好地解决这一问题。
同时,当您需要分离单元格时,inst Segmentation任务很难解决。 竞赛之前最先进的技术是MacrCNN,它是一种检测器,一些特征提取器,然后是一个执行遮罩分割的模块,这都是非常困难的训练,您需要分别训练每条管道,这是一整首歌。
相反,当您仅预测单元格和边界时,Topcoder开发了一条管道。 流水线分段的复杂性较小,可以使您进行非常漂亮的分段,从而从单元格中减去边界。 之后,他们提高了该算法的准确性,同时他们独立的神经网络预测细胞的能力比学者们此前在该领域所做的任何事情都要好。 对于topcoder来说这很酷,而对学者则很不利。 据我所知,最近有学者试图发布有关此datasat的文章,但由于无法在Kaggle上胜出而拒绝了该文章。 学术界已经到了艰难的时刻,现在我们需要做一些正常的事情,而不仅仅是在他们的领域里做加密工作。

我不仅在Kaggle,而且在工作中淹没的第二件事就是管道培训。 我认为建立一个怪异的神经网络体系结构并没有很多价值,它们提出了带有衰减并带有特征级联的出色片段。 一切都可以,但是更重要的是能够训练神经网络。 考虑到现在有大量的文章,教程等等,这是没有意义的,这是一件非常简单的事情。 在您刚刚接受管道培训的情况下,我看到了很多价值。 我将其理解为在配置上运行的代码,它以可控,可预测和相当快的方式教您一个神经网络。
这张幻灯片显示了正在进行的比赛Kaggle Salt的训练日志。 我还有一堆视频卡,这也是一些好处。 这个想法是,在管道的帮助下,我对我认为最有趣的架构进行了网格搜索。 按照惯例,我只是为所有体系结构创建了一个启动配置,这是在神经网络的动物园上的一个论坛,它不费吹灰之力走过去并训练了所有的神经网络。 这是一个非常大的奖励,这就是我从比赛到比赛再到工作的重用。 因此,我不仅在训练神经网络方面非常激动,而且还在考虑您正在教书和根据管道编写的内容,以便您可以重用它。

在这里,我重点介绍了应该在培训管道中的一些关键事项。 这是一个完整定义学习过程的启动配置。 在其中指定有关数据,神经网络,损失的所有参数的地方-所有内容都应在启动配置中。 这应该是可控的。 进一步记录。 我显示的精美日志是我记录自己迈出的每一步的结果。
模块化意味着您无需花费太多时间就可以添加新的神经网络,新的扩充和新的数据集。 这一切都应该非常简单且可维护。
可再现性只是固定种子,不仅NumPy和Random中的随机种子,而且还有一些paiterchiks,我将告诉您更多。 和可重用性。 一旦开发了管道,就可以将其用于其他任务。 这是一个很大的奖励,那些早日开始参加比赛的人可以在比赛和工作中继续使用这些管道,这对其他参与者来说都是一个很大的奖励。
有人可能会问:我不知道如何编码,怎么做,如何开发管道? 有一个解决方案。

幻灯片中的链接: 第一 , 第二 , 第三
谢尔盖·科列斯尼科夫(Sergey Kolesnikov)是我在德布雷恩(Dbrain)工作的同事,他从事这种事情已有很长时间了。 起初他称她为PyTorch Common,然后称其为Prometheus,现在称为Catalist。 最有可能的是,一周后名称将有所不同,但是该链接将指向下一个名称,然后单击“目录”链接。
这个想法是Sergey开发了某种lib,这是一个trainloop。 在当前版本中,它几乎具有我描述的所有属性。 关于他如何进行分类,分割以及他开发的其他许多有趣的东西,仍然有很多例子。
这是正在开发的功能列表。 您可以利用这个库并开始使用它来训练您的算法,以及在当前竞争中的神经网络。 我建议所有人都这样做。
相反,还有另一个FastAI,最近发布的1.0版,但是有令人作呕的代码,不清楚。
您可以掌握它,它将为您带来一些增长,但是由于它在代码方面的编写非常差,因此他们在如何编写方面有自己的流程。 从某个时候开始,您将不了解发生了什么。 因此,我不建议使用FastAI,我建议使用任何“目录”。

现在假设您经历了所有这些事情,有了自己的管道,自己的决定,现在就可以加入团队了。 埃米尔(Emil)刚刚被问到,如果您参加这种情况,加入一个团队是多么合理。 在我看来,即使您不在高层,但在中间某个地方,组队还是值得的。 如果您自己开发解决方案,那么它在某些细节上总是与其他人的决定有所不同。 当结合在一起时,几乎总是可以与其他参与者一起推动。
此外,这很有趣,因为有些团队合作,因为您现在将拥有一个可以查看彼此代码的通用存储库,一种通用的提交格式以及一个聊天室,所有的乐趣都在这里发生。 社交互动和软技能在工作中也很重要,这也值得发展。

从现在您可以看到其他人的代码,他们如何做出此或那个决定的意义上来说,这是一个很大的好处。 通常,我会使用以前的命令查看存储库,并在代码本身方面找到不错的解决方案。 这可以通过团队合作的形式从竞争中脱颖而出。
假设您已经走了整整一圈。 你忍受了什么?

您很可能学会了运行其他人的代码。 我真的希望您养成了查看数据的习惯。 您了解了问题,学会了进行实验,有了自己的解决方案,现在可以以项目的形式进行设计。 如果从抽象的角度看,它与某些IT公司的正常工作非常相似。 如果您参加了比赛并取得了不错的成绩,这对简历是很重要的一点,至少对我而言。 在Dbrain入职时,大约在20-25岁之间接受了采访。 在此可以确定一些边界情况。 有一个家伙只是运行公共内核,却没有真正弄清楚。 这对我来说看起来很糟糕,我只是想让这个小伙子了解这个问题,我没有接受。
另一位老兄说实话,他在排行榜上被打败了,但同时又将他的决定的所有细节告诉了他,那就是在Datascience Bowl上,我们接受了,我真的很想和他一起工作。 Kaggle和您的决定对您的简历有很大帮助,如果您可以正确地将其设置为演示文稿的格式,则对未来的雇主来说是一个很好的展示。
如果有关于个人收益的问题,希望我关闭,为什么公司需要这样做?

我在Avito工作,他们定期举行数据分析比赛。 这有几个原因。 举行比赛时,您需要至少收集一个数据集,并很好地制定任务,这有些麻烦。

也就是说,问题的陈述以及数据集对于公司来说已经很多了。 , «» , , , , . — , , .
, , , , . , , . - , , , .
, , — . , . , «» , . «» — , .

, — . , - . , — , . , , , . — importance XGBoost . , , . . , . , . , .
如果公司不想参与,不想组织,它们只是承担一些相关的任务,那么通常,在竞争之后,人们会发布对其决策甚至代码的评论。而且,如果您自己有一个非常相似的相关任务,那么您可以采取文献复习的形式并从中获得一些成功的开始,即文献综述。
例如,有关如何赢得比赛的Coursera课程。接下来是ML培训站点和ODS聊天室进行讨论。我都拥有