ディープラーニングについてディープにラーニング。

思いっきり、自分が学んだことのアウトプットしていきますが、何分初心者。もし何かアドバイス等頂けましたら幸いです!

1-2 Pytorchのディープラーニング実装の流れ

f:id:kawam0t0:20200109115307p:plain

数学も学んだ。
ディープラーニングの知識についても少しはついた。
いよいよ、
パイトーチによる、ディープラーニングからSSDの学習を始めていく。

まずはアウトプット。

パイトーチの学習の流れ

前処理、後処理、モデルの入出力確認

Datasetの作成

DataLoaderの作成

ネットワークモデルの作成

順伝播の定義

損失関数の定義

最適化関数の定義

学習・検証の実施

テストデータで推論



それぞれ説明するけど、前処理、後処理、入出力はいいだろう。

Datasetについて

イメージはしづらいが、入力するデータとラベルがペア(辞書形式?)になったもの。
学習用、検証用、テスト用とそれぞれのデータを持ってる。
ただ、まさかのそれぞれ1組ずつで返すモジュールらしいっす。

DataLoaderについて

さっき話したDatasetからデータを取り出しやすくする役割のやつ。
ていってもわかりにくい
つまりは1組で返してくるデータをバッチサイズごとに束にして、くれる機能のやつ。
更にそのミニバッチ内でシャッフルしてくれたり、Tensor型にしてくれる。

ネットワークモデルの作成

これはいいよね。
独自モデル?学習済みモデル?学習済みモデルの変更モデル?

順伝播の定義

単純なモデルの場合は前から後ろのレイヤーへって感じだが、
ディープラーニングの場合はそうはいかない。
複雑な順伝播もあるので、しっかりと定義を行う

損失関数の定義(逆伝播)

今までは単純に前から後ろへと伝播させていく流れだったが、
この損失関数の定義によって、
教師データと出力データの誤差(=どれだけ変わったのか?どれだけ勾配があったのか?)を算出する


最適化関数の定義

損失関数で算出された値をもとに各パラメータの値を徐々に小さくしていく関数を定義する
それを学習の目的はそもそも、この損失関数の値を小さくしていくことにあるからだ。


それで、学習をさせていき、
推論、学習、テストを行って、精度を確認する。
過学習が起こっている場合は、精度が一定で止まってしまう。それを止めるのをアーリーストッピングっていうらしい。