はじめに ディープラーニングにおけるDropoutは単純かつ強力な正則化手法として広く使われていますが、RNNの時間方向に適用するとノイズが蓄積してうまく学習できないため、入出力層にのみ適用するのが常識とされてきました[Zaremba 2014]1。しかし最近の研究でDropoutをベイズ的に解釈することでRNNの時間方向にもDropoutを適用でき、言語モデルのタスクで単一モデルとして最高精度を達成することが示されました[Gal 2016]2 今回は変分Dropoutと呼ばれるこのモデルをTensorFlowで実装したので紹介したいと思います。 Dropoutのベイズ的解釈とRNNへの適用 ニューラルネットワークのパラメータの事後分布を「学習する通常のパラメータ」と「学習しないパラメータ=0」の2つを中心とする混合ガウス分布で近似することによりDropoutと同様のアルゴリズムが得られる
![RNNにおけるDropoutの適用について - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/64e8514158ec77f807091bef12dde77e1bfa9f1b/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Fadvent-calendar-ogp-background-7940cd1c8db80a7ec40711d90f43539e.jpg%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9Uk5OJUUzJTgxJUFCJUUzJTgxJThBJUUzJTgxJTkxJUUzJTgyJThCRHJvcG91dCVFMyU4MSVBRSVFOSU4MSVBOSVFNyU5NCVBOCVFMyU4MSVBQiVFMyU4MSVBNCVFMyU4MSU4NCVFMyU4MSVBNiZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZ0eHQtY29sb3I9JTIzM0EzQzNDJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnM9YTc1MWY5YmRjODAzZGZiMzViZTM1NjhmYWQ3M2MzYTc%26mark-x%3D120%26mark-y%3D96%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9OTcyJnR4dD0lNDB5b2hfb2t1bm8mdHh0LWNvbG9yPSUyMzNBM0MzQyZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT0zNiZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZzPTBkY2JkYjRiZmI3ZjUwNjBiNWRjZGU5YTk1NzdhMGM2%26blend-x%3D120%26blend-y%3D500%26blend-mode%3Dnormal%26s%3Dcddf314693dd2c1ccc9f6be7e86d478d)