We're sunsetting PodQuest on 2025-07-28. Thank you for your support!
Export Podcast Subscriptions
cover of episode SE Radio 641: Catherine Nelson on Machine Learning in Data Science

SE Radio 641: Catherine Nelson on Machine Learning in Data Science

2024/11/6
logo of podcast Software Engineering Radio - the podcast for professional software developers

Software Engineering Radio - the podcast for professional software developers

AI Deep Dive AI Chapters Transcript
People
C
Catherine Nelson
Topics
Catherine Nelson: 数据科学家的角色随着工作环境的不同而有所差异,但总的来说,它包含将业务问题转化为数据问题、解决问题以及构建机器学习驱动的功能。数据科学家需要具备数据处理技能(统计学、编码、机器学习算法、数据可视化、数据伦理等),以及一定的领域知识和业务知识,以便将业务问题转化为数据问题。数据科学家的项目类型多样,合作对象也因项目而异,但通常会与产品、组织和工程师合作。数据科学不仅仅局限于机器学习和AI,还包括统计分析和数据可视化等。机器学习是针对特定问题训练模型,而AI模型可以解决多个问题。Jupyter Notebook 对于探索性数据分析和初步建模非常有用,因为它能提供即时反馈。当需要重复训练模型并优化超参数,以及最终部署到生产环境时,就需要从Jupyter Notebook转向传统的Git仓库。数据科学家通常负责初始探索和模型训练,而机器学习工程师则负责将模型部署到生产环境并进行监控。在小型公司,数据科学家通常需要承担多个角色,即使在大型公司,也可能需要承担多种职责。数据科学家应该学习编写测试和使用版本控制,以提高代码质量和可维护性。Python 是目前最常用的数据科学编程语言。软件工程师在与数据科学家合作时,应该了解数据科学项目的不确定性和迭代性。 在机器学习的整个工作流程中,数据科学家和软件工程师需要紧密合作,共同完成数据摄取、数据验证、数据预处理、模型训练、模型分析和验证以及模型部署等步骤。数据验证是检查摄取的数据是否符合预期,例如检查数据是否缺失或是否存在错误。重新运行机器学习管道通常是因为数据发生了变化,或者需要重新训练模型以提高性能。衡量数据质量的方法取决于数据的类型,例如数值数据可以检查均值和标准差,文本数据可以检查文本长度等。如果数据验证失败,通常需要人工干预,例如重新运行数据摄取步骤或更改输入数据。深度学习在一定程度上减少了特征工程的工作量,尤其是在文本数据处理方面。在机器学习管道中,通常不会从头开始训练模型,而是进行微调或重新训练。模型的重训练通常包括模型架构和超参数。在机器学习管道中,模型训练通常是最耗时的步骤。随着机器学习在组织中的应用日益成熟,模型的重新训练频率也越来越高。数据科学家在建立初始管道时应该参与其中,尤其是在数据验证和模型分析方面。模型分析和验证是检查模型性能,例如精度和召回率,以及在不同子集上的性能。模型分析还包括检查模型中的偏差,例如某些群体或用户类型的性能差异。过拟合是指模型过于紧密地拟合训练数据,而无法泛化到新的数据。模型的可解释性通常不是自动化管道的一部分,因为它需要人工干预。部署是将训练好的模型交付给软件工程师,以便将其集成到产品中并提供服务。在模型部署前,应考虑模型的大小和计算资源需求。构建机器学习管道时,可以复用训练脚本,但需要编写新的代码来连接各个步骤。机器学习中一个常见的问题是训练和服务偏差,即训练和部署阶段的特征工程代码不一致。未来数据科学领域可能出现的新兴角色包括生成式AI工程师和AI模型评估师。数据科学家和软件工程师之间最有效的协作方式是团队成员之间互相支持和尊重彼此的想法。她对大型语言模型(LLM)的应用前景感到兴奋。机器学习项目的未来方向包括改进现有模型的准确性以及添加新的功能。 Philip Winston: 主要负责引导访谈,提出问题,并对Catherine Nelson的回答进行总结和补充。

Deep Dive

Chapters
The role of a data scientist varies across companies, but generally involves translating business problems into data problems and building machine learning models. Skills required include statistics, coding, machine learning algorithms, data visualization, and understanding data ethics.
  • Data scientists translate business problems into data problems.
  • Skills include statistics, coding, machine learning, data visualization, and data ethics.
  • Domain knowledge is crucial for understanding business context.

Shownotes Transcript

这是软件工程电台,网络专业开发人员的播客,网址为s-radio. 该播客由IEEE计算机协会和IEEE软件杂志赞助,但我不确定。S C电台正在寻找一名志愿主持人,每年制作五集节目。请访问我们的网站s-e-radio.net/contact了解申请说明。

欢迎收听软件工程师电台。我是菲利普·温斯顿。今天我的嘉宾是凯瑟琳·尼尔森。

凯瑟琳是一位自由数据科学家,也是今年两本O'Reilly图书的作者,分别是《数据科学家软件工程》和与亨斯·哈普蒂斯合著的《构建机器学习管道》(2020年)。此前,她曾是S公司的首席数据科学家。

A.P.征服。在此之前,她曾从事过地热学家的职业。凯瑟琳拥有迪姆大学的地球物理学博士学位和牛津大学的地球科学硕士学位。她目前为通用人工智能领域的初创企业提供咨询服务。欢迎。

凯恩斯。今天。

我们将讨论数据科学家的角色以及该角色如何与软件工程重叠或交叉。让我们从数据科学家是什么开始。

这是一个很棒的问题。因为数据科学家的角色取决于你在哪个公司工作。在一些公司,数据科学家可能更多地从事数据分析工作,并且你花所有的时间都在训练机器学习模型。但总的来说,数据科学家包括将业务问题转化为数据问题,尽可能地解决这些问题,有时还会构建机器学习功能。

那么,数据科学家需要哪些技能,无论是进入该角色之前还是为了胜任该角色而需要培养哪些技能?

他们需要与数据打交道的能力,这包括统计知识、编码知识来操作数据。学习基本的机器学习课程,了解构成机器学习的算法、数据可视化,有时还需要用数据讲故事,如何将这些数据可视化组合成一个连贯的整体。许多数据科学家还会学习数据伦理和数据隐私,因为有时这些也是数据科学家工作的一部分。这真是一个混合包。

看起来数据科学家可能比某些工程角色需要更多的领域知识或业务知识。你认为这是为什么?

我会说这是正确的。我认为这是因为你需要将问题从业务问题转化为数据问题。你可能需要解决诸如“为什么我们的客户流失”之类的难题。为什么一些客户会离开公司,你需要深入研究数据,看看哪些公司特征与他们停止使用你的产品相关。

这可能与业务的视角有关,或者他们可能会给你反馈,这其中有一些原因。所以,如果没有对业务运作、产品以及事物如何协同工作的良好理解,你无法真正回答这样的问题。是的,我认为这需要更多...

项目中的典型情况。数据科学家通常需要与谁沟通?

我发现我的数据科学职业生涯中没有典型的项目。有些项目非常探索性,例如,我们可能正在考虑为产品创建新功能。

这甚至可能吗?有些项目则侧重于生产端,将新模型部署到生产环境中。因此,根据项目类型,我将与不同的人合作。但一些共同点是产品团队和工程师,如果涉及构建功能。

在大部分节目中,我们将讨论机器学习和人工智能。但我认为数据科学不仅仅局限于这两个领域,你能否给我举一个你解决的数据科学问题或提出的解决方案的例子,其中不涉及机器学习?

我刚才提到的,看看客户为什么可能会离开公司,根本没有涉及机器学习。这是一个预测建模问题,但我没有使用机器学习解决方案。因此,与构建功能相关的项目,机器学习和人工智能的使用程度较低,更多地涉及统计或数据可视化等一般数据分析技能。

我想提到两期与数据科学相关的往期节目。2018年的第三十五集,介绍了詹森·艾伦关于数据科学工具的节目;2017年的第二百八十六集,介绍了凯蒂·奥尔森关于机器学习入门和成为数据科学家的节目。现在让我们开始讨论机器学习和人工智能。

首先,这两个领域有什么区别?根据我的研究,我认为“人工智能”这个术语一直在不断演变。你使用的是什么定义?

我听到的最有用的定义,也是我采用并继续使用的定义,来自我听过的一期播客,其中有斯坦福大学自然语言处理教授克里斯托弗·曼宁。如果处理的是机器学习,那么你就是在训练一个针对特定问题和特定用途的模型。

但人工智能模型可以解决许多问题。你可能会使用你的人工智能模型来驱动聊天机器人,但你也可以使用相同的模型来总结一些文本或从一些文本中提取一些信息。在传统的机器学习中,如果你想让模型从文本中提取信息,你必须收集数据集,专门设计用于解决这个问题。你将输入文本和想要产生的输出结合起来,然后训练你的模型并衡量它在特定问题上的准确性。

我想谈谈在数据科学中使用笔记本电脑(例如Google Colab)的情况。我认为这种技术或方法在数据科学中比在广义的软件工程中更常见。我想知道在笔记本电脑中工作有哪些优点和缺点?

我非常喜欢Jupyter笔记本。我喜欢能够立即获得我的代码运行结果的反馈,这在查看数据时特别有用。我可以打印数据。

我发现自己在编码时可以真正与数据进行交互。我发现它们非常有用。当我开始一个项目时,我并不完全知道事情会如何发展。我正在探索,并试图看看我正在使用的数据能为我做什么。或者我从一个基本的机器学习模型开始,看看它是否能从我正在处理的问题中学习到任何东西。

哪些迹象表明你可能需要切换到传统的代码库?在Jupyter笔记本中使用起来开始变得困难的是什么?

对我来说,当我想反复训练模型时,就会出现这种情况。在机器学习问题中,我已经选择了想要使用的特征,选择了想要使用的数据,训练了一个初始模型,并获得了合理的成果,但我想反复训练它,优化超参数,最终将其部署到生产环境中。

我认为主要区别在于,当我运行的代码可能只运行一次时,我不知道接下来会发生什么,我不知道最终的代码库会是什么样子。这时,我更喜欢使用Jupyter笔记本。但是,当代码需要反复运行时,需要编写测试,需要确保代码的健壮性,这时我就会使用代码库。

稍后,我们将讨论机器学习工作流程中的步骤,重点是如何将其转换为自动化的可重用管道。但让我们先谈谈角色。我认为你提到过数据分析师与数据科学家之间的区别。让我们谈谈机器学习工程师,它肯定会出现。你对他们的角色以及它与数据科学或软件工程的区别有什么看法?

我认为许多公司的数据科学家会进行一些初步探索,面对一个新问题,例如,我们是否应该使用机器学习来解决这个问题?哪些算法适合这个问题?训练一个初始模型,证明该模型能够回答正在考虑的问题。

然后,机器学习工程师接管,在这些初步实验完成之后,将模型投入生产。然后,他们更多地关注监控该模型,检查其性能,检查它是否在正确的时间返回正确的结果。

那么,在小型公司中,我想象中,人们最终会身兼数职,直到你能招聘到所有这些不同角色的人。你见过这种情况吗?

当然。有时大型公司,如果数据科学团队不止一个人,他们可能会身兼数职。这很具有挑战性,因为当你进行实验并乐于尝试各种不同的事情时,你的思维方式与你专注于生产环境,需要反复运行且非常健壮的思维方式不同。

让我们具体探讨一下数据科学与软件工程之间的关系。是什么促使你撰写了你的最新著作《数据科学家软件工程》?

有几个原因。首先,这是我在职业生涯早期作为数据科学家想读的一本书。很久以前,我加入了一个团队,当时我是唯一一个数据科学家,而团队中还有开发人员和设计师。

我发现很难理解开发人员使用的语言。像许多数据科学家一样,我的教育中没有包含任何计算机科学课程。当我开始从事数据科学工作时,我对软件工程的了解并不多。

我开始问自己,什么是API?如何构建API?我开始对如何编写更好的代码感兴趣。

而现有的书籍,示例是用Java或其他开发语言编写的。它们对我来说并不容易理解,因为我用Python编写代码,不需要掌握所有Web开发人员的技能和背景。而且,他们也以编写糟糕代码而闻名。我想帮助改变这一点。

我认为你已经回答了这个问题。我本来要问的是,数据科学家需要多少软件工程培训?我认为你说的低端情况可能更多。是的。

是的,人们进入数据科学主要有几条途径。一种是来自理科背景,通常是物理科学或其他科学专业。他们掌握数据分析,但可能编写的是更学术性的代码,不需要特别经过测试。另一种途径是通过数据科学本科或硕士学位,其中可能包含一些编程课程,但数据科学学位需要涵盖很多内容,因此很难做到这一点。

从你的书中,你认为数据科学家应该学习哪些技能?

你提到过,测试编写通常是数据科学背景的人不熟悉的技能。由于数据科学项目可能非常探索性,因此添加测试并不明显。

你可以为数据科学项目中编写的每一行代码添加测试,因为你可能会发现其中一半的代码毫无用处,因为你发现该特定方向毫无意义。实际上并没有在稍后添加这些测试的文化,但是,如果你从探索性代码转向将机器学习模型投入生产,那么问题就来了。如果它没有经过测试,那就不行。另一个是,由于这种探索性,数据科学家通常不愿意在仅仅是个人项目时使用版本控制,这似乎比其价值更麻烦。直到开始处理代码库,你才能看到它的好处。

数据科学中常用的编程语言有哪些?我知道Python在机器学习中很常见,但还有其他更特定于数据科学的语言。

我会说Python目前是数据科学领域最大的语言。以前,R也很重要,但比例有所下降。有些人使用Julia,但它并没有像Python那样得到广泛的采用。

我这里列出的其他两种语言是R和Julia,它们可能从不同的角度来解决相同的问题。软件工程师在与数据科学家合作时应该注意哪些事项?

我认为数据科学家与软件工程师的思维方式不同。他们倾向于解决非常模糊的问题,并将其转化为更多数据关注的问题。

数据科学项目的问题在于,你通常在开始时不知道最终结果会是什么。如果你正在处理机器学习问题,你可能会发现最终使用的算法非常简单。你可能从一个非常简单的文本数据提取问题开始。

你可能从尝试随机森林方法开始,使用一些非常简单的文本特征,但实际上效果并不好,准确性很低。然后,你可能会尝试深度学习模型,看看效果是否更好。这意味着很难在项目开始时估计需要多长时间,或者最终结果会是什么。

这将是一个大型模型还是一个小型模型,我们需要一些专门的基础设施来部署它?还是它会非常小,很容易部署?我认为重要的是要记住这种不确定性,它不是数据科学家估计不准确,而是这些项目的性质,在开始时并不清楚最终结果会是什么样子。

我可以想象一种情况,软件工程师急于开始实施阶段,但数据科学家还没有找到确定的模型。这可能需要一些耐心...

...在迭代一段时间后才能真正确定。

让我们看看一些典型的机器学习工作流程步骤,并从数据科学的角度解释一些注意事项、流程和技术。如果我们与软件工程师合作创建自动化管道,那么在每个步骤中需要注意哪些工具或技术?第一个步骤是数据获取。我想知道在不同的项目中,我们可能会获取哪些数据,以及如何处理这些数据。

这一步是将数据从公司基础设施中的存储位置提取出来,并将其输入到管道其余部分。这是将数据划分为训练数据和验证数据的地方。我们需要从任何存储格式中提取数据,并将其转换为能够在管道中传输的格式。

你能举一个非结构化数据和结构化数据的例子吗?

非结构化数据通常是文本或图像,而结构化数据是表格数据。例如,你可能正在考虑公司规模的数据,或者你可能正在处理客户投诉文本数据。

是否有任何特定工具或库可以在这里发挥作用?

有一些用于整个管道的解决方案,其中包含数据获取组件,例如TensorFlow Extended。还有亚马逊的SageMaker管道,我相信MLflow也有类似的结构,但我自己没有使用过。

下一个步骤是数据验证。你提到过将数据划分为训练集和验证集,但这可能是一种不同的验证。

是的,没错。当你将数据划分为训练集和验证集时,你是在模型训练或分析过程中使用的。模型验证步骤用于检查该模型是否足够准确以解决你正在处理的问题。数据验证是检查你获取的数据是否符合预期。一些可能出现的问题包括数据缺失,上游出现问题,导致数据中出现缺失值,你的机器学习模型无法使用这些缺失值进行训练。因此,数据验证步骤的目的是,如果数据存在问题,你可以在该步骤停止管道,而不是完成冗长的训练步骤,却发现该步骤存在错误,或者你的模型不如预期准确,因为数据质量存在问题。

让我们暂停一下,讨论何时以及为什么需要重新运行管道。如果这只是一个探索性调查,我们创建了一个模型并进行了验证,那么这将是结束。但现在,我们正在讨论构建管道。

那么,在什么情况下需要重新运行管道?是因为我们有新的数据?因为我们想训练一个更好的模型?这些情况是什么?我们是否需要重新运行整个管道?还是可以重新运行...

对于许多商业问题,数据并非一成不变。数据会随着时间推移而变化。人们使用产品的方式以及其他方面也会发生变化。因此,模型性能会随着时间下降,因为如果在一个特定时间点训练模型,它就是基于当时的数据训练的。而当使用模式发生变化时,该模型就无法很好地反映当前数据。因此,性能会下降,这时你可能需要重新训练模型,通常需要运行整个训练流程。如果你只运行一部分,实际上并不会改变任何东西,因为你最终用于生产的产物,也就是训练好的模型,并没有更新。

1 数据,数据。那么,作为验证的一部分,你如何衡量数据质量?或者,在什么情况下数据会验证失败,这可能与某个项目有关?

2 是的,如果你有一些数值数据,那么你可以查看该数据的基本统计数据,例如平均值、标准差。你可以查看已知数据的比例,如果这个比例上升,则表明数据质量下降。如果你使用的是文本数据,那么检查的内容就不那么明显了,但你可以检查文本的长度。如果上游出现问题,你的管道中可能出现空字符串。所以这是你可以检查的内容。

3 如果数据验证失败,你的选择是什么?这基本上是信号,指示有人需要介入?或者你能够采取任何自动化步骤来继续?

4 如果某个步骤出现问题,你可以考虑重新运行该步骤,或者更改输入该管道的特定数据。但总的来说,这是一种安全阀,防止最终结果不正确,而不是你需要自动更改任何内容。

5 这引发了一个问题,整个管道需要多长时间?我相信这会因应用而异。但在你所处理的系统中,你能否给我一个完整管道所需时间范围的估计?我这么问的原因是,如果我们阻止使用不正确的数据,就能节省时间。因此,如果整个过程非常短,那也没什么大不了的。但如果整个过程很长,那么尽早发现错误将对我们有益,就像我所处理的系统一样。

6 我所处理的系统通常需要几分钟到几个小时。所以不是几天几夜。关键在于,我每天都会设置这个管道,以便它能够自动运行,而无需我任何干预,无需我做任何事情。所以,这不仅仅是能够从头到尾自动化它,更重要的是节省时间。

7 我想我知道答案。但是数据必须完美无缺吗?或者我们如何判断我们的管道对不良数据的容忍度?

8 我认为数据应该反映我们试图建模的真实世界。例如,如果你有关于客户的数据,关于不同公司的各种数据,那么这些数据将非常多样化。一件事情是,一些机器学习算法可以处理缺失数据。因此,在这种情况下,所有值都需要填充,并且从这个角度来看,它必须是完美的。但它可以有非常广泛的分布,这没关系。

9 让我看看接下来的四个步骤。这样我就能知道事情的发展方向,以及可能需要讨论的内容。它,哪些步骤。接下来,我看到数据预处理、模型训练、模型分析和验证以及部署。让我们谈谈数据预处理。X,我不知道这是否是官方步骤,或者这是否取决于工作流程,但我猜数据预处理与之前的步骤有什么不同?

10 预处理通常与特征工程同义。这意味着将数据转换为可用于训练模型的东西。如果你的原始数据是文本,那么它可能是词频或类似的东西。这与验证步骤不同,因为在验证步骤中,你描述数据,检查数据是否包含错误等。

11 深度学习是否侵蚀了特征工程的必要性?我记得很久以前我参与过一个项目,其中投入了大量精力进行特征工程。而最近,我参与的项目中,他们似乎认为在某些情况下,特征工程可以省略。你的经验如何?

12 是的,我认为这是正确的,特别是当我处理许多文本模型时,现在更倾向于对文本不做太多处理,而是投入更多精力,让更复杂的模型从文本中学习更多,而不是投入大量精力进行特征工程,从文本中提取特征,然后训练模型。这对我来说是正确的。

13 好的,让我们继续讨论模型训练。关于从头开始训练与微调现有模型,这两种可能性都在管道中。

14 实际上有三种可能性。从头开始训练、微调和根据新数据重新训练现有模型。我不会在我的机器学习管道中这样做。

15 我会在独立的代码中单独进行,以建立该模型。第一次检查它是否足够准确地解决问题。然后,只有当我确定我拥有该模型并且打算重新训练或微调时,我才会构建机器学习管道。你当然可以在管道中这样做,因为你可能需要调整模型的超参数以适应新数据,所以你可能需要一个小的步骤来处理它们。

16 你提到超参数。我想知道,当你提到拥有模型并重新训练它时,模型的具体内容是什么?它是否包含所有相关的超参数?我猜,哪些部分是模型,然后会重新训练?

17 是的,这是一个很好的问题。有时是模型架构和超参数,有时只是模型架构,如果你使用的是神经网络,那么层数和神经元数量、层类型以及它们之间的连接方式。这可能保持不变,因为在管道中更改这些内容比较困难,因为你没有像在单独的训练代码中那样立即获得模型是否正常运行的反馈,该代码旨在运行这些实验。围绕该模型的其他代码会使事情变得更加复杂,难以回溯。

18 你提到你所处理的管道的持续时间从几分钟到几个小时不等,大部分时间都花在模型训练上吗?

19 是的,是的,这是正确的。通常其他步骤比较短,而模型训练占用了大部分时间。因此,拥有其他步骤非常重要,这样你就能确保在进行耗时的训练步骤之前,数据处于良好状态。

20 另一个时间因素是我们在使用模型之前需要重新训练模型的时间。这在早期如何变化?我想人们以前使用模型的时间比较长。而最近,我感觉人们越来越频繁地重新训练模型。这是一个趋势吗?

21 是的,我认为这取决于该组织中机器学习的成熟度。早期,你可能构建的模型相当粗糙,然后将它们部署到生产环境中需要很大的努力。但当你这样做时,它会对你的产品准确性产生巨大的影响。随着时间的推移,你可能会对产品进行一些小的改进,但你希望更频繁地进行改进。因此,拥有该管道可以让你根据输入数据的变化频繁地更改模型。我认为这就是现在的原因。

22 我想,在创建管道的所有这些步骤中,在哪些情况下我们可以将它交给软件工程师,并提供有关模型的信息?在哪些情况下,你认为数据科学家需要参与?两种情况或协作方式(例如并肩工作)的权衡是什么?

23 这部分取决于你拥有的团队和可用的资源。

24 但我认为,让数据科学家参与设置初始管道非常有用,特别是像数据验证步骤的标准是什么?数据的合理分布是什么?在训练模型时应该考虑哪些高性能指标?特别是在我们尚未讨论的步骤中,即模型分析步骤,我认为数据科学家在此发挥着至关重要的作用。我认为任何数据科学家都可以学习这些技能,但他们需要依赖管道,但通常能够调试这个复杂的系统,能够设置它与其他产品接口,确保它经过良好测试。因此,这对于软件工程师来说并不是那么重要。

25 我与许多非数据科学家的科学家合作过,例如生物学家或物理学家。是的,他们可以通过学习作为其教育的一部分来学习编码,但他们可能缺乏经验。但我确实认为许多人最终不得不学习编程。我认为这是一件好事。

26 这通常是压力来源。对我来说,这也是因为我喜欢编写更好的代码。能够很好地完成这项工作并编写出健壮且可扩展的代码很有趣。

27 你提到模型分析和验证,这是下一步。因此,因为这两个词相同,这与数据验证有什么不同?我想,问题在于我们验证的是什么?

28 是的。因此,我们正在查看模型的性能,即它的准确性、精确度和召回率,有时还会将准确性细分为更细的领域。例如,如果你有一个模型,它在许多不同国家/地区都有延迟,那么它在所有这些国家/地区的性能是否一样好?

29 你可以使用验证数据来完成,验证数据是你的数据的一个子集,它不参与训练数据,而是用于验证或测试。我知道我们在这个过程中多次使用“验证”这个词,但这似乎是技术发展的方式。分析是指查看不同方面的准确性。

30 这是你可能寻找模型偏差的地方。它是否为某些群体提供了更好的性能?它是否为女性用户提供了更好的性能?

31 这可能是你想要在该步骤中寻找的男性用户。然后,验证部分是,只有在所有分析标准都接受的情况下,模型才能部署。因此,这是你在将模型部署到生产环境之前进行“通过”或“不通过”的步骤。

32 我想指出“精确度”和“召回率”这两个术语,我们不会尝试深入探讨,但我猜这与误报和漏报有关。

33 是的,这与一些指标有关。

34 当你谈到决定模型是否足够好时,我们可能想要做出这样的决定,因为我们可能已经有一个相当不错的现有模型,我们不想让它变差。

35 完全正确。他们使用相同的模型,并根据新数据重新训练它。结果是否更好?

36 关于过拟合与泛化?我不知道这些术语是否过于技术化,但我们可以简单地说明它们与模型分析有什么关系?

37 如果你对模型进行了过拟合,那么你将在训练集和验证集上看到更高的准确性,然后你就会知道你的模型过于密切地复制了训练集。它无法推广到新数据。而你希望能够在将模型部署到生产环境时将其应用于新数据。

38 这可能是一个幼稚的问题,但模型的大小是否与你拥有的训练数据量无关,或者模型的大小是否会根据数据集而变化?

39 如果你有一个小数据集和一个大型模型,那么它很容易过拟合,因为你的模型基本上会记住你拥有的数据。因此,当它看到新数据时,它的性能可能不会很好。是的,这是一个好问题。

40 我将其列为解释。我不知道这是否真的是这个步骤的一部分,但我猜这可能是模型的一个方面。你是否真正理解它在做什么,或者它是否像一个黑盒子?

41 是的,这绝对是模型分析的一部分,但可能不是你应该放入管道中的内容,因为对于需要解释的模型,这几乎与自动化问题相反。

42 如果你需要仔细查看哪些特征导致它做出特定预测,你可以在模型训练后将其作为部署模型的自动化设置的一部分。如果你需要解释你的模型,你可能会运行到这一步的管道。但然后,你的数据科学家可能需要仔细研究该模型,然后手动将其部署到生产环境中。

43 这也引出了一个观点。如果我们有一个大型团队,或者与数据科学家和软件工程师合作构建这个管道,那么可能还有其他数据科学家正在开发下一代模型或类似的东西。这些事情可以并行进行,而不是我们放弃所有事情并构建一个静态管道。

44 是的,就是这样。

45 让我们开始讨论部署。此时,我们有一个管道。我们可以运行它,希望只需最少的干预,希望它能够顺利运行,也许它会根据更多数据进行重新训练。部署或生产有什么不同?我相信这取决于项目。但总的来说,从我可以运行的管道到它已部署到生产环境中,这种转变是什么?这可能意味着它以更大的规模运行,或者它运行得更频繁。

46 是的,这实际上是我将任务交给软件工程师的时刻。管道会生成一个模型工件,它可以是一个保存的模型权重集,然后将模型移交给他们,并将其设置为运行推理。这实际上是数据科学家工作结束的时刻,新训练的模型已经生成,现在可以将其放入产品中提供服务。

47 扩展是如何进入方程式的?我们的模型是否太大,无法在计算上部署到生产环境中?或者你是否从一开始就考虑过这个问题?这里是否有一个点,我们需要决定是否可以部署它?

48 理想情况下,在你开始构建管道之前,你就会知道这一点,因为很多影响因素将是模型架构、层数、层大小(如果你使用的是神经网络)。因此,理想情况下,你希望在实验阶段(你尝试许多模型时)了解部署的一些要求。因为如果你的模型需要非常快,你可能会限制自己只使用小而快的模型进行实验。

49 这可能适用于所有步骤,而不仅仅是部署。你对在初始管道中投入大量精力与在部署管道时重写或从头开始构建的看法是什么?

50 许多管道解决方案(如 TensorFlow Extended 或 Amazon SageMaker)将你的训练脚本作为输入。因此,你无需重新编写。你可以直接将训练代码复制到管道代码中。这效果很好,因为你知道它已经有效,你无需从头开始。但管道代码周围的大部分样板代码是新的,你需要从头开始连接这些部分,并确保一个步骤会顺利地传递到下一个步骤。

51 我们没有谈到这一点。一开始是机器学习运营(MLOps),我想这可能是 DevOps 的一个分支,更侧重于机器学习。

52 你是否有过关于开发中可能出现的问题的经验,这些问题可能与机器学习有关?在常规后端工作中,会遇到某些问题。我想知道机器学习中是否存在任何特定问题,例如监控推理时间或内存使用情况?

53 我听说过但自己没有经历过的一个问题被称为训练和服务技能。这意味着你可能有一个特征工程代码和模型训练代码,你需要在模型部署和运行推理时以及训练模型时执行特征工程。

54 因此,你可能会更新训练管道中的特征工程代码,然后基于这些特定特征训练模型,然后部署该模型,但忘记更新特征工程代码。因此,当你的模型运行推理时,输入数据会使用旧的特征工程,但模型是新的。因此,数据在执行特征工程步骤后可能完全有效。

55 特征可能完全有效,但它们可能不符合该特定模型的正确分布。因此,你的模型性能会变差,你不知道原因是什么。这是一个微妙的问题。

56 是的,这听起来像是一个非常特定于机器学习的调试问题,我们验证和分析的模型行为与我们预期的不同。也许我们需要回滚,或者也许我们只需要修复它。

57 在生产环境中进行监控以检测这些问题,并确保模型准确性符合预期,这很好。

58 好的。听起来我们已经完成了管道的所有步骤。让我们开始总结。我们在这期节目中讨论了不同的角色。你是否看到新的规则或角色正在出现或变得越来越重要?

是的,我目前正在研究几件事。生成式AI工程师是一个显而易见的选择,他们不一定构建或训练模型,而是设计基于AI模型的应用程序,这非常重要,而且这种趋势只会持续下去。我看到的另一件事是,我认为数据科学家在AI领域有很大的作用,那就是确保对AI模型进行评估。因此,如果您尝试将大型语言模型用于某些特定业务应用,实际上很难检查该模型的准确性。我认为这是数据科学家的一个巨大的增长领域。

同样,我认为当我们说AI工程师时,指的是那些使用基础模型(可能是大型语言模型,也可能不是)的人。也许他们只是通过API工作,根本不在本地运行任何机器学习。我想在某些情况下,他们的编程,你知道,用英语编写提示和相关内容。

是的,我认为这将是未来的趋势,这个想法非常重要。中国。

我们试图专注于协作,超越仅仅是软件和机器学习。您发现数据科学家和软件工程师或团队其他成员之间哪些协作方法有用?无论是工具还是技巧,您觉得哪些有帮助?

我认为最好的协作方式是拥有一个乐于接受新想法的团队。这并不真正涉及任何工具或技术,而是关于重视彼此的想法。最好的团队是那些成员相互支持,支持新想法的团队。如果有人提出新想法,我认为这是关键,而不是任何特定的工具或支持。

那么,展望未来,您对正在进行或在更广泛的行业中看到的机器学习项目有什么期待?

最近开始使用大型语言模型,我对目前的能力感到非常震惊。我正在进行一个项目,以展示大型语言模型在初创企业中的良好应用示例。

我正在与某项目合作,我们决定选择一个项目,从电子邮件中提取用户的航班信息。如果您向服务发送包含航班信息的电子邮件,它将提取出发地、目的地、出发时间、到达时间等,并将这些信息填充到您想要使用的任何应用程序中。

我以前也做过类似的产品,以前需要大量正则表达式或进行所有复杂的特征工程才能提取这些信息。但现在我可以用五个指令行来完成,而且它比以前那些极其复杂的解决方案效果更好。

您甚至可以要求它提供机场代码而不是城市名称。即使电子邮件中没有机场代码,您仍然可以获得它,因为大型语言模型具有上下文。因此,我对未来这些技术能够做的事情感到非常兴奋。

是的,我想这引出了一个问题:项目结束时,所有技术上的成功都实现了,但业务价值是什么?在您进行的项目中,他们通常会如何改进?是继续深化现有技术?还是会进入一个全新的业务领域?或者项目结束后的可能方向是什么?

是的,我进行的一些项目添加了机器学习无法实现的新功能,许多这些功能都是从结构化数据中提取信息。这使您能够添加以前无法实现的功能,为客户提供新功能,然后您可能会花一些时间优化它,以提高准确性等等。因此,我认为改进现有模型、提高准确性与添加完全新功能之间的平衡很重要。

想让听众了解更多关于您或您的新书的信息。

最好的方法是关注我的社交媒体。

好的,我会在节目说明中添加您的社交媒体信息或链接。今天感谢您接受采访,凯瑟琳。

谢谢。很高兴能和您谈话。

这是菲利普·温斯顿为您带来的软件工程师电台。感谢收听。

感谢收听软件工程师电台,由IEEE计算机学会和IEEE软件杂志播出。欲了解更多关于播客的信息,包括其他剧集,请访问我们的网站scdashradio.com,并提供反馈。

您可以在网站上评论每集,或通过LinkedIn、Facebook、Twitter或我们的Slack频道(scdashradio.slack.com)联系我们。您也可以通过[email protected]给我们发邮件。所有其他剧集均获得知识共享许可证2.5。感谢收听。