社区提问|揭示AI/ML问题的的更好方法
00 分钟
2023-8-29
2023-8-30
type
status
slug
summary
date
tags
category
password
Text
AI summary
AI custom autofill
Multi-select
Status
URL
hashtag
勘误
标签
标题
类型
贴文
🪄
icon
notion image
凭借超过 25 年的软件工程经验,我回答了很多刚开始使用人工智能 (AI) 和机器学习 (ML) 的软件开发人员提出的问题,所以我想分享一些关于发布 AI/ML 的技巧Slack 和 Discord 等聊天论坛上的问题。

背景

一些用户的一个常见误解是他们可以直接“发布”问题。然而,聊天论坛在原理上与stackoverflow等在线论坛不同聊天论坛本质上更倾向于一对一,因此往往需要更多的时间和精力来回答问题。因此,最好提前花一点时间来正确描述问题,尤其是在发送直接消息 (DM) 时。否则,您可能会得到错误的答案(这很常见)。
请注意向您提供建议的用户的背景和经验。许多 Discord 用户是高中生和本科生,没有人工智能/机器学习或软件工程经验。我在我的个人资料中列出了我的凭据(完全披露)。
解决 AI/ML 问题的第一步是能够详细描述和理解问题。

概述

以下是我描述 AI/ML 问题的技巧的概述 [1]:
1)描述一下您的背景和经验。
2)描述问题,包括机器学习问题的类别。
3)详细描述数据集并愿意分享您的数据集。
4)描述您已完成的任何数据准备和特征工程步骤。
5)描述您尝试过的任何模型。
6)优先考虑文本和表格而不是图表。
7)避免要求用户帮助调试您的代码。
由于有些用户使用移动设备访问 Discord,因此最好通过 GitHub Gist、Pastebin 等分享您的问题描述和/或代码片段,并在论坛上分享链接。
通常最好通过 DM 共享文件或创建线程,这样其他用户就不必在频道中搜索您的文件和帖子。请记住,Discord 频道内容是非结构化的,因此可能很难搜索频道来找到您的原始帖子。
如果有人自愿帮助您,如果您向他们发送私信,复制/粘贴您的原始帖子会很有帮助。
如果您遇到编码问题,最好分享代码/算法源的链接并说明您在实现方面遇到问题,而不是发布代码片段并询问“我的代码出了什么问题?”

细节

您应该在论坛帖子中简要提供以下内容(每个项目 1-2 句话):
1. 描述一下您的背景和经历。
如果您是高中、大学、研究生院、研究员、经验丰富的专业人士等,最好提前让用户知道。
许多 Discord 用户没有意识到许多问题需要花费大量时间进行研究才能提供答案。因此,您简短地描述一下您的背景是公平的。
在花了相当多的时间试图帮助初学者(我不知道)使用错误的算法解决错误的问题之后,我学到了这个教训。
2. 描述问题。
用几句话描述问题,包括已知的 ML 问题类型(数字:分类、回归:图像:对象分类、对象检测、对象识别:文本:情感分析、主题建模、文本生成等)。
此步骤可能包括文献综述。但是,如果您能够找到一些解决相同问题的文章,那么现在应该可行。
问题表述的一部分是决定您是否正在处理监督学习、无监督学习、强化学习等[1]。
该模型的目标是什么?分类、预测、检测、翻译等。
该项目的目标是什么?研究、工程、商业应用、爱好等。
3. 详细描述数据集并愿意分享您的数据集。
描述数据集,包括输入特征和目标特征。
最好共享数据的摘要统计信息,包括任何离散或分类特征(包括目标特征)的计数。
最好共享整个数据集(如果您希望有人帮助您,那么您必须开放和诚实)。
如果由于某种原因您无法共享数据集,您需要明确说明这一点以及无法共享数据集的原因。
请注意,Discord 用户非常愿意贡献自己的时间来提供免费的咨询建议,但试图提出模糊的问题以获取有关您付费从事的商业或研究项目的免费建议是不道德的。如果是这种情况,您应该勤奋地反复说明这一事实(不要指望其他 Discord 用户会对您的原始帖子进行数据挖掘)。
4.描述您已完成的所有数据准备和特征工程步骤。
数据准备和清理的步骤和技术因数据集而异。
最常见的步骤是:修复结构错误、处理丢失或重复的数据以及过滤异常值。
特征工程可用于帮助算法并提高模型性能,其中包括创建新特征、组合稀疏类、删除未使用的特征以及添加虚拟变量。
如果使用归一化或标准化技术将所有变量缩放到相同范围,某些机器学习算法的性能会更好。
5. 描述您尝试过的模型(您应该至少尝试过一种)。
在进行数据准备和特征工程之后,第一步应该是评估几个基线模型,以便稍后进行比较。您选择的最终模型在数据集上的表现应该比基线模型更好。
6. 优先考虑文本和表格而不是图表。
最好不要在图表上绘制多个指标,因为 matplotlib 等库会自动调整轴以更好地显示值的差异(例如,请参阅如何诊断过拟合和欠拟合)
以下是图表和图表的一些常见问题:
1)表格用于比较模型并共享汇总统计数据。
2)绘图和图表可用于可视化模型结果,但不应用于评估和比较算法结果。
3)图表很难在移动设备上查看(许多用户使用移动设备访问 Discord)。
4)无论是有意还是无意,图表和图表都可能会产生误导(请参阅如何用统计数据撒谎的课程
)。
5)许多库(例如 Matplotlib)会在可能的情况下自动重新缩放轴以显示值的差异,这有利有弊。
最佳实践(以及大多数机器学习工具使用的方法)是计算多个性能指标(请参阅机器学习错误指标],而不是绘制图表。
notion image
图 1:使用 Orange 进行回归的误差指标。
机器学习中唯一常用的图表是训练/验证损失图,用于抽查模型训练过程的收敛性。表格通常用于比较模型和共享汇总统计数据。如果您决定以图表的形式呈现结果,最好包含性能指标实际值的表格。
由于 AI/ML 模型本质上是动态/随机的,因此每次训练和拟合模型时都会得到略有不同的结果。因此,您应该多次运行整个过程(训练和拟合模型,然后通过计算性能指标来评估模型)(例如 10 次)。最后,计算指标值的平均值。它还可以帮助计算平均值、中位数和标准差等指标的汇总统计数据。
notion image
图 2:10 次试验的平均误差指标。
以下是 J. Brownlee 撰写的一些文章,展示了呈现 ML 结果的一些方法:
7. 避免要求用户帮助调试代码。
一般来说,问题通常不是算法实现,而是数据集的数据准备和特征工程。
如果您发现自己陷入了调试代码的泥潭,这应该是一个危险信号,您需要重构,或者更有可能选择一个更简单的模型(奥卡姆剃刀)。

参考

[1] S. Russell 和 P. Norvig,人工智能:现代方法,第 4 版。新泽西州上萨德尔河:Prentice Hall,ISBN:978–0–13–604259–4,2021(主要是第 19.9 节)。
[2] E. Alpaydin,机器学习简介,第 3 版,麻省理工学院出版社,ISBN:978–0262028189,2014 年(主要是第 19 章)。
 
 


评论