本文主要是介绍A Deep Learning Model for Estimating Story Points 阅读笔记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
A Deep Learning Model for Estimating Story Points 阅读笔记
背景与动机
工作量估算是软件项目管理的重要组成部分,特别是对于计划和监视软件项目。 成本和进度超支一直是软件项目中的常见风险。 麦肯锡大学和牛津大学对5400个大型IT项目进行了研究,发现大型软件项目平均超出预算66%,加班33%。 对1,471个软件项目的另一项研究[2]显示了相似的发现:六个软件项目中有一个预算超支了200%,进度超支了近70%。 涉及工作量估算的活动是规划和管理软件项目的关键部分,以确保其在预算范围内及时完成。 不同的涉众可以将工作量估算用作制定项目计划,安排迭代或发布计划,预算和成本计算的输入。 因此,不正确的估计可能会对项目成果产生不利影响。
软件工作量估算的研究可以追溯到几十年前,通常可以分为
- 基于模型的方法
- 基于专家的方法
- 结合了基于模型的方法和基于专家的方法的混合方法
基于模型的方法利用来自旧项目的数据来对新项目进行预测。 基于专家的方法依赖于人类的专业知识来做出判断。
因为现有方法的种种不足, 作者提出一个基于故事点的方法, 其中story点的值代表着完成此用户故事需要的相对努力, 例如分配给两个故事点的用户故事应比分配给一个故事点的用户故事花费两倍的精力,基于LSTM和RHN来建立一个端到端的模型, 能够进行故事点评估
模型结构
其本质就是一个长文本回归问题
模型主要包括4个部分
词嵌入
这里的词嵌入和传统的NLP问题不同, 它的词向量是自己训练的, 是用Issue Report(也就是出现问题的代码issue)为预料进行预训练, 得到词向量库, 然后对每个词进行嵌入。
LSTM表示文档
使用LSTM 对所有单词, 把所有单词的词嵌入 输入到LSTM 中, 然后得到每个单词的输出表示, 然后进行池化,得到文档的最终表示
RHN进行深度提取
我们在通过LSTM之后吗得到每个文档的特征向量,当然我们可以直接进行回归, 但是作者认为这项提取的特征还不够深, 于是使用RHN 来对文档特征进行更加深入的提取, 之所以使用RHN, 其主要原因是:
- 解决参数的数量随层的数量而增长,导致过度拟合;
- 堆叠许多非线性函数使信息和梯度难以通过 , 模型难以训练
而RHN 正好可以解决这些问题
回归
在神经网络最后加一个线性层 进行分类, 没有采用传统的回归方法
模型评估
这是数据集的各项数据
这是最终的实验结果
可以看出Deep-SE 的要优于之前的模型
个人评价理解
这篇实证论文非常有意义,我比较有感悟的点为:
- 其研究方向非常有趣, 是结合着软件工程的敏捷开发来的, 用于去对软件各个故事点进行精力评估
- 创建一个近现代数据集, 该数据集来自16个大型多样的软件项目
- 提出了一种基于深度学习的,完全端到端的预测系统,用于估计故事点。相较于传统方法,此方法能够使用深度学习方法,可以得到更多的拓展
- 模型将 LSTM 和RHN 结合起来, 其中RHN 也是一个我之前了解不深的网络,
因为其实这篇文章也类似于一个NLP方向的任务, 也就是给一个文档,然后预测其分数,我之前有做过一些文档的分类任务,可以给出一些可能的改进方向
- Attention 现在也是用的比较多的机制了, 可以用于与处理这一些数据
- Transformer 这样用于处理序列的结构似乎也可以用到
- 传统的回归方法可以使用一下,效果不一定比 神经网络的MLP回归效果差
但总之这篇论文还是给我们一些启示和感悟,关于实证类论文我们也需要多多了解。
这篇关于A Deep Learning Model for Estimating Story Points 阅读笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!