大規模なサイズのデータセットでニューラルネットワークをトレーニングする方法は?
-
16-10-2019 - |
質問
入力ディメンション46のデータセットサイズは〜500000です。Pybrainを使用してネットワークをトレーニングしようとしていますが、データセット全体のトレーニングは非常に遅いです。 50000データポイントのバッチを使用して、各バッチにはトレーニングに2時間以上かかります。
トレーニングがより速くなるように、ネットワーク設計を最適化するという注意事項は何ですか?
解決
トレーニング速度に影響を与えるもののいくつかは次のとおりです。
- ネットワークの重み数
- CPUの速度
- 使用しているパッケージ(主に作業中のエンジン、ピラーンでこれはシーノです)
- すべてのデータがメモリに適合するか、バッチの合間にディスクから読んでいる場合
ネットワーク設計に関しては、本当にできることは、ネットワークをより浅くして、ウェイト数を減らすことです。エポックの数を減らすために、残留接続を追加するなどの他のオプションがあるかもしれませんが、それは1エポックのトレーニング時間を短縮することはありません。
詳細情報がなければ、ボトルネックがどこにあるかは不明ですが、1つのエポックで20時間は少し高いようです。あなたが得ることができる最も簡単で最大の改善は、良いGPUを使用することです。これは、Theanoの上に構築されているため、Pylearnを使用する可能性があります。
他のヒント
データセットの根底にある構造を把握しようとするデータセット分析(主成分分析など)を使用します。おそらく、あまり多くの情報を失うことなく、次元を減らすことができます。
CPUでもバッチの2時間が長すぎます。レイヤーはいくつありますか?あなたは何人の中性子を持っていますか?単一の層を試しましたか?モデルの複雑さを減らすようにしてください。
計算能力の下限を取得するために、ソフトマックス回帰をトレーニングすることをお勧めします。 SoftMax回帰でもマシンが苦労している場合は、ハードウェアをアップグレードする必要があります。