【機械学習】モデルに最適な乱数シードを選んで性能を上げる

機械学習

Yoav Goldberg氏原著の訳本『自然言語処理のための深層学習』を一通り読みました。
難しくて理解できない箇所もありましたが、自然言語処理×ディープラーニングの話が網羅的に学べてよかったです。

印象に残った箇所について、今後何回かにわたって備忘録として残しておきたいと思います。
以下はP.67の「リスタート」に関してです。


ニューラルネットワーク(機械学習モデル)あるあるとして、ランダムに初期化する重みなどの初期値によってモデルの性能が異なることが挙げられます。

このような状況についてですが、本書によると

計算資源に余裕がある場合は、訓練過程をそれぞれ異なる無作為の初期値で複数回実施し、開発セットにおいて最も良い結果を示すものを選択することが望ましい。

だそうです。
ちなみに、このような手法をランダムリスタート(random restart)と呼ぶとのこと。

実験などでモデルを実装する際には、再現性の為に疑似乱数生成のseedを固定してランダム値を初期化するかと思います。
(解釈に自信が無いですが)この説明に従うなら、色々なseedで実験してみて、開発セットで一番良い結果になる初期値を与えるseedを使う、つまりseedを最適化するのが望ましいということになります。

個人的には、seed最適化について絶対にダメだとは思いませんが、もしそれで性能が大きく変わるならば気持ちの良いものではありませんし、モデルを見直します。

とはいえ、何かしらのseedを選ぶ必要はありますし、損失関数の形がどうなっているか分からない状況で大域的最適解を求めようとするのだから、初期値に影響するランダムシードもまた広義のハイパーパラメータだとも考えられるでしょう。ここら辺はモヤモヤするところです。

もし、ここら辺の理論的な根拠をご存知の方がいらっしゃったら、ぜひご教示頂きたいです。

自然言語処理におけるニューラルネットワーク技術を「ニューラルネットワークまずありき」ではなく,これまでの様々な方法論と比較し,それらとの位置関係を丁寧に説明している。従来の機械学習技術から説き起こして,ニューラルネットワーク技術の利点や特徴を明らかにしながら,その導入を行い,言語処理の基盤技術となったニューラルネットワークによる言語モデルと単語埋め込み(ニューラルネットワークを用いた単語の意味表現)について,その背景や応用を含めてわかりやすく説明している。

コメント