11章深層ニューラルネットワークの訓練
10章では、人工ニューラルネットワークの初歩を説明し、最初の深層ニューラルネットワークを訓練した。しかし、作ったのは隠れ層が2つだけというごく浅いDNNだった。高解像度画像の数百種の物体タイプを検出するといった複雑な問題に挑戦しなければならないときにはどうすればよいのだろうか。おそらく10層以上で、各層が数百ものニューロンを抱えており、それらが数十万もの接続でつながっているようなはるかに複雑なDNNを訓練しなければならないだろう。これは簡単な話ではない。表に出てくる問題の一部を挙げてみよう。
- 勾配消失(vanishing gradient)問題(または、それと関連する勾配爆発:exploding gradient問題)に直面する。訓練中にDNNを逆にたどっていくと、勾配がどんどん小さくなったり、逆にどんどん大きくなったりすることである。どちらの問題が起きても、下位層の訓練が難しくなる。
- ネットワークが大規模なのに十分な訓練データがない。あるいは、ラベルを付けるためにコストがかかりすぎる。
- 訓練に極端に時間がかかる。
- 数百万ものパラメータを持つモデルは、訓練セットを過学習するリスクが高い。特に、訓練インスタンスの数が不十分だったり、ノイズが多かったりするときにはリスクが高くなる。
この章では、これらの問題を順に取り上げていき、解決方法を示す。まず、勾配消失/爆発問題を掘り下げ、よく使われている解決方法をいくつか紹介する。次に、ラベル付きデータがあまりないときでも複雑なタスクに挑戦しやすくする転移学習と、教師なし事前学習を取り上げる。そして、大規模なモデルの訓練を大幅にスピードアップさせるさまざまなオプティマイザについて学ぶ。最後に、大規模なニューラルネットワークでよく使われている正則化テクニックをいくつか見ていく。 ...
Get scikit-learn、Keras、TensorFlowによる実践機械学習 第2版 now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.