データが主食

データエンジニアの備忘録。分析だったり、読んだ本のメモだったり。

ICSE2019 "Software Engineering for Machine Learning: A Case Study"を読んだ

Microsoft Researchの研究員の方々が、社内のAI関連開発者への聞き取りを通じて、機械学習関連システムのためのソフトウェア工学知見を整理した論文です。

International Conference on Software Engineering(ICSE2019)というソフトウェア工学の国際学会で発表された論文です。

2019.icse-conferences.org

ML Workflow

f:id:ktr89:20190317125707p:plain

ML Workflowは上図の9つのワークフローに分解できます。

  1. Model Requirements. 設計者によって、既存製品や新商品のどの部分が機械学習によって実現可能かを決定する。このステージでは、課題解決のためにどのタイプ(分類/回帰など)のモデルがもっとも適切かを決定するが、これがもっとも大切な仕事である。
  2. Data Collection. 統合可能なデータセット(社内データ/オープンデータ)を探す。Imagenetなどの公開データを利用しpartial model を学習させた上で、課題解決のための転移学習させることもよくある。
  3. Data Cleaning. データセットから、不正確なデータや雑音データを排除する。
  4. Data Labeling. 各レコードにGround Truth Labelを付与する。多くの教師あり学習では、学習のためにラベルを必要とする。
  5. Feature Engineering. モデルにとって情報のある特徴を抽出/選択する。
  6. Model Training. 作成したデータセットを使いモデルを学習する。
  7. Model Evaluation. 事前に定義しておいたメトリクスに基づいて、テストデータを使いモデルの出力を評価する。
  8. Model Deploy. モデルの推論用コードがデバイスにデプロイされる。
  9. Model Monitoring. 実世界での適用時のエラーを監視する。

Interview

snowball sampling strategyにより対象者を決定し、14名のソフトウェアエンジニアに対してインタビューを行った。

Survey

Interviewの結果を元に、自由回答式のアンケートを作成した。AI/ML関連メーリングリストの参加者4195名にアンケートを送付し、551名のソフトウェアエンジニアからの回答を得られた。

Role Ratio
Data and applied science 42%
Software engineering 32%
Program management 17%
Research 7%
other 1%

Applications of AI

アンケートからAIの応用領域を整理した。 search, advertising, machine translation, predicting customer purchases, voice recognition, image recognitionなどの典型的な例に加えて identifying customer leads, providing design advice for presentations and word processing documents, providing unique drawing features, healthcare, improving gameplay などがあった。

AIの手法を整理すると、classification, clustering, dynamic programming, statistics などをuser behavior modeling, social networking analysis, collaborative filteringなどに使用していることがわかった。

アンケートを通じて、機械学習は特定の部門でのみ利用されているわけではなく、全社的に利用されていることがわかった。

Best Practice with Machine Learning in Software Engineering

インタビュー・アンケートの結果を集計し、彼らの取り組みを紹介する。

End-to-End pipeline support

ML Workflowの全領域に渡って、シームレスな開発体験を提供を試みているが、既存のソフトウェアとMLソフトウェアの特徴の違いから、この取り組みは困難であることがわかった。

先行研究では、データドリブンなアルゴリズムの固有な不確実性や、複雑なフィードバックループに起因するソフトウェアコンポーネントの複雑な構成により、かなりの変更を強いられる。これらの変更は旧来からのソフトウェア工学が扱ってきた内容であるが。 それでもなお、実験的かつイテラティブなML開発の特徴があるため、日々のソフトウェアエンジニアのワークフローの標準化や自動化は、オーバーヘッドを減らし、進捗を生み出している。

MLに特化したデータパイプラインを開発する必要がある。極めて堅実で、Loading/messagingが継続的に可能で、ハッスルすることなく別のアルゴリズムの実験やハイパーパラメータのチューニングができるデータパイプラインがが求められる。加えて、リッチなダッシュボードがあるとなお良い。

また、VSCodeなどの開発者は、IDEを提供することでデータをdiscover,gather,ingest, understand, transform, train model, deploy model, mainain model する助けとなっている。

Data Availability, collection, cleaning, and management

 

ML-centricプロジェクトの成功は、データのavailabilityquality, managementに依存している。データを作るためにはラベリングなどの工数が必要な作業があるため、一度作ったデータは社内で共有できる環境が必要だ。availabilityの他にもaccessibility,accuracy,authoritativeness,freshness, latency, structuredness, ontological typing, connectedness, semantic joinablityが必要だと語る回答者もいた。

また、データ/モデルの管理を分離せず管理できるツールが必要であることがわかった。(1)開発者による操作、(2)データ自体の変化により、ML-centricシステムは挙動が変わる。いずれの場合も、データ自体の厳格なバージョン管理が必要である。

Education and Training

旧来のソフトウェアエンジニアもML関連システムで働く必要が出てきている。そのため、多くのMicrosoft社員が、彼らへの教育にはとても価値があると考えている。MLでデータサイエンスに関する社内カンファレンスを隔年で開催し、少なくとも1日は基礎的な技術やアルゴリズム、ベストプラクティスの内容に割いている。

Model Debugging and Interpretablity

ML関連システムの問題は多岐に渡りデバッグが困難である。 - プログラミング自体のバグ - モデルエラーや不確実性に起因する固有のバグ モデルが予測失敗するタイミングに関する研究は近年盛んに行われている。また、解釈可能なAIコミュニティーも活発化しており、ブラックボックスを可視化しようとしている。

Model Evolution, Evaluation, and Deployment

ML-centricなソフトウェアはmodel changes, parameter tuning, data updatesなどの理由で頻繁なアップデートが必要になる。社内のいくつかのチームでは、厳格かつアジャイルな開発スタイルが実験的開発に適していると判断している。

モデルを高速に開発するためには、頻繁にデプロイする必要がある。デプロイをスムーズに行うためには、モデルの学習とデプロイだけを自動化するのではなく、non-MLなシステムとも連携する必要がある。一般的なバージョン管理システムをMLとnon-MLで利用し、密結合する必要がある。

Compliance

MicrosoftはAIの利用原則を世界に向けて公開していて、そこにはfairness,accountability,transparency,ethicsが含まれる。全社員が、ソフトウェアがこの原則に従っていることを確認している。

Varied Perception

f:id:ktr89:20190317174118p:plain

ML関連ソフトウェアへの経験年数によって回答が違うことがわかってきたので、その軸で分析をしてみた。

経験年数に関わらず、Data Availablity, Collection, Cleaning, and Managementにトップで取り組んでいることがわかった。同様にend-to-end pipeline support,collaboration and working cultureに関しても同様のことが言える。

education and trainingは経験が浅い人ほど取り組んでいることがわかる。同様に、彼らはintegrating AI into lager systemsに取り組んでいることがわかる。

一方で、tool, scale, model evolution, evaluation, and deploymentは経験が豊富な人ほど重要視していることがわかる。

Towards a Model of ML Process Maturity

(よくわからないので省略)

Discuttion

(省略)

Limitation

Microsoftでの調査なので、他のチームでは当てはまらないかもしれません。

所感

  • ここまで大規模に調べつつも、主体的な調査になっているのが素晴らしい。
  • たくさんのML関連製品を作っているMicrosoftの知見なので、様々な場面で活かせる知見。
  • Model of ML Process Maturityの話は謎だった。
  • 全体的に面白かったので、ほぼ丸っと翻訳してしまった。
  • とはいえ、新しい知見は少なく当たり前の内容が多い。