PR

機械学習のデバッグ

 機械学習におけるデバッグ、一般に「調整」と呼ばれる作業も、高難度です。例えば、ニューラルネットワークの初期値の選択次第で、学習率が極端に良くなったり、逆に極端に悪くなります。どちらも良い話ではなく「バグ」と言えるものです。

 ニューラルネットワークのデバッグ(調整)には、ある程度の経験が必要になります。一般のプログラムとは異なり、機械的にデバッグできるような方法論は確立していません。運任せか、経験による明示化できない知識で「調整」という名のデバッグをします。

 機械学習のデバッグの難しさは、学習の評価ができないことです。

 将棋プログラムであれば、学習前の評価関数のパラメータと、学習後のパラメータで対局させてみて、学習後のパラメータが勝てば、その機械学習にバグはなく、逆に負ければ、その機械学習にバグがあった、という判断はできます。

 しかし、この判断は妥当なのでしょうか。例えば、機械学習で10万局の棋譜を学習させてバグがなかった(つまり学習前のものに勝った)プログラムを使い、100万局学習させてみた場合、果たしてバグがないこと(つまり強くなったこと)を保証できるのでしょうか。その答えは「やってみないと分かりません」になります。

 機械学習には、オーバーラーニング(overlearning:過学習)という落とし穴もあります。オーバーラーニングとは、過度に学習を繰り返した結果、与えた学習データに適応しすぎてしまい、学習データにない未知の状況に対応できなくなってしまう現象です。将棋プログラムの場合、オーバーラーニングの結果、かえって弱くなってしまうことがあります。図5に機械学習のバグの様子を示します。

図5●機械学習の「バグ」とは何か
図5●機械学習の「バグ」とは何か
[画像のクリックで拡大表示]

 機械学習ではデバッグだけでなく、パフォーマンスチューニングの問題も出てきます。

 再帰プログラミングでも再帰の個数を減らすパフォーマンスチューニングができますが、こちらは比較的簡単に、機械的にできます。しかし機械学習の場合は、そのパフォーマンスチューニングも困難です。効率よく学習させるためのコツの多くは、経験や直感から発見されています。初級者向けの人工知能研修では、研修の範囲外にした方がいいでしょう。

 機械学習のデバッグとパフォーマンスチューニングが困難だと言っただけで、その対策はほぼノーヒントになってしまいましたが、中級者向けの研修であれば、困難さを経験させることも有益かも知れません。中級者向けでは、機械学習が決してバラ色の世界ではないことを知らしめるのも、研修の役割です。