日本ソフトウェア科学会第 34 回大会 (2017 年度) 講演論文集

機械学習工学に向けて
丸山 宏

深層学習の技術が成熟しつつあることによって、入出力のデータ例示に基づく帰納的プログラミングが現実的になってきた。仕様をモデル化しそれを段階的に詳細化していくという、これまでの演繹的プログラミングとは異なり、帰納的プログラミングでは仕様を訓練データの形で表現し、それを機械学習によって実装するという開発プロセスとなる。その開発・テスト・運用の方法論はいまだに確立されていず、試行錯誤に依っている状態である。本稿では、機械学習に基づく帰納的システム開発の方法論を「機械学習工学」と名付け、その体系化に何が必要かを議論する。

Advances in machine learning technologies make inductive programming a reality. As opposed to the conventional (deductive) programming, the development process for inductive programming is such a way thatthe requirements are translated into a training data set and the implementation is (semi-) automaticallydone by a machine learning algorithm. However, currently machine learning-based systems are developed on
mostly trial-and-error basis and no common methodology is established. This paper discusses how systems
with machine learning capability should be developed and operated and proposes a new discipline, machinelearning engineering, to organize a body of knowledge.

開発) と呼ぼう。

1 はじめに一方、帰納的プログラミング (あるいはモデルフ

機械学習という技術は、人工知能の文脈で語られるリー開発) においては、入出力の例を作ることから開ことが多いが、入出力の例示に基づく帰納的プログラ発が始まる。例えば、摂氏と華氏の 2 つの温度計を調ミングの方法として捉えると、新しいプログラミング達して、時々それらの値を同時に読むことで訓練デーのあり方が見えてくる。

タセットを得る。訓練データセットに対して、機械学一つの例として、摂氏を華氏に変換するプログラムを考えてみよう。通常のプログラム開発では、まず習アルゴリズムを適用し、モデルを帰納的に求める。
このモデルを用いて入出力の変換を行う (図 1)。

「摂氏を入力として取り、それに対応する華氏を出力する」という要求仕様を定義し、その計算方法を我々が持つ先験的な知識 (ここでは、F = 1.8 × C + 32 という変換式) に基いてモデル化する。このモデルに基いて設計を段階的に詳細化していき、実装を得る。これを、演繹的プログラミング (あるいはモデルベース
Towards Machine Learning Engineering
This work is a translated and extended versionof the paper presented at The First International
Workshop on Sharing and Reuse of AI Work Products [16]. Copyrights belong to the Author.
Hiroshi Maruyama, 株式会社 Preferred Networks, Preferred Networks, Inc.

図1

帰納的プログラミング

任意の計算可能関数について、それを十分な精度でいては、各入力データに対してどのような出力が望ま近似できるニューラルネットワークが存在することれるか、教師信号を付与しなければならない。これにが知られている [3]。このため、深層学習は擬似的には主に 4 つのアプローチがある。

チューリング完全と考えることができる。この汎用

1. 教師付き学習 多くの場合、教師信号は別のデー計算機構は、今までのプログラミングとは異なり、入タベースを参照することによって得られる。例

出力の例示によりプログラミングすることが可能でえば、売上予測を行うシステムの場合、過去の実ある。このようなスタイルのプログラミングにおい際の売上データが教師信号となる。て、効率的に品質の良いソフトウェアを開発するには

2. 半教師付き学習 画像の判別問題などでは、教師どうしたらよいのだろうか。機械学習を取り入れた信号を人手で与えなければならないことがある。

システム (本稿では機械学習応用システムと呼ぶ) のこのような場合、すべてのデータ点に対して個別開発はまだ発展途上にあり、このような方法論は未だに人手で教師信号を付与する (アノテーションとに未整備である。著者は 2016 年の「コンピュータソ呼ばれる) のはコストが高いかもしれない。多く

フトウェア」誌の巻頭言で「機械学習工学」の必要性のデータ点に対しては教師信号を与えずにその統を提言した [16]。本稿では、機械学習工学における主計的な振舞いだけを学習させておき、比較的少数要な課題と、ソフトウェア工学との関連について考察の教師付きデータを組み合わせることによって高する。

い精度を得られることがあるのが知られている。

3. 教師無し学習 教師信号が全く無くても、機械学

2 機械学習工学

習アルゴリズムは入力データの統計的な性質を

2. 1 機械学習応用システムの開発捉えることができる。これによって、例えば正常

図 2 に典型的な機械学習応用システムの構成を示

時の統計的性質を用いて、ある入力データが異常す。システムは入力を取り出力を返す。入力・出力は値であるかどうかの判定に使うことができる。

それぞれ多次元であることが普通である。例えば画4. 強化学習 教師信号はまた、各データ点に対し像の判別を行うシステムの場合は、ビットマップの各て、得られた出力を見た後、その出力が望ましピクセルの値を入力としてとり、その画像に含まれるいものであったかをフィードバックすることにオブジェクトのラベル (猫とか飛行機とか) を出力とよって、事後に与えることもできる。試行錯誤にする。

よって学習するロボットの制御などに使われることがある。
教師信号を与えられた訓練データセットはさらに、training set と validation set に分割される。

Training set はニューラルネットワークの重みの調整に使われ、validation set は得られたニューラルネットワークの精度の評価に使われる。ニューラルネット
ワークの重みの更新は大きな計算量を要することが知られていて、多くの場合 GPGPU(General-Purpose
図2

典型的な機械学習応用システムの構成図

Graphic Processing Unit) などのハードウェアで行われる。ニューラルネットワークには、自動的に更新

図 2 の下段は、学習を行うパスである。入力デーされる重みの他に、多くのハイパーパラメタがあり、タは ETL(Extract-Transfer-Load) の処理を経た後、それらの値は多分に探索的に設定される。ニューラ前処理が行われる。前処理は欠損データや外れ値のルネットワークの学習プロセスを評価するのに、2 つ処理、正規化などである。帰納的プログラミングにおの指標がある。訓練誤差は、training set に対するエラー率であり、モデル (ニューラルネットワーク) がされることを仮定する。訓練データセットはこ入力データの複雑さを十分に捉えられるほど強力でのようなサンプリングの結果とみなされる。こあるかを示唆する。一方の汎化誤差は validation set

れはランダムサンプリングであり、確率的にバイに対するエラー率であり、モデルが学習に表れなかっアスが入ることは免れない。このため、機械学習たデータ点に対してどの程度ロバストであるかを示

応用システムの出力はやはりこのサンプリング唆する。訓練誤差と汎化誤差は、ハイパーパラメタのバイアスに影響されることになる。

設定によって連動して動く (図 3)。機械学習応用シス

3. ブラックボックス性 これは統計的機械学習一般

テムの開発においては、現在のところ多くの場合、こではなく、深層学習特有の問題であるが、深層学のハイパーパラメタの探索は発見的であり、開発者の習の結果はしばしば解釈不能であると言われる。

勘と経験に委ねられている。

2. 3 機械学習応用システムのライフサイクル
他の IT システムと同様、機械学習応用システムにおいてもシステム開発は要求定義から始まり、設計、実装、運用へと続く。多くの IT システム開発とは異なり、機械学習応用システムにおいては、システム計画時にその精度がどの程度になるのか正確に予測するのは困難である。このため、機械学習応用システムの開発・運用サイクルは多分に探索的なものになる。
典型的な機械学習応用システムのライフサイクルを
図3

訓練誤差と汎化誤差 [7]

図 4 に示す。
まず、そもそも与えられた問題が機械学習で解く汎化誤差が十分に小さくなると、ハイパーパラメタべきかを評価する (アセスメントと呼ぶ)。これには、の探索は終了し、システムは推論フェーズへ移行す

顧客が統計的機械学習の本質的限界を正しく理解してる。図 2 の上段のパスは、推論におけるデータの流いること、訓練データ入手のための目処が立っているれをしめしている。入力データは、学習時と同じ前処かどうかなど、機械学習応用システムに特有な観点と理を受け、学習済みのニューラルネットワークによっともに、ビジネス KPI(Key Performance Indicator)て出力を得る。

が明確に設定されているなど、一般の IT システム構築に必要な評価も含む。もしこれらの条件が揃わな

2. 2 統計的機械学習の限界

ければ、そもそも機械学習応用システムを計画すべき深層学習の進歩によって帰納的プログラミングへでない。の道がひらけてはいるが、深層学習は万能ではない。

次に技術的な実行可能性を評価する PoC (Proof

深層学習を含む、統計的機械学習には以下のような本of Concept) のステップに進む。ここでは、簡単な学質的な限界がある。

習システムを構築することによって、データの質と1. 外挿ができない 統計的機械学習では、訓練デー量を評価し、最終的に得られる精度の目標を立てる。

タセットに頻繁に現れるデータ点の近傍では非データの量と質が不足している場合には、必要に応じ常に精度よく出力を近似できるが、入力空間の中てこのステップを探索的に繰り返す。

で訓練データセットに現れない領域については十分に精度が出ない。

PoC ステップによって、目標とする精度が決まれば、それを実際のビジネスプロセスの中に部分的に実

2. 本質的に確率的 統計的機械学習においては、入装し (パイロット運用と呼ぶ)、所定のビジネス KPI

力データがある同時確率分布から毎回独立に生成が達成可能かどうかを検証し、またシステムのエン図4

機械学習応用システムのライフサイクル

ドユーザが機械学習応用システムの特性 (必ずしも発手法の体系化が望まれる。次節からは、機械学習工100%正しい解を出すわけではない、など) を受け入学における主要な課題として、再利用と品質保証の 2れられるかどうかを検証する。

点について議論する。

パイロット運用によって、ビジネス KPI 達成の見通しが立ったら、本格運用のステップに入る。ここで3 機械学習工学における再利用は、学習済みモデルの精度がどのように変化するかを前節で見たように、機械学習応用システムにおいて監視することが重要である。機械学習においては、学は、通常のソフトウェア開発で得られるソースコード習フェーズと推論フェーズで入力データの確率分布の他に、訓練データセットと学習済みモデルという 2が不変であることを仮定している。もし、この仮定がつの生成物がある。これらの生成物は、多くのコスト崩れると (concept drift と呼ばれる) システムの精と知見を結集したものであり、多大な価値を持つ知的度が落ちてしまう。このため、機械学習応用システム財産と考えることができる。従って、ソースコードやにおいては、運用時にも精度を継続的に監視し、必要設計の再利用が今までの IT の普及に極めて重要だっであれば次のメンテナンスステップに入る。

たと同様に、訓練データセットや学習済みモデルの再メンテナンスステップでは、運用中に得られたデータも含めて訓練データセットを再構築し、モデルを再利用が、今後の機械学習応用システムの普及にとって鍵の一つになることは間違いない。

学習させる。この際、今までの学習済みモデルに対して運用中に得られたデータを追加訓練データとして3. 1 訓練データセットの再利用転移学習を行うことも可能である。

ビッグデータはしばしば「排気データ †2 」と呼ば機械学習応用システムのシステム構築を請け負うれる。ビジネス・プロセスの副産物として生成される

IT ベンダーはこのようなシステム構築のプロセスデータが、本来の目的以外に使われることで価値を生を何らかの形で定義しつつある。例えば、IBM 社のCognitive Value Assessment†1 は、上記アセスメン

むことが多いからである。その意味では、ビッグデー

トステップに相当する作業をおよそ 3 週間で提供するサービスである。

タは既に再利用されたデータと言うことができる。
訓練データセットは、整形され正規化されたデータであり、さらに多くの場合正解データが付与されここで述べたような機械学習応用システムの開発ノたものであり、極めて価値が高い。研究分野においウハウはいくつかの文献 ( [12] など) によって指摘さては、訓練データセットの共有は広く行われているれつつあるが、まだ十分に体系化された知識とはなっプラクティスである (例えば手書き文字認識のデータていない。ソフトウェア工学が SWEBOK [1] によって体系化されたように、機械学習工学においても、開†2 http://www.mckinsey.com/business-functions/digital†1 https://www.ibm.com/blogs/watson/2016/12/cognitive- mckinsey/our-insights/big-data-the-next-frontier-forvalue-assessment/
innovation

セット MNIST†3 や、画像判別のデータセットである

Imagenet [4] など)。また、自動運転の技術開発のために作成された Cityscape [2] データセットは、自動車のカメラで取得した 5,000 枚の画像に、ピクセル単位でアノテーションをしたもので、自動運転の研究開発に多大な貢献をしている。
一方、訓練データセットの商業的な再利用については、まだ法律を始め一般的なルールが合意されていず、なかなか再利用が進まない状況である。日本においては、著作権法の 47 条 7 において、著作権のあるデータに関して統計的処理を行った結果には、元の著作権が及ばないという明示的な規定があり [14]、機械学習応用システムにおけるデータの再利用の促進が期待されている。

3. 2 学習済みモデルの再利用
機械学習応用システムにおいて、もう一つの重要な

図5

Patterns of Pretrained Model Reuse

再利用可能な生成物は学習済みモデルである。学習済みモデルは大まかにいって、ニューラルネットワークの構造と、各重みパラメタの組で表現される †4 。学習済みモデルの再利用には、図 5 に示すように、いくつかのパターンがある。

Model Zoo†5 においては画像処理を中心に多くの学習済みモデルが公開されている。
学習済みモデルの第 3 の再利用パターンは、アンサンブル (Ensemble) と呼ばれる。同じタスクを解く学

第 1 のパターンは、学習済みモデルをそのままの習済みモデルが複数ある場合、これらの学習済みモデ形でコピーし、同じタスクに再利用することである。

ルを同じデータに対して適用し、それらの結果の平均

第 2 のパターンは、学習済みモデルに追加の訓練を取ることで精度を向上できることが知られている

データセットを加えて、似ているが異なる問題に適用[5]。このパターンにおいては、再利用の際にそれぞれすることである。これを fine tuning と呼ぶ。特にの学習済みモデルの詳細にアクセスする必要はない。

画像処理などの場合、新しいモデルを一から学習させ入力を与えると出力を返すという API へのアクセスることは大きな計算量を必要とする。似た分野の学だけで、再利用が可能である。このため、アンサンブ

習済みモデルから学習をスタートさせることで、低コルはブラックボックス再利用であると考えられる。

ストで素早く学習済みモデルを作ることができる。

第 4 の再利用パターンは、蒸留 (Distillation) [8] と上記 2 つのパターンは、学習済みモデルの詳細ま呼ばれるものである。このパターンにおいては、元のでを知って再利用するパターンであり、ホワイトボッ

学習済みモデルは、新たな訓練データセットを作り出クス再利用であると言える。アカデミアにおいては、すために用いられる。この新しい訓練データセット

学習済みモデルの共有は進んでいて、例えば Caﬀeによって、全く別のニューラルネットワークを学習す†3 http://yann.lecun.com/exdb/mnist/†4 Chainer [13] などのフレームワークでは、ニューラルネットワークの構造が入力データによって動的に構成されることを許している。このような場合は、ニューラルネットワークの構造はプログラムコード片で表現されうる。

る。これも API 呼び出しだけで行えるので、ブラックボックス再利用である。蒸留が法律的な意味でコピーに当たるのかどうかはまだ共通の理解がない。通
†5 http://caﬀe.berkeleyvision.org/model zoo.html

常のソフトウェア開発においては、外部仕様だけからか説明しようがないからである。深層学習の説明可

同機能のソフトウェアを作り出すクリーンルーム開能性を向上させる試みはいくつかなされていて (例え発が最も近い概念であるかもしれない。いずれにせば [9])、今後の研究成果が待たれる。

よ、このあたりについては今後の議論が待たれる [14]。

4. 2 テスト

4 機械学習工学における品質保証

機械学習応用システムをどのようにテストするかに機械学習工学が従来のソフトウェア工学と大きく異ついても、まだ良いプラクティスが得られていない。

なる第 2 の点が品質保証である。機械学習は本質的一般のソフトウェア開発でよく知られている回帰テに統計的な性質を持つものであり、必然的にその品質ストという概念を考えてみよう。回帰テストとは、ソも統計的に表現されることになる。機械学習応用シス

フトウェアに変更が加えられたときに、変更前に通っテムの品質に関して問題となる点を下記に指摘する。ていたテストケースがすべて通ることを確認するためのテストである。機械学習応用システムにおいて

4. 1 バグと精度の交互作用はしかし、この概念はそのまま適用できない。モデル

深層学習は非常に多次元の入力データに対して、次を更新して平均的により高い精度になったとしても、元間の交互作用をモデル化することができる。この過去のテストケースの中には、今まで (たまたま) うことは同時に、一つの入力次元の値の変化が、すべてまく行っていた入力が、新しいモデルでは正しい値をの出力次元の値に影響を与える、ということを意味す返さないことがあるからである。この他にも、テストる。一般に、深層学習を使ったシステムは、システムカバレッジはどのように定義されるべきか、機械学習中の任意の変更が他のすべての部位に影響を与える

応用システムのテストにおけるコーナーケースとはCACE(Change Anything Changes Everything) [11]何か、など考えるべきことは多い。と呼ばれる性質を持つ。ソフトウェア工学における機械学習応用システムの精度はどのように評価す重要な価値観の一つである関心事の分離 [10] とは反対ればよいだろうか。2 節において、訓練データセットの方向性である。

は、training set と validation set に分割されること

CACE は、次元間の交互作用だけでなく、深層学を述べたが、この validation set による汎化誤差は、習のモデルと図 2 におけるパイプライン中の他のプ

機械学習応用システムの精度を正しく表現しているロセスとの間でも発生する。例えばデータの前処理とは言えない。Validation set による精度に基いての内容が少しでも変われば、学習後のニューラルネッハイパーパラメタのチューニングを行うので、このトワークの重み全体が変化する。また、パイプライン

validation set の情報が学習にフィードバックされてのどこかに、精度に影響を与えるソースコードのバグしまい、validation set を含む訓練データセット全体があったとしても、機械学習がその問題を隠すようにに対して過学習してしまうからである。機械学習応学習を行ってしまうため、期待された精度が得られな用システムを正しく評価するためには、このような情かった場足、それが与えられた訓練データの品質によ報の漏れがない、独立した評価用のデータセットを用るものなのか、ハイパーパラメタの設定によるものないる必要がある [15]。のか、それともソースコードのバグによるものなのかの切り分けが困難である。

4. 3 セキュリティ

CACE という性質はまた同時に、深層学習システ

セキュリティに関して、機械学習応用システムにムの説明可能性を損なう要因でもある。ある入力には、新たなタイプの脅威がある。例えば [6] では、道対してある出力が得られた時に、出力のそれぞれの次路標識を見分ける判別器に対して、標識に物理的にス元がなぜその値をとったか、を説明するには、入力のテッカーを貼ることで一時停止標識をスピード制限すべての次元が少しずつ影響を与えているから、とし標識に見間違えさせる、という攻撃が報告されている

ろう。

(図 6)。

5 おわりに人工知能戦略会議は「人工知能の研究開発目標と産業化のロードマップ」†6 において「先端 IT 人材」、すなわちビッグデータ、IoT、人工知能に携わる人材が 2020 年には 47,000 人不足すると試算している。

1960 年代には「ソフトウェア危機」が叫ばれたこと
図6

交通標識を見分ける画像判別器への攻撃 [6]があった。急速に進化する電子計算機の技術に、それを利活用するソフトウェア技術者の数が圧倒的に足現在の機械学習アルゴリズムは基本的に、入力デーりないことを指摘したものであった。これをきっかタの確率分布が、学習時と推論時で変化しないことをけに、ソフトウェア工学という学問領域が形成され、前提としている。このため、訓練データセットに本来ツールやプロセスなど効率的に品質の良いソフトウェは現れないようなデータを混入させたり、推論時に訓アを開発するための方法論が開発され、多くのソフト練データセットに現れないようなデータに加工したウェア技術者がこれらの方法論を学び大量のソフトりして、機械学習応用システムに本来意図しない出力ウェアを開発するようになった。帰納的プログラミを出させるような攻撃が可能である。このような攻ングにおいても状況は似ているのではないだろうか。

撃に対してどのように機械学習応用システムを守っ今こそソフトウェア工学における長年の蓄積と、機械ていくかも、今後の課題と言えよう。

学習における新たな知見を融合して「機械学習工学」を始める時期ではないだろうか。

4. 4 プロダクト品質とプロセス品質
機械学習応用システムの品質については上記のような難しさもあるが、一方で機械学習応用システムならではの可能性もある。通常のソフトウェア開発においては、出来上がったソフトウェア自体の品質 (プロダクト品質と呼ぶ) を直接計測することは難しい。例
えばプロダクト品質の指標として「残っているバグの数」を考えるとすると、そのようなものは正確にはわからないからである。このため、通常のソフトウェア開発で用いられる品質指標の多くは、そのソフトウェアを開発したプロセスの品質、例えば設計レビュー、コードレビューを正しく行ったか、などを評価したものになる。これをプロセス品質と呼ぶ。プロセス品質はしかし、出来上がったソフトウェアの品質をダイレクトに表現したものではない。
一方、機械学習応用システムにおいては、独立した評価用データセットによる客観的な精度をプロダクト品質の指標として用いることができる。その意味で、

参 考 文 献[ 1 ] Bourque, P., Fairley, R. E., et al.: Guide to thesoftware engineering body of knowledge (SWEBOK(R)): Version 3.0, IEEE Computer Society Press,
2014.
[ 2 ] Cordts, M., Omran, M., Ramos, S., Scharwächter,T., Enzweiler, M., Benenson, R., Franke, U., Roth,S., and Schiele, B.: The cityscapes dataset, CVPR
Workshop on the Future of Datasets in Vision,Vol. 1, No. 2, 2015, pp. 3.
[ 3 ] Cybenko, G.: Approximations by superpositionsof sigmoidal functions, Mathematics of Control,
Signals, and Systems, Vol. 2, No. 4(1989), pp. 303–314.
[ 4 ] Deng, J., Dong, W., Socher, R., Li, L.-J., Li, K.,
and Fei-Fei, L.: Imagenet: A large-scale hierarchical image database, Computer Vision and Pattern
Recognition, 2009. CVPR 2009. IEEE Conference
on, IEEE, 2009, pp. 248–255.
[ 5 ] Dietterich, T. G. et al.: Ensemble methods
in machine learning, Multiple classifier systems,Vol. 1857(2000), pp. 1–15.
[ 6 ] Evtimov, I., Eykholt, K., Fernandes, E., Kohno,T., Li, B., Prakash, A., Rahmati, A., and Song, D.:

機械学習応用システムは、品質をより直接的に管理できるソフトウェア開発手法、と言うこともできるであ†6 http://www.nedo.go.jp/content/100862412.pdf

Robust Physical-World Attacks on Machine Learning Models, ArXiv e-prints, (2017).
[ 7 ] Goodfellow, I., Bengio, Y., and Courville, A.:
Deep Learning, MIT Press, 2016, chapter 11.
[ 8 ] Hinton, G., Vinyals, O., and Dean, J.: Distillingthe knowledge in a neural network, arXiv preprint
arXiv:1503.02531, (2015).
[ 9 ] Koh, P. W. and Liang, P.: Understanding
black-box predictions via influence functions, arXiv
preprint arXiv:1703.04730, (2017).
[10] Parnas, D. L.: On the criteria to be used in decomposing systems into modules, Communicationsof the ACM, Vol. 15, No. 12(1972), pp. 1053–1058.
[11] Sculley, D., Phillips, T., Ebner, D., Chaudhary,V., and Young, M.: Machine learning: The highinterest credit card of technical debt, (2014).
[12] Smith, L. N.: Best Practices for Applying Deep

Learning to Novel Applications, arXiv preprint
arXiv:1704.01568, (2017).
[13] Tokui, S., Oono, K., Hido, S., and Clayton, J.:
Chainer: a next-generation open source frameworkfor deep learning, Proceedings of workshop on machine learning systems (LearningSys) in the twentyninth annual conference on neural information processing systems (NIPS), Vol. 5, 2015.
[14] Ueno, T.: Copyright Issues on Artificial Intelligence and Machine Learning, The First International Workshop on Sharing and Reuse of AI Work
Products, 2017.
[15] Wujek, B., Hall, P., and Günes, , F.: Best Practices for Machine Learning Applications, SAS Institute Inc, (2016).
[16] 丸山宏: ソフトウェアの役割, コンピュータソフト
ウェア, Vol. 4, No. 1(2016).