Skip to main content
QUICK REVIEW

[論文レビュー] An Empirical Study of Self-Admitted Technical Debt in Machine Learning Software

Aaditya Bhatia, Foutse Khomh|arXiv (Cornell University)|Nov 20, 2023
Software Engineering Research被引用数 6
ひとこと要約

本研究は、318の機械学習(ML)および非MLオープンソースプロジェクトを分析することで、機械学習ソフトウェアにおける自己申告型技術的負債(SATD)を調査する。MLプロジェクトでは中央値のSATD率が2倍であり、負債が早期に導入され、データ前処理およびモデル生成に関連する特徴的な負債パターンを示す。長期間にわたる負債は、低複雑性で複数ファイルにまたがる変更において多く発生する。

ABSTRACT

The emergence of open-source ML libraries such as TensorFlow and Google Auto ML has enabled developers to harness state-of-the-art ML algorithms with minimal overhead. However, during this accelerated ML development process, said developers may often make sub-optimal design and implementation decisions, leading to the introduction of technical debt that, if not addressed promptly, can have a significant impact on the quality of the ML-based software. Developers frequently acknowledge these sub-optimal design and development choices through code comments during software development. These comments, which often highlight areas requiring additional work or refinement in the future, are known as self-admitted technical debt (SATD). This paper aims to investigate SATD in ML code by analyzing 318 open-source ML projects across five domains, along with 318 non-ML projects. We detected SATD in source code comments throughout the different project snapshots, conducted a manual analysis of the identified SATD sample to comprehend the nature of technical debt in the ML code, and performed a survival analysis of the SATD to understand the evolution of such debts. We observed: i) Machine learning projects have a median percentage of SATD that is twice the median percentage of SATD in non-machine learning projects. ii) ML pipeline components for data preprocessing and model generation logic are more susceptible to debt than model validation and deployment components. iii) SATDs appear in ML projects earlier in the development process compared to non-ML projects. iv) Long-lasting SATDs are typically introduced during extensive code changes that span multiple files exhibiting low complexity.

研究の動機と目的

  • 機械学習(ML)ソフトウェアと非MLソフトウェアを比較して、自己申告型技術的負債(SATD)の広がりと特性を調査すること。
  • データ前処理、モデル学習、デプロイメントなどのMLパイプラインの異なるコンポonentにおけるSATDの性質と分布を理解すること。
  • SATDの時間的ダイナミクス(導入および解消の速度)を分析し、長期間にわたる負債に影響を与える要因を特定すること。
  • 「不十分なテスト」や「設定」などのML固有の負債カテゴリを同定することで、既存のSATD分類体系を拡張すること。
  • 生存分析と機械学習解釈手法を用いて、ソフトウェアメトリクスとMLコードにおけるSATDの持続期間との関係を調査すること。

提案手法

  • キーワードベースのヒューリスティクスを用いて、ソースコードのコメントを分析することで、318のオープンソースMLおよび非MLプロジェクトからSATDを収集・分析した。
  • 代表的なSATDコメントの手動分析を通じて、ML固有の技術的負債カテゴリの分類体系を構築・洗練した。
  • ケプラン=マイヤー推定法を用いた生存分析を実施し、打ち切りデータを考慮して負債の持続期間を推定した。
  • 統計的モデリングと特徴量重要度分析(例:SHAP)を用いて、MLプロジェクトにおける長期間にわたるSATDに関連するコードレベルの特徴を同定した。
  • SATDを含むファイルにおけるソフトウェアメトリクス(例:コード複雑性、ファイルサイズ、変更頻度)を測定し、負債の持続性と相関を分析した。
  • バージョン管理履歴の時系列分析を用いて、MLプロジェクトと非MLプロジェクトにおけるSATDの導入および削除速度を比較した。

実験結果

リサーチクエスチョン

  • RQ1RQ1: MLコードにおけるSATDの広がりは非MLコードと比べてどの程度か?
  • RQ2RQ2: MLコードにおけるSATDの主なタイプとカテゴリは何か?また、従来のソフトウェアとはどのように異なるか?
  • RQ3RQ3: MLパイプライン(例:データ前処理、モデル学習)のどのコンポonentでSATDが最も顕著に見られるか?
  • RQ4RQ4: MLプロジェクトと非MLプロジェクトにおいて、SATDの導入および解消の速度はどのように異なるか?
  • RQ5RQ5: MLプロジェクトにおける長期間にわたるSATDに関連するコードレベルの特徴は何か?

主な発見

  • MLプロジェクトの中央値SATD率は非MLプロジェクトの2倍であり、非MLコードの2%がSATDを含む。
  • SATDはデータ前処理およびモデル生成コンポonentで最も顕著であり、検証およびデプロイメントコンポonentでは負債率が低い。
  • MLプロジェクトにおけるSATDの導入速度は非MLプロジェクトの140倍速く、開発段階で技術的負債が急速に蓄積されている。
  • MLプロジェクトにおけるSATDの解消速度は非MLプロジェクトの3.7倍速く、負債アイテムの入れ替えが著しく高い。
  • MLコードにおける長期間にわたるSATDは、低コード複雑性で複数ファイルにまたがる大規模な変更の際に多く導入される。
  • サイクロマティック複雑性が低いファイルは、長期にわたって持続するSATDを抱える可能性が高く、見過ごされがちな小さなファイルが高リスク領域であると示唆された。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。