当前位置: 首页 > 科技观察

如何从软件工程师转行到人工智能?

时间:2023-03-17 21:54:53 科技观察

近日,InsightAI发表了一篇名为《Transitioning from Software Engineering to Artificial Intelligence》的文章,提出打算转行人工智能的软件工程师需要掌握这五项技能:统计学、机器学习理论、数据组织、调试/调优模型、软件工程.ChrisLesniewski-Laas正在与InsightAI员工谈论Dropbox的机器学习,将机器学习作为软件工程师的一项技能,是跟上框架、标准和范例最新技术水平的关键。软件工程师不断努力工作,希望能将最新的工具应用到他们的工作中。机器学习如今已在众多应用中站稳脚跟,自然而然地成为许多工程师想要掌握的一项技能。然而,机器学习比新框架更难掌握。要成为一名有效的从业者,您需要对该领域的理论有扎实的理解,对当前最先进的技术有广泛的了解,以及以不确定的方式解决问题的能力。网络上的许多指南只会教您如何在精选的数据集上训练现成的模型以达到不错的准确性,然后就此收工。事实上,要成为一名优秀的机器学习工程师,你必须掌握更广泛的技能。以下是我们与50多个湾区和纽约***机器学习团队的对话重点,他们来到InsightAI准备解决他们的问题并加速AI应用程序的采用。为什么机器学习不仅仅是“另一种工具”部署机器学习的解决方案不仅仅是在数据集上训练随机模型。它需要了解以下内容:您拥有的数据类型、数据的统计分布方式、数据包含的偏差。适用于您的特定数据集的统计模型,以及这些模型成功的可能性。相关指标的优化和模型输出的含义。换句话说,为了集成、部署和调试模型,除了工程知识之外,还需要统计学、线性代数和优化理论的基础知识。要针对某个问题构建特定的机器学习解决方案,您需要考虑从数据采集、标记和预处理到构建、更新和提供推理模型以及介于两者之间的所有问题。最终,我们认为我们可以提前为标准网站构建一个数据接口(RESTAPI)。我们不能保证机器学习模型总是会收敛或产生有用的输出。学习如何可视化和提供有效的机器学习输出的最好方法是理解其理论基础与数据分类的关系。转行人工智能需要掌握的5个技能1.统计学要想理解机器学习,扎实的统计学基础知识是必须的。这包括:评估模型成功的不同方法(精度、召回率、特征曲线下面积等)。您选择的损失函数和评估指标如何衡量模型输出的偏差。如何理解过度拟合和欠拟合,以及偏差/变量权衡。模型的结果和置信度之间有什么联系。2.机器学习理论当你训练一个神经网络时到底发生了什么?是什么使这些任务可行而其他任务不可行?解决这个问题的一个好方法是先浏览图表和示例,然后再深入了解机器学习理论。需要理解的概念是不同的损失函数是如何工作的,反向传播为什么有用,以及计算图到底是什么。深入了解构建器功能模型并与团队其他成员进行有效沟通至关重要。这里有一些资源,从高层次的概述开始,然后再深入。Google的深度学习课程是一门优秀的入门课程(https://www.udacity.com/course/deep-learning--ud730)。Fei-FeiLi的计算机视觉课程(http://cs231n.stanford.edu)和RichardSocher的自然语言处理课程(http://cs224d.stanford.edu)中包含更多专业方法。Goodfellow的深度学习书(http://cs224d.stanford.edu)特别好,很好地概述了基础知识。另一项基本技能是阅读、理解和试验研究论文的能力。起初这似乎是一项艰巨的任务,所以一个好的开始方式是从一篇包含其背后代码的论文开始,并对其实现有一个很好的理解。3.数据整理问问任何数据科学家,他们都会告诉你他们90%的工作都是数据整理。应用AI非常重要,因为模型的成功与数据的质量(和数量)高度相关。数据的作用有很多种,可以细分为以下几类:数据获取(寻找好的数据源,准确测量数据质量和分类,获取和推断标签)数据预处理(补全缺失数据,特征工程,数据扩充,数据归一化,交叉验证拆分)数据后处理(使模型的输出有用,去除人工数据,处理特殊情况和异常值)熟悉数据管理的最好方法是掌握原始数据集并尝试使用它。网络上有很多数据集,许多社交媒体和新闻媒体网站都有很好的API。一个好的学习方法是遵循以下步骤:获取一个开源数据集并对其进行测试。它有多大(观测值和特征值的数量)?数据是如何分布的?是否有缺失值或没有异常值?开始在原始数据和有用数据之间构建转换管道。你是如何回填缺失值的?处理异常值最合适的方法是什么?你如何规范化数据?你能创造更具表现力的特征吗?检查转换后的数据集。如果一切看起来不错,请继续下一步!4.调试/调整模型调试一些机器学习算法,这些算法要么不收敛,要么涉及与调试代码非常不同的过程,但给出合理的结果。同样,找到正确的架构和超参数需要扎实的理论基础,而良好的基础工作可以测试不同的配置。随着该领域的发展,调试模型的方法也在不断发展。以下是从我们的讨论和部署反映KISS理论和软件工程师熟悉程度的模型的经验中得出的“健全性检查”。从已被证明适用于类似数据集的简单模型开始,尽快获得基线。经典的统计学习模型(线性回归、最近邻等)或简单的启发式或规则将为您提供80%的方法并更快地实施它们。入门时,用最简单的方法解决问题(见谷歌机器学习规则的***点)。如果您决定训练更复杂的模型以改进基线,请从数据集的一小部分开始,然后在该子集上训练模型以使其过度拟合。这保证了模型的最低学习能力。继续迭代模型,直到可以过拟合5%的数据。一旦开始使用更多数据进行训练,超参数就会变得更加重要。了解这些参数背后的理论,才能了解哪些是需要探索的合理值。使用理论方法调整模型。写下您使用的最低配置并总结其结果。理想情况下,使用自动超参数搜索策略。一开始,随机搜索可能就足够了。尽可能多地探索理论方法。您的开发技能可以加快许多步骤,这导致了最后一个步骤。5.软件工程许多应用的机器学习允许你利用软件工程技术,有时会有一些曲折。这些技术包括:测试转换电路的不同方面(数据预处理和扩充、输入和输出清理、模型推理时间)。构建模块化代码和可重现的实验加速方法。在训练的不同阶段备份模型(检查点)。构建分布式基础架构以更高效地运行训练、超参数搜索或推理。要了解我们推荐的成为一名优秀机器学习工程师的软件技能的更多信息,请查看我们的推文:https://blog.insightdatascience.com/preparing-for-the-transition-to-applied-ai-8eaf53624079atToolsforyourwork以上资源将帮助您解决实际的机器学习问题。但应用人工智能领域变化非常快,最好的学习方式就是实践,真正尝试构建一个完整的解决方案来解决实际问题。TODO:找到您可以构建的产品应该很有趣。什么能让你的生活更有效率?可以改进数据处理方式的工具有哪些?解决有趣问题的数据驱动方法是什么?查找与问题相关的数据集。对于当今大多数易于处理的问题,您应该寻找标记数据。如果您的问题不存在标记数据集,那么您应该发挥创意。有什么方法可以有效地找到相似的数据或标签数据?从探索数据开始,考虑到您拥有的数据的数量和质量,看看您试图完成的任务是否可行。在开始使用TensorFlow之前,最好在线搜索人们已经解决的类似问题。您可以阅读哪些相关的博客文章和论文来帮助您加速探索新方法?找到一些灵感,然后深入挖掘!请记住,虽然机器学习工程的核心是构建产品,但它还包括一个完整的理论层面。你会探索一些模型和范式,这些模型和范式在未来可能会被证明是不成功的,但这很好,因为它会让你更好地理解问题的复杂性。附言人工智能是一个令人兴奋、不断变化的领域,对机器学习工程师的需求巨大,围绕该主题的新闻报道铺天盖地。我们建议听取一些可靠的来源和新闻,将PR和抽象研究与与该领域密切相关的一些创新区分开来。以下是一些有用的资源。HackerNews:这是一个专注于计算机科学、数据科学和创业的社交新闻网站。由知名企业孵化器YCombinator运营。不要被名字所迷惑!“黑客”一词的原始用法与网络犯罪分子无关,而是指通过编程技巧巧妙地解决问题的人。ImportAI:由OpenAI的JackClark运营的一份很棒的时事通讯,一直处于行业领先地位。InsightBlog:我们一直在进步。我们的AI博客中有一些关于不同以往项目的推文,可以为有趣问题的结束提供很好的启发。我们还定期向订阅客户发送人工智能内容。原文:https://blog.insightdatascience.com/preparing-for-the-transition-to-applied-ai-d41e48403447【本文为机器之心专栏原文翻译,微信公众号》机器之心(id:almosthuman2014)》】点此阅读作者更多好文