Coda

メモ Software Engineerng for Machine Learning: A Case Study

September 14, 2019

概要

表題の論文は、マイクロソフトでのAIを応用したアプリケーションの開発についての調査結果をまとている。 著者らは、9人中の8名がMicrosoft Researchに所属し、本論文で2019年のICSEのSoftware Engineering in Practiceの分野でBest Paper Awardを受賞した。 主な貢献は、各チームにおける開発フローを9のステージに分けて解説したこと、機械学習を応用するアプリケーションやプラットフォームの開発におけるベストプラクティスを示したこと、機械学習を応用するアプリケーションの開発に固有の課題にまつわる論考の3つである。

調査方法は雪だるま式標本法による開発者へのアンケートであり、質問内容は14名の管理職のエンジニアへのヒアリングに基づいて設計された。作成した質問は、リッカート法形式での内容であり、4195名に配布された後、551名のエンジニアが質問に回答した。

ステージに分解した開発のスコープは、機械学習で実装する要件を決める要件定義の段階から、本番環境での予測性能の監視である運用段階にまで及ぶ。次の図は、開発段階を9のステージに分割した様子を表す。 9stages 細い矢印は前のステージに戻る可能性があることを示し、太い矢印は以前のどんなステージにも戻ることがある可能性があることを意味する。

ベストプラクティスの内容は多岐にわたり、End-to-endのパイプラインの構築をはじめとして全部で7つの観点について考えられている。その中で最も詳細に分析されていた観点は、機械学習の経験の長さ次第で困難と考える領域が変わることを指摘したものである。以下の図は、機械学習の経験の長さによってエンジニアを長い順にHigh, Midum, Lowの集団に分け、各集団が機械学習のどの領域に困難を抱えているかを示す。 Rankは、どの課題に感じる領域のランキングを示し、1は集団が最も困難に感じていることを示す。 図より、経験の長さによらずデータの収集・クレンジング・管理を最も課題に感じていることが読みとれる。 他方、経験を重ねるにつれ、AI Tools, Scale, Model Evolution, Evaluation, and Deploymentに対する関心が集めることもわかる。 table2

機械学習を応用するアプリケーションの開発に固有の課題として、データの収集・処理・版管理の扱いが難しいこと、モデルを開発するにはソフトウェアエンジニアリング以外の知識が必要になること、機械学習関連のコンポーネントは密結合になりやすいことが列挙されている。

感想

論文ではCMMやSix Sigmaを参照して機械学習開発プロセスの成熟度を評価するメトリクスを提案していた。論文中でも今後の展望の扱いになっていたように、そのメトリクス自体が本当に開発プロセスを評価するものとして妥当なのか、なぜCMMやSix Sigmaを参照したかなどの考察が薄かったように感じる。 アジャイル関係の興味深い論文の引用がいくつかあった。