ドロップアウト

keep_prob = tf.placeholder(tf.float32)
h_fc1_drop = tf.nn.dropout(h_fc1, keep_prob)

機械学習の問題では、過学習(overfitting)が問題になることが多くある。 過学習とは、主にパラメータを大量に持ち、表現力が高いこと、訓練データが少ないことによって引き起こされ、訓練データだけに適応し過ぎてしまい、訓練データに含まれない他のデータにはうまく対応できない状態を言う。 機械学習で目指すことは、汎化性能であり、訓練データには含まれないまだ見ぬデータであっても、正しく識別できるモデルが望まれる。複雑で表現力の高いモデルを作ることは可能であるが、その分、過学習を抑制するテクニックが必要となってくる。

そこで、過学習を抑制する手法の1つとしてドロップアウト(dropout)が挙げられる。 ニューロンをランダムに消去しながら学習する手法である。 消去されたニューロンは、信号の伝達が行われなくなる。なお、訓練時には、データが流れるたびに、消去するニューロンをランダムに選択する。 そして、テスト時には全てのニューロンの信号を伝達するが、各ニューロンの出力に対して、訓練時に消去した割合を乗算して出力する[5]。



Deguchi Lab. 2017年3月6日