SlideShare a Scribd company logo
1 of 57
DeepLearning 基礎
こんばんは
• 松島弘毅(まつしまひろのり)
• 27歳
• コグニティブ
• 2018年12月入社
• 以前は名古屋のSI企業で電力系
目次
• パーセプトロン
• ニューラルネットワーク
 活性化関数
 損失関数
 重みの更新
• CNN
• ディープラーニング
パーセプトロン
• 複数の入力を受け取り、0か1を出力する。
x1
x2 y1
w1
w2
1
b
0 : x1 × w1 + x2 × w2 + b ≦ 0
1 : x1 × w1 + x2 × w2 + b > 0
ノード
(ニューロ
ン)
重み:入力信号の重要度
バイアス:ニューロンの発火のしやすさ(閾値)
→ニューロンの発火
パーセプトロン
• 論理回路の実装
x1 x2 y
AND OR NAND XOR
0 0 0 0 1 0
0 1 0 1 1 1
1 0 0 1 1 1
1 1 1 1 0 0
ANDゲートの実装
ORゲートの実装
NANDゲートの実装
XORゲートの実装
• 単層パーセプトロンは線形表現しかできないため、XORゲー
トの実装が不可能。
x1
x2
x1
x2
XORゲートの実装
層を重ねる
• 2層のパーセプトロンを用いることで非線形を表現できる
→つまり層を重ねることでより柔軟な表現が可能
x1
x2
s1
1
s2 y1
中間層(隠れ層)
1
入力層 出力層
パーセプトロンまとめ
• パーセプトロンは1つの分類器といえる。
 AND分類器は、0,0のときは0、1,1のときは1というように分類する。
• そのためにパーセプトロンでは、「重み」と「バイアス」
をパラメータとして設定する。
• 単層のパーセプトロンでは線形表現しかできないのに対し、
多層のパーセプトロンでは非線形を表現できる。
ニューラルネットワーク
• パーセプトロンはパラメータ(重みとバイアス)を人の手
で設定する必要があった。
• 適切なパラメータを自動で学習できるというのがニューラ
ルネットワークの特徴。
• ニューラルネットワークでは、活性化関数にステップ関数
ではなく別の関数を使用する。
活性化関数
• 活性化関数とは?
 入力信号とパラメータの総和を出力信号に変換する関数
<ANDゲートのソースコード>
この部分!!
活性化関数
• 図で表すと
x1
x2
w1
w2
1
b
a = x1 * w1 + x2 * w2 + b
y1 = h(a)
a y1
h()
h(): 活性化関数
活性化関数
• ステップ関数
0を境にして出力が切り替わる関数
0か1を返す
x
h(x)
h(x)=
0 (x ≦ 0)
1 (x > 0)
活性化関数
• シグモイド関数
0~1の実数を返す
ℎ 𝑥 =
1
1+exp −𝑥
x
h(x)
活性化関数
• ReLU関数
入力が0を超えていればそのまま出力し、0以下なら0を出力する
h(x)=
0 (x ≦ 0)
x (x > 0)
x
h(x)
出力層で使われる活性化関数
• ソフトマックス関数
多クラス分類を行う際の出力層の活性化関数として利用される。
出力層が全部でn個あるとして、k番目の出力𝑦𝑘を求める計算式
𝑦𝑘 =
exp 𝑎𝑘
𝑖=1
𝑛
exp 𝑎𝑖
出力結果に対してソフトマックス関数を適用すると、そのクラスであ
る確率に変換される。
確率なので0から1の実数となり、総和は1となる
例:[0.3, 2,9, 4.0] → [0.03, 0.24, 0.73]
ニューラルネットワークの学習
• 手書き数字画像(MNIST)の分類を行う
0~9の数字画像
訓練画像:60000枚
テスト画像:10000枚
28*28ピクセルのグレー画像
各ピクセルは0~255の値をとる
ニューラルネットワークの学習
• 学習の目的
誤差を最小化するパラメータ(最適な重みとバイアス)を求
めることが目的。
• 学習の手順
 訓練データを読み込み推論する
 推論した結果と正解データの誤差を損失関数で求める
 損失関数のパラメータについて微分した値(勾配)でパラメータを更
新する
ニューラルネットワークの学習
• 学習手順の図
X1
X2
X3
・
W1
W2
W3
・
入力 重み
θ
活性化関数
(softmax)
出力 y 正解データ t
1: 0
2: 0.05
3: 0.2
4: 0
5: 0.75
6: 0
…
誤差
損失関数
重みを更新
1: 0
2: 0
3: 0
4: 0
5: 1
6: 0
…
損失関数
• 2乗和誤差
𝐸 =
1
2
𝑘
𝑦𝑘 − 𝑡𝑘
2
𝑦𝑘: ニューラルネットワークの出力
𝑡𝑘: 正解データ
k: データの次元数(出力層の数)
損失関数
• 2乗和誤差 実装例
𝐸 =
1
2
𝑘
𝑦𝑘 − 𝑡𝑘
2
損失関数
• 交差エントロピー誤差
𝐸 = −
𝑘
𝑡𝑘 log 𝑦𝑘
𝑦𝑘: ニューラルネットワークの出力
𝑡𝑘: 正解データ
k: データの次元数(出力層の数)
自然対数𝑦 = log 𝑥のグラフ
損失関数
• 交差エントロピー 実装例
𝐸 = −
𝑘
𝑡𝑘 log 𝑦𝑘
損失関数の使い分け
• 回帰問題の場合(出力値が連続値)
 2乗和誤差を使用
• 分類問題の場合(出力値が離散値)
 交差エントロピー誤差を使用
 2乗和誤差を使ってもよいが、交差エントロピーのほうが学習の進み
が速い
• 今回は分類問題なので交差エントロピーを使用
重みの更新
• 勾配降下法
パラメータ(重み,バイアス)に関する損失関数の微分値(勾
配)を算出することで、損失関数が最小となるパラメータを
求めることができる。
求めた勾配の方向に進むことで目的関数の値は減り、その先
でも同様に勾配を求め、またその勾配方向へ進む、というよ
うに繰り返し勾配を求めて損失関数の値を徐々に減らしてい
くのが勾配法。
損失関数の最小値を探す場合を勾配降下法、最大値を探す場
合を勾配上昇法と呼ぶが、ニューラルネットワークでは基本
的に勾配降下法を使う。
勾配降下法
重みwを変化させた際の損失関数Lの値を表した図
ここを目指す!
勾配降下法
例として、w=4だったとする。
すると、w=4における
Lの接線の傾き
𝜕𝐿
𝜕𝑤
が求まる。
この接線の傾きのことを
勾配と呼ぶ。
ここでは仮に、
w=4における
𝜕𝐿
𝜕𝑤
が5であったとする。
勾配降下法
勾配とは、wを増加させた際に
Lが増加する方向を意味している。
今はLを小さくしたいので、
この勾配の逆方向へ
wを変化すれば良い。
勾配降下法
wの更新量の幅を調整するため、
学習率𝜂を乗じる。
例として学習率を𝜂=0.5として
wを更新すると、
𝑤 ← 𝑤 − 𝜂
𝜕𝐿
𝜕𝑤
𝑤 ← 4 − 0.5 × 5
𝑤 = 1.5となる
勾配降下法
再度この点において勾配を求めると
-2になっていたとする。
今度は、
𝑤 ← 1.5 − (0.5 × −2)
𝑤 = 2.5となる
MNIST分類の実装
• ネットワークの説明
入力層:784個(28×28)
隠れ層1:256個、活性化関数はrelu関数
隠れ層2:100個、活性化関数はrelu関数
出力層:10個(数字0から9の10クラス分類)、活性化関数は
ソフトマックス関数
𝑥1
𝑥2
𝑥3
・
・
・
𝑥784
𝑎11 𝑧11
ℎ(𝑎)
relu
𝑎12 𝑧12
ℎ(𝑎)
𝑎1256 𝑧1256
ℎ(𝑎)
・
・
・
𝑎21 𝑧21
ℎ(𝑎)
relu
𝑎22 𝑧22
ℎ(𝑎)
𝑎2100 𝑧2100
ℎ(𝑎)
・
・
・
𝑎31 𝑦1
𝜎(𝑎)
softmax
𝑎32 𝑦2
𝜎(𝑎)
𝑎310 𝑦10
𝜎(𝑎)
・
・
・
1の確率
2の確率
10の確率
入力層 隠れ層1 隠れ層2 出力層
実装例
• ディープラーニングフレームワークであるkerasを用いた実
装
CNN
• 全結合層の問題点
全結合層はデータの形状が無視されてしまう。
画像は通常、縦、横、チャネル(RGB)方向の3次元の形状で
あるが、全結合層に入力するときには3次元のデータを平ら
(1次元)に変換する必要がある。
画像の空間的情報は重要。近いピクセル同士は関係が強いな
ど。
できれば位置関係の情報を考慮して学習したい。
CNN
• Convolutional Neural Network
畳み込みニューラルネットワーク。
画像認識、音声認識、自然言語処理では必ずといっていいほ
ど使われている。
従来のネットワークに加え、以下層を使っているのが特徴。
 Convolution層(畳み込み層)
 Pooling層(プーリング層)
CNN
畳み込み層
• 畳み込み演算
畳み込み層
• 畳み込み層の役割
特徴を抽出した画像(特徴マップ)を出力する。
フィルターと呼ばれる特徴抽出器を通して、画像のどこに特
徴が存在するかを探す。
• 学習
特徴を抽出するためのフィルターのパラメータを、ニューラ
ルネットワークで学習する。
プーリング層
• Maxプーリング
プーリング層
• プーリング層の役割
微妙な位置のズレの情報を削ぎ落とす。
• 特徴
学習するパラメータは存在しない。
実装例
• CNNを実装
Conv ReLU
Pool
ing
Conv ReLU
Pool
ing
Affine Softmax
ディープラーニング
• VGG16(2014年)
ディープラーニング
• GoogLeNet(2014年)
ディープラーニング
• ResNet(2015年)
おわりに
• ディープラーニングの基礎を学んできました。
• ディープラーニングは進化の激しい分野で、最新の技術を
効率よく理解するためにも、ディープラーニングの仕組み
をしっかり身に着けておきましょう。
参考文献
• ゼロから作るDeepLearning
• chainerチュートリアル
https://tutorials.chainer.org/ja/13_Basics_of_Neural_Networks.ht
ml
• DL4US
https://weblab.t.u-tokyo.ac.jp/dl4us/
ご清聴ありがとう
ございました!!
以降はオプション
活性化関数は何のためにある?
• 活性化関数の役割
 特徴の学習をしやすくするために、データを整える
• 整え方のアプローチは2つ
 計算結果の単位をそろえて比較しやすくする
 sigmoid
 特徴を際立たせることで比較しやすくする
 ReLU
整え方アプローチ1
• 計算結果の単位をそろえる
 数字を比較してこれは同じとか似ているとか判断する一番簡単な方法
は、基準を揃えること
 活性化関数の前でデータと重みを掛け合わして計算した結果が、都合
よく一定の範囲におさまるわけがない
 だから、sigmoid関数の中で一定の範囲の中に納まるように整理して、
後工程で特徴を計算しやすくしてあげる(0~1の間にマッピングしな
おして出力する)
整え方アプローチ2
• 特徴を際立たせることで比較しやすくする
 ある程度割り切って基準を決め、余分なものは捨てていくことで、後
工程で特徴をつかむ計算をやりやすくする
 reluは0より大きければそのまま、0より小さければ0に置き換えて出力
する
 つまり、マイナスの数字をノイズとしてみなして切り捨てることで、
より特徴をつかみやすくする効果がある
活性化関数の使い分け
• 画像データはReluと相性が良い
 画像データにはそもそもマイナスの値がない(0~255)
 なので、画像処理してマイナスのデータになったものは「ノイズ」だ
から切り捨てる・・というのは理にかなっている
• マイナスのデータがはいっているデータはsigmoid
 何かの測定値(気温とか)はマイナスのデータが入っていることがあ
る。その場合、マイナスを切り落とすと無茶苦茶になってしまうので
sigmoidを使う
• sigmoidには大きな範囲の数値データをかけてはいけない
 大きな数字は1か0になってしまう。こうなると元のデータの特徴は消
え失せ、ほとんどが同じデータのように加工されてしまう
 そのため、極力0~1.0の範囲に収まるように正規化されたデータを入
力とする必要がある
活性化関数にステップ関数を使わない
理由
• ステップ関数の微分は、ほとんどの場所で0になる。そのた
め重みが更新されず学習がストップしてしまう。
 𝐸 = − 𝑘 𝑡𝑘 log 𝑦𝑘のyは、h( x1 * w1 + x2 * w2 + b)
 w1を少しだけ増加したときにEがどれだけ変わるのかが知りたいが、
ステップ関数の出力はほぼ変わらない。
 つまりwを増やしてもyの値は全然変わってくれない。
 そのため、Eに変化が見られず学習が進まない。
• 認識精度でなく損失関数を使う理由も同じで、パラメータ
を少し調整しただけでは認識精度は変わらない。つまりパ
ラメータの微分がほとんどの場所で0になってしまう。
誤差逆伝播法
• 数値微分の欠点
微分計算に時間がかかるため、層が増えたときに学習に多く
の時間がかかる問題がある。
• 誤差逆伝播法
連鎖律という仕組みを使って、微分計算を行わずに各重みの
勾配を効率よく算出することができる。

More Related Content

What's hot

[DL輪読会]data2vec: A General Framework for Self-supervised Learning in Speech,...
[DL輪読会]data2vec: A General Framework for  Self-supervised Learning in Speech,...[DL輪読会]data2vec: A General Framework for  Self-supervised Learning in Speech,...
[DL輪読会]data2vec: A General Framework for Self-supervised Learning in Speech,...Deep Learning JP
 
[DL輪読会]近年のオフライン強化学習のまとめ —Offline Reinforcement Learning: Tutorial, Review, an...
[DL輪読会]近年のオフライン強化学習のまとめ —Offline Reinforcement Learning: Tutorial, Review, an...[DL輪読会]近年のオフライン強化学習のまとめ —Offline Reinforcement Learning: Tutorial, Review, an...
[DL輪読会]近年のオフライン強化学習のまとめ —Offline Reinforcement Learning: Tutorial, Review, an...Deep Learning JP
 
[DL輪読会]Decision Transformer: Reinforcement Learning via Sequence Modeling
[DL輪読会]Decision Transformer: Reinforcement Learning via Sequence Modeling[DL輪読会]Decision Transformer: Reinforcement Learning via Sequence Modeling
[DL輪読会]Decision Transformer: Reinforcement Learning via Sequence ModelingDeep Learning JP
 
【DL輪読会】Llama 2: Open Foundation and Fine-Tuned Chat Models
【DL輪読会】Llama 2: Open Foundation and Fine-Tuned Chat Models【DL輪読会】Llama 2: Open Foundation and Fine-Tuned Chat Models
【DL輪読会】Llama 2: Open Foundation and Fine-Tuned Chat ModelsDeep Learning JP
 
CVPR2019読み会@関東CV
CVPR2019読み会@関東CVCVPR2019読み会@関東CV
CVPR2019読み会@関東CVTakanori Ogata
 
Graph Attention Network
Graph Attention NetworkGraph Attention Network
Graph Attention NetworkTakahiro Kubo
 
Extremely fast decision tree 論文紹介
Extremely fast decision tree 論文紹介Extremely fast decision tree 論文紹介
Extremely fast decision tree 論文紹介Yu Sugawara
 
[DL輪読会]Learning Latent Dynamics for Planning from Pixels
[DL輪読会]Learning Latent Dynamics for Planning from Pixels[DL輪読会]Learning Latent Dynamics for Planning from Pixels
[DL輪読会]Learning Latent Dynamics for Planning from PixelsDeep Learning JP
 
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)Preferred Networks
 
Tensorflowユーザから見た Alpha(Go)Zero, Ponanza (TFUG #7)
Tensorflowユーザから見た Alpha(Go)Zero, Ponanza (TFUG #7)Tensorflowユーザから見た Alpha(Go)Zero, Ponanza (TFUG #7)
Tensorflowユーザから見た Alpha(Go)Zero, Ponanza (TFUG #7)Katsuki Ohto
 
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜Preferred Networks
 
【DL輪読会】Reward Design with Language Models
【DL輪読会】Reward Design with Language Models【DL輪読会】Reward Design with Language Models
【DL輪読会】Reward Design with Language ModelsDeep Learning JP
 
Deep Learning技術の最近の動向とPreferred Networksの取り組み
Deep Learning技術の最近の動向とPreferred Networksの取り組みDeep Learning技術の最近の動向とPreferred Networksの取り組み
Deep Learning技術の最近の動向とPreferred Networksの取り組みKenta Oono
 
MixMatch: A Holistic Approach to Semi- Supervised Learning
MixMatch: A Holistic Approach to Semi- Supervised LearningMixMatch: A Holistic Approach to Semi- Supervised Learning
MixMatch: A Holistic Approach to Semi- Supervised Learningharmonylab
 
[DL輪読会]機械学習におけるカオス現象について
[DL輪読会]機械学習におけるカオス現象について[DL輪読会]機械学習におけるカオス現象について
[DL輪読会]機械学習におけるカオス現象についてDeep Learning JP
 
[DL輪読会]SOM-VAE: Interpretable Discrete Representation Learning on Time Series
[DL輪読会]SOM-VAE: Interpretable Discrete Representation Learning on Time Series[DL輪読会]SOM-VAE: Interpretable Discrete Representation Learning on Time Series
[DL輪読会]SOM-VAE: Interpretable Discrete Representation Learning on Time SeriesDeep Learning JP
 
[DL輪読会]SafePicking: Learning Safe Object Extraction via Object-Level Mapping ...
[DL輪読会]SafePicking: Learning Safe Object Extraction via Object-Level Mapping ...[DL輪読会]SafePicking: Learning Safe Object Extraction via Object-Level Mapping ...
[DL輪読会]SafePicking: Learning Safe Object Extraction via Object-Level Mapping ...Deep Learning JP
 
【DL輪読会】Flamingo: a Visual Language Model for Few-Shot Learning 画像×言語の大規模基盤モ...
【DL輪読会】Flamingo: a Visual Language Model for Few-Shot Learning   画像×言語の大規模基盤モ...【DL輪読会】Flamingo: a Visual Language Model for Few-Shot Learning   画像×言語の大規模基盤モ...
【DL輪読会】Flamingo: a Visual Language Model for Few-Shot Learning 画像×言語の大規模基盤モ...Deep Learning JP
 

What's hot (20)

[DL輪読会]data2vec: A General Framework for Self-supervised Learning in Speech,...
[DL輪読会]data2vec: A General Framework for  Self-supervised Learning in Speech,...[DL輪読会]data2vec: A General Framework for  Self-supervised Learning in Speech,...
[DL輪読会]data2vec: A General Framework for Self-supervised Learning in Speech,...
 
[DL輪読会]近年のオフライン強化学習のまとめ —Offline Reinforcement Learning: Tutorial, Review, an...
[DL輪読会]近年のオフライン強化学習のまとめ —Offline Reinforcement Learning: Tutorial, Review, an...[DL輪読会]近年のオフライン強化学習のまとめ —Offline Reinforcement Learning: Tutorial, Review, an...
[DL輪読会]近年のオフライン強化学習のまとめ —Offline Reinforcement Learning: Tutorial, Review, an...
 
[DL輪読会]Decision Transformer: Reinforcement Learning via Sequence Modeling
[DL輪読会]Decision Transformer: Reinforcement Learning via Sequence Modeling[DL輪読会]Decision Transformer: Reinforcement Learning via Sequence Modeling
[DL輪読会]Decision Transformer: Reinforcement Learning via Sequence Modeling
 
【DL輪読会】Llama 2: Open Foundation and Fine-Tuned Chat Models
【DL輪読会】Llama 2: Open Foundation and Fine-Tuned Chat Models【DL輪読会】Llama 2: Open Foundation and Fine-Tuned Chat Models
【DL輪読会】Llama 2: Open Foundation and Fine-Tuned Chat Models
 
CVPR2019読み会@関東CV
CVPR2019読み会@関東CVCVPR2019読み会@関東CV
CVPR2019読み会@関東CV
 
Spark MLlibではじめるスケーラブルな機械学習
Spark MLlibではじめるスケーラブルな機械学習Spark MLlibではじめるスケーラブルな機械学習
Spark MLlibではじめるスケーラブルな機械学習
 
Graph Attention Network
Graph Attention NetworkGraph Attention Network
Graph Attention Network
 
Extremely fast decision tree 論文紹介
Extremely fast decision tree 論文紹介Extremely fast decision tree 論文紹介
Extremely fast decision tree 論文紹介
 
[DL輪読会]Learning Latent Dynamics for Planning from Pixels
[DL輪読会]Learning Latent Dynamics for Planning from Pixels[DL輪読会]Learning Latent Dynamics for Planning from Pixels
[DL輪読会]Learning Latent Dynamics for Planning from Pixels
 
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)
 
Tensorflowユーザから見た Alpha(Go)Zero, Ponanza (TFUG #7)
Tensorflowユーザから見た Alpha(Go)Zero, Ponanza (TFUG #7)Tensorflowユーザから見た Alpha(Go)Zero, Ponanza (TFUG #7)
Tensorflowユーザから見た Alpha(Go)Zero, Ponanza (TFUG #7)
 
自然言語処理紹介(就職編)
自然言語処理紹介(就職編)自然言語処理紹介(就職編)
自然言語処理紹介(就職編)
 
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
 
【DL輪読会】Reward Design with Language Models
【DL輪読会】Reward Design with Language Models【DL輪読会】Reward Design with Language Models
【DL輪読会】Reward Design with Language Models
 
Deep Learning技術の最近の動向とPreferred Networksの取り組み
Deep Learning技術の最近の動向とPreferred Networksの取り組みDeep Learning技術の最近の動向とPreferred Networksの取り組み
Deep Learning技術の最近の動向とPreferred Networksの取り組み
 
MixMatch: A Holistic Approach to Semi- Supervised Learning
MixMatch: A Holistic Approach to Semi- Supervised LearningMixMatch: A Holistic Approach to Semi- Supervised Learning
MixMatch: A Holistic Approach to Semi- Supervised Learning
 
[DL輪読会]機械学習におけるカオス現象について
[DL輪読会]機械学習におけるカオス現象について[DL輪読会]機械学習におけるカオス現象について
[DL輪読会]機械学習におけるカオス現象について
 
[DL輪読会]SOM-VAE: Interpretable Discrete Representation Learning on Time Series
[DL輪読会]SOM-VAE: Interpretable Discrete Representation Learning on Time Series[DL輪読会]SOM-VAE: Interpretable Discrete Representation Learning on Time Series
[DL輪読会]SOM-VAE: Interpretable Discrete Representation Learning on Time Series
 
[DL輪読会]SafePicking: Learning Safe Object Extraction via Object-Level Mapping ...
[DL輪読会]SafePicking: Learning Safe Object Extraction via Object-Level Mapping ...[DL輪読会]SafePicking: Learning Safe Object Extraction via Object-Level Mapping ...
[DL輪読会]SafePicking: Learning Safe Object Extraction via Object-Level Mapping ...
 
【DL輪読会】Flamingo: a Visual Language Model for Few-Shot Learning 画像×言語の大規模基盤モ...
【DL輪読会】Flamingo: a Visual Language Model for Few-Shot Learning   画像×言語の大規模基盤モ...【DL輪読会】Flamingo: a Visual Language Model for Few-Shot Learning   画像×言語の大規模基盤モ...
【DL輪読会】Flamingo: a Visual Language Model for Few-Shot Learning 画像×言語の大規模基盤モ...
 

Similar to ディープラーニング基礎.pptx

Image net classification with Deep Convolutional Neural Networks
Image net classification with Deep Convolutional Neural NetworksImage net classification with Deep Convolutional Neural Networks
Image net classification with Deep Convolutional Neural NetworksShingo Horiuchi
 
東京都市大学 データ解析入門 10 ニューラルネットワークと深層学習 1
東京都市大学 データ解析入門 10 ニューラルネットワークと深層学習 1東京都市大学 データ解析入門 10 ニューラルネットワークと深層学習 1
東京都市大学 データ解析入門 10 ニューラルネットワークと深層学習 1hirokazutanaka
 
「ゼロから作るDeep learning」の畳み込みニューラルネットワークのハードウェア化
「ゼロから作るDeep learning」の畳み込みニューラルネットワークのハードウェア化「ゼロから作るDeep learning」の畳み込みニューラルネットワークのハードウェア化
「ゼロから作るDeep learning」の畳み込みニューラルネットワークのハードウェア化marsee101
 
NN, CNN, and Image Analysis
NN, CNN, and Image AnalysisNN, CNN, and Image Analysis
NN, CNN, and Image AnalysisYuki Shimada
 
ACLreading2014@Ace12358
ACLreading2014@Ace12358ACLreading2014@Ace12358
ACLreading2014@Ace12358Ace12358
 
深層学習と活性化関数
深層学習と活性化関数深層学習と活性化関数
深層学習と活性化関数spade630
 
Quantum Support Vector Machine
Quantum Support Vector MachineQuantum Support Vector Machine
Quantum Support Vector MachineYuma Nakamura
 
2値化CNN on FPGAでGPUとガチンコバトル(公開版)
2値化CNN on FPGAでGPUとガチンコバトル(公開版)2値化CNN on FPGAでGPUとガチンコバトル(公開版)
2値化CNN on FPGAでGPUとガチンコバトル(公開版)Hiroki Nakahara
 
03_深層学習
03_深層学習03_深層学習
03_深層学習CHIHIROGO
 
Pythonとdeep learningで手書き文字認識
Pythonとdeep learningで手書き文字認識Pythonとdeep learningで手書き文字認識
Pythonとdeep learningで手書き文字認識Ken Morishita
 
PRML復々習レーン#7 前回までのあらすじ
PRML復々習レーン#7 前回までのあらすじPRML復々習レーン#7 前回までのあらすじ
PRML復々習レーン#7 前回までのあらすじsleepy_yoshi
 
Nested RNSを用いたディープニューラルネットワークのFPGA実装
Nested RNSを用いたディープニューラルネットワークのFPGA実装Nested RNSを用いたディープニューラルネットワークのFPGA実装
Nested RNSを用いたディープニューラルネットワークのFPGA実装Hiroki Nakahara
 
(公開版)Reconf研2017GUINNESS
(公開版)Reconf研2017GUINNESS(公開版)Reconf研2017GUINNESS
(公開版)Reconf研2017GUINNESSHiroki Nakahara
 
Deep learning実装の基礎と実践
Deep learning実装の基礎と実践Deep learning実装の基礎と実践
Deep learning実装の基礎と実践Seiya Tokui
 
[DL輪読会]GQNと関連研究,世界モデルとの関係について
[DL輪読会]GQNと関連研究,世界モデルとの関係について[DL輪読会]GQNと関連研究,世界モデルとの関係について
[DL輪読会]GQNと関連研究,世界モデルとの関係についてDeep Learning JP
 

Similar to ディープラーニング基礎.pptx (20)

W8PRML5.1-5.3
W8PRML5.1-5.3W8PRML5.1-5.3
W8PRML5.1-5.3
 
Image net classification with Deep Convolutional Neural Networks
Image net classification with Deep Convolutional Neural NetworksImage net classification with Deep Convolutional Neural Networks
Image net classification with Deep Convolutional Neural Networks
 
東京都市大学 データ解析入門 10 ニューラルネットワークと深層学習 1
東京都市大学 データ解析入門 10 ニューラルネットワークと深層学習 1東京都市大学 データ解析入門 10 ニューラルネットワークと深層学習 1
東京都市大学 データ解析入門 10 ニューラルネットワークと深層学習 1
 
Deep learning入門
Deep learning入門Deep learning入門
Deep learning入門
 
「ゼロから作るDeep learning」の畳み込みニューラルネットワークのハードウェア化
「ゼロから作るDeep learning」の畳み込みニューラルネットワークのハードウェア化「ゼロから作るDeep learning」の畳み込みニューラルネットワークのハードウェア化
「ゼロから作るDeep learning」の畳み込みニューラルネットワークのハードウェア化
 
Wssit slide
Wssit slideWssit slide
Wssit slide
 
NN, CNN, and Image Analysis
NN, CNN, and Image AnalysisNN, CNN, and Image Analysis
NN, CNN, and Image Analysis
 
ACLreading2014@Ace12358
ACLreading2014@Ace12358ACLreading2014@Ace12358
ACLreading2014@Ace12358
 
深層学習と活性化関数
深層学習と活性化関数深層学習と活性化関数
深層学習と活性化関数
 
Quantum Support Vector Machine
Quantum Support Vector MachineQuantum Support Vector Machine
Quantum Support Vector Machine
 
2値化CNN on FPGAでGPUとガチンコバトル(公開版)
2値化CNN on FPGAでGPUとガチンコバトル(公開版)2値化CNN on FPGAでGPUとガチンコバトル(公開版)
2値化CNN on FPGAでGPUとガチンコバトル(公開版)
 
03_深層学習
03_深層学習03_深層学習
03_深層学習
 
Pythonとdeep learningで手書き文字認識
Pythonとdeep learningで手書き文字認識Pythonとdeep learningで手書き文字認識
Pythonとdeep learningで手書き文字認識
 
PRML復々習レーン#7 前回までのあらすじ
PRML復々習レーン#7 前回までのあらすじPRML復々習レーン#7 前回までのあらすじ
PRML復々習レーン#7 前回までのあらすじ
 
Japanino Workshop #2
Japanino Workshop #2Japanino Workshop #2
Japanino Workshop #2
 
Nested RNSを用いたディープニューラルネットワークのFPGA実装
Nested RNSを用いたディープニューラルネットワークのFPGA実装Nested RNSを用いたディープニューラルネットワークのFPGA実装
Nested RNSを用いたディープニューラルネットワークのFPGA実装
 
(公開版)Reconf研2017GUINNESS
(公開版)Reconf研2017GUINNESS(公開版)Reconf研2017GUINNESS
(公開版)Reconf研2017GUINNESS
 
Deep learning実装の基礎と実践
Deep learning実装の基礎と実践Deep learning実装の基礎と実践
Deep learning実装の基礎と実践
 
[DL輪読会]GQNと関連研究,世界モデルとの関係について
[DL輪読会]GQNと関連研究,世界モデルとの関係について[DL輪読会]GQNと関連研究,世界モデルとの関係について
[DL輪読会]GQNと関連研究,世界モデルとの関係について
 
6 Info Theory
6 Info Theory6 Info Theory
6 Info Theory
 

Recently uploaded

論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 

Recently uploaded (8)

論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 

ディープラーニング基礎.pptx

Editor's Notes

  1. 今回は入社してちょうど一年の良い区切りなので、自分のDeepLearningの基礎を再度固めるのと、 コグニティブ以外の皆さんにもディープラーニングの仕組みをざっくりと理解してほしいと思ったので、 今回はこのテーマで進めさせていただきます。
  2. ディープラーニングの土台となっているパーセプトロンから、ニューラルネットワークの学習の仕組み、 CNNというネットワークの説明、最近のディープラーニングを少し紹介するという流れでやっていきます。
  3. まずはディープラーニングを理解する上で必須となるパーセプトロンから説明してきます。 パーセプトロンは、人間の神経細胞を模したもので、ある入力があって、それに対して必ず0か1が出力されるというものです。 図の〇はノードやニューロンと呼ばれています。 xは入力、yは出力、wは重みといって入力信号の重要度を表すもの、bはバイアスといってニューロンの発火のしやすさを調整する閾値です。 入力信号に対してそれぞれ固有の重みが乗算して加算して、バイアスを加算し、その総和が0を超えたときにだけ1が出力されます。(ニューロンが発火すると表現されます) このように、入力の値があってそれに対して0か1を出力する仕組みを使って、様々な数式処理や人間の脳の仕組みをシミュレーションしようという目的でパーセプトロンが作られました。
  4. ではパーセプトロンを使って簡単な問題を考えていきましょう。 今から論理回路をパーセプトロンで実装していきます。 論理回路は、x1とx2の入力を受け取り、0か1を返すものです。 AND, OR, NAND, XORの4つを実装していきます。
  5. ANDゲートをpythonで実装すると、このようになります。 x1, x2を引数として受け取り、重みをかけて、バイアスを足して総和を計算し、最後に0以下であれば0を、それ以外であれば1を出力します。 例えば0, 0が入ってきたら、重みの総和が0になり、バイアスを足すので-0.7となり、0以下なので0を返します。 1, 0が入ってきたら、重みの総和は0.5で、バイアス足して-0.2になり、0以下なので0を返します。 0, 1も同じです。 1, 1が入ってきたら、重みの総和は1で、バイアスを足すと0.3になり、これは0より大きいので1を返します。 このようにパーセプトロンでAND回路を実装できました。 ここで重要なポイントとしては、重みとバイアスの値を、先ほどの真理値表を満たすように私たちが決めていることです。 この組み合わせは無限にあります。例えばbは-0.9でも-0.8でもANDゲートの条件を満たします。
  6. ORゲートですが、ANDゲートと変えたのはバイアスだけで、-0.7から-0.2にしています。
  7. つまり重みとバイアスを調整することで出力値を変えることができるということです。
  8. では次にXORゲートをみていきます。 実はXORゲートはパーセプトロンでは表現することができません。 ANDは1,1のときだけ1になってあとは0になるので、このように一本の線で区切ることができます。 対してXORは、入力同士が異なった値の場合に1になり、同じ場合は0になるので、図としてはこのようになり、 これはどう頑張っても1本の線で分けることができません。 XORゲートを分類するためには、この図のように非線形で表現する必要があります。 しかし単層のパーセプトロンは線形表現しかできないので、XORゲートを実装できません。 どうしましょうか?
  9. まずはpythonで実装してみましょう。 このように、AND, OR, NANDを組み合わせることで、XORを実装することができます。 中身の詳細は基本情報でやっていると思うので省きます。
  10. 実装した結果をパーセプトロンの図で表すと、このようになります。 先ほどと違うのは、入力層と出力層の間に中間層と呼ばれる層が1つ増えていることです。 このように層を複数重ねたパーセプトロンを多層パーセプトロンと呼びます。 単層のパーセプトロンでは実現できなかったことでも、層を重ねることでより柔軟な表現(非線形の表現)が可能であるということになります。
  11. ここまでまとめます。 パーセプトロンは1つの分類器といえます。 例えばAND分類器は、0,0のときは0、1,1のときは1と分類する。 そのようにいい感じに分類するために、パーセプトロンでは、重みとバイアスをパラメータとして設定し、人の手で調節する。 また、単層のパーセプトロンでは線形表現しかできないのに対し、多層にすることで非線形を表現できるようになります。
  12. 続いてニューラルネットワークについて説明します。 パーセプトロンの課題として、重みやバイアスというパラメータを人の手で設定する必要がありました。 ニューラルネットワークはその課題の解決のために開発され、重みとバイアスを自動で学習できるのがニューラルネットワークの特徴となります。 また、パーセプトロンとニューラルネットワークの違いとして、活性化関数にステップ関数以外の関数を利用しているというのがあります。 これからその点について説明していきます。
  13. 活性化関数とはどのようなものであるか説明をしていきます。 活性化関数は入力信号との総和を出力信号に変換する関数のことで、 先ほどのANDゲートの例でいうと、この部分のように、総和が0以下だったら0を、それ以外であれば1を出力する部分のことをいいます。
  14. これを図で表すと、 3つの入力があり、まずはこの総和をaとして求めます。 そしてそれを0か1になるように調整を行い、yを出力する関数h()を考えます。 このように総和した結果を変換する関数を、活性化関数と呼びます。
  15. 活性化関数はいくつか種類があります。 まずは論理回路の実装で使われていたステップ関数があります。 横軸が入力信号、縦軸が出力信号とすると、入力信号が0以下だと0を、0より大きければ1を出力するような関数です。 しかしこのステップ関数を使っていると、ニューラルネットワークの精度が中々上がらないという問題がありました。
  16. そこで、ステップ関数に代わってシグモイド関数が開発されました。 xが0のところで0.5を通って、xが大きくなると1に近づき、xが小さくなると0に近づくようなS字カーブを描く関数です。 このような関数を使うと、ニューラルネットワークの精度が上がることが分かりました。
  17. さらに、最近のディープラーニングでは、シグモイド関数に代わってReLU関数が使われています。 xが0より小さければ0で、0より大きければxの値をそのまま出力するという関数です。
  18. 次にソフトマックス関数ですが、これは多クラス分類を行う場合、出力層、つまりニューラルネットワークの最後の層の活性化関数として利用されます。 数式が色々と書いてありますが、要はニューラルネットワークの出力を確率に変換するための関数となります。 例えば3クラス分類で考えると、ニューラルネットワークの出力層のニューロンは3つになりますが、 ニューラルネットワークで計算した結果が0.3, 2,9, 4.0だった場合、 最後にソフトマックス関数をかけるとこのように確率に変換されます。 これは、3%の確率で1つ目のクラス、24%の確率で2つ目のクラス、73%の確率で3つ目のクラスであると推論したことを意味します。 確率なので0から1の実数となり、合計は1となります。また、大小関係は変わりません。
  19. ここからはニューラルネットワークの学習について話していきますが、 MNISTと呼ばれる手書き数字画像の分類を題材にして話したほうが分かりやすいので、まずこれの説明をしていきます。 MNISTは画像処理で最も有名なデータセットで、基礎の勉強や実験用のデータとしてよく使われています。 データセットは0から9までの数字画像から構成され、訓練画像が60000枚、テスト画像が10000枚用意されており、それらを使って学習と推論をしていきます。 画像データは28×28のグレー画像で、各ピクセルは0から255までの値をとります。
  20. まずニューラルネットワークの学習の目的ですが、誤差を最小化するパラメータ、つまり最適な重みとバイアスを訓練データから自動で取得することが目的となります。 学習の手順をざっくり書くとこのようになります。 まず、訓練データをニューラルネットワークに読み込ませて、推論させます。この画像は5だ、この画像は3だ、というように。 次に、推論した結果と、正解データを比べて、その誤差を損失関数というもので求めます。例えば本当は3なのに5と判定していたら誤差は大きくなります。 そして、損失関数のパラメータについて微分した値(勾配と呼ばれます)を求めて、その値でパラメータを更新します。 要は本当は3のものと3だと認識させるために、パラメータを調整します。 この手順を何度か繰り返し、ニューラルネットワークの学習が行われます。
  21. 図で表すとこのようになります。 入力画像に対して重みやバイアスをかけて、入力されたデータが何であるかを推定します。 この例だと、1は0%、2は5%、3は2%、4は0%、5は75%、6~9は0%だと推定しています。 正解データは5が100%というようになっています。 推定した結果と正解データを比べて、誤差を算出し、その誤差が最も小さくなるように重みとバイアスを更新する。 この更新作業のことを、学習すると呼んでいます。 ここでこの誤差をどのように算出するか、というところで、損失関数を利用します。 それから、求めた誤差から重みをどのように更新するかというところもこれから説明していきます。
  22. まずは損失関数について説明していきます。 損失関数は簡単にいうと、ニューラルネットワークの性能がどれくらい悪いかを示していて、この値が小さいほど性能が良いという指標になります。 損失関数は様々なものがありますが、ここではもっとも有名な2種類だけ紹介します。 まずは2乗和誤差と呼ばれるものです。 数式で表すとこのようになり、ニューラルネットワークの出力と、正解データの各要素の差の2乗を計算し、その総和を求め、2で割ることを表しています。 例で計算してみます。
  23. まず二乗和誤差の定義をしてあります。 2が正解という前提で、 1つ目の例では、推論した結果2の確率が0.6で最も高い場合です。 誤差は、0.0975になります。 2つ目の例では、7の確率が0.6と最も高い場合です。 誤差は、0.5975となり、推論結果が誤っていた場合は誤差の数値が大きくなることが分かります。 つまり1つ目の例の方が、出力結果が正解データにより適合していることが分かります。
  24. 次は交差エントロピー誤差について説明します。 数式で表すとこのようになり、ニューラルネットワークの出力に対して対数計算して正解データと掛けて、その総和に-1をかけることを表しています。 先ほど見たように、tは正解ラベルとなるインデックスだけが1で、それ以外は0になっているので、 実質的には、正解ラベルが1に対応するニューラルネットワークの出力の自然対数を計算するだけになります。 さっきの図の例だと、正解ラベルが1である5の推論結果なので、log0.75を計算することになります。 右の図は対数のグラフになりますが、正解であるクラスの確率が小さいほど誤差が大きくなることが分かるので、意外と直感的でわかりやすい関数です。
  25. こちらも実装例を見ていきます。 まず交差エントロピー誤差の定義がしてあります。 正解データと出力データは先ほどと同じです。 最も高い確率が正解データと同じほうが、誤差が小さくなっていることが分かります。
  26. 次に、重みの更新の仕組みについてみていきます。 重みの更新は、勾配降下法と呼ばれる手法で行われます。 この方法は、パラメータに関する損失関数の微分値を算出することで、損失関数が最小となるパラメータを求めることができます。 求めた勾配の方向に進むことで、・・・
  27. この図では、重みwを変化させた際の損失関数Lの値を示しています。 横軸が重みw、縦軸が損失関数Lです。 実際のニューラルネットワークの損失関数はもっと次元数が多くて複雑な形をしているのですが、ここでは説明のために二次関数で表しています。 ニューラルネットワークの学習では、損失関数Lを最小化したいわけなので、目指すべきwの値としては、この矢印の点になります。 では、この損失関数が最小値になるようなwはどのようにして求めればいいのでしょうか。
  28. 例として、重みの初期値が4であったとします。 すると、w=4のときの接線の傾きが微分することで求まります。 要は、wをほんの少しだけ増やしたときに、損失関数Lの値がどれだけ増減するのかが分かります。 この増減する値(つまり傾き)のことを勾配と呼びます。 ここでは仮に、勾配が5であったとします。
  29. 勾配とは、wをほんの少しだけ増加させた際に、Lが増加する方向を意味しています。 今はLを小さくしたいので、この勾配の逆方向へwを変化すれば良いことになります。 これがニューラルネットワークのパラメータを目的関数の勾配を用いて更新していく際の基本的な考え方になります。 つまり、wを少しだけ増やしたときに、損失関数の値は5増えるので、逆にwを減らせば損失関数の値は減るはずだということです。
  30. 実際にwを更新するときには、勾配をそのまま反映するのではなく、 更新量の幅を調整するために学習率イータと呼ばれるものを乗じます。 数式で表すとこのようになります。 例として学習率を0.5として、wを更新してみると、 元々wが4で、学習率×勾配を引くと、wは1.5となりました。 wを1.5に更新すると、損失関数の値としては少なくなっていることが分かります。(y軸が下のほうに下がったので) これで損失関数Lの値を減らすことに成功しました。
  31. 再度この点において勾配を求めると-2だったとします。 さらにwを更新すると、今度は2.5になります。 このように、徐々にLが最小値をとるときのwの値に近づいていることが分かります。 このようにして、勾配を更新量としてパラメータを変化させていくことで、損失関数Lを最小にする重みに徐々に近づけていくことができます。
  32. ここまでで、ディープラーニングの基本的なことは説明できたので、 ここで実際にMNISTの分類を実装していきます。 まずネットワークの説明です。 入力層ですが、MNIST画像は28*28ピクセルの画像なので、これを1次元に変換したものを入力とするので、784個のニューロンになります。 隠れ層は2つあり、1つ目が256個のニューロン、2つ目が100個のニューロンとしてます。 このニューロンの数は私がなんとなく決めています。 出力層は、今回は0~9の分類をする10クラス分類なので、10個のニューロンとなります。活性化関数はソフトマックス関数を使っています。
  33. 図で表すとこんな感じです。 入力層は784個のニューロンで、隠れ層1は256個、隠れ層2は100個で、活性化関数にreluを使っています。 出力層は10個のニューロンで、活性化関数はsoftmaxを使っています。 この1つ1つのニューロンが、それぞれ1である確率、2である確率というようになっています。
  34. 最後はCNNについて説明します。 先ほど実装したニューラルネットワークでは、全結合層を使っていました。 全結合層は、隣接する層のニューロンがすべて連結されているような層です。 実は全結合層にはデータの形状が無視されてしまうという問題点があります。 画像は通常、縦、横、チャネル方向の3次元の形状ですが、全結合層に入力するときには、3次元のデータを1次元に変換する必要がありました。 先ほどの実装例でも、28×28の画像を、1行に並べた784個のデータを入力としていました。 本来画像は空間情報が重要で、近いピクセルは関係性が強かったり、離れた画素同士は関係が薄かったりと、3次元の形状の中にパターンを持っていて、 できれば形状を維持したまま処理したい。 このような問題を解決するためにCNNがあります。
  35. CNNは畳み込みニューラルネットワークと呼ばれています。 画像認識、音声、自然言語では必ずと言っていいほど使われています。 CNNは従来のネットワークに加え、畳み込み層とプーリング層を使っているのが特徴です。 この層を使っているニューラルネットワークをCNNと呼ばれています。
  36. 実際のCNNのイメージはこんな感じです。 今まで使っていたAFFINE(全結合層)も結局は使うのですが、その前の層に畳み込み層やプーリング層を入れるイメージになります。
  37. ではこの2つの層はなにかということで、まずは畳み込み層から説明します。 畳み込み層では、畳み込み演算を行います。画像処理ではフィルター演算と呼ばれているものです。 まず、入力データの画像(MNISTは28*28だが簡単のため4*4)が入ってくると、それに対してフィルターをかけます。 計算方法としては、まず左上から順に、重なったところに対して掛け算して、総和します。 例えば、・・ 最後にバイアスを足して、画像を出力します。 このフィルターは1枚とは限らず、50枚のフィルターがあれば50枚の画像が出力されます。
  38. では畳み込み演算は何のためにやっているのかというと、 入力画像から特徴を抽出した画像(特徴マップ)を出力することが目的となっています。 そのために、フィルターと呼ばれる特徴抽出器を通して、画像のどこに特徴が存在するかを探しています。 ニューラルネットワークの学習では、このフィルターがいかに特徴を抽出できる特徴抽出器にするために、フィルターのパラメータを学習しています。 今までのニューラルネットワークの例でいう重みやバイアスに値するのがこのフィルターとなります。
  39. プーリング層でやっていることは簡単で、縦、横方向の空間を小さくする演算をしています。 この例だと、左上の領域で一番大きいのは8なので、8を出力します。 これはMaxプーリングと呼ばれるものですが、Averageプーリングなど他にも種類があります。
  40. ではプーリング層は何の役割があるのかということですが、 微妙な位置のズレの情報を削ぎ落すのが目的となっています。 例えばこの画像のように、同じカテゴリとして識別したい画像でも微妙に位置がずれている場合に、ニューラルネットワークは同じカテゴリだと認識してくれない可能性があります。 入力画像が少しズレていても、プーリングすることで同じ結果を返してくれます。 入力データの位置のズレをプーリングが吸収してくれるとも言えます。 また、特徴としては学習するパラメータが存在しません。 ただ単に、対象領域から最大値をとるだけの処理をしています。
  41. 最後にディープラーニングですが、より層を深くしたディープなニューラルネットワークをディープラーニングと呼んでいます。 有名なディープラーニングのネットワークを少しだけ紹介します。 これはVGG16という2014年の画像コンペで高い精度を出した、画像認識のネットワークでは有名なもので、全部16層にもなります。
  42. 次にGoogLeNetと呼ばれるネットワークです。 このネットワークの特徴としては、縦方向にも幅を持っていて、 インセプション構造というのですが、入力に対してサイズの異なるフィルターを複数適用して、その結果を結合するということをやっています。
  43. ResNetはスキップ構造を取り入れているのが特徴です。 入力データに対して畳み込み層を通したものと、通さなかったものを合算して後の層に渡していくという構造です。 こうすることで、層を深くしすぎて勾配が小さくなる問題を解決することが期待できるようです。
  44. ディープラーニングの基礎を学んできました。 ディープラーニングは進化の激しい分野で、最新の技術を効率よく理解するためにも、 ディープラーニングの仕組みをしっかり身に着けた上で、今後も精進したいと思います。
  45. 勾配を求める方法として、先ほどまでは数値微分により勾配を求めてきました。 しかし数値微分により勾配を求める方法には1つ欠点があり、 微分計算に時間がかかるため、層が増えたときに学習が中々終わらないという問題があります。 そこで、誤差逆伝播法という手法が提案されています。 これは連鎖律という仕組みを使って、微分計算をせずに各重みの勾配を効率よく算出することができます。 今回は詳細は省きますが、ディープラーニングのライブラリでは誤差逆伝播法が基本的に使われているので、 興味がある人は調べてみてください。