首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >敏捷开发是否用于机器学习和自然语言处理?

敏捷开发是否用于机器学习和自然语言处理?
EN

Software Engineering用户
提问于 2011-12-29 00:57:03
回答 1查看 3K关注 0票数 1

我开发web应用已经有一段时间了,使用敏捷开发技术和原则来实现软件是我们团队的标准实践。

最近,我还参与了机器学习和自然语言处理。我听说人们主要使用Matlab来开发ML和NLP算法。敏捷开发是否有一席之地,还是这种技能是完全多余的?

换句话说,当您将ML和NLP算法开发为一项工作时,您是否在过程中使用敏捷开发?

EN

回答 1

Software Engineering用户

回答已采纳

发布于 2011-12-29 01:56:48

机器学习和自然语言处理在某种程度上是由数据驱动的.如果没有持续提供高质量的数据(在添加新标准时必须重新捕获这些数据),软件开发可能无法达到预期的目标。

客户和产品所有者可能会将更多的时间用于测试数据收集。

适应措施将取决于:

  1. 分配给“尖峰”和“实现”的时间平衡
    • 斯派克:开放式研究/探索性原型开发(在那里,好处是可能的,但不确定,而且优先次序变化很快)
    • 实现(在这种情况下,好处和成本在一定程度上可以预测,但每个任务单元要花费更长的时间才能完成)。

  2. 任务单位的平均大小。一根钉子需要多长时间?一个实现需要多长时间?与典型的应用程序开发不同,部分算法实现通常是不可运行的。
  3. “屏蔽算法”(即现有库/算法包)是否可用。
    • 当它们可用时,用于“实现”的时间就会减少(因为它们已经编写好了),因此更多的时间将花在“高峰”上。

将有两个反馈循环:

  1. 在每次迭代中,客户和产品所有者根据业务需求和开发人员的反馈定期收集/更新数据(并且具有更好的质量/更新的标准)。
  2. 在每次迭代中,开发人员都试图根据可用的数据来提高算法的质量,并将算法打包到一个可用的系统中,并在每次迭代结束时交付。客户和产品所有者应该被允许采取其他测试系统,重新分配,等等。

因此,我们认为“数据”取代“功能”是进度的主要定义。

由于“研究/尖峰”在ML/NLP开发中的重要性越来越大,因此有必要采取一种更有组织的方法来处理spike -这一点您可能已经从任何研究生研究团队中学到了。尖峰被视为“小任务”,从几个小时持续到几天。一个算法套件的实现将花费更长的时间,在某些情况下需要数周。由于任务大小的差异,尖峰和实现要分开排序。实现是昂贵的,如果可能的话,应该避免。这是使用固定算法/现有库的原因之一。

scrummaster需要不断提醒每个人:(1)记下每一个观察,包括“传递思想”和假设,并经常(每天)交换笔记。(2)花更多的时间在尖峰上(3)尽可能多地使用现有的库(4)不要担心执行时间--这可以在以后进行优化。

如果您确实决定实现库中缺少的东西,请以良好的质量完成它。

日常活动:

  • 重新排序尖峰(短任务/小时-天)和交换研究笔记。
    • 如果昨天的结果看上去不太乐观的话,就积极地取消优先排序。

  • 每个人都必须把一小部分时间花在实现上(长任务/周),否则没有人会去做,因为他们在任务上往往更无聊。

冲刺活动:

  • 演示、测试软件演示
  • 新数据收集
  • 回顾:数据收集标准/新的质量、算法满意度、尖峰和实现之间的平衡

关于延迟优化的注意事项: ML/NLP中的思想代码比在商业软件中要高得多。因此,一旦有了工作思路,重写ML/NLP应用程序的算法就比重写业务软件容易。这意味着更容易消除体系结构中继承的低效率(也就是说,在最坏的情况下,只需进行一次重写)。

(欢迎所有编辑重新安排(重新排序)我的观点。)

票数 7
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/127472

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档