Lastig

初級Web系エンジニアの技術系とかもろもろのブログ

DeepLearning fastai #Lesson3 OVERFITTING ②後半(lesson2-image_models.ipynb) 感想とか

Lesson3の動画を見た感想とか。前回の更新からちょっと間が空いてしまった。
これまたLesson3で取り上げているのはlesson2-image_models.ipynbなのでちょっと変なタイトルになっている。
lesson3-rossman.ipynbは講義の最後20分間ぐらいなので、別記事で取り上げる。

Lesson3のテーマ



・画像から特徴を取り出す計算の解説 (※Excel)
・Multi-Label Classification (複数ラベル分類)
・2種類のloss関数の特徴 (ソフトマックス関数, シグモイド関数)

DL用語


用語 意味
CNN convolutional neural networks, 畳み込みニューラルネットワーク

英単語


英語 意味 再生時間
side on photos 並んだ画像 -
primary 惑星? -
vertical flips 上下反転 -
vertical orientation 垂直方向 -
replicate 複製する -
spit out 吐き出す 1:14:26
anthropomorphize 擬人化する 1:22:25
enumeration 目録、一覧表 1:24:45
dihedral group 2面体群 1:24:52
leverage 活用する 1:27:26
logistic regression ロジスティック回帰 。。。ってなに?(*´Д`) 1:47らへん
artisanal 職人の、技工の 1:54:05
tributary 支流の 1:54:19
terminology 専門用語 2:01:01

primaryって一番重要とかそんなイメージしかなかったぜ。

fastai関数/変数とか


関数/変数 使用例 意味 再生時間
bn_freeze learn.bn_freeze(true) unfreeze後にこれをしないと、バッチが正規化されてしまうらしい。詳しくは後の講義で教えてくれるとさ。 -
denorm - denormalizationの略、非正規化。 -
data.val_dl x,y = next(iter(data.val_dl)) Validation DataSet Loader dlはData Loaderの意味。Deep Learningではない 1:25:52

活性化関数 (ソフトマックス, エントロピー)



※conv-example.xlsxの内容は長くなりそうなので、別記事にまとめることにした。

f:id:lazycat99:20190127173224p:plain

ソフトマックス関数

・各値は0~1の値で返し、各値の合計が1になる。
→なので結果が確率として扱える
・飛び出た値を1に近い値として抽出できる。
理論上必ずしも必要ではないが、使うと処理を単純にできる有能な関数。

ただし複数のラベルをつける(multi-label classification)という処理には向かない。
なぜなら、複数のラベルに一致するなら、実際の値(actual)の合計は2以上になる。
だが、softmax関数は合計を1で返すので当然一致しない。

f:id:lazycat99:20190127182714p:plain

ということでLesson2のノートブックの話につながる。

Multi-Label Classification



以下Multi-Label Classificationを複数ラベル分類と僕は名づける。

複数ラベル分類では、今まで習ってきたフォルダごとに画像を分けるというやりかたはできない。一枚の画像に複数のラベルがつくと、どのフォルダに画像を分類すればいいかわからないから。なのでCSVにラベルをつける。

こんな感じ。
f:id:lazycat99:20190127180102p:plain
hot encodeされたacutual valueとsoftmax関数の返す値を比較して、どれくらい差があるか見る
PyTorchの場合は別のloss関数が使われるが、fastai上は隠されているので気にしなくていい。

Metrics / F Beta

負の値を許容するかどうか設定する話。。。なのか?
metricsはカスタマイズできることは抑えておくようにといっている。
ここはまだよくわかってない。
f:id:lazycat99:20190127182005p:plain

シグモイド関数

シグモイド関数は以下の式だ。
fn(x) = e^x / (1 + e^x)
なので0 ~ 1の値をとる。
f:id:lazycat99:20190127183920p:plain
ソフトマックス関数との違いは、

関数 特徴
ソフトマックス 個々の値の合計が1になる
シグモイド 個々の値が0~1の値をとる。もちろん合計は1より大きくなる場合もある

こいつを使ってやれば、複数ラベル付けが可能になる。

ハマったところ



そのまま実行するとtest-jpgがないと言われ、動かない。うそでしょ
f:id:lazycat99:20190102225143p:plain
error1

フォーラムをググると下記のコードを上から4番目のセルに追加すると直るらしいので、追加する。これで動く。
!ln -s /datasets/kaggle/planet-understanding-the-amazon-from-space/test-jpg {PATH}

f:id:lazycat99:20190102231005p:plain

感想

画像を数値として扱うロジックと、ソフトマックス関数とシグモイド関数の特徴を学んだのが収穫。
生徒の質問はまだ半分ぐらいしかわからない。
講義の内容は4分の1ぐらいしかわかってないけど、面白くなってきている。
記事書きながら講義受けるのもちょっと慣れてきた気がする。

講義に関するリンク



・講義
https://course.fast.ai/lessons/lesson3.htmlcourse.fast.ai
Youtube
www.youtube.com
・フォーラム
forums.fast.ai

・講義中の参考ページ http://neuralnetworksanddeeplearning.com/chap4 (1:13:29)
neuralnetworksanddeeplearning.com