398
第 11 章
実用的な方法論 深層学習の技術をうまく適用するためには,既存のアルゴリズムとその動作原理をよく知っ ているだけでは不十分である.優秀な機械学習の専門家は,適用する問題に応じてアルゴリ ズムを選択する方法や,機械学習システムを改善するために,実験から得られる結果を監視し てそれに対応する方法を知る必要もある.日々の機械学習システムの開発で専門家は,さら にデータを集めるか,あるいはモデルの容量を上げるか下げるか,正則化を加えるか除くか, モデルの最適化を改善するか,モデルの中の近似推論を改善するか,モデルのソフトウェアの 実装をデバッグするかといったことを判断しなければならない.これらはすべて,試すこと に時間を要する処理なので,盲目的に推測するのではなく,正しい行動を選択できることが重 要となる. 本書のほとんどの部分は,さまざまな機械学習モデル,学習アルゴリズム,そして目的関数 について書かれている.その内容から,機械学習の専門家になるための最も重要な要素は,幅 広い機械学習の手法に精通し,しかも多様な数学について詳しいことだという印象を持つか もしれない.現実には,一般的なアルゴリズムを正しく用いれば,よく理解していないアルゴ リズムをいい加減に用いるよりはずっと良い結果が得られる.アルゴリズムを正しく適用す るには,基本的な方法論を理解しているかが重要である.本章で推奨する内容はほとんどNg
(2015) を手直ししたものである. 本章では以下の実用的な設計工程を推奨する.
• 目標の決定 使用する誤差指標と,その誤差指標で目標とする値.この目標と誤差指 標は,応用で解決しようとする問題に応じて決定する.
• 適切な評価指標を含め,最初から最後までの工程を可能な限り早く確立する.
• システムをうまく操作して,性能のボトルネックを見極める.期待される性能を出せ
第 11. 実用的な方法論
ていない箇所を調べ,その性能劣化の要因が過剰適合,過小適合,あるいはデータまた はソフトウェアの問題によるものなのかを診断する.
• 上記の診断から得られた所見に基づいて,新しいデータの収集やハイパーパラメータ の調整,アルゴリズムの変更といった修正を繰り返し加える.
実際の例として,Street view address number transcription system を取り上げる (Good-
fellow et al., 2014d).このアプリケーションの目的は,Google マップに建造物の情報を追加 することである.ストリートビューカーは,建物の写真を撮り,各写真に対応する GPS 座 標を記録する.畳み込みネットが各写真に対応する住所を認識し,Google マップデータベー スの正しい位置にその住所を追加できるようにする.この商用アプリケーションがどのよう に開発されたかを説明して,本章で主張する設計の方法論をどのように進めるべきかの例と する. では,この処理における各ステップの内容を説明しよう.
11.1 性能指標 最初に,使用する誤差指標に関する目標を決定する必要がある.なぜなら,その誤差指標次 第でそれ以降の行動がすべて決まるからである. また,どの程度の性能を求めるかも考えておく必要がある.ほとんどの応用において,完全 に誤差をゼロにすることは不可能であることも肝に銘じておいてほしい.訓練データが無限 にあり,しかも真の確率分布を復元できるとしても,期待される最小の誤差はベイズ誤差で定 義される.これは,入力される特徴量が出力の変数についての完全な情報を持っていないこ と,あるいはシステムが本質的に確率的であることが原因かもしれない.また,訓練データが 有限であるということも制約になる. 訓練データの量は,さまざまな理由で制約を受ける.目標が,現実社会で可能な限り良い製 品またはサービスを作り出すことであれば,通常は,さらに多くのデータを収集ことできる. しかし,精度を改善した場合の価値を見極めて,追加でデータを収集した場合のコストと比較 する必要がある.データの収集には,時間,費用あるいは人的苦痛(たとえば,データの収集 過程に侵襲的な医療検査が必要な場合)が必要になる.目標が,固定的なベンチマークにおい てどのアルゴリズムが最高の性能を発揮するかという科学的な質問に答えることであるなら ば,通常はベンチマークの仕様で訓練集合が決まり,それ以上データを収集することは認めら れない.
399
第 11. 実用的な方法論
妥当と考えられる性能水準を決定するにはどうすればいいだろうか.通常,学術的な世界 では,過去に公表されたベンチマークの結果に基づいて,達成可能な誤差率をある程度推定で きる.現実世界では,アプリケーションが安全で,費用対効果が高く,あるいは顧客にとって 魅力的であるために必要な,誤差率についての知見がある.望ましい現実的な誤差率を決め ると,この誤差率を達成することが,設計における意思決定の方針になる. 性能指標の目標値以外に考慮すべき重要な要素は,どの指標を用いるかである.機械学習 の構成要素を含む完全なアプリケーションの有効性の測定に利用される性能指標は,いくつ も存在する.この性能指標は通常,モデルの学習に用いられるコスト関数とは異なる.
5.1.2節で説明したように,システムの正解率または等価的には誤差率を測定するのが一般 的である. しかしながら,さらに高度な指標を必要とするアプリケーションは多い. ミスが発生した場合,その内容によっては大きな代償を支払うことになる場合がある.た とえば,電子メールのスパム検出システムは 2 種類のミスを犯す可能性がある.1 つは正当な メッセージを間違ってスパムに分類してしまうことで,もう 1 つは間違ってスパムを受信箱 に入れてしまうことである.正当なメッセージをブロックしてしまうことは,疑わしいメッ セージを受け入れてしまうよりもはるかに大きな問題である.スパム分類器の誤差率を測る よりも,正当なメッセージをブロックしてしまうコストがスパムを受け入れてしまうコスト よりも高くなるような,全体的なコストを測る方が望ましい. 稀にしか発生しない事象を検出する二値分類器を学習したい場合がある.たとえば,珍し い疾患に対する医療検査の設計を考える.100 万人に 1 人の割合でその疾患を持つ人がいる と仮定する.その疾患に対して陰性であると常時出力するように分類器をハードコードする だけで,この検出タスクでは 99.9999 パーセントの正解率が得られる. このようなシステムの性能を特徴づける場合,正解率は不十分な指標であるのは明らかで ある.この問題を解決する 1 つの方法は,代わりに適合率(Precision)と再現率(Recall) を測定することである.適合率はモデルの検出結果が正しかった割合であり,一方で再現率 は真の事象が検出された割合である.誰も前述の疾患にかかっていないと報告する検出器は 完全な正解率を達成するが,再現率はゼロである.誰もがこの疾患にかかっていると報告す る検出器は,完全な再現率を達成するが,適合率はその疾患を持つ人の割合(100 万人のうち
1 人だけという今回の疾患の例では 0.0001 パーセント)に等しい.適合率と再現率を使用す るときは,y 軸に適合率,x 軸に再現率をとる PR 曲線(PR curve)を描くのが一般的で ある.分類器は検出されるべき事象が発生したとき高い値になるスコアを出力する.たとえ ば,疾患を検出するように設計された順伝播ニューラルネットワークでは yˆ = P (y = 1 | x) 400
第 11. 実用的な方法論
を出力して,特徴量 x で表現される検査結果の人がその疾患にかかっている確率を推定する. このスコアがある閾値を超えた場合には,必ず検出の報告がなされるようにシステムを設計 する.この閾値を変更することで,適合率を再現率と相反して調節することができる.分類 器の性能を,曲線ではなく単一の値で表したい場合は多い.その目的で,適合率 p と再現率 r を次に示す F 値(F-score)に変換できる.
F =
2pr . p+r
(11.1)
あるいは,PR 曲線の下の総面積を求める方法もある.機械学習システムが判断を拒否するよ うな応用を考えることも可能である.これは,機械学習アルゴリズムが判断についての確信 度を推定できる場合に,特に判断を間違うことが危険で,その判断を人間のオペレータが必 要に応じて引き継げる場合に有効である.ストリートビュー転写システムはその一例である. このタスクは,写真から地番を転記し,地図上の正しい住所と写真が撮影された場所を対応付 けるというものである.地図が不正確だと地図の価値が大きく棄損することになるため,転写 内容が正しい場合にのみ住所を追加するということが重要となる.機械学習システム自体が, 正しい転記内容を取得できる可能性が,人間が行う場合と比べて低くなると判断した場合は, 写真からの転記を代わりに人間にさせることが最善の方法となる.当然ながら,機械学習シ ステムが有用なのは,人間のオペレータが処理すべき写真の数を劇的に減らせる場合に限ら れる.このような場合には,評価指標として網羅率(coverage)を使うのが自然である.網 羅率は,機械学習システムが予測値を返すことのできる事例の割合である.網羅率を正解率 と相反して調節することは可能である.どの事例を処理することも拒否すれば 100 パーセン トの正解率を達成できるが,その場合の網羅率は 0 パーセントとなる.ストリートビューの タスクにおいて,プロジェクトの目標は,95 パーセントの網羅率を維持しながら,人間と同 じ水準の転写正解率を達成することだった.このタスクにおける人間と同じ水準の性能とは
98 パーセントの正解率である. 他にも利用できる指標が数多く存在する.たとえば,クリックスルー率の測定,ユーザ満足 度調査の収集などが可能である.特殊な用途の領域では,用途別の基準も存在する. 重要なことは,改善すべき性能指標を事前に決定し,その指標の改善に注力することであ る.明確に定義された目標がなければ,機械学習システムに対する変更が改善に繋がるかど うかの判断が難しくなる.
401
第 11. 実用的な方法論
11.2 初期のベースラインモデル 性能指標と目標を決めたら,どんな実応用でも次のステップは,最初から最後まで動作する 妥当なシステムを出来るだけ早く完成させることである.本節では,さまざまな状況ごとに, 最初のベースラインとなるアプローチとして用いられるアルゴリズムを提示する.深層学習 の研究の進歩は早いので,本書の執筆のすぐ後にもっと良い初期アルゴリズムが利用可能に なる可能性があることは覚えていてほしい. 対象とする問題の複雑さによっては,深層学習を用いずに始めることも考えられる.線形な 重みをいくつか正しく選択することで問題が解ける可能性があるなら,ロジスティック回帰の ような単純な確率モデルから始めた方がいいだろう.対象とする問題が物体認識や音声認識, 機械翻訳などの「AI 完全(AI-complete)」な問題に分類されるなら,適切な深層学習のモデ ルから始めることで良い結果が得られるだろう.まず,対象とするデータの構造に基づいて, モデルの一般的なカテゴリを選択する.たとえば,固定長のベクトルを入力とする教師あり 学習を行いたいのであれば,全結合層を持つ順伝播ニューラルネットワークを用いる.入力 がトポロジーとして既知の構造を持つ場合(たとえば入力が画像の場合),畳み込みニューラ ルネットワークを用いる.このような場合,区分線形ユニットの一種(ReLU またはその一般 化である Leaky ReLU, PreLus やマックスアウト)を使うことから始めるべきである.入力 または出力が系列の場合は,ゲートありの回帰ユニット(LSTM または GRU)を用いる. 最適化アルゴリズムの合理的な選択は,学習率を減衰させるモーメンタムを使った SGD で ある.(よく使われる減衰手法には,固定した最小の学習率に至るまで線形に減衰させる,指 数関数的に減衰させる,または検証誤差が台に達するたびに 2 分の 1 から 10 分の 1 減らす といった手法があるが,問題によって性能の良し悪しが生じる.)合理的な代替手法としては
Adam がある.バッチ正規化は,特に畳み込みネットワークやシグモイド非線形関数を持つ ネットワークにおいて,最適化性能に劇的な効果を示すことがある.最初のベースラインシ ステムにバッチ正規化含めないのは妥当であるが,最適化が問題になるようであれば,すぐに 導入する方が良い. 訓練集合に数千万件以上の事例が含まれていない限り,最初から何らかの軽い正則化を含 めた方が良い.早期終了はほぼ普遍的に使用されるべきである.ドロップアウトは,実装が 容易で,さまざまなモデルや学習アルゴリズムと一緒に使える優れた正則化手法である.ま たバッチ正規化によって汎化誤差を減らし,ドロップアウトを省略できる.なぜなら,各変数 の正規化に使用される統計量の推定値にノイズが含まれるからである. 402
第 11. 実用的な方法論
対象とするタスクが既に詳細に研究されたタスクに類似しているなら,まずはその過去の 研究タスクで最良の性能を示したモデルとアルゴリズムをコピーすることでうまく機能する 可能性がある.そのタスクで学習されたモデルをコピーするのもいいかもしれない.たとえ ば,ImageNet で学習した畳み込みネットワークから得た特徴量を用いて,別なコンピュータ ビジョンのタスクを解くことは一般的に行われている (Girshick et al., 2015). よくある質問は,III部でさらに説明するが,教師なし学習を最初から使うかどうかという 点である.これは対象とする分野にある程度依存する.自然言語処理のような分野では,教 師なしの単語埋め込み学習のような教師なし学習から大きな効果が得られることが分かって いる.他の,コンピュータビジョンのような分野では,ラベルありデータが極端に少ない場合 に,半教師あり学習を除いては,現在の教師なし学習の手法では効果が得られない (Kingma
et al., 2014; Rasmus et al., 2015).教師なし学習が重要だと分かっている応用であれば,最 初の基準となるベースラインシステムにそれを含めるべきである.そうでない場合は,もし対 象が教師なしタスクならば,最初の試行では教師なし学習だけを使う.最初のベースラインシ ステムで過剰適合が観察されたら,いつでも教師なし学習を追加してみることが可能である.
11.3 データの追加収集の判断 最初の全体システムが構築された後は,アルゴリズムの性能を評価し,それを改善する方法 を決定する.機械学習の初心者の多くは,改善のためにさまざまなアルゴリズムを試そうと しがちである.しかし,学習アルゴリズムを改善するよりも,データをさらに集める方がはる かに効果がある場合が多い. さらにデータを収集するかどうかをどのように決定すればいいだろうか.まず,訓練集合の 性能が許容できるものかどうかを判断する.訓練集合での性能が不十分な場合,学習アルゴ リズムは既に利用可能な訓練データを使用していないため,さらにデータを収集する理由は ない.代わりに,層を追加する,あるいは各層に隠れ層を追加することで,モデルのサイズを 増やしてみる.また,たとえば学習率のハイパーパラメータを調整して,学習アルゴリズムを 改善することを試みる.大規模なモデルや慎重に調整された最適化アルゴリズムがうまく機 能しないなら,問題は訓練データの品質にあるかもしれない.データに含まれるノイズが大 きすぎる,あるいは望ましい出力を予測するために必要な正しい入力がデータに含まれてい ない可能性がある.これは,初めからやり直す,よりクリーンなデータを収集する,あるいは もっと情報が豊富な特徴量を収集するといったことを実行すべきであることを示唆している. もし,訓練集合における性能が許容できるものであるなら,テスト集合での性能を測定す 403
第 11. 実用的な方法論
る.テスト集合における結果も許容できるものであれば,するべきことは何も残っていない. テスト集合での性能が訓練集合と比較して著しく劣る場合,さらにデータを集めることが最 も効果的な解決策の 1 つである.考慮すべき要点は,さらにデータを収集する場合のコスト と実現可能性,他の手段でテスト誤差を減少させる場合のコストと実現可能性,テスト集合 での性能を大きく向上させるために必要と予想されるデータ量である.数百万から数十億の ユーザを持つ巨大インターネット企業では,巨大なデータ集合の収集は実現可能であり,また それを実行する場合の費用は他の代替策と比較してかなり小さいので,答えはほとんど常に, もっと多くの訓練データを集めることである.たとえば,物体認識を解決する場合,大きなラ ベルありデータ集合を作成することは,最も重要な要素の 1 つだった.他の,医療応用のよ うな状況では,データをさらに収集することは,コストが大きくなり過ぎるかまたは実現不可 能かもしれない.データの追加収集に対する単純な代替手段は,重み減衰の係数のようなハ イパーパラメータを調整したり,ドロップアウトのような正則化戦略を追加することで,モデ ルのサイズを縮小したり正則化を改善したりすることである.正則化のハイパーパラメータ を調整しても訓練集合とテスト集合の間の性能差が許容できない場合は,データをさらに収 集することを推奨する. データをさらに集めるかどうかを判断する際には,収集するデータ量も決める必要がある. 図5.4にあるように,訓練集合の大きさと汎化誤差の関係を示す曲線をグラフ化するのも有効 である.そのような曲線を外挿することで,一定水準の性能を引き出すために追加すべき訓 練データの量を推定できる.通常.全体からみてほんのわずかな数の事例を追加しても,汎 化誤差に大した影響を及ぼさない.そのため,たとえば連続した実験でデータ数を倍にして いくなど,訓練集合のサイズを対数スケールで変化させて実験することが推奨される. もし,もっと大量のデータを集めることが不可能ならば,汎化誤差を改善するために残され た唯一の方法は,学習アルゴリズム自体を改善することである.これは研究領域であり,応用 の専門家に対するアドバイスの範囲には含まれない.
11.4 ハイパーパラメータの選択 ほとんどの深層学習アルゴリズムは,そのアルゴリズムの挙動をさまざまな側面で制御す るハイパーパラメータをいくつも備えている.このハイパーパラメータの中には,アルゴリ ズムを実行するときの時間とメモリコストに影響を与えるものがある.また,学習プロセス で復元されたモデルの品質と,そのモデルが新しい入力に対して導入されたときに正しい結 果を推論する能力に影響を与えるものもある.
404
第 11. 実用的な方法論
このハイパーパラメータの選択には,基本的なアプローチが 2 つある.手動で選択するか, 自動で選択するかのどちらかである.ハイパーパラメータを手動で選択するためには,ハイ パーパラメータがどのような働きをしていて,機械学習モデルが良好な汎化性能をどのよう に達成するかを理解する必要がある.ハイパーパラメータを自動的に選択する場合は,上記 のような考えを理解する必要性が大幅に減るが,計算コストがはるかに高くなることが多い.
11.4.1 手動でのハイパーパラメータ調整 ハイパーパラメータを手動で設定するためには,ハイパーパラメータ,訓練誤差,汎化誤差 そして計算リソース(メモリと実行時間)の間の関係を理解する必要がある.5章で述べた機 械学習アルゴリズムの有効容量に関する基礎的な考え方を土台とすることを意味する. 手動によるハイパーパラメータ探索の目標は,通常は実行時間と利用可能なメモリの制約 の範囲で最小の汎化誤差を求めることである.さまざまなハイパーパラメータの実行時間と メモリの影響を判断する方法については,プラットフォームに大きく依存するため,ここでは 議論しない. 手動によるハイパーパラメータ探索の主な目的は,モデルの有効容量を,タスクの複雑度 に適合するように調整することである.有効容量は 3 つの要素に制約を受けている.それは, モデルの表現能力,モデルの学習に用いられるコスト関数を良好に最小化する学習アルゴリズ ムの能力,そしてコスト関数と学習手続きがモデルを正則化する度合いである.モデルの層 が多いほど,そして層あたりの隠れユニットが多いほど,表現能力が高くなり,より複雑な関 数を表現できるようになる.しかし,学習アルゴリズムが学習コストを良好に最小化する関 数を見つけられない場合,あるいは重み減衰のような正則化項によってこの関数のいくつか の動作が妨げられる場合,モデルは必ずしもこれらの関数すべてを学習できるとは限らない. 図5.3に示したように,一般的に汎化誤差は,1 つのハイパーパラメータの関数としてグラ フを描くと U 字型の曲線になる.極端なケースとしては,ハイパーパラメータの値は低い容 量に対応し,訓練誤差が大きいために,汎化誤差が大きくなる場合がある.これは過小適合の 領域である.別の極端なケースでは,ハイパーパラメータの値は高い容量に対応し,訓練誤差 とテスト誤差の差が大きいため,汎化誤差が大きくなる場合もある.この間のどこかに最適 のモデル容量が存在し,中程度の汎化の差を中程度の訓練誤差に加えることで最小の汎化誤 差を実現する. ハイパーパラメータの中には,その値が大きいときに過剰適合を起こすものがある.1 つの 層に含まれる隠れユニットの数はその一例である.なぜなら,隠れユニットの数を増やすと 405
第 11. 実用的な方法論
モデルの容量が高くなるからである.またハイパーパラメータの中には,その値が小さいと きに過剰適合を起こすものもある.たとえば,重み減衰の係数で許容される最小値ゼロは,学 習アルゴリズムの最大有効容量に対応する. ハイパーパラメータのどれもが U 字曲線全体を探索できるというわけではない.ハイパー パラメータの多くは,層の中のユニットの数やマックスアウトユニットの中の線形要素の数の ように離散値であり,したがって曲線に沿ったいくつかの点だけを訪れることが可能である. ハイパーパラメータの中には二値のものがある.通常このハイパーパラメータは,入力の特 徴量から平均を引き,それを標準偏差で割ることで正規化する前処理のステップのように,学 習アルゴリズムの要素の選択肢を使うかどうかを指定するスイッチである.このハイパーパ ラメータは,曲線上の 2 点だけを探索する.他のハイパーパラメータは,何らかの最小値ま たは最大値を持ち,それを使って曲線上の一部の探索を制限する.たとえば,重み減衰の係数 の最小値はゼロである.これは,もし重み減衰の係数がゼロのときにモデルが過小適合して いるなら,重み減衰の係数を変更することでは過剰適合の領域には入れないことを意味する. 言い換えれば,ハイパーパラメータのいくつかは,容量を減らすことができるだけである. 学習率は,おそらく最も重要なハイパーパラメータだろう.時間の制約でハイパーパラメー タを 1 つだけしか調整できないのであれば,学習率を調整すべきである.学習率は,他のハイ パーパラメータよりも複雑な方法でモデルの有効容量を制御する.モデルの有効容量は,学 習率が特別に高いときや低いときではなく,最適化問題に対して正しいときに最も高くなる. 学習率は図11.1に示すように,訓練誤差に対して U 字の曲線を描く.学習率が高過ぎると, 勾配降下で訓練誤差が縮小せず,意図に反して訓練誤差を大きくしてしまう場合がある.理 想的な二次の場合,これは学習率が最適値の 2 倍以上の大きさである場合に発生する (LeCun
et al., 1998a).学習率が小さすぎると,学習が遅くなるだけでなく,学習誤差が永遠に高止 まりしてしまう可能性がある.この現象についてはまだ十分に理解されていない(これは凸 損失関数では発生しない). 学習率以外のパラメータを調整する場合には,訓練誤差とテスト誤差の両方を監視して,モ デルが過剰適合しているか過小適合しているかを判別し,その後モデルの容量を適切に調整 する必要がある. 訓練集合の誤差率が,目標とする誤差率よりも高い場合,能力を高める以外の選択肢は無 い.正則化を用いず,最適化アルゴリズムが正しく動作していると確信ができるなら,ネット ワークにさらに層を追加するか,隠れユニットをさらに増やす必要がある.残念ながら,こう することでモデルに関連する計算コストは増加する. テスト集合の誤差率が,目標とする誤差率よりも高い場合には,2 種類の対処法がある. 406
第 11. 実用的な方法論
8
Training error
7 6 5 4 3 2 1 0 10
2
10
1
100
Learning rate (logarithmic scale)
図 11.1: 学習率と訓練誤差の間の典型的な関係.学習率が最適値を上回ると,誤差が急激に増加するこ とに注意しよう.これは訓練時間が固定された場合の現象で,学習率が小さくなると,その減少分に比 例する割合で訓練を遅らせてしまう場合がある.汎化誤差はこの曲線を辿るか,あるいは学習率が大き 過ぎるまたは小さ過ぎることから生じる正則化効果によって複雑になる可能性がある.なぜなら,不十 分な最適化はある程度過剰適合を低減または防止できて,等価な訓練誤差を持つ点の間でも,汎化誤差 が異なる可能性があるからである.
テスト誤差は,訓練誤差に訓練誤差とテスト誤差の差を足した和である.最適なテスト誤差 は,この 2 つの量のトレードオフで求められる.一般的に訓練誤差が非常に小さいとき(し たがって容量が大きいとき),そしてテスト誤差が主に訓練誤差とテスト誤差の差で決まると き,ニューラルネットワークは最高の性能を発揮する.目標はこの差を減らすことで,その ときにこの差が減少するよりも速く訓練誤差が増加しないようにすることである.その差を 減らすためには,ドロップアウトや重み減衰を追加するといった正則化のハイパーパラメー タの変更を行い,モデルの有効容量を減らすようにする.通常,最も良い性能は,たとえばド ロップアウトによる正則化がうまく実行された大きなモデルから得られる. ほとんどのハイパーパラメータは,それがモデルの能力を増やすものか,あるいは減らすも のかを推論することで設定できる.いくつかの事例を表 11.1に挙げる. 手動でハイパーパラメータを設定する間も,最終的な目標を見失ってはいけない.それは, テスト集合において良好な性能を得ることである.正則化を追加することは,この目標を達 成するための手段の 1 つに過ぎない.訓練誤差が小さい間は,訓練データをさらに収集する ことで,常に汎化誤差を減少させることが可能である.実質的に成功を保証する強引な手法 は,モデルの能力と訓練集合のサイズをタスクが解決するまで増やし続けることである.こ のアプローチは,当然のことながら学習と推論の計算コストを増加させてしまうため,十分な 407
第 11. 実用的な方法論
ハイパーパラメー
能力が向
タ
上する場合
理由
注意
... 隠れユニットの数
増加させた
隠れユニットの数を増やすと, 隠れユニットの数を増やすと,
とき
モデルの表現能力が向上する.
本質的にモデルに関連するす べての処理で実行時間とメモ リコストが増加する.
学習率
最適にチ
学習率が不適切な場合,それ
ューニング
が高過ぎても低過ぎても,最
されたとき
適化の失敗して有効容量が低 いモデルになる.
畳み込みカーネル
増加させた
カーネル幅を大きくすると,モ
カーネル幅が広いほど,出力
の幅
とき
デルの中のパラメータ数が増
の次元が減り,暗黙的なゼロ
える.
パディングを使用してこの影 響を減らさない限り,モデル の能力は劣化する.カーネル 幅が広くなると,パラメータ の格納に必要なメモリ量と実 行時間が増加するが,出力の 次元が減ればメモリコストは 削減される.
暗黙的なゼロパデ
増加させた
畳み込みの前に暗黙的なゼロ
ほとんどの処理の実行時間と
ィング
とき
を追加して,表現サイズを大
メモリコストが増加する.
きいまま保持する. 重み減衰の係数
減少させた
重み減衰の係数を小さくする
とき
と,モデルパラメータを自由 に大きくできる.
ドロップアウトの
減少させた
ユニットをドロップする頻度
割合
とき
が減ると,ユニットは訓練集 合に適合するためにお互いに 「協調する」機会が増える.
表 11.1: さまざまなハイパーパラメータがモデルの能力に与える影響
計算リソースがある場合にのみ実行可能である.原理的には,このアプローチは最適化の難 しさのせいで失敗する可能性があるが,問題に対してモデルが適切に選択されれば,最適化は 大きな障壁にはならない場合が多い.
408
第 11. 実用的な方法論
11.4.2 自動的にハイパーパラメータを最適化するアルゴリズム 理想的な学習アルゴリズムは,手動によるハイパーパラメータの調整が不要で,単純にデー タ集合を取り込んで関数を出力するものである.ロジスティック回帰や SVM などの学習ア ルゴリズムがよく利用される理由には,1 つまたは 2 つ程度のハイパーパラメータを調整す るだけで良い性能を示すということがある.ニューラルネットワークは,少数の調整された ハイパーパラメータで良い性能を示す場合もあるが,40 以上のハイパーパラメータを調整す ると大きな効果が得られる場合が多い.手動でのハイパーパラメータの調整は,他者が既に 検討した同様の応用やアーキテクチャで決定されたものを初期設定とする,あるいはユーザ が長い年月をかけて類似のタスクに適用されるニューラルネットワークのハイパーパラメー タの値を探索する経験をした,というような有利な状況で始められる場合にうまく機能する. しかしながら,このような状況から始められる応用は多くない.このような場合,自動化アル ゴリズムを使ってハイパーパラメータの有用な値を求めるようにする. 学習アルゴリズムのユーザがハイパーパラメータの良好な値を探索する方法を考える場合, 最適化が必要になることが分かる.すなわち,検証誤差のような目的関数を最適化するハイ パーパラメータの値を見つけようとするのである.その際には、何らかの制約(たとえば,学 習時間やメモリ,認識時間の上限)が課される場合もあるそのために,学習アルゴリズムを内 包してそのハイパーパラメータを決定し,結果的に学習アルゴリズムのハイパーパラメータを ユーザから見えなくする,ハイパーパラメータ最適化(hyperparameter optimization) アルゴリズムを開発することが原理的には可能である.残念ながら,ハイパーパラメータ最 適化アルゴリズムは,それ自体がハイパーパラメータを持っている.一例は,学習アルゴリズ ムの各ハイパーパラメータの値の範囲である.しかし,通常この二次的なハイパーパラメー タの選択は,同じ二次的なハイパーパラメータをあらゆるタスクに用いたとしても,幅広いタ スクで納得できる性能が達成される可能性があるという意味で容易だと言える.
11.4.3 グリッドサーチ ハイパーパラメータの数が 3 つ以下の場合は,グリッドサーチ(grid search)を行うのが 一般的である.各ハイパーパラメータについて,ユーザは探索対象となる値の集合を選択す る.この集合は小さく有限の大きさである.その後,グリッドサーチアルゴリズムを使って, 各ハイパーパラメータの値の集合のデカルト積の中で,ハイパーパラメータの値のすべての 組み合わせに対してモデルを学習する.そして,最良の検証集合誤差を出力する実験結果の 409
第 11. 実用的な方法論
Grid
Random
図 11.2: グリッドサーチとランダムサーチの比較説明のために,2 つのハイパーパラメータを表示して いるが,通常扱うケースではもっと多くのパラメータが存在する.(左)グリッドサーチを実行するた めに,各ハイパーパラメータの値の集合が提示される.探索アルゴリズムは,これらの集合の外積の中 で結合されたハイパーパラメータそれぞれの構成について訓練を実行する.(右)ランダムサーチを実 行するために,結合されたハイパーパラメータの構成に対する確率分布が提示される.通常,このハイ パーパラメータのほとんどは互いに独立である.単一のハイパーパラメータに対して一般的に選択され る分布には,一様分布と対数一様分布(対数一様分布のサンプリングは,一様分布からのサンプルの対 数 exp を取る)がある.その後この探索アルゴリズムは,結合されたハイパーパラメータの構成を無作 為にサンプリングし,そのそれぞれで訓練を実行する.グリッドサーチとランダムサーチの両方で検証 集合の誤差が評価され,最適な設定が返される.この図は,一部のハイパーパラメータだけが結果に大 きな影響を与える典型的なケースを示している.この図では,水平軸上のハイパーパラメータのみが重 要な影響を及ぼしている.グリッドサーチでは影響力のないハイパーパラメータの数に対して指数関数 的な計算量を無駄にすることになるが,一方でランダムサーチではほぼすべての試行で影響力のあるハ イパーパラメータすべての個別の値が検証される.図はBergstra and Bengio (2012) より許可を得て 転載した.
ハイパーパラメータを,最適なものとして選択する.ハイパーパラメータの値のグリッドを 図11.2の左図に示す. 探索に使う値のリストはどのように選択されるべきだろうか.数値的な(順序付けられた) ハイパーパラメータの場合,過去の同様の実験結果に基づいて各リストの最小要素と最大要 素が保守的に選択される.そうすることで,最適値が選択された範囲内にある可能性が高ま る.一般的にグリッドサーチではおおよそ対数スケール(logarithmic scale)上の値を取る. たとえば,学習率は集合 {0.1, 0.01, 10−3 , 10−4 , 10−5 } から値を選択し,あるいは隠れユニッ トの数であれば集合 {50, 100, 200, 500, 1000, 2000} から値を選択する.
グリッドサーチは,通常,繰り返し実行されると最も性能が良くなる.たとえば,{−1, 0, 1} 410
第 11. 実用的な方法論
の値を用いてハイパーパラメータ α に関するグリッドサーチを実行することを考える.見つ かった最良の値が 1 であれば,最良の α が存在する範囲を小さな値で推測していたことがわ かるので,グリッドを移動してたとえば {1, 2, 3} の範囲でもう一度 α についての探索を行う. もし,見つかった最良の値が 0 であれば,推定範囲を狭めて {−0.1, 0, 0.1} でグリッドサー
チを実行する.
グリッドサーチの明らかな問題点は,計算コストがハイパーパラメータの数に応じて指数 関数的に増大することである.m 個のハイパーパラメータがあり,それぞれが最大で n 個の 値を取る場合,必要となる学習と評価の試行回数は O(nm ) で増加する.試行は並行して実行 可能で,緩やかな並列性(探索を実行する複数のマシンの間の通信はほとんど必要ない)を利 用できる.残念ながら,グリッドサーチの指数関数的なコストのために,並列化しても満足で きるサイズの探索ができない場合がある.
11.4.4 ランダムサーチ 幸いにも,プログラミングが容易で使い易く,ハイパーパラメータの良好な値にもっと速 く収束するグリッドサーチの代替手法があり,それがランダムサーチである (Bergstra and
Bengio, 2012). ランダムサーチは以下のように進行する.まず,各ハイパーパラメータに対する周辺分布 を定義する.これはたとえば,二値または離散のハイパーパラメータに対するベルヌーイま たはマルチヌーイ,あるいは正の実数値のハイパーパラメータの対数スケールに対する一様 分布などが使われる.たとえば以下のようにする.
log_learning_rate ∼ u(−1, −5)
learning_rate = 10log_learning_rate .
(11.2) (11.3)
ただし,u(a, b) は区間 (a, b) における一様分布のサンプルを示す.同様に,log_number_of_hidden_units は u(log(50), log(2000)) からサンプリングしてもよい. グリッドサーチの場合とは異なり,もっと大きな値の集合を探索しながら計算コストの増 大も回避できるように,ハイパーパラメータの値を離散化するべきではないし,破棄もして はならない.実際,図11.2に示すように,性能指標に強く影響を及ぼさないハイパーパラメー タがある場合,ランダムサーチはグリッドサーチよりも指数関数的に効率が良くなる.この 点については, Bergstra and Bengio (2012) での詳細な研究によって,ランダムサーチの方 がグリッドサーチよりもはるかに少ない試行回数で検証集合誤差を減らせることが明らかに なっている. 411
第 11. 実用的な方法論
グリッドサーチと同様に,ランダムサーチを繰り返して,最初の実行結果に基づいて探索を 改善したい場合は多い. ランダムサーチがグリッドサーチよりも速く良好な解を見つけ出せる大きな理由は,グリッ ドサーチの場合と異なり,ランダムサーチはあるハイパーパラメータの 2 つの値(他のハイ パーパラメータの値)で同じ結果が得られるときには無駄な探索を実行しないためである. グリッドサーチの場合,他のハイパーパラメータがこの 2 回の探索で同じ値を持っているが, ランダムサーチでは通常異なる値を持っている.したがって,これらの 2 つの値の間の変化 によって検証集合誤差に大きな違いが生じない場合,グリッドサーチでは等価な実験を不必 要に 2 回に繰り返すことになるが,ランダムサーチでは他のハイパーパラメータについて独 立した探索を 2 回実行する.
11.4.5 モデルに基づくハイパーパラメータの最適化 良好なハイパーパラメータの探索は,最適化の問題と見なすことができる.決定変数はハ イパーパラメータである.最適化すべきコストは,そのハイパーパラメータを使用した訓練 結果から得られる検証集合誤差である.検証集合上でハイパーパラメータに関して微分可能 な,何らかの誤差尺度の勾配を計算できる簡略化された設定の下では,単純にこの勾配を辿れ ば良い (Bengio et al., 1999; Bengio, 2000; Maclaurin et al., 2015).残念ながら,実用的な 設定ではほとんどの場合,この勾配は利用できない.その理由は,計算コストとメモリコスト が高いため,あるいは離散値のハイパーパラメータの場合のように,検証集合誤差と本質的に 区別できない相互作用を持つハイパーパラメータが存在するためである. この勾配の欠如を補う目的で,検証集合誤差のモデルを作成し,このモデルの中で最適化を 実行することで,新しいハイパーパラメータの推測値を提案することが可能である.モデル に基づくハイパーパラメータ探索のアルゴリズムのほとんどは,ベイズ回帰モデルを使用し て,各ハイパーパラメータの検証集合誤差の期待値と,その期待値の不確実性の両方を推定 する.したがって,最適化には,探索(不確実性が高く,大幅な改善につながる可能性がある が,低い性能となる可能性もあるハイパーパラメータを提案する)と活用(これまで扱ったど のハイパーパラメータとも同等の性能を発揮するとモデルが確信しているハイパーパラメー タを提案する.これは通常,過去に観察したことのあるハイパーパラメータに非常に類似し ている)の間のトレードオフを伴う.ハイパーパラメータの最適化への現代的なアプローチ には,Spearmint (Snoek et al., 2012),TPE (Bergstra et al., 2011) および SMAC (Hutter
et al., 2011) がある. 現在,深層学習の良好な結果を得る,またはそのような結果をより少ない労力で得るための 412
第 11. 実用的な方法論
確立されたツールとして,ベイズ的ハイパーパラメータ最適化を明確に推奨することはでき ない.ベイズ的なハイパーパラメータの最適化は,人間の専門家と同等またはそれ以上の性 能を発揮することもあれば,問題によっては壊滅的に失敗することもある.それが特定の問 題に対して機能するかどうかを見極めることは価値があるかもしれないが,まだ十分成熟し ていないか,あるいは信頼性は高くない.それでも,ハイパーパラメータの最適化は深層学習 でのニーズに後押しされることが多いものの,機械学習の分野全体だけでなく,一般的な工学 の分野にも利益をもたらす可能性がある,重要な研究分野である. ランダムサーチよりも洗練されたハイパーパラメータの最適化アルゴリズムのほとんどに 共通する欠点の 1 つは,学習を完了するまではそこからの情報をまったく抽出できないとい う点である.これは,実験の初期に得られる情報量という観点で,人間の専門家による手動検 索よりもずっと効率が悪い.なぜなら,手動検索の方は一部のハイパーパラメータがまった く役に立たないかどうかを早期に知ることが可能だからである.Swersky et al. (2014) では, 複数の実験を管理するアルゴリズムの初期のバージョンを紹介している.このハイパーパラ メータを最適化するアルゴリズムでは,新しい実験を開始すること,有望ではない実行中の実 験を「停止」すること,さらには一旦「停止」していたが,情報が増えたことで有望と見られ るようになった実験を再開することを,いろいろなタイミングで選択できる.
11.5 デバッグの戦略 機械学習システムがうまく動作しない場合,性能が悪いのはアルゴリズム自体の問題なの か,あるいはアルゴリズムの実装にバグがあるのかを判断することは難しい.機械学習シス テムは,さまざまな理由でデバッグが困難である. ほとんどの場合,アルゴリズムの意図した動作がどのようなものであるかは,事前には分か らない.実際,機械学習を使用することの要点は,人が自分自身で特定することができなかっ た有用な挙動を発見することだけである.新しい分類タスクでニューラルネットワークを訓 練し,5 パーセントのテスト誤差を達成したとして,これが期待される動作なのか,それとも 最適に至っていない動作なのかを直接的に知る方法は無い. さらに難しいのは,ほとんどの機械学習モデルそれぞれに,適応可能な部分が複数ある点 である.ある部分が壊れている場合に他の部分が適応して,おおよそ許容できる性能を達成 する可能性がある.たとえば,重み W とバイアス b でパラメータ化される,複数の層を持つ ニューラルネットワークを訓練していると仮定する.さらに,各パラメータの勾配降下の規
413
第 11. 実用的な方法論
則を個別に手動で実装し,以下のようなバイアスの更新で誤差が発生したとする.
b←b−α
(11.4)
ただし α は学習率である.この誤った更新では勾配がまったく使われていない.この場合, 学習の間は一貫してバイアスが負になるが,これでは合理的な学習アルゴリズムが正しく実 装されていないことが明らかである.しかし,このバグはモデルの出力を調べるだけでは明 らかにならない可能性がある.これは入力の分布に応じて,重みが負のバイアスを補うよう に適応できる可能性があるためである. ニューラルネットのデバッグ戦略のほとんどは,これら 2 つの問題のいずれかまたは両方 を回避するように設計されている.それは,正しい挙動が実際に予測できるように簡単なケー スを設計するか,あるいはニューラルネットワークの実装の一部を独立に実行するテストを 設計することである. 重要なデバッグのテストを以下に挙げる. 実行中のモデルの可視化:画像の中の物体を検出するモデルを訓練する場合,モデルの提案 によって検出された画像を,元の画像上に重ねて表示して見てみる.音声の生成モデルを訓 練する場合は,モデルが生成する音声サンプルの一部を聞いてみる.これは当然のことのよ うに思われるかもしれないが,正解率や対数尤度のような定量的な評価指標だけに注目する という失敗に陥りやすい.機械学習モデルがタスクを実行しているところを直接観察すると, 達成した定量的な性能の数値が妥当かどうかを判断するのに役立つ.評価のバグは,システ ムの性能が低い場合にも良い性能であるかのように錯覚させる可能性があるため,最も壊滅 的なバグの 1 つである. 最悪の失敗の可視化:ほとんどのモデルは,実行するタスクに対する何らかの信頼度を出力 できる.たとえば,ソフトマックス出力層に基づく分類器は,各クラスに確率を割り当てる. したがって,最も可能性の高いクラスに割り当てられる確率は,その分類の判断に対するモデ ルの信頼度の推定値になる.通常は最尤学習により,これらの値は正しい予測の正確な確率 ではなく,過大評価されたものになっている.しかし,実際に正しくラベル付けされていな い可能性のある事例は,このモデルでは確率が低くなるという意味で,ある程度有用である. 正しくモデル化するのが最も難しい訓練集合の事例を見ることで,データの前処理やラベル 付けの方法に問題が見つかる場合が多い.たとえば,もともとストリートビュー転写システ ムには,アドレス番号検出システムが画像をあまりにぎりぎりに切り出していたため,数値の 一部を除外してしまうという問題が存在した.そのため,転写ネットワークはこれらの画像 での正解に非常に低い確率を割り当てた.画像を並べ替えて最も確信度の高い失敗を特定し てみると,画像の切り出しに関するシステム的な問題があることが判明した.もっと広く画 414
第 11. 実用的な方法論
像を切り出すように検出システムを修正したことで,転写ネットワークが処理しなければな らない当該位置の画像の種類が増え,アドレス番号の桁数も増えたものの,システム全体の性 能ははるかに向上した. 訓練誤差とテスト誤差を用いたソフトウェアに関する推論:基本となるソフトウェアが正 しく実装されているかどうかを判断することは困難な場合が多い.訓練誤差やテスト誤差か らいくつか手がかりを得ることができる.訓練誤差は小さいが,テスト誤差が大きい場合,訓 練手順が正しく機能し,モデルが基本的なアルゴリズム上の理由で過剰適合している可能性 が高い.別の可能性としては,学習後にモデルを保存してからテスト集合の評価のために再 読み込みするときに問題があることか,またはテストデータが訓練データとは異なる形で用 意されていたことが理由で,テスト誤差が正しく測定されないことがある.訓練誤差とテス ト誤差の両方とも大きい場合,ソフトウェアの欠陥であるか,またはモデルが基本的なアルゴ リズム上の理由で過小適合しているかどうかを判断するのは難しい.この場合,次に説明す る追加のテストが必要となる. 小さなデータ集合への適合:訓練集合において誤差が大きい場合,純粋に過小適合によるも のか,それともソフトウェアの不具合によるものかを判断する.通常,小さなモデルでさえ も十分に小さなデータ集合に対して適合できることが保証される.たとえば,事例が 1 つだ けの分類データ集合は,出力層のバイアスを正しく設定するだけで適合させることができる. 通常,1 つの事例に正しくラベル付けする分類器や,高精度で 1 つの事例を再現できる自己符 号化器,あるいはある事例に似ているサンプルを一貫して出力する生成モデルを訓練できな い場合,ソフトウェアの不具合が存在し,訓練集合上での良好な最適化を妨げている.このテ ストは,少数の事例を持つ小さなデータ集合に拡張できる. 逆伝播の微分と数値微分の比較:独自の勾配計算を実装しなければならないソフトウェアフ レームワークを使用している場合,あるいは微分のライブラリに新しい操作を追加して,その
bprop メソッドを定義する必要がある場合,この勾配の式を間違って実装することがエラー の原因となることがよくある.その導関数が正しいことを検証する 1 つの方法は,自動微分 の実装によって計算された微分と有限差分法(finite difference)で計算された微分を比較 してみることである.なぜなら,
f (x + ϵ) − f (x) , ϵ→0 ϵ
f ′ (x) = lim
(11.5)
であるので,有限の小さな ϵ を使えば微分係数を近似できる.
f ′ (x) ≈
f (x + ϵ) − f (x) . ϵ 415
(11.6)
第 11. 実用的な方法論
中心差分(centered difference)を用いて近似の精度を向上させることが可能である.
f (x + 12 ϵ) − f (x − 12 ϵ) f (x) ≈ . ϵ ′
(11.7)
摂動の大きさ ϵ は,摂動が有限精度の数値計算によって過剰に丸められないように,十分大き くしておく必要がある. 通常は,ベクトル値の関数 g : Rm → Rn の勾配またはヤコビ行列をテストしたい.残念な
がら,有限差分法では一度に 1 つしか微分を取ることができない.有限差分法を mn 回実行 して g の偏微分をすべて評価するか,g の入力と出力の両方でランダムな射影を使用する新し い関数にテストを適用するかのいずれかが実行可能である.たとえば,導関数の実装のテス トを f (x) に適用できる.ただし f (x) = uT g(vx) であり,u と v は無作為に選択されたベク トルである.f ′ (x) を正しく計算するには,g に対して正しく逆伝播できる必要があるが,f には 1 つの入力と 1 つの出力しかないため,有限差分法を使うと効率的に計算できる.通常 は,このテストを u と v の複数の値に対して繰り返すことで,ランダムな投影と直交すると いう間違いを,テストで見落としてしまう可能性を減らすことを推奨する. 複素数の数値計算が利用できる場合,関数への入力として複素数を使用すると,勾配の数値 的な推定が非常に効率的に実行できる (Squire and Trapp, 1998).この方法は,以下の観察 に基づいている.
f (x + iϵ) = f (x) + iϵf ′ (x) + O(ϵ2 ) real(f (x + iϵ)) = f (x) + O(ϵ2 ), ただし i =
√
imag(
f (x + iϵ) ) = f ′ (x) + O(ϵ2 ), ϵ
(11.8) (11.9)
−1 である.前述の実数値の場合とは異なり,異なる点の f の値の差を取るので
相殺効果はない.これによって,たとえば ϵ = 10−150 のように,ϵ に小さな値を使うことが 可能で,あらゆる実用的な目的において,誤差 O(ϵ2 ) は微小な大きさになる.
活性化と勾配のヒストグラムの監視:多数の訓練反復(大体 1 エポック分)で収集された ニューラルネットワークの活性化と勾配の統計量を可視化することは,有益となる場合が多 い.隠れユニットの活性化の前の値から,ユニットが飽和しているか,あるいはどのくらいの 頻度で飽和しているかが分かる.たとえば正規化器では,どのくらいの頻度で活性化がオフ になるだろうか.常にオフになっているユニットはあるだろうか.双曲線正接ユニットの場 合,活性化の前の値の絶対値の平均から,そのユニットがどの程度飽和しているかが分かる. 伝搬された勾配が急速に増大または消失する深いネットワークでは,最適化が阻害される可 能性がある.Bottou (2015) で示唆されているように,ミニバッチに対するパラメータの更新 の大きさとして,パラメータの大きさの 50 パーセントまたは 0.001 パーセント(パラメータ 416
第 11. 実用的な方法論
の動きがあまりにも遅くなる)ではなく,1 パーセント程度を表現させたい.良好な速さで動 いているパラメータ群もあれば,立ち往生しているパラメータ群もあるという状況かもしれ ない.データが(自然言語のように)スパースな場合,パラメータの中にはほとんど更新され ないものがあり,この点については,パラメータの変化を監視する際に注意が必要である. 最後に,深層学習アルゴリズムの多くは,各ステップで生成される結果について何らかの保 証を提供する.たとえば,III部では,最適化問題に代数的解法を適用して機能する近似推論 アルゴリズムをいくつか紹介する.一般的に,これらはそれぞれの保証をテストしてデバッ グできる.最適化アルゴリズムの中には,アルゴリズムの 1 ステップ後に目的関数が決して 増加しないことや,アルゴリズムの各ステップ後に変数の部分集合に関する勾配がゼロにな ること,収束のときにすべての変数に関する勾配はゼロになることなどを保証するものがあ る.通常,丸め誤差の影響で,上記の条件はデジタルコンピュータでは厳密には成り立たない ため,デバッグテストには何らかの許容誤差パラメータを含める必要がある.
11.6 例:複数桁の数字認識 設計手法を実際に適用する方法を最初から最後まで説明するために,深層学習の要素の設 計という観点から,ストリートビュー転写システムについて簡単に説明する.当然ながら,ス トリートビューカーやデータベース基盤など,システム全体の中の他の多くの要素が最も重 要であった.機械学習タスクの観点から見ると,工程はデータ収集から始まった.自動車で 生データを収集し,ラベルは手動で付けられた.他の機械学習の手法を使って転記前にアド レス番号を検出することを含め,転記タスクの実行前に膨大なデータ集合の整備が行われた. この転写プロジェクトは,評価指標とその指標の望ましい値を選択することから始まった. 重要な一般原則は,評価指標の選択をプロジェクトのビジネス目標に合わせることである.地 図は精度が高い場合にのみ有用なので,高い正解率をこのプロジェクトの要件として設定す ることが重要であった.具体的には,目標は人間と同レベルの 98 パーセントの正解率を得る ことであった.このレベルの正解率は,必ずしも実現可能なわけではない.そこで,この正解 率に到達するために,ストリートビュー転写システムでは網羅率を犠牲にした.したがって, 正解率を 98 パーセントに維持した状態で網羅率を最適化することが,プロジェクトでの主要 な評価指標となった.畳み込みニューラルネットワークが改善されると,それ以下ではネッ トワークが入力の転記を拒否する確信度の閾値を下げることが可能となり,最終的には目標 だった 95 パーセントの網羅率を上回った. 定量的な目標を選択した後で,推奨される方法論の次のステップは,合理的なベースライ 417
第 11. 実用的な方法論
ンシステムを迅速に確立することである.コンピュータビジョンタスクの場合,これは正規 化線形ユニットを持つ畳み込みニューラルネットワークを意味する.転写プロジェクトはこ のようなモデルから始まった.当時,畳み込みニューラルネットワークに予測の系列を出力 させるのは一般的ではなかった.可能な限り単純なベースラインから始めるために,モデル の出力層の最初の実装は,n 個のソフトマックスユニットで構成され,n 個の文字列を予測し た.このソフトマックスユニットは,分類タスクの場合とまったく同じように訓練され,各ソ フトマックスユニットは独立に訓練された. 推奨される方法論は,ベースラインを繰り返し改善し,変更のたびに改善がみられるかどう かをテストすることである.ストリートビュー転記システムに対する最初の変更は,網羅率 という指標とデータ構造についての理論的理解に基づいていた.具体的には,ネットワーク は,ある閾値 t に対して出力系列の確率が p(y | x) < t となる場合は必ず,入力 x の分類を 拒否する.当初,p(y | x) の定義はアドホックなもので,単純にソフトマックス出力をすべて 掛け合わせたものであった.このことが,原則に則った対数尤度を実際に計算した,特殊な出 力層とコスト関数の開発に繋がった.このアプローチにより,事例を拒否するメカニズムは はるかに効率的に機能するようになった. この時点では,網羅率はまだ 90 パーセントを下回っていたが,このアプローチに理論上の 明らかな問題はなくなっていた.この場合,本書の方法論では,次に訓練集合とテスト集合の 性能を測り,問題が過小適合か過剰適合かを判断することを推奨する.実際の例では,訓練集 合とテスト集合の誤差はほぼ同じであった.実際,このプロジェクトが非常に順調に進行し た大きな理由は,数千万件にも上るラベルあり事例のデータ集合が利用可能だったからであ る.訓練集合とテスト集合の誤差が非常に近かったため,問題は過小適合しているか,あるい は訓練データにあると考えられた.本書で推奨するデバッグ戦略の 1 つは,モデルの最悪の 誤差を可視化することである.この場合は,モデルが最も高い信頼度を与えた不正確な訓練 集合の転写を視覚化した.それによって,入力画像があまりに厳密に切り出され,その操作に よって番地の桁の一部が削除された事例から訓練集合がほぼ構成されていたことが判明した. たとえば,番地が「1849」の写真があまりに厳密に切り出されたため,「849」だけが残って いた.この問題は,切り出す領域を決定するアドレス番号検出システムの正解率を改善する ことにして,それに数週間を費やせば解決できたかもしれない.代わりに,プロジェクトチー ムははるかに実用的な判断を下し,アドレス番号検出システムが予測するよりも幅広くなる ように,単純にシステムで切り出し領域の幅を広げることにした.この変更だけで,転写シス テムの網羅率が 10 パーセント向上した. 最後に,ハイパーパラメータの調整によって,最後の数パーセント分の性能が向上した.こ こでは主として,計算コストの制約を維持しながらモデルを大きくする方法を取った.訓練 418
第 11. 実用的な方法論
集合とテスト集合の誤差はほぼ同じままだったので,性能不足は過小適合が原因であると同 時に,データ集合自体にもいくつか問題が残っていたことは常に明らかだった. 全体として転写プロジェクトは大きな成功を収め,人手で実施するよりも迅速かつ低コス トで何億もの住所の転写が可能になった.本章で説明した設計の原則によって,同様の成功 が他にも数多く生まれることを願っている.
419