LoginSignup
0
0

More than 1 year has passed since last update.

深層学習-2

Last updated at Posted at 2021-06-19

Day3

再帰型ニューラルネットワークの概念

RNN(Recurrent neural network)全体像

RNNとは

時系列データに対応するニューラルネットワーク

時系列データ

時間的順序を追って、相互関係が見られるデータ
例:音声データ、テキストデータ、株変動のデータ

RNN全体像

スクリーンショット 2021-06-19 14.56.26.png

RNN数学的記述

u^t = W_{in}x^t + Wz^{t-1} + b\\
z^t = f(u^t)\\
v^t = W_{out}z^t + c\\
y^t = g(v^t)\\

実装

weight_init_std = 1

# ウェイト初期化 
W_in = weight_init_std * np.random.randn(input_layer_size, hidden_layer_size)
b = weight_init_std * np.random.randn(1, hidden_layer_size)
W_out = weight_init_std * np.random.randn(hidden_layer_size, output_layer_size)
c = weight_init_std * np.random.randn(1, output_layer_size)
W = weight_init_std * np.random.randn(hidden_layer_size, hidden_layer_size)

...
u[:,t+1] = np.dot(X, W_in) + np.dot(z[:,t].reshape(1, -1), W) + b
z[:,t+1] = functions.sigmoid(u[:,t+1]) 
y[:,t] = functions.sigmoid(np.dot(z[:,t+1].reshape(1, -1), W_out) + c)

特徴

t-1状態を保つため、回帰構造が必要

BPTT(Back propagation through time)

BPTTとは

RNNのパラメータを調整する方法

BPTT数学記述

\frac{\partial E}{\partial u^t} = \delta^t\\
\frac{\partial E}{\partial v^t} = \delta^{out,t}\\
\frac{\partial E}{\partial W_{(in)}} = \frac{\partial E}{\partial u^t}\left[\frac{\partial u^t}{\partial W_{(in)}}\right]^T = \delta^t\left[x^t\right]^T\\
\frac{\partial E}{\partial W_{(out)}} = \frac{\partial E}{\partial v^t}\left[\frac{\partial v^t}{\partial W_{(out)}}\right]^T = \delta^{out,t}\left[z^t\right]^T\\
\frac{\partial E}{\partial W} = \frac{\partial E}{\partial u^t}\left[\frac{\partial u^t}{\partial W}\right]^T = \delta^{t}\left[z^{t-1}\right]^T\\
\frac{\partial E}{\partial b} = \frac{\partial E}{\partial u^t}\frac{\partial u^t}{\partial b} = \delta^{t}\\
\frac{\partial E}{\partial c} = \frac{\partial E}{\partial v^t}\frac{\partial v^t}{\partial c} = \delta^{out,t}\\
\delta^tの計算:\\
\delta^t = \frac{\partial E}{\partial u^t} = \frac{\partial E}{\partial v^t}\frac{\partial v^t}{\partial u^t}  = \frac{\partial E}{\partial v^t}\frac{\partial \{W_{(out)}f(u^t)+c\}}{\partial u^t} = \delta^{out,t}W_{(out)}f'(u^t)

\delta^{t-1}更新量の計算:\\
\delta^{t-1} = \frac{\partial E}{\partial u^{t-1}} = \frac{\partial E}{\partial u^t}\frac{\partial u^t}{\partial u^{t-1}}  = \frac{\partial E}{\partial u^t}\left[\frac{\partial u^t}{\partial z^{t-1}}\frac{\partial z^{t-1}}{\partial u^{t-1}}\right]\ = \delta^{t}Wf'(u^{t-1})

δ-deltaの更新ソース

update_from_t_plus_1 = np.dot(delta[:,t+1].T, W.T)
update_t = np.dot(delta_out[:,t].T, W_out.T)
delta[:,t] = ( update_from_t_plus_1 + update_t  ) * functions.d_sigmoid(u[:,t+1])

IMG_1860.jpeg

パラメータ更新式
キャプチャ.PNG

勾配のクリッピングGradient Clipping

勾配爆発を防ぐ方法

 def gradient_clipping(grad, threshold):
     norm = np.linalg.norm(grad)
     rate = threshold / norm
     if rate < 1:
        return grad * rate
     return grad

LSTM

全体図

キャプチャ2.PNG

数学記述

f,g:活性関数tanh,sigmoid...\\
状態:\\
a^t = f(U_a h^{t-1} + W_a x^t)\\
入力ゲート:\\
i^t = \sigma(U_i h^{t-1} + W_i x^t)\\

忘却ゲート:\\
f^t = \sigma(U_f h^{t-1} + W_f x^t)\\
CECメモリ:\\
c^t = (i^t \otimes a^t)\oplus(f^t \otimes c^{t-1})\\
出力ゲート:\\
o^t = \sigma(U_o h^{t-1} + W_o x^t)\\
h^t = o^t \otimes g(c^t) 

特徴

  • CECは過去情報を保管する
  • 忘却ゲートは要らなくなる情報を忘却する
  • 入力ゲートと出力ゲートはCECにニューラルネットワーク学習特性を持たせる
  • 覗き穴結合はCECの保管している過去情報を任意なタイミングで他のノードを伝播させれたり、 忘却させるたりする仕組み

GRU

LSTMではパラメータが多数存在しているため、計算コストが高い
パラメータが大幅削減され、精度もLSTMと同等またはそれ以上を期待される構造

全体図

キャプチャ3.PNG

数学記述

更新ゲート\\
z^t = \sigma(W_z x^t + U_z h^{t-1} + {b_z}^t)\\
リセットゲート\\
r^t = \sigma(W_r x^t + U_r h^{t-1} + {b_r}^t)\\

c = f(W_h x^t + U_h(r^t \otimes h^{t-1}))\\
h^t = (z^t \otimes c)\oplus((1 - z^t) \otimes h^{t-1})

双方向RNN

キャプチャ4.PNG
過去の情報だけでなく、未来の情報加味することで、精度を向上させるモデル
例:機械翻訳

ソース

def bidirectional_rnn_net(xs, W_f, U_f, W_b, U_b, V):
    xs_f = np.zeros_like(xs)
    xs_b = np.zeros_like(xs)
    for i, x in enumerate(xs):
        xs_f[i] = x
        xs_b[i] = x[::-1]
    hs_f = _rnn(xs_f, W_f, U_f)
    hs_b = _rnn(xs_b, W_b, U_b)
    hs = [np.concatenate([h_f, h_b[::-1]], axis=1)]
    ys = hs.dot(V.T)
    return ys

Seq2Seq

全体図

キャプチャ.PNG
Encoder-Decoderモデルの一種
機械翻訳、機械対話などに使用されている

Encoder

キャプチャ2.PNG
インプットテキストを単語に分割し
分割した単語を分散表現ベクトルに変化(Embedding)
ベクトルを順番にRNNなどに入力していく

X1をRNNに入力し、hidden stateを出力し、
そのhidden stateと次のX2をまたRNNに入力していく
という流れを繰り返す

最後のXをRNNに入力した時のhidden stateをfinal state として
final stateがthought vector と呼ばれ、入力した分の意味を表すベクトルとなる

Decoder

キャプチャ3.PNG
アウトプットとして、単語のトークンに生成する
Encoderのfinal state(thought vector)をDecoderのintital stateとして使用する
生成確率に基づいて最初のtokenをランダムに選ぶ
ランダムに選んだ最初のtokenをEmbeddingして、Decoderのintital stateと共に、RNNに入力していく
hidden stateとYが得られる
YをEmbeddingして、hidden stateと共に、RNNに入力していく

HRED(Hierarchical Recurrent encoder-decoder)

Seq2seqでは、会話の文脈無視で、応答されている。
HREDでは、前の単語の流れに即して応答されるため、
より人間らしい文章が生成される。

Seq2seq + Context RNN

Context RNN

Encoderのまとめた各文章の系列をまとめて、これまでの会話コンテクスト全体を表すベクトルに
変換する構造
>過去の発話の履歴を加味した返答をできる

HREDの問題

  • 確率的な多様性が字面にしかないため、同じコンテキストを与えられても、答えの内容が毎回、同じものしか出せない
  • 短いよくある答えを学ぶ傾向がある

VAE

オートエンコーダ(Auto encoder)

教師なし学習の一つ
入力データから潜在変数Zに変換するニューラルネットワークをEncoder
潜在変数Zをインプットとして、元のデータを復元するニューラルネットワークをDecoder

Zの次元が入力データより小さい場合、次元削減とみなす

VAE

通常のオートエンコーダーの場合、
何かしら潜在変数Zにデータを押し込めているものの、
その構造がどのような状態か分からない

VAEはこの潜在変数Zに確率分布Z~N(0,1)を仮定したもの
>VAEは、データを潜在変数Zの確率分布という構造に押し込める

VHRED(Latent Variable Hierarchical Recurrent Encoder-Decoder)

HREDに、VAEの潜在変数の概念を追加したもの

word2vec

可変長の文字列をニューラルネットワークに与えることができない
→固定長形式で単語を表す必要がある。

大規模データから分散表現配列を学習させて
分散表現配列により、単語に対して、分散表現ベクトルを習得する。(Embedding化)

単語の分散表現ベクトルを用いることで、
単語間の意味的な距離を定量的に表現できる
この単語の分散表現ベクトルをRNN等に入力することで、
より、自然な結果が得られる

Attention Mechanism

seq2seqでは、固定次元ベクトルを入力としてしないといけないため、
長い文章へ対応が難しい

「入力と出力の単語が関連しているか」という関連度を学習する仕組み
キャプチャ4.PNG

Day4

強化学習

強化学習とは

行動の結果として与えられる報酬を基に、
行動を決定する方策を改善していく機械学習

強化学習のイメージ

キャプチャ5.PNG

強化学習の応用例

マーケティングの場合

  • 環境:会社の販売促進部
  • エージェント:プロフィールと購入履歴に基づいて、キャンペーンメールを送る顧客を決めるプログラム
  • 行動:顧客ごとに送信・非送信の2つの行動を選ぶ
  • 報酬:キャンペーンのコストという負の報酬とキャンペーンで生み出せる売上という正の報酬を受ける

検索と利用のトレードオフ

  • 未知の行動のみを常に取り続ければ、過去の経験が生かせない(利用が足りない状態)
  • 過去のデータでベストとされる行動のみを常に取り続ければ、他のもっとベストな行動を見つけられない(検索が足りない状態) 上記の2つの状態のトレードオフは検索と利用のトレードオフ

強化学習の差分(教師あり・無しに対する)

  • 教師あり・なし学習では、データのパターンを見つけ出す、及び、そのデータから予測することが目標
  • 強化学習では、優れた方策を見つけることが目標

強化学習の歴史

冬の時代があったが、計算速度が飛躍的に向上させたり、ニューラルネットワークの誕生だったりする
ことにより、強化学習を可能とした

Q学習:行動価値関数を、行動する毎に更新することにより学習を進める方法
関数近似法:価値関数や方策関数を関数近似する方法

行動価値関数

価値を表す関数として
- 状態価値関数:ある状態の価値に注目する場合
- 行動価値関数:状態と価値を組み合わせた価値に注目する場合

方策関数

ある状態でどのような行動を採るのかの確率を与える関数

方策勾配法

方策反復法
方策をモデル化して最適化する方法
キャプチャ6.PNG
J:方策の良さ
定義方法
- 平均報酬
- 割引報酬和

行動価値関数:Q(s,a)
方策勾配定理が成り立つ
キャプチャ7.PNG

Alpha Go

Alpha Go(Lee)

PolicyNet

キャプチャ.PNG

ValueNet

キャプチャ2.PNG

Alpha Go(Lee)のPolicyNet、ValueNetの入力

キャプチャ3.PNG

RollOutPolicy

ニューラルネットワークではなく線形の方策関数
検索中に高速に着手確率を出すために使用される
キャプチャ4.PNG

学習

キャプチャ7.PNG

  1. 教師あり学習によるRollOutPolicyとPolicyNetの学習
  2. 強化学習によるPolicyNetの学習
  3. 強化学習によるValueNetの学習

PolicyNetの教師あり学習

KGS Go Server(ネット囲碁対局サイト)の棋譜データから3000万局面分を用意し、
棋士と同じ着手を予測できるよう学習を行った

具体的には、棋士が着手した手を1とし、
残りを0とした19x19次元の配列を教師データとして、
それを分類問題として学習した
学習したPolicyNetは57%ほどの精度

PolicyNetの強化学習

現状のPolicyNetとPolicyPoolからランダムに選択されたPolicyNetと
対局シミュレーションを行い、その結果を用いて方策勾配法で学習を行った。

PolicyPoolとは、PolicyNetの強化学習の過程を500 iterationごとに記録し保存しておいたもの

現状のPolicyNet同士の対局ではなく、PolicyPoolに保存されているものとの対局を使用する理由は
対局に幅を持たせて過学習を防ごうというのが主

mini batch size 128で1万回

ValueNetの学習

PolicyNetを使用して対局シミュレーションを行い、その結果の勝敗を教師として学習した。
教師データ作成の手順
1.SL PolicyNet(教師あり学習で作成したPolicyNet)でN手まで打つ
2.N+1手目の手をランダムに選択し、その手で進めた局面をS(N+1)とする
3.S(N+1)からRL PolicyNet(強化学習で作成したPolicyNet)で終局まで打ち、その勝敗報酬をRとする。

S(N+1)とRを教師データに対して、損失関数を平均二乗誤差とし、回帰問題として学習する
mini batch size 32で5000万回

N手までとN+1手からのPolicyNetを別々にした理由は、過学習を防ぐため

モンテカルロ木探索

囲碁ソフトではもっと有効とされる探索法
囲碁では、minimax探索やαβ探索で盤面の価値や勝利予測値を出すのが困難

現局面から末端局面までPlayOutと呼ばれるランダムシミュレーションを多数回行い、
その勝敗を集計して着手の優劣を決定する

該当のシミュレーション回数が一定数を超えたら、その手を着手したあとの局面をシミュレーション開始局面とするよう、探索木を成長させる。
探索木の成長はモンテカルロ木探索の優れているところ

木の成長を行うことにより、一定条件下において、探索結果は最善手を返す

Alpha Go(Lee)のモンテカルロ木探索

キャプチャ.PNG

選択

キャプチャ2.PNG

評価

キャプチャ7.PNG

バックアップ

キャプチャ6.PNG

成長

選択、評価、バックアップを繰り返し一定回数選択された手があったら、その手で進めた局面の合法手ノードを展開し、探索木を成長させる

AlphaGo(Lee)とAlphaGo Zeroの違い

  • 教師あり学習を一切行わず、強化学習のみ
  • 特徴入力からヒューリスティックな要素を排除し、石の配置のみ
  • PolicyNetとValueNetを1つのネットワークに
  • Residual Netの導入
  • モンテカルロ木探索からRollOutシミュレーションを無くす

AlphaGo Zero

PolicyValueNet

キャプチャ5.PNG

Residual Network

ショートカット構造を追加し、勾配の爆発、消失を抑える
これにより、100層を超えるネットワークで安定に学習できる

基本構造
キャプチャ.PNG

層数の違うネットワークのアンサンブル効果が期待できる

派生形

Residual Blockの工夫
  • Bottleneck:1x1KernelのConvolutionを利用し、1層目で次元削減を行い、3層目で次元回復を行う3層構造にし、2層のと比べたら、計算量がほぼ同じけど、1層を増やすによし、表現力が増す
  • PreActivation:Residual Blockの並び:BatchNorm->ReLU->Convolution->BatchNorm->ReLU->Convolution->Add
構造の工夫
  • WideResNet:ConvolutionのFilter数をK倍にしたResNet
  • PyramidNet:各層でFilter数を増やしていくResNet

モンテカルロ木探索

選択

キャプチャ7.PNG

評価及び成長

Leafノードまで進めた局面saをPolicyValueNetで評価する。RollOutは行わない
また、局面saの合法手ノードを展開し木を成長させる。

バックアップ

キャプチャ6.PNG

学習法

自己対局による教師データの作成

現状のネットワークでモンテカルロ木探索を用いて自己対局を行う
まず30手までランダムで打ち、そこから探索を行い勝敗を決定する
自己対局中の各局面での着手選択確率分布と勝敗を記憶する
教師データの形は(局面、着手選択確率分布、勝敗)が1セット

学習

自己対局で作成した教師データを使い学習を行う
NetWorkのPolicy部分の教師に着手選択確率分布を用い、Value部分の教師に勝敗を用いる
損失関数はPolicy部分はCrossEntropy, Value部分は平均二乗誤差

ネットワークの更新

学習後、現状のネットワークと学習後のネットワークとで対局テストを行い、
学習後のネットワークの勝率が高かった場合、学習後のネットワークを現状のネットワークとする

軽量化・高速化技術

分散深層学習

複数の計算資源(ワーカー)を使用し、並列的にニューラルネットワークを構成することで、
効率の良い学習を行う

データ並列化

親モデルを各ワーカーに子モデルとしてコピー
データを分割し、各ワーカーごとに計算させる
キャプチャ.PNG

同期形

各ワーカーが計算が終わるのを待ち、
全ワーカーの勾配が出たところで勾配の平均を計算し、親モデルのパラメータを更新
キャプチャ2.PNG

非同期形

各ワーカーはお互いの計算を田主、各子モデルごとに更新を行う
学習が終わった子モデルはパラメータサーバーにPushされる
新たに学習を始める時は、パラメータサーバーからPopしたモデルに対して学習する
キャプチャ2.PNG

同期形と非同期形の比較
  • 処理スピードは非同期の方が速い
  • 非同期は最新のパラメータを利用できないため、学習が不安定になりやすい
  • 精度が良い同期が主流となる

モデル並列化

親モデルを各ワーカーに分割し、それぞれのモデルを学習させる。学習が終わった後で、1つのモデルに復元

モデルのパラメータ数が多いほど、スピードの効率も向上する
キャプチャ.PNG

データ並列化とモデル並列化

モデルが大きい→モデル並列化
データが大きい→データ並列化

GPUによる高速技術

GPGPU(General-purpose on GPU)

元々の使用目的であるグラフィック以外の用途で使用されるGPUの総称

CPU

高性能なコアが少数
複雑で連続的な処理が得意

GPU

比較的低性能なコアが多数
簡単な並列処理が得意
ニューラルネットワークの学習は単純な行列演算が多いため、高速化が可能

GPU開発環境

CUDA

GPU上で並列コンピューティングのプラットフォーム
NVIDIA社が開発しているGPUのみ
DeepLearning用に提供されている

OpenCL

オープンな並列コンピューティングのプラットフォーム
NVIDIA社以外でも使用可能
DeepLearning用の計算に特化しているわけではない

DeepLearning フレームワーク

Tensorflow
Pytorch

モデルの軽量化

精度を維持しつつパラメータや演算回数を低減する方法
→モバイル、IoT機器と相性がいい

量子化(Quantization)

通常のパラメータの64bit浮動小数点を32bitなど下位の精度に落とすことで、メモリと演算処理の削減
欠点:精度の低下

倍精度演算(64bit)
単精度演算(32bit)

計算の速度

キャプチャ7.PNG

省メモリ

キャプチャ4.PNG

精度

キャプチャ3.PNG

蒸留(Distillation)

精度の高いモデルは大きなモデルで推論に多くのメモリと演算処理が必須

大きなモデルの知識を使い軽量なモデルを作成
キャプチャ7.PNG

教師モデルと生徒モデル

教師モデルの重みを固定し生徒モデルの重みを更新していく
誤差は生徒モデルと教師モデルのそれぞれの誤差を使い重みを更新していく
キャプチャ2.PNG

利点

学習回数が少なくても精度のよいモデルを作成することができる

プルーニング(Pruning)

寄与の少ないニューロンをモデルから削減し高速化と省メモリ化

応用モデル

Mobinet

一般的な畳み込みレイヤ―

入力特徴マップ(チャネル数):HxWxC
畳込みカーネルのサイズ:KxKxC
出力チャネル数(フィルタ数):M
スライド1でパディングを適用した場合の畳み込み計算量:HxWxKxKxCxM
キャプチャ7.PNG

Depthwise Convolution

フィルタ数:1
キャプチャ6.PNG

Pointwise Convolution

1x1conv
キャプチャ5.PNG

構造

  • Depthwise Separable Convolutionという手法を用いて計算量を削減している。通常の畳み込みが空間方向とチャネル方向の計算を同時に行うのに対して、Depthwise Separable Convolution ではそれらをDepthwise ConvolutionとPointwise Convolutionと呼ばれる演算によって個別に行う
  • Depthwise Convolutionはチャネル毎に空間方向へ畳み込む
  • Depthwise Convolutionの出力をPointwise Convolutionによってチャネル方向に畳み込む キャプチャ4.PNG

Dense net

キャプチャ7.PNG

Dense Block

すべての同特徴量サイズの層を結合:
キャプチャ6.PNG

結合した特徴マップを下記の処理:
キャプチャ5.PNG

計算した出力に入力特徴マップを足し合わせる
キャプチャ4.PNG

kをネットワークgrowth rateと呼ぶ
大きくなるほど、ネットワークが大きくなるため、小さい整数に設定するのがよい
キャプチャ3.PNG

Transition Layer

CNNで中間層でチャネルサイズを変更
特徴マップのサイズを変更し、ダウンサンプリング
キャプチャ2.PNG

DenseNetとResNetの違い

DenseBlock:前方の各層の入力を後方の層へ入力
ResidualBlock:前1層の入力のみを後方の層へ入力

DenseBlockにGrowth Rateハイパーパラメータが存在する

Norm

キャプチャ7.PNG

Batch Norm

ミニバッチに含まれるsampleの同チャネルが同一分布に従うような正規化
チャネルごとに正規化
ミニバッチのサイズを大きく取れない場合、効果が薄くなる

キャプチャ6.PNG

Layer Norm

それぞれのsampleの全てのpixelが同一分布に従うような正規化
特徴マップごとに正規化
キャプチャ5.PNG

Instance Norm

さらにチャンネルも同一分布に従うような正規化
各sampleの各チャネル毎に正規化
コントラスの正規化の寄与・画像のスタイル転送やテクスチャ合成タスクなど利用
キャプチャ3.PNG

Wavenet

生の音声波形を生成する深層学習モデル
Pixel CNN(高解像度の画像を精密に生成できる手法)を音声に応用

Dilated convolution

時系列データに対して畳み込み

層が深くなるにつれて畳み込むリンクを離す
キャプチャ7.PNG

Transformer

キャプチャ7.PNG

Seq2seq

キャプチャ6.PNG

ニューラルネットワーク機械学習の問題点

翻訳元の分の内容を1つのベクトルで表現
→文が長くなると表現力がたりなくなる

Attention

翻訳先の各単語を選択する際に、翻訳元の文中の各単語の隠れ状態を利用
キャプチャ2.PNG

Attentionの例

キャプチャ.PNG

Attentionは辞書オブジェクト

query(検索クエリ)に一致するkeyを索引し、対応するvalueを取り出す操作である
キャプチャ7.PNG

Transformer

2017年6月に登場
英仏(3600万分)の学習を8GPUで3.5日で完了

主要モジュール

キャプチャ7.PNG

二種類Attention

キャプチャ6.PNG

Encoder

キャプチャ5.PNG

Self Attention

入力を全て同じにして学習的に注意箇所を決めていく
キャプチャ4.PNG

Position-Wise Feed-Forward Networks

位置情報を保持したまま順伝播させる
キャプチャ2.PNG

Scaled dot product attention

全単語に関するAttentionをまとめて計算
キャプチャ3.PNG

Multi-Head attention

重みパラメータの異なる8個のヘッドを使用
キャプチャ.PNG

Decoder

Encoderと殆ど同じ
未来の単語をみないようマスクが存在している
キャプチャ7.PNG

Add & Norm

キャプチャ6.PNG

Add(Residual Connection)

入力力の差分を学習
実装上は出力に入力をそのまま加算するだけ
効果:学習・テストエラーの低減

Norm(Layer Normalization)

各層においてバイアスを除く活性化関数への入力を平均0、分散1に正則化
効果:学習の高速化

Position Encoding

RNNを用いないので単語列の語順情報を通過する必要がある
キャプチャ5.PNG

物体検知・セグメンテーション

広義の物体認識タスク

キャプチャ7.PNG

Dataset

キャプチャ6.PNG

Confusion matrix

キャプチャ5.PNG
キャプチャ4.PNG

IoU:Intersection over Union

キャプチャ3.PNG

AP(Average Precision)

AP = \frac{1}{11}\sum_{r\in \{0,0.1,0.2,...,1\}}^{}p_{interp}(r)\\
p_{interp}(r) = \underset{\tilde{r}>r}{max}\:p(\tilde{r})\\
再現率r以上の範囲における適合率の最大値を採用する

mAP(Mean Average Precision)

グラス数がCとする

mAP = \frac{1}{C}\sum_{i = 0}^{C}AP_i\\

キャプチャ7.PNG

FPS:Flames per Second

キャプチャ6.PNG

フレームワーク

キャプチャ5.PNG

One-stage detectorとTwo-stage detectorの動作例

キャプチャ4.PNG

SSD: Single Shot Detector

キャプチャ7.PNG

ネットワークアーキテクチャ

キャプチャ5.PNG

特徴マップからの出力

キャプチャ6.PNG

デフォルトボックス数

キャプチャ3.PNG

他の工夫

キャプチャ.PNG

損失関数

キャプチャ8.PNG

Semantic Segmentation

キャプチャ8.PNG

Deconvolution/Transposed convolution

キャプチャ6.PNG

輪郭情報の補完

キャプチャ5.PNG

U-Net

キャプチャ4.PNG

DeconvNet & SegNet

キャプチャ3.PNG

Unpooling

キャプチャ2.PNG

Dilated Convolution

キャプチャ.PNG

GAN(Generative Adversarial Nets)

生成器と識別器を競わせて学習する生成&識別もでる
- Generator:乱数からデータを生成
- Discriminator:入力データが真データであるかを識別
キャプチャ8.PNG

2プレイヤーのミニマックスゲーム

1人が自分の勝利する確率を最大化する作戦をとる
もう1人は相手が勝利する確率を最小化する作戦をとる
キャプチャ7.PNG

最適化方法

キャプチャ5.PNG

DCGAN(Deep Convolutional GAN)

GANを利用した画像生成モデル

Generator:

  • Pooling層の代わりに転置畳み込み層を使用
  • 最終層はtanh、その他はReLU関数で活性化

Discriminator:

  • Pooling層の代わりに畳み込み層を使用
  • Leaky ReLU関数で活性化

共通事項:

  • 中間層に全結合層を使わない
  • バッチノーマライゼーションを適用

キャプチャ4.PNG

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0