AIで画像認識をしてみよう
- 2. All Rights Reserved, Copyright (C) JSP CO., LTD. 2019 1
本日のアジェンダ
1. 深層学習のいろは
1. 順伝播と逆伝播
2. ユニットの役割
3. 損失値とロス関数
2. 画像認識
1. 畳み込み層とプーリング層
2. 画像認識の応用『GAN』とは
3. 学習データと深層学習の関係
1. どれくらいのデータが必要なのか?
4. 実習
1. CIFAR100を利用した画像認識
2. AIは社員の顔を見分けられるのか!?
- 3. All Rights Reserved, Copyright (C) JSP CO., LTD. 2019 2
それでは始めていきましょう!…の前に
事前確認:
あなたはどれくらい深層学習を知っていますか?
1. AIってよく聞くけど実は全然何も知らない
2. 畳み込みとか基本的な用語は聞いたことある
3. 仕組みくらいなら説明できる
4. 自分で学習モデルを設計できる
⇒本日の研修は「1.」の方でも理解できるように
説明していく予定です。
- 5. All Rights Reserved, Copyright (C) JSP CO., LTD. 2019 4
順伝播と逆伝播
深層学習はどのように学習していくのでしょうか?
入力層 隠れ層 出力層 答え
①順伝播
③逆伝播
②答え合わせ
深層学習は①順伝播⇒②答え合わせ⇒③逆伝播を何度も繰り返し行い学習します
- 6. All Rights Reserved, Copyright (C) JSP CO., LTD. 2019 5
重みとバイアス
入力層~隠れ層~出力層は
ユニットとエッジによって繋がっています
• 重み (a): 入力 x に掛け算を行う値
• バイアス (b):入力 x に足し算を行う値(閾値)
⇒ y = ax + b
※閾値(バイアス)を超えると発火します
入力x 重みa
を掛け算
閾値b
を超えると
y (発火)
ユニット
エッジ
- 7. All Rights Reserved, Copyright (C) JSP CO., LTD. 2019 6
発火とは??? ~活性化関数~
入力値が閾値を超えると急激に値が上がります
ハイパボリック
タンジェント関数
シグモイド関数 ReLU関数
閾値 閾値
閾値
式にすると…
例)y = ReLU( ax + b )
- 8. All Rights Reserved, Copyright (C) JSP CO., LTD. 2019 7
損失値とロス関数
出力層に出力された値を答え合わせします
⇒どれだけ答えと異なっているか?=損失値
※損失値を求める関数を損失関数と呼びます
• 損失値が大きい=より大きな学習が必要
• 損失値が小さい=学習はそれほど必要ない
逆伝播で
重みとバイアスの
更新を多めに
逆伝播で
重みとバイアスの
更新を少なめに
- 10. All Rights Reserved, Copyright (C) JSP CO., LTD. 2019 9
画像認識のDNN
画像認識では主に2つの層が登場します
畳み込み層
プーリング層
入力
出力
ロシアンブルー
入力層
畳み込み層 プーリング層 全結合層
出力層
活性化関数
- 11. All Rights Reserved, Copyright (C) JSP CO., LTD. 2019 10
畳み込み層
フィルタの値=重みを更新しながら特徴マップを生成します
出力入力
フィルタ 活性化関数入力値 出力値
f
f
f
特徴マップ
- 12. All Rights Reserved, Copyright (C) JSP CO., LTD. 2019 11
プーリング層
入力となる特徴マップの最大値を出力します
(最大値プーリング) ※重みは登場しません
1 1
1 3 3
入力値
出力値
2×2領域での
最大値
出力
入力
- 13. All Rights Reserved, Copyright (C) JSP CO., LTD. 2019 12
(番外編) GANの仕組みとは?
画像認識の応用として画像生成を行うGANがあります
GANの登場人物は以下の二つです
• Generator :乱数から画像を生成する
⇒オレオレ本物画像を永遠に作り続ける
• Discriminator :Generatorが作成した画像と本物画像を見分ける
⇒オレオレ本物画像を偽物だと見分け続ける
GAN = GeneratorとDiscriminatorを交互に学習し続ける
つまりDiscriminatorは画像認識のモデルそのものに近い
⇒基本さえ覚えておくと、その発展形は理解しやすい
- 15. All Rights Reserved, Copyright (C) JSP CO., LTD. 2019 14
学習データが少ないと…?
学習データが少ないと当然ながら学習が進まない
⇒画像が小さければ計算量も少ないためある程度は学習可能
学習データが少ない場合は水増しをする方法もある
ノイズを付与
左右反転
拡大・縮小
⇒ただし、行いすぎると過学習を起こしてしまう
過学習:
同じデータばかりを学習してしまい
学習したデータ以外の正解率が極端に低くなる状態
- 17. All Rights Reserved, Copyright (C) JSP CO., LTD. 2019 16
学習モデルを生成しよう!
下記のデータセットを使用して
最適な学習モデルを生成してみましょう
1. CIFAR100の画像
2. JSP社員の画像
⇒下記の観点でモデルを作り直していきましょう
• 2択から3択にしてみた場合
• 学習データ枚数を変更してみた場合
• バッチサイズを変更すると何が起きるか?