前の節では、AIが霧の山を下るときに使うさまざまな装備――つまり最適化アルゴリズムの進化を見てきました。
けれど、装備がよくても、それだけで必ずうまく山を下れるわけではありません。
たとえば登山でも、
・靴は軽いほうがいいのか
・歩幅は大きいほうがいいのか
・どのタイミングで休むべきか
・荷物はどれくらい持つべきか
といった「設定」が大切ですよね。
AIの学習にも、これとよく似たことがあります。
その設定のことを、ハイパーパラメータ(hyperparameter)と呼びます。
ハイパーパラメータとは、学習を始める前に、人間が決めておく設定のことです。
たとえば、
・学習率:一歩の大きさをどれくらいにするか
・ミニバッチサイズ:一度に何件のデータを見るか
・エポック数:どれくらい繰り返し学習するか
・正則化の強さ:どれくらい複雑さを抑えるか
などがハイパーパラメータです。
ここで大切なのは、ハイパーパラメータは、AIが学習の中で自動的に決めるものではない、ということです。
AIは山を下る旅人だけれど、その旅にどんな靴を履かせ、どれくらいの歩幅で進ませるかは、最初に人間が決めています。それがハイパーパラメータです。
学習率
ハイパーパラメータの中でも特に重要なのが、前の章でも出てきた 学習率(learning rate)です。
学習率は、AIが誤差を減らすために進むときの、一歩の大きさを決めます。
霧の山で考えてみましょう。
歩幅が小さすぎると、旅人はとても慎重に進みます。
安全かもしれませんが、なかなか目的地にたどり着けません。
逆に歩幅が大きすぎると、谷底を通り越してしまったり、右へ左へと行き過ぎてしまったりします。
AIでも同じです。
学習率が小さすぎる→ 学習が遅い
学習率が大きすぎる→ 学習が不安定になる
つまり、ハイパーパラメータとは山の旅の歩き方そのものを決める設定とも言えます。
早期終了
AIの学習では、長く学習すればするほど良いとは限りません。
山の旅でも、「もっと下へ行こう、もっと下へ」と進み続けるうちに、かえって地形の細かな揺らぎに引っかかってしまうことがあります。
学習でも同じように、訓練データに合わせすぎてしまうと、新しいデータへの対応力が落ちることがあります。これが過学習です。
そこで使われるのが 早期終了(early stopping) です。
早期終了とは、学習をあえて途中で止める方法です。
つまり、「もうこのあたりで十分よくなってきた。これ以上進むと、かえって学習しすぎるかもしれない」と判断して、ちょうどよいところで学習を終える。
これは、山の旅で「これ以上進むと道を見失いそうだから、ここで止まろう」と決めるようなものです。
一見すると「途中で止めるなんて、もったいない」と感じるかもしれません。
でも実際には、止める勇気がモデルを良くすることがあるのです。
グリッドサーチ
では、ハイパーパラメータはどうやって決めればよいのでしょうか。
その代表的な方法の一つが、グリッドサーチ(grid search)です。
これは、あらかじめいくつかの候補を決めておいて、すべての組み合わせを試す方法です。
たとえば、
・学習率:0.1、0.01、0.001
・ミニバッチサイズ:16、32、64
のように候補があれば、それらをすべて組み合わせて試してみます。
山の旅で言えば、「歩幅は3種類、靴は3種類、荷物の重さは3種類ある。よし、全部の組み合わせを試してみよう」という方法です。つまり、この例では、全部で27通りを試すことになります。
グリッドサーチの良いところは、系統的に漏れなく調べられることです。
ただし、候補が増えると、試す組み合わせが一気に増えてしまいます。
ていねいだけれど、時間がかかる方法でもあるのです。
ランダムサーチ
もう一つよく使われるのが、ランダムサーチ(random search) です。
これは、候補の中から、ランダムに組み合わせを選んで試す方法です。
一見すると、少し雑に見えるかもしれません。
でも山の旅で考えると、必ずしも地図のマス目を端から順に全部見るより、「よさそうな場所をいくつか試す」ほうが効率がよいこともあります。
実際、ハイパーパラメータの探索では、すべての組み合わせをきっちり試すよりも、ランダムに選んだほうが、少ない試行回数で良い設定に出会えることがあります。
つまり、
・グリッドサーチ→ まじめに全部見る
・ランダムサーチ→ 広く散らばるように試す
という違いがあります。
二重降下現象
ここで少し不思議な現象も見ておきましょう。 二重降下現象(double descent) です。
ふつうは、モデルを複雑にしすぎると過学習が起こり、性能は悪くなると考えられます。
つまり、
・単純すぎる→ うまく学べない
・ほどよい複雑さ→ ちょうどよい
・複雑すぎる→ 過学習して悪くなる
というイメージです。
ところが近年、モデルをさらに大きくしていくと、一度悪くなった性能が、もう一度よくなることがあると知られるようになりました。
これが二重降下現象です。
山の物語で言えば、下っている途中で一度ぬかるみにはまり、「もうだめかもしれない」と思ったあと、さらに先へ進むと、思いがけず道がひらけるようなものです。
これは直感に反する現象なので、機械学習の学び手にとっては少し不思議に感じられます。
けれど、それだけモデルの複雑さと性能の関係は単純ではないということでもあります。
ノーフリーランチの定理
最適化やハイパーパラメータの話をしていると、ついこう思いたくなります。
「結局、いちばん強い方法はどれなの?」
「Adamを使えば安心?」
「この設定が正解?」
でも、ここで大事になるのが、ノーフリーランチの定理(No Free Lunch Theorem) です。
名前は少しユーモラスですが、意味はとても本質的です。
ノーフリーランチの定理は、ざっくり言うと、どんな問題にも万能な最適化手法は存在しないという考え方です。
つまり、ある問題でうまくいく方法が、別の問題でも必ずうまくいくとは限らない。
山にたとえるなら、
・岩場に強い靴
・泥道に強い靴
・雪道に強い靴
は違うかもしれません。
どんな地形にも完璧に対応する「最強の一足」はありません。
AIの学習も同じです。
だからこそ、
・問題に応じて方法を選ぶ
・試してみる
・調整する
・比べる
という姿勢が大切になります。
まとめ
ハイパーパラメータ
→ 学習を始める前に人間が決める設定
学習率
→ 一歩の大きさ
早期終了
→ 学習しすぎる前に、ちょうどよいところで止める方法
グリッドサーチ
→ 候補の組み合わせを全部試す方法
ランダムサーチ
→ 候補をランダムに選んで試す方法
二重降下現象
→ モデルを複雑にすると、一度悪くなった性能が再びよくなることがある現象
ノーフリーランチの定理
→ どんな問題にも万能な方法はない、という考え方
next ▶ 全結合層とは何か