Yoav Goldberg氏原著の訳本『自然言語処理のための深層学習』を一通り読みました。
難しくて理解できない箇所もありましたが、自然言語処理×ディープラーニングの話が網羅的に学べてよかったです。
印象に残った箇所について、今後何回かにわたって備忘録として残しておきたいと思います。
以下はP.67の「リスタート」に関してです。
ニューラルネットワーク(機械学習モデル)あるあるとして、ランダムに初期化する重みなどの初期値によってモデルの性能が異なることが挙げられます。
このような状況についてですが、本書によると
計算資源に余裕がある場合は、訓練過程をそれぞれ異なる無作為の初期値で複数回実施し、開発セットにおいて最も良い結果を示すものを選択することが望ましい。
だそうです。
ちなみに、このような手法をランダムリスタート(random restart)と呼ぶとのこと。
実験などでモデルを実装する際には、再現性の為に疑似乱数生成のseedを固定してランダム値を初期化するかと思います。
(解釈に自信が無いですが)この説明に従うなら、色々なseedで実験してみて、開発セットで一番良い結果になる初期値を与えるseedを使う、つまりseedを最適化するのが望ましいということになります。
個人的には、seed最適化について絶対にダメだとは思いませんが、もしそれで性能が大きく変わるならば気持ちの良いものではありませんし、モデルを見直します。
とはいえ、何かしらのseedを選ぶ必要はありますし、損失関数の形がどうなっているか分からない状況で大域的最適解を求めようとするのだから、初期値に影響するランダムシードもまた広義のハイパーパラメータだとも考えられるでしょう。ここら辺はモヤモヤするところです。
もし、ここら辺の理論的な根拠をご存知の方がいらっしゃったら、ぜひご教示頂きたいです。
コメント