若何从一名软件工程师转行做人工智能?_数据_模子
机器之心编译
参与:王宇欣、黄小天
近日,Insight AI 发布了一篇题为《Transitioning from Software Engineering to Artificial Intelligence》的文章,提出一名软件工程师如果打算转行做人工智能,须要节制这 5 项技能:统计学、机器学习理论、数据整理、调试/调节模型、软件工程。
Chris Lesniewski-Laas 正在与 Insight AI 员工谈论 Dropbox 的机器学习问题
关于将机器学习作为一项技能
作为软件工程师关键在于要紧跟框架、标准以及范式的最新状态。软件工程师一直地努力学习,希望把最好的工具利用到事情中。机器学习在当今诸多的运用程序中找到了立足点,很自然地它就变成了许多工程师想要节制的一项技能。
但是,比较于新框架机器学习更难节制。作为一个高效的实践者,你须要充分理解该领域的理论、广泛节制当前最尖真个知识,并且有能力以不愿定的办法塑造问题。
网上很多的指南只会大略地教你如何在一个策划好的数据集上演习可以立即利用的模型,并达到一个不错的准确度,然后就结束了。事实上,要成为一个精良的机器学习工程师必须节制更加广泛的技能。
以下是我们与超过 50 个湾区和纽约顶尖的机器学习团队对话的精华部分,他们来到 Insight AI,准备好办理其问题并加速实现人工智能运用的遍及。
为什么机器学习不但是「另一个工具」
支配机器学习的办理方案不仅仅是在你的数据集上随意演习一个模型。它须要理解以下内容:
你拥有的数据类型、它的统计学分布办法、它含有什么偏差。
适用于你的特天命据集的统计模型,以及这些模型成功的可能性。
干系指标的优化以及你的模型输出的意义。
换句话说,为了整合、支配以及调试模型,撤除工程学的知识,你还须要有统计学、线性代数和优化理论的根本知识。
为一个问题搭建特定的机器学习办理方案,你须要考虑从数据的获取、标记和预处理到构建、更新并做事一个推理模型以及中间的统统等问题。
终极,我们认为可以提前为标准的网站搭建一个数据接口(REST API)。我们不能担保机器学习模型总是收敛或产生有用的输出。学习如何核阅和通报有效的机器学习产出的最佳办法是理解其理论根本与数据分类之间联系的办法。
转行人工智能你须要节制这 5 项技能
1—统计学
为了理解机器学习,坚实的统计学根本知识是必须的。这包括:
评估模型成功的不同方法(精确度、召回率(recall)、特色曲线下的面积等)。你选择的丢失函数和评估指标如何丈量你的模型输出的偏差。
如何理解过拟合(overfitting)和欠拟合(underfitting),以及偏差/变量权衡。
模型的结果与置信度之间有什么联系。
2—机器学习理论
当你在演习神经网络时,实际上发生了什么?是什么使这些任务可行而其它的弗成呢?对待该问题的好方法是,在深入理解理论之前,首先通过图和实例理解机器学习。
须要理解的观点有不同的丢失函数事情的方法,反向传播有用的缘故原由,以及打算图究竟是什么。深入理解构建函数模型并且与团队其他成员有效地对其进行沟通非常关键。以下是一些资源,以高层概述开始,逐渐深入。
谷歌的深度学习课程是一个精良的入门课程(https://www.udacity.com/course/deep-learning--ud730)。
李飞飞的打算机视觉课程(http://cs231n.stanford.edu)和 Richard Socher 的自然措辞处理课程(http://cs224d.stanford.edu)中包含更多专门的方法。
Goodfellow 的深度学习书(http://cs224d.stanford.edu)特殊好,对根本进行了全面概述。
另一个根本技能是有能力阅读、理解和实验研究论文。起初看上去这彷佛是一个艰巨的任务,以是一个不错的方法是从一篇后面附有代码的论文开始,并深入理解实在现。
3—数据整理(Data Wrangling)
问任何一个数据科学家,他们会见告你其 90% 的事情是数据再加工(data munging)。它对付运用人工智能的主要性就犹如你的模型的成功与你的数据的质量(和数量)高度干系一样平常。数据在许多方面起浸染,可分为以下几个种别:
数据获取(找到好的数据源,精确测天命据的质量和分类,获取并推理标签)
数据预处理(补全缺失落值(missing data)、特色工程、数据增强、数据归一化、交叉考验拆分)
数据后处理(使模型的输出有用,去除人为数据,处理分外情形和非常值)
熟习数据整理的最好方法是节制原始的数据集,并考试测验利用它。网上有很多的数据集并且许多社交媒体和***媒体网站都有着很好的运用程序接口。遵照以下步骤是一个不错的学习方法:
节制一个开源的数据集并对其进行检测。它有多大(不雅观测值和特色值的数量)?数据是如何分布的?是否有缺失落值或者不含非常值?
开始在原始数据和有用数据之间构建一条转换的通道。你是如何回填丢失值的呢?处理非常值最得当的方法是什么?你如何归一化数据?你可以创造更具表现力的特色吗?
检讨你的转换数据集。如果统统看上去都不错,进行下一步吧!
4—调试/调节模型
对一些不收敛或者包含与调试代码非常不同的过程但是给出合理结果的机器学习算法进行调试。同样地,找到精确的架构和超参数须要坚实的理论根本,良好的根本培植事情可以测试不同的配置。
由于该领域在向前发展,调试模型的方法也在不断进化。以下是从我们的谈论和支配反响了 KISS 理论和软件工程师之间的熟习度的模型的履历中得来的「合理性检讨(sanity checks)」。
尽快从已被证明可以在类似数据集上事情的大略模型入手,节制基线。古典统计学习模型(线性回归、最近邻等)或者大略的启示式方法或规则会让你明白 80% 的方法并且更快地进行实现。入门的时候,以最大略的方法去办理问题(查看谷歌机器学习规则的第一点)。
如果你决定演习一个更加繁芜的模型以在基线上有所提升,不妨从数据集的一小部分入手,在分数据集上演习模型使其过拟合。这担保了你的模型最最少的学习能力。不断地在模型上迭代直到你可以过拟合 5% 的数据。
一旦你开始在更多的数据上演习,超参数就开始变得更主要了。理解这些参数背后的理论从而理解什么是要探索的合理值。
利用理论方法调节你的模型。写下你利用的最低限度的配置并总结其结果。空想情形下,利用自动超参数搜索策略。在最开始,随机征采可能就足够了。尽可能地去探索更多理论方法吧。
许多步骤都能被你的开拓技能加速,这引出了末了一个技能。
5—软件工程
许多运用型机器学习许可你充分利用软件工程技巧,有时须要做些变换。这些技巧包括:
测试转换线路的不同方面(数据预处理和增强、输入和输出打消、模型推理韶光)。
构建模块化的代码和可重复的实验加速方法。
在演习的不同阶段备份模型(检讨点)。
建立一个分布式根本架构来运行演习、超参数搜索或者更有效地推理。
想要知道更多我们推举的成为精良机器学习工程师的软件技能,请查看我们的推文:https://blog.insightdatascience.com/preparing-for-the-transition-to-applied-ai-8eaf53624079
在事情中利用工具
上述资源会帮助你处理切实的机器学习问题。但是运用人工智能领域变革的特殊快,最好的学习办法是动手实践并且真正考试测验构建一个完全方案办理实际的问题。
待办事项:
找一个你可以构建的产品该当会很故意思。什么可以让你的人生更高效呢?什么是可以提升利用数据完成的方法的工具?什么是办理一个有趣问题的数据驱动的方法?
探求与问题干系的数据集。对付如今大多数随意马虎处理的问题,你该当探求标注数据。如果对付你的问题不存在标注数据集,那么你就该当变得有创造性一点。什么是探求相似数据或者高效标注数据的方法?
从探索数据入手,看看你考试测验完成的任务在你所拥有数据的数量和质量下是否可行。在你开始 TensorFlow 之前,网上搜索人们办理过的相似问题是一个不错的主张。哪些是你可以阅读的干系博文与论文,有助于你加快探索新方法?
找一些灵感,然后深入研究吧!
记住,只管机器学习工程的核心是构建产品,但是它还包含一个不可或缺的理论层面。你会探索一些模型和范式,这些东西在未来大概被证明是不堪利的,但是这非常好,由于它会使你更好地理解问题的繁芜性。
附言
人工智能是一个令人愉快、不断变革的领域,它对机器学习工程师的需求很大,铺天盖地的***都在环绕这个主题进行宣布。我们建议听取一些可靠的资源和***,从而将与该领域密切干系的一些创新等分离 PR 和抽象研究。以下是一些有所帮助的资源。
Hacker News:这是一家关注打算机科学、数据科学和创业精神的社会***网站。由 Y Combinator 运营—一家著名的公司孵化器。别被名字骗了!
「hacker」这个单词最初的用法与网络罪犯没什么关系,而是指一些通过编程技巧相处聪明地办理问题的人。
Import AI :由 OpenAI 的 Jack Clark 运营的一家不错的简报,在行业内保持领先地位。
Insight Blog:我们时候在进步。在我们 AI blog 中有一些推文关于之前的不同工程,并且可以为有趣的问题的结局供应不错的灵感。我们同样向订阅的客户定期发送人工智能的内容。
本文系作者个人观点,不代表本站立场,转载请注明出处!