SlideShare a Scribd company logo
1 of 125
深層学習
1.再帰型ニューラルネットワークの概念
2.LSTM
3.GRU
4.双方向RNN
5.Seq2Seq
6.Word2vec
7.Attention Mechanism
8.強化学習
9.Alpha Go
10.軽量化・高速化技術
11.応用モデル
12.Transformer
13.物体検知・セグメンテーション
深層学習の各種手法、それに用いられている技術の概要を簡単に紹介する。
0.深層学習所感
• 深層学習は理論も必要だが、テクニック勝負。工学的要素が強い。
- scikit-learn/keras/pytorchなどを使えば、何かモデルを作れて何らかの結果が得られる。
- 良いモデルを作れるかは、良いとされている手法を知っているか?という要素が強いと感じる。
- 理論よりも結果論。
1.再帰型ニューラルネットワークの概念
再帰型ニューラルネットワーク
再帰型ニューラルネットワーク(RNN)とは、ニューラルネットワークを拡張して時系列データを扱えるようにしたも
のである。時系列データとは、時間的順序を追って一定間隔ごとに観察され、しかも相互に統計的依存関係が
認められるようなデータの系列である。
特徴として、時系列モデルを扱うには初期の状態と過去の時間(t-1)の状態を保持し、そこから次の時間で
の(t)を再帰的に求める再帰構造が必要になる。
Win:入力から中間層を定義する際にかけられる重み
Wout:中間層から出力を定義する際にかけられる重み
W:前の中間層から現在の中間層にかけられる重み
u t:x から z へいく活性化関数を通る前のもの z=f(u)
v t:z から y へ行く活性化関数を通る前のもの y=g(v)
u t: u[:,t+1] = np.dot(X, W_in) + np.dot(z[:,t].reshape(1, -1), W)
z t: z[:,t+1] = functions.sigmoid(u[:,t+1])
vt: np.dot(z[:,t+1].reshape(1, -1), W_out)
yt: y[:,t] = functions.sigmoid(np.dot(z[:,t+1].reshape(1, -1), W_out))
RNNの構造図
演習
<構文木>
隣同士の単語で表現ベクトルを作り特徴量を得る。
そこで得られた隣同士の特徴量から新たな特徴量を作ること で、
これを繰り合わせ最終的に1つの特徴量を得ること。
W.dot(np.concatenate([left,right])
➡ left:[a,b,c], right:[d,e,g] とすれば、concatenateを使うことで、
[a,b,c,d,e,f]となり、隣通しのベクトルをそのまま残すことができる。
➡重みをうまく設定することで、次元を減らすことができる。
1.再帰型ニューラルネットワークの概念
BPTT
BPTT(Backpropagation Through Time)とは、RNNにおいてパラメータ調整方法の一種(誤差逆伝播の一種)
W_in_grad += np.dot(X.T, delta[:,t].reshape(1,-1))
W_out_grad += np.dot(z[:,t+1].reshape(-1,1), delta_out[:,t].reshape(-1,1))
W_grad += np.dot(z[:,t].reshape(-1,1), delta[:,t].reshape(1,-1))
u t: u[:,t+1] = np.dot(X, W_in) + np.dot(z[:,t].reshape(1, -1), W)
z t: z[:,t+1] = functions.sigmoid(u[:,t+1])
vt: np.dot(z[:,t+1].reshape(1, -1), W_out)
yt: y[:,t] = functions.sigmoid(np.dot(z[:,t+1].reshape(1, -1), W_out))
<連鎖率の復習>
z=t^2, t = x +y の時の dz/dxを求める。
dz/dx = dz/dt・dt/dx =2t・1 = 2(x+y)
RNNは重みが3つあるので、更新すべき重みは(Win, Wout, W) の3つある。
①Winはuの式であるが、Eはuの式ではない(yの式)。∂E/∂u・∂u/∂Winを
分解して表すこともできるが、yをuで微分するまでは長いのでδtで表すことに
する。ここで”t”は時間的に遡ることを意味する。
②Woutはvの式であるが、Eはvの式ではない(yの式)。①と同様に微分の連
なりをδout,tとして表す。
③Wはuの式であるが、Eはuの式ではない(yの式)。①と同様に微分の連なり
をδtとして表す。
バイアスは2つあるので、更新すべきバイアスは(b,c)の2つ。
先ほどと同様に、bはuの式でありそこまでの微分をδtして表し、cはvの式である
ため、そこまでの微分をδout,tとして表す。
RNNの構造図
y1=g(Wout・s1+c), s1=f(Win・x1+W・s0+b)
1.再帰型ニューラルネットワークの概念
パラメータの更新式
W_in -= learning_rate * W_in_grad
W_out -= learning_rate * W_out_grad
W -= learning_rate * W_grad
BPTTの計算詳細
delta[:,t] = (np.dot(delta[:,t+1].T, W.T) + np.dot(delta_out[:,t].T, W_out.T)) * functions.d_sigmoid(u[:,t+1])
・前頁のδtをちゃんと数式で表したもの。
・1つ前の時点のδt-1を求める。ut-1で微分するのは、utはt-1を含んでいる
ため、ut-1で微分ができるため。zt-1にアクセスして表すことが出来る。
・zだけ遡る場合
➡ 時間的なつながりがあることが分かる。
BPTTの全体像
zは時間的に数珠繋ぎになっているが、出
力は時間的な遡りの要素を持っていない。
このため、Wout, bには∑がないが、Win,
W, c は∑がついていると考えればよい。
RNNの構造図
ε:学習率
誤差関数を求める。このとき、yの式を展開すると、zが数珠つ
なぎになっていることが分かる。
演習
delta_t はδt-1であり、以下の式のように求められる。つまり、
δtに活性化関数を通したuを掛けたものとなる。
2.LSTM
RNNでは時系列を遡れば遡るほど、勾配が消失していく。(NNの層がいくつも重なったものと考えらえる。)
➡ 長い時系列の学習が困難。
これを解決するために、構造自体を変えて解決したものがLSTM。
<勾配消失問題とは…>
誤差逆伝播法が下位層に進んでいくにつれ
て、勾配がどんどん緩やかになっていく。
(シグモイド関数の微分の最大値は0.25)
<勾配爆発とは…>
勾配が、層を逆伝播するごとに指数関数的
に大きくなっていく。(学習率を大きくすると起
きやすい)
演習
rate = threshold/norm :閾値を勾配のノルムで割ったもの。
Rate が 1より小さい(normが大きい=勾配が大きい)場合は
grad に rate を掛けることで、勾配が大きくなることを抑えることが
できる。
2.LSTM
CEC
勾配消失および勾配爆発の解決方法として、勾配が 1であれば解決できる。
CECの課題
入力データについて、時間依存度に関係なく重みが一律である。
➡ニューラルネットワークの学習特性がないということ。
←時間を遡っても勾配が1のままであればよい。
(CECは記憶することしかしない。)
青線は前回の出力値
➡ CECの周りに学習機能を配置する。
入力ゲートと出力ゲート
入力・出力ゲートを追加することで、それぞれのゲートへの
入力値の重みを、重み行列W, Uで可変可能とする。
➡ CEC の課題を解決。
・入力ゲートはCECの覚えさせ方を学習する。
- 今回の入力値 W, と前回の出力値 Uをもとに、今回の入力値をどう使うか
(CECにどう覚えさせるか) Vを決める。
・出力ゲートはCECからの情報を “どのように使うか” を学習する。
- 今回の入力値 w, と前回の出力値 Uをもとに、今回の出力値をどう使うかを決める。
赤い線は今回の入力値
2.LSTM
忘却ゲート
LSTMの現状:CECは、過去の情報がすべて保管されているが、過去の情報がいらなくなった場合、削除することはできず、
保管され続ける。このため、過去の情報がいらなくなった場合、そのタイミングで情報を忘却する機能が必要。
➡ 忘却ゲートの誕生
覗き穴結合
CECの保存されている過去の情報を、任意のタイミングで他の
ノードに伝播させたり、あるいは任意のタイミングで忘却させたい。
ただし、CEC自身の値は、ゲート制御に影響を与えていない。
➡ 覗き穴結合とは、CEC自身の値に、重み行列を介して伝播
可能にした構造。
使う必要のない古い情報に出力が影響を与えられてしまうことがある。
今回の入力と、前回の出力を用いて記憶を消すか・維持するか判断する。
これまでは、CECの情報を使わずに各ゲートを学習させた。
(覗き穴結合での大きな効果改善は見込めない模様)
f(t):忘れる(覚える)割合
c(t):今回CECが覚えている情報 a(t)とi(t)で作られる
i(t):今回の情報をどれだけ覚えるかの情報
例題)
以下の文章をLSTMに入力し空欄にあてはまる単語を予測したいとする。
文中の「とても」という言葉は空欄の予測においてなくなっても影響を及ぼさ
ないと考えられる。このような場合、どのゲートが作用すると考えられるか?
「映画おもしろかったね。ところで、とてもお腹が空いたから何か_____。」
➡ 忘却ゲート
演習
cはセルの状態を更新するので矢印の箇所とな
る。つまり、入力データと忘却ゲートからの情報
となる。
3.GRU
GRU
LSTMではパラメータ数が多く、計算負荷が高くなる問題があった。これを改善し、パラメータを大幅に削減し、制度は同等又
はそれ以上が望めるようになった構造。
GRUの全体像
LSTM:入力ゲート、出力ゲート、忘却ゲート、CEC
➡ ゲートが多いためパラメータ数も多くなるため、計算負荷が高い
CECは勾配が1であり、学習能力がない。(そのため周りにゲートを配置)
GRU:リセットゲート、更新ゲート
➡ LSTMよりもゲートの数を減らし、計算負荷低下させた
リセットゲート:h(t)がどのような状態で記憶を保持するか制御する。
更新ゲート:どのように出力を得るか制御する。
演習
h_newは
h(t)=z(t)・h(t-1)+(1-z(t))・h(t)を求めている。
h_barは活性化関数を通って出てきた値
h(t)=f(W・x(t)+U(r(t)・h(t-1))b(t)) となる。
4.双方向RNN
双方向RNN
過去の情報だけでなく、未来の情報を加味することで精度を向上させるためのモデル。
例)文章の推敲や、機械翻訳など
演習
xs_f
W_f
W_b
U_b
U_f
V
Concatenateのaxisの意味
axis=0:[〇,〇,…,〇]+[△,△,…,△] → [〇,〇,…,〇,△,△,…,△]
axis=1:[〇,〇,…,〇]+[△,△,…,△] → [〇,〇,…,〇
△,△,…,△]
= [[〇,△],
[〇,△],
[…,…],
[〇,△]]
xs_b
この問題では時間的に同じ位置のものを揃えたいので, axis=1 となる。
5.Seq2Seq
Seq2seq
Encoder-Decoder モデルの一種を指す。機会対話や、機械翻訳などに使用されている。
Encoder RNN
ユーザーがインプットしたテキストデータを、単語等のトークンに区切って渡す構造。
Taking:文章を単語等のトークン毎に分割し、トークンごとのIDに分割する。(one-hot-vector)
Embedding:IDから、そのトークンを表す分散表現ベクトルに変換。← 難しい
Encoder RNN:ベクトルを順番にRNNに入力していく。
Encoder RNN処理手順
・vec1をRNNに入力し、hidden stateを出力。このhidden state と次の入力vec2を
またRNNに入力してきたhidden state を出力という流れを繰り返す。
・最後のvecを入れたときの hidden state を final stateとしてとっておく。このfinal
state がthrought vector と呼ばれ、入力した文の意味を表すベクトルとなる。
Seq2seq全体図
Encoder(エンコーダー)
単語の列が順に入力される、hにデータが蓄積さ
れていく。隠れ層には文の意味がベクトルとして
保持される
RNNが2つ
Decoder(デコーダー)
文の意味から出力に作り替える
Encoder
単語を入力として取り、最終的に
文脈を表す1つのベクトルとなる。
BERTなどではMLM(Masked Language Model)が使われている。
MLM:文章の中のある1単語を見えなくして、前後の文脈からある1単語を予測させ
るという学習を行わせることで、Embeddingが割と上手に良くできることが知られている。
5.Seq2Seq
Decoder RNN
システムがアウトプットデータを、単語等のトークンごとに生成する構造。
Decoder RNN処理手順
1.Decoder RNN:Encoder RNN の final state (thought vector)から、
各tokenの生成確率を出力する。 Final state を Decoder
RNNの initial state として設定し、Embeddingを入力。
2.Sampling:生成確率にもとづいて token をランダムに選ぶ。
3.Embegging:2で選ばれた token を Embedding して Decoder RNN
への次の入力とする。
4. Detokenize:1-3を繰り返し、2で得られた tokenを文字列に直す。
Decoder
Encoderの処理と逆方向の処理を行うことで単語に戻すようなイメージ
演習
E:word embedding matrix
(単語とembeddingベクトルとの対応表)
単語に対するdot積をとることで特徴が取り出せる。
5.Seq2Seq
HRED
Seq2seqは一問一答しかできない。つまり、問いに対して文脈も何もなく、ただ応答が行われ続ける。
HREDとは、過去n-1個の発話から次の発話を生成する。
→ Seq2seqでは、会話の文脈無視で応答がなされたが、HREDでは前の単語の流れに即し応答されるため、
より人間らしい文章が生成される。
HRED:Seq2Seq + Context RNN
Context RNN : Encoderのまとめた各文章の系列をまとめて、これまでの会話コンテキスト全体を表すベクトルに変換する構造。
→ 過去の発話の履歴を加味した返答をできる。
HREDの課題
HREDは確率的な多様性が字面にしかなく、会話の「流れ」のような多様性がない。
→ 同じコンテキスト(発話リスト)を与えられても、答えの内容が毎回会話の流れとしては同じものしか出せない。
HREDは短く情報量に乏しい答えをしがち。
HRED構造図
Encoder
Decoder
Encoder
Decoder
文の意味ベクトル 文の意味ベクトル
5.Seq2Seq
VHRED
HREDにVAEの潜在変数の概念を追加したもの。HREDの課題をVAEの潜在変数の概念を追加することで解決した構造。
オートエンコーダー
教師無し学習の1つ。例)MNISTの場合、28×28の数字の画像を入れて、同じ画像を出力するニューラルネットワーク
28×28
=784
入力データから潜在変数 zに変換するニューラルネットワークを Encoder、
逆に潜在変数 zをインプットとして元画像を復元するニューラルネットワークを Decoder。
これにより次元削減が行える。
※zの次元が入力データより小さい場合、次元削減とみなすことができる。
10×10
=100
28×28
=784
同じになるよう
に学習する
元に戻しやすいよ
うに学習する
元に戻すように学
習する
オートエンコーダーの構造図
5.Seq2Seq
VAE
通常のオートエンコーダーの場合、何かしら潜在変数zにデータを押し込めているものの、その構造がどのような状態かわからな
い。VAEはこの潜在変数 zに確率分布 z~N(0,1)を仮定したもの。
➡ VAEは、データを潜在変数 zの確率分布という構造に押し込めることを可能にする。
VAEの構造図
ノイズを加えることで、入力が同じでも毎
回違う情報が入力される
これにより、汎用性の高い特徴をつかむ
ことが出来る
VAEは自己符号化器の潜在変数に確
率分布を導入したもの。
まとめ
Seq2seq:1つの時系列データから別の時系列データを得るネットワーク
(一問一答)
HRED:Seq2seqの機構にこれまでの文脈の意味ベクトルを解釈に加える
ことで、文脈の意味をくみ取った文の変換をできるようにしたもの。
(当たり障りのない回答しかできない)
VHRED:VAEの考え方を取り入れて、HRED以上の回答をできるように
したもの。
6.Word2vec
Word2vec
RNNでは単語のような可変長の文字列をNNに与えることはできない。
➡ 固定長形式で単語を表す必要がある。単語のような文字列をベクトル表現とする手法。
Embedding表現を得る手法の1つ。
学習データからボキャブラリを作成
例) I want to eat apples. I like apples.
↓
{apples, eat, I, like, to, want}
メリット
大規模データの分散表現の学習が、現実的な計算速度とメモリ量で実現可能にした。
➡ ×:ボキャブラリ × ボキャブラリだけの重み行列が誕生
〇:ボキャブラリ × 任意の単語ベクトル次元で重み行列が誕生
One-hotベクトルの場合
Applesを入力する場合、入力層には以下のベクトルが入力される。
※本来は、辞書の単語数だけone-hotベクトルが出来上がる
7.Attention Mechanism
Attention Mechanism
Seq2seqの問題は長い文章への対応が難しい。Seq2seqでは、2単語でも、100単語でも、固定次元ベクトルの中に入
力しなければならない。(中間層の大きさは決まっている)
解決策として、文章が長くなるほどシーケンスの内部表現の次元も大きくなっていく仕組みが必要になる。
➡ Attention Mechanism
「入力と出力のどの単語が関連しているのか」 の関連度を学習する仕組み。
(分の中で特に重要な単語を自力で見つける手法)
「a」についてはそもそも関連度が低く、「I」については「私」との関連度が高い。
中間層の情報量が一定でも、重要な情報だけを拾い
集めてその範囲の中で効果を得ることができる。
(近年のモデルは全部Attention)
まとめ
RNN:時系列データを処理するのに適したネットワーク
Word2vec:単語の分散表現ベクトルを得る手法
Seq2seq:1つの時系列データから別の時系列データを得るネットワーク
Attention:時系列データの中身の関連性に重みを付ける手法
8.強化学習
強化学習
長期的に報酬を最大化できるように環境の中で行動を選択できるエージェントを作ることを目標とする機械学習。
行動の結果として与えられる利益(報酬)をもとに、行動を決定する原理を改善していく仕組み。
学習イメージ 例)マーケティングの場合
環境:会社の販売促進部
エージェント:プロフィールと購入履歴に基づいて、キェンペーンメール
を送る顧客を決めるソフトウェア。
行動:顧客ごとに送信、悲送信の行動を選ぶことになる。
報酬:キャンペーンのコストという負の報酬と、キャンペーンで生み
出されると推測される売り上げという正の報酬をうける。
環境について事前に完璧な知識があれば、最適な行動を予測し、決定することは可能。=
どのような顧客にキャンペーンメールを送信すると、どのような行動を行うのかが既知である。
↓
強化学習の場合、上記仮定は成り立たないとする。不完全な知識をもとに行動しながら、
データを収集最適な行動を見つけていく。
過去のデータで、ベストとされる行動の身を常にとり続ければ、他にもっとベストな行動を
見つけることはできない。探索が足りない状態。
⇅トレードオフ
未知の行動のみを常にとり続ければ、過去の経験が生かせない。利用が足りない状態。
教師あり・教師無し学習:データからデータの特徴を見つける
強化学習:目的を達成するためにデータから自力で学習する
8.強化学習
強化学習
通常の教師学習と教師なし学習とのちがい。
➡ 目標が違う
・教師無し、有り学習ではデータに含まれるパターンを見つけ出す。及びそのデータから予測することが目標。
・強化学習では、優れた方策を見つけることが目標
強化学習の歴史
強化学習について
・冬の時代があったが、計算速度の進展により大規模な状態を持つ場合の、強化学習を可能としつつある。
・関数近似法と、Q学習を組み合わせる手法の登場。
Q学習
・行動価値関数を、行動するごとに更新することにより学習を進める方法。
関数近似法
・価値観数や方策関数を関数近似する手法のこと。
最近は深層学習と強化学習を組み合わせたも
のも多く見られ、計算量も膨大となる。
昔は入力・出力の大きな対応リストをつくり、行動方針を決めていた。
→ニューラルネットで方策関数を決める。
方策反復法:方策をモデル化して最適化する手法
→ 方策勾配法:π(s,a|θ)
Jとは方策の良さ(NNでいう誤差関数、小さくなるようにする)
→ 報酬を多くする方向に定義しなければならない
8.強化学習
価値観数
価値を表す関数としては、状態価値観数と行動価値観数の2種類がある。
・状態価値観数:ある状態の価値に注目する場合
・行動価値観数:状態と価値を組み合わせた価値に注目する場合(Q学習で使う)
方策関数
方策ベースの強化学習手法において、ある状態でどのような行動を採るのかの確率を与える関数のこと。
方策勾配法
θはNNでいう重み
εは学習率
状態価値観数:環境の状態が価値を決める
行動価値観数:環境の状態と行動の2つが価値を決める
例)碁の盤面と、その時取った行動に
よって価値が決まる(alpha go)
方策関数:π(s)=a
関数の関係
エージェントは方策に基づいて行動する。
π(s,a):VやQを元にどういう行動をとるか
→ 経験を活かす or チャレンジする など
その瞬間、瞬間の行動をどうするか決めるのが方策関数
V*(s):状態関数、Q*(s,a):状態+行動関数
→ ゴールまで今の方策を続けたときの報酬の予測値が得られる。
→ やり続けたら最終的にどうなるか?
定義方法
・平均報酬
・割引報酬和
上記の定義に対応して、行動価値観数Q(s,a)の定義を行い、方策勾配定理が成り立つ
元の式:∇θJ(θ)=∇θ∑πθ(a|s)Q*(s,a)
→ある行動を採るときの報酬
エージェントが環境中で取れる行動の選択肢は複数存在する。
選択肢ごとに状態と行動の価値を求めることができる。
9.Alpha Go
Alpha Go(Lee)の Policy Net Alpha Go(Lee)の Value Net
方策関数 価値関数
入力:19×19の盤面特徴 ×48チャンネル
2次元のデータなら畳み込んでプーリング!(定石) これを繰り返す。
出力層はSoftMax関数
→ 19×19マスのどこに打つのがベストかの確率を出力する
入力:19×19の盤面特徴 ×49チャンネル
2次元のデータなら畳み込んでプーリング!(定石) これを繰り返す。
全結合で1次元にして、出力層にTanh関数を用い、
→ 勝てそうかどうかを-1~1の範囲で出力する。
9.Alpha Go
Alpha Go(Lee)の 入力情報
9.Alpha Go
RollOutPolicy
NNではなく線形の方策関数。探索中に高速に着手確率を出すために使用される。
9.Alpha Go
Alpha Go(Lee)の 学習ステップ
最初から強化学習だとうまくいかないので、教師あり学習によって学習させる。
9.Alpha Go
PolicyNetの教師あり学習
PolicyNetの強化学習
KGS Go Server(ネット囲碁対局サイト)の棋譜データから3000万局面分の教師を用意し、教師と同じ着手を
予測できるように学習を行った。
具体的には、教師が着手した手を1とし残りを0とした19×19次元の配列を教師とし、それを分類問題として学習した。
この学習で作成したPolicyNetは57%程の精度である。
現状のPolicyNetとPolicyPoolからランダムに選択されたPolicyNetと対局シミュレーションを行い、その結果を用いて
方策勾配法で学習を行った。
PolicyPoolとは、PolicyNetの強化学習の過程を500Iterationごとに記録し保存しておいたものである。
現状のPolicyNet同士の対局ではなく、PolicyPoolに保存されているものとの対局を使用する理由は、対局に幅を
持たせて過学習を防ごうというのが主である。
この学習をmini batch size 128で1万回行った。
9.Alpha Go
Value Netの学習
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を別々にしてある理由は、過学習を防ぐためであると論文では説明されている。
9.Alpha Go
モンテカルロ木探索
9.Alpha Go
9.Alpha Go
9.Alpha Go
AlphaGo(LEE)とAlphaGo Zeroの違い
1.教師あり学習を一切行わず、強化学習のみで作成。
2.特徴入力からヒューリスティックな要素を排除し、石の配置のみにした。
3.PolicyNetとValueNetを1つのネットワークに統合した。
4.Residual Netを導入した。
5.モンテカルロ木探索からRollOutシミュレーションをなくした。
Alpha Go Zero の Policy ValuNet
9.Alpha Go
Residual Network
ネットワークにショートカット構造を追加して、勾配の爆発、消失を抑える効果を狙ったもの。
Residual Networkを使うことにより、100層を超えるネットワークでの安定した学習が可能となった。
基本構造は Convolution → BatchNorm → ReLU → Convolution → BatchNorm → Add → LeRU の
Blockを1単位にして積み重ねる形となる。また、Residual Network を使うことにより層数の違う Networkのアンサンブ
ル効果が得られているという説もある。
Residual Block 基本形 Resisual Networkを使うことで様々
なモデルを使ったような効果を得ること
ができる。
9.Alpha Go
Residual Blockの工夫
Bottleneck
1×1 KernelのConvolutionを利用し、1層目で次元削減を行って3層目で次元を復元する3層構造にし、2層のも
のと比べて計算量はほぼ同じだが1層増やせるメリットがある、としたもの
PreActivation
ResidualBlockの並びをBatchNorm→ReLU→Convolution→BatchNorm→ReLU→Convolution→Add
とすることにより性能が上昇したとするもの。
Network構造の工夫
WideResNet
ConvolutionのFiletr数をk倍にしたResNet。1倍→k倍 × ブロック → 2*k倍 yブロックと段階的に幅を増やして
いくのが一般的。Filter数を増やすことにより、浅い層数でも深い層数のものと同等以上の精度となり、また、GPUをより
効率的に使用できるため学習も早い。
PyramidNet
WideResNetで幅が広がった直後の層に過度の負担が掛かり精度を落とす原因となっているとし、段階的にではなく、
各層でFilter数を増やしていくResNet。
E資格等ではよく出るので、試験対策として覚えておくとよい。
(技術としては大したものではない。。既存技術の組み合わせ)
9.Alpha Go
Residual Networkの性能
9.Alpha Go
Alpha Go Zero のモンテカルロ木探索
9.Alpha Go
Alpha Go Zero の学習法
10.軽量化・高速化技術
分散深層学習とは
・深層学習は多くのデータを使用したり、パラメータ調整のために多くの時間を使用したりするため、高速な計算が求められる。
・複数の計算資源を使用し、並列的にニューラルネットを構成することで、効率の良い学習を行いたい。
・データ並列化、モデル並列化、GPUによる高速技術は不可欠である。
データ並列化
・親モデルを各ワーカーに子モデルとしてコピー。
・データを分割し、各ワーカーごとに計算させる。
18か月で2倍のコンピュータ性能が向上すると言われている。
一方、深層学習は1年で10倍の計算が必要となっている。
➡ 軽量化・高速化技術が必要不可欠
ワーカー:PC, CPU, GPU, スマホなども含む
10.軽量化・高速化技術
データ並列化
・データ並列化は各モデルのパラメータの合わせ方で、同期型か非同期型か決まる。
同期型 非同期型
同期型のパラメータ更新の流れ:
各ワーカーが計算が終わるのを待ち、全ワーカーの勾配が出たところで勾
配の平均を計算し、親モデルのパラメータを更新する。
非同期型のパラメータ更新の流れ:
各ワーカーはお互いの計算を待たず、各子モデルごとに更新を行う。
学習が終わった子モデルはパラメータサーバにPushされる。
新たに学習を始めるときは、パラメータサーバからPopしたモデルに対して
学習していく
・処理スピードは、お互いのワーカーの計算を待たない非同期型の方が早い。
・非同期型は最新のモデルのパラメータを利用できないので学習が不安定になりやすい。
・現在は同期型の方が精度が良いことが多いので、主流となっている。(とはいえ、スマホの場合は非同期となる)
10.軽量化・高速化技術
モデル並列化
・親モデルを各ワーカーに分割し、それぞれのモデルを学習させる。すべてのデータで学習が終わった後で、1つのモデルに復元。
・モデルが大きい時はモデル並列化を、データが大きい時はデータ並列化をするとよい。
・モデルのパラメータ数が多いほど(大きなモデルほど)、スピードアップの効率も向上する。
並列のモデルの場合、モデルの分岐ごとに
ワーカーを振り分けることもできる。(これが
現在の主流。縦方向の分割は難しい)
参照論文
・Large Scale Distributed Deep Networks(google@2016)
‐ 並列コンピューティングを用いることで大規模なネットワークを高速に
学習させる仕組みを提案
- 主にモデル並列とデータ並列(非同期型)の提案
10.軽量化・高速化技術
GPUによる高速化
・GPGPU (General-purpose on GPU)
- 元々の使用目的であるグラフィック以外の用途で使用されるGPUの総称。
・CPU
- 高性能なコアが少数
- 複雑で連続的な処理が得意
・GPU
- 比較的低性能なコアが多数
- 簡単な並列処理が得意
- ニューラルネットの学習は単純な行列演算が多いので、高速化が可能
GPUPU開発環境
・CUDA ← Deep Learningではこれがほぼ主流。
- GPU上で並列コンピューティングを行うためのプラットフォーム
- NVIDIA社が開発しているGPUのみで使用可能
- Deep Learning用に提供されているので使いやすい。
・OpenCL
- オープンな並列コンピューティングのプラットフォーム
- NVIDIA社以外の会社(Intel, AMD, ARMなど)のGPUからでも使用可能。
- Deep Learning用の計算に特化しているわけではない
・Deep Learning フレームワーク(Tensorflow, Pytorch)内で実装されチエルので、使用する際は指定すればよい。
CPU:様々な演算を超高速で計算できる。ただし少数であり、18か月で2倍の性能向上ペース。
GPU:できることは限られるが、数千など多数いる。
10.軽量化・高速化技術
モデルの軽量化とは
モデルの精度を維持しつつ、パラメータや演算回数を低減する手法の総称
モデルの軽量化はモバイル、IoT機器において有用
軽量化の手法
代表的な手法は、「量子化」、「蒸留」、「プルーニング」の3つ。
量子化(Quantization)
「量子化」は、ネットワークが大きくなると大量のパラメータが必要となり、学習や推論に多くのメモリと演算処理が必要。
➡ 通常のパラメータの 64bit 浮動小数点を 32bit など、下位の精度に落とすことでメモリと演算処理の削減を行う。
利点:計算の高速化、省メモリ化。 欠点:精度の低下
計算の高速化
倍数度演算(64bit)と単精度演算(32bit)は演算
性能が大きく違うため、量子化により制度を落とすことに
より多くの計算をすることが出来る。
省メモリ化
ニューロンの重みを浮動小数点のbit数を少なくし、有効桁数を
下げることで、ニューロンの目盛りサイズを小さくすることができ、多く
の目盛りを消費するモデルのメモリ使用量を抑えることが出来る。
64bit ➡ 32bit ➡ 16bit
8byte ➡ 4byte ➡ 2byte
(1つの数字で使うメモリ量)
GPUには単精度の計算機が大量に搭載されている。倍
精度は単精度の計算機2つで対応する
10.軽量化・高速化技術
精度の低下
ニューロンが表現できる少数の有効桁数が小さくなると、モデルの表現力が低下する。
→ 学習した結果ニューロンが小さい値になりすぎると、重みを表現できなくなる。
➡ ただし、実際の問題では倍精度を単精度にしてもほぼ精度は変わらない。
速度の実験結果
32bit と 6bit のモデルで検出をするためにかかった時
間を比較。
精度の実験結果
量子化を行い検出した矩形の図を比較すると、
量子化することにより、目的のオブジェクト以外の
領域が多くなっている。
※極端な量子化を行うと、精度が落ちるので注意が必要。現在の主流は半精度で(16bit)、GPU等が最適化されている
10.軽量化・高速化技術
蒸留
精度の高いモデルはニューロンの規模が大きなモデルになっている。そのため、推論に多くのメモリと演算処理が必要。
→ 規模の大きなモデルの知識を使い軽量なモデルの作成を行う。
モデルの簡約化:学習済みの精度の高いモデルの知識を軽量なモデルへ継承させる。
知識の継承により、軽量でありながら複
雑なモデルに匹敵する精度のモデルを
得ることが期待できる。
教師モデルと生徒モデル
蒸留は教師モデルと生徒モデルの2つで構成される。
教師モデル:予測精度の高い、複雑なモデルやアンサンブルされたモデル
生徒モデル:教師モデルをもとに作られる軽量なモデル
教師モデルの重みを固定し、生徒モデルの重みを更新していく。
誤差は教師モデルと生徒モデルのそれぞれの誤差を使い、重みを更新していく。
蒸留によって少ない学習回数で、より精度の良
いモデルを作成することが出来る。
10.軽量化・高速化技術
プルーニング
ネットワークが大きくなると大量のパラメータとなるが全てのニューロンの計算が精度に寄与しているわけではない。
→ モデルの精度に寄与が少ないニューロンを削除することでモデルの軽量化、高速化が見込まれる。
計算の高速化
寄与の少ないニューロンの削減を行いモデルの圧縮を
行うことで高速化に計算を行うことができる。
ニューロンの削除
ニューロンの削除の手法は重みが閾値以下の場合ニュー
ロンを削除し、再学習を行う。
(以下の例は重みが0.1以下のニューロンを削除)
ニューロン数と精度
αは閾値のパラメータ、閾値のパラメータを大きくしていくと、ニューロンは大きく
削除できるが、精度も減少する。
10.軽量化・高速化技術
まとめ
量子化:重みの精度を下げることにより計算の高速化と省メモリ化を行う技術
蒸留:複雑で精度の良い教師モデルから軽量な生徒モデルを効率よく学習を行う技術
プルーニング:寄与の少ないニューロンをモデルから削除し高速化と省メモリ化を行う技術
11.応用モデル
E資格によく出る問題
MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications
提案手法
・ディープラーニングモデルは精度は良いが、その分ネットワークが深くなり計算量が増える。
・計算量が増えると、多くの計算リソースが必要で、お金がかかってしまう。
・ディープラーニングモデルの軽量化・高速化・高精度化を実現(その名の通りモバイルなネットワーク)
・https://qiita.com/HiromuMasuda0228/items/7dd0b764804d2aa199e4
2017年ごろから精度は出るところまで出るようになり、それ以降は多くのモバ
イル及び組み込みアプリケーションで実行できるような軽量化の工夫が多く検
討されるようになった。
11.応用モデル
一般的な畳み込みレイヤー
入力マップ(チャネル数):H×W×C
畳み込みカーネルのサイズ:K×K×C
出力チャネル数(フィルタ数):M
スライド1でパディングを適用した場合の畳み込みの計算量
一般的な畳み込みレイヤーは計算量が多い
→ MobileNetsは Depthwise Convolution と Pointwise Convolution
の組み合わせで軽量化を実現
計算量:K×K×C×M
計算量:H×W×K×K×C×M
11.応用モデル
Depthwise Convolution
・入力マップのチャネルごとに畳み込みを実施
・出力マップをそれらと結合(入力マップのチャネル数と同じになる)
・通常の畳み込みカーネルは全ての層に掛かっていることを考
えると計算量が大幅に削減可能。
・各層ごとの畳み込みなので層間の関係性は全く考慮されな
い。通常はPW畳み込みとセットで使うことで解決。
Pointwise Convolution
・1×1convとも呼ばれる。(正確には1×1×c)
・入力マップのポイントごとに畳み込みを実施。
・出力マップ(チャネル数)はフィルタ数分だけ作成可能。(任意のサイズが指定可能)
一般的な畳み込み:H×W×K×K×C×M
Depthwise:H×W×C×K×K
一般的な畳み込み:H×W×K×K×C×M
Pointwise:H×W×C×M
フィルタ数は1固定
チャンネルごとにしか畳み込みしな(赤→赤)
カーネルは1×1固定
11.応用モデル
MobileNetのアーキテクチャ
・Depthwise Separable Convolutionという手法を用いて計算量を削減している。通常の畳み込みが空間方
向とチャネル方向の計算を同時に行うのに対してDepthwise Separable Convolutionではそれらを
Depthwise Convolution と Pointwise Convolution と呼ばれる演算によって個別に行う。
・Depthwise Convolution はチャネル毎に空間方向へ畳み込む。すなわち、チャネルごとに Dk×Dk×1 のサイズ
のフィルターをそれぞれ用いて計算を行うため、その計算量は Dk×Dk×H×W×C となる。
・次にDepthwise Convolutionの出力をPointwise Convolutionによてチャネル方向に畳み込む。すなわち、
出力チャネルごとに 1×1×Mサイズのフィルタをそれぞれ用いて計算を行うため、その計算量は、H×W×C×M とな
る。
計算削減量
H×W×K×K×C×M
-(H×W×K×K×C+H×W×C×M)
現在第3世代までMobileNetが更新され
ている。
11.応用モデル
Densely Connected Convolutional Networks. G. Huang et., al. 2016
・https://arxiv.org/pdf/1608.06993.pdf
・https://www.slideshare.net/harmonylab/densely-connected-convolutional-networks
概要
・Dense Convolutional Network(以下、DenseNet)は、畳込みニューラルネットワーク(以下、CNN)アーキテ
クチャの一種である。ニューラルネットワークでは層が深くなるにつれて、学習が難しくなるという問題があったが、Residual
Network(以下、ResNet)などのCNNアーキテクチャでは前方の層から後方の層へアイデンティティ接続を介してパス
を作ることで問題を対処した。DenseBlockと呼ばれるモジュールを用いた、DenseNetもそのようなアーキテクチャの一つ
である。
DenceNet
・初期の畳み込み
・Denseブロック ←特徴
・変換レイヤー
・判別レイヤー
DenseNetの構造
11.応用モデル
出力層の前の層の入力を足し合わせる。
- 層間の情報の伝達を最大にするために全ての同特徴量サイズの層を結合する。
Denceブロック
特徴マップの入力に対し、下記の処理で出力を計算。
- Batch正規化
- ReLU関数による変換
- 3×3畳み込み層による処理
左の図が表している箇所
→ 前の層で計算した出力に入力特徴マップを足し合わせる
第l層の出力を考えると
xl=Hl([x0,x1,…,xl-1])
11.応用モデル
チャンネル層kをネットワークのgrowth rateと呼ぶ
- kが大きくなるほど、ネットワークが大きくなるため、小さな整数に設定するのが良い。
・CNNでは中間層のチャンネルサイズを変更し、特徴マップのサイズを変更。
・特徴マップのサイズを変更し、ダウンサンプリングを行うためTransition Layerと呼ばれる層でDenseブロックをつなぐ。
Transition Layer
Transition LayerではConvolution
とPoolingを行う。
Denseブロックで増加したチャンネルの
数を元に戻す作業。
各ブロックの特徴サイズは一致
11.応用モデル
・Denseブロックでは前方の各層からの出力全てが後方の層への入力として用いられる。
・Residualブロックでは前1層の入力のみ後方の層へ入力。
・DenseNet内で使用されるDenseブロックと呼ばれるモジュールでは成長率(Growth Rate)と
呼ばれるハイパーパラメータが存在する。
- Denseブロック内の各ブロックごとにk個ずつ特徴マップのチャネル数が増加していく。Kを成長率と呼ぶ。
DenceNetとResNetの違い
11.応用モデル
・BatchNorm
- レイヤー間を流れるデータの分布をミニバッチ単位で、平均0、分散1となるように正規化。
- Batch Normalization はニューラルネットワークにおいて、学習時間の短縮や初期値への依存低減、
過学習の抑制など効果がある。
・Batch Normの問題点
- Batch Sizeが小さい条件下では、学習が収束しないことがあり、代わりにLayer Normalizationなど
の正規化手法が使われることが多い
Batch Norm Layer
11.応用モデル
・Batch Norm
- ミニバッチに含まれる sampleの同一チャネルが同一分布に従うよう正規化
・Layer Norm
- それぞれの sampleのすべての pixelsが同一分布に従うよう正規化
・Instance Norm
- さらに channelも同一分布に従うよう正規化
Batch normはあまり使いたくない。ミニバッチのサ
イズの影響を受ける。他はミニバッチサイズの影響を
受けない。
Layer normは1つの画像に対して正規化を掛け
る
Instance normは1つの画像の1つのチャンネルに
対して正規化を掛ける
11.応用モデル
・H×W×C のsampleがN個あった場合に、N個の同一チャネルが正規化の単位
- RGBの3チャネルのsampleがN個の場合は、それぞれのチャンネルの平均と分散を求め正規化を実施
(図の青い部分)、チャンネルごとに正規化された特徴マップを出力。
- ミニバッチのサイズを大きくとれない場合には、効果が薄くなってしまう。
Batch Norm
ミニバッチのサイズは演算期の性能に大きく作用される
11.応用モデル
Layer Norm
- N個のsampleのうち1つに注目。H×W×Cのすべてのpixelが正規化の単位。
- RGBの3チャネルのsampleがN個の場合は、あるsampleを取り出し、全てのチャネルの平均と分散を
求め正規化を実施(図の青い部分)。特徴マップごとに正規化された特徴マップを出力。
- ミニバッチの数に依存しないので、上記の問題を解消できていると考えられる。
・Layer Normは、入力データや重み行列に対して、以下の操作を施しても出力が変わらないことが知られている
- 入力データのスケールに関してロバスト
- 重み行列のスケールやシフトに関してロバスト
1枚の画像で正規化をすることでミニバッチのサイズの影響を受けない。
(なぜこれでではうまいくかは理論的に説明できない。やったらうまくいったというもの)
11.応用モデル
Instance Norm
- 各sampleの各チャネルごとに正規化。
- コントラストの正規化に寄与・画像のスタイル転送やテクスチャ合成タスクなどで利用。
(これも、なぜこれでではうまいくかは理論的に説明できない。やったらうまくいったというもの)
11.応用モデル
Wave Net
- Aaron van den Oord et.al., 2016らにより提案
AlphaGoのプログラムを開発しており、2014年にgoogleに買収される
- 生の音声波形を生成する深層学習モデル
- Pixel CNN(高解像度の画像を精密に生成できる手法)を音声に応用したもの
Wave Net のメインアイディア
- 時系列データに対して畳み込み(Dilated Convolution)を適用する
- Dilated Convolution
・層が深くなるにつれて畳み込むリンクを離す
・受容野を簡単に増やすことができるという利点がある
深層学習を用いて結合確率を学習する際に効率的に学習が行えるアーキテクチャを提案したことが
WaveNetの大きな貢献の1つである。
次元間のつながりがあるときは畳み込み
を使うことができる。
12.Transformer
BERTを理解するために、Encoder-Decoder Modelから学習していく。
Seq2Seq(5で説明済みであるが、別の表記で再度説明を進める)
→ 系列(Sequence)を入力として、系列を出力するもの。
言語モデルを2つ連結した形になっている。
・Encoder-Decoderモデルとも呼ばれる。
・入力系列がEncoder(内部状態に変換)され、内部状態からDecode(系列に変換)する。
・実用上も、入力・出力共に系列情報なものは多い(翻訳、音声認識、チャットボットなど)
RNNとは系列データを読み込むために再帰的に動作するニューラルネット。
・再帰的は入力が再び入力になるため、時間軸方向に展開できる。
言語モデルは単語の並びに確率を与える。
・単語の並びに対して尤度、すなわち、文章として自然さを確率で評価する。
・数式的には同時確率を事後確率に分解して表せる。
<復習まとめ>
・RNNは時系列の系列情報を固定長の内部状態に変換することができる
・文章の各単語が現れる際の同時確率は、事後確率で分解できる。
- したがって、事後確率を求めることがRNNの目標になる。
・言語モデルを再現するようにRNNの重みが学習されていれば、
ある時点の次の単語を予測することが出来る。
- 先頭単語を与えれば文章を生成することも可能(Decoder)
各地点で次にどの単語が来れば自然(事後確率最大)かを出力できる
12.Transformer
Seq2Seq
EncoderからDecoderに渡される内部状態ベクトル(h)がカギ
文章がEncodeされた情報が
Decoderの入力に渡される
h
Decoder側の構造は言語モデルRNN
とほぼ同じだが、隠れ状態の初期値に
Encoder側の内部状態を受け取る
Decoderのoutput側に正解を当てれば教師あり学習が
End2endで行える。
Encoder
自然分が与えられたときに内部状態情報hを生成する
Decoder
Encoderから渡された情報と、BOSから文章を生成する。
12.Transformer
Seq2Seqの問題点
・翻訳元の文の内容をひとつのベクトルで表現(文章が長くなると表現力が足りない)
・文長と翻訳精度の関係性
Attention(注意機構)
・翻訳先の各単語を選択する際に、翻訳元の文中の各単語の隠れ状態を利用
翻訳元の各単語の隠れ状態の加重平均
重み(全て足すと1)重みはFFNNで求める
Attentionの例 英→仏
12.Transformer
Attentionは何をしているのか
・Attentionは辞書オブジェクト
- query(検索クエリ)に一致するkeyを索引し、対応するvalueを
取り出す操作であるとみなすことが出来る。これは辞書オブジェクト
の機能と同じである。
文章が長くなっても翻訳精度が落ちない
Transformer(Vaswani et al., 2017)
・RNNを使わない(Attentionだけ)
・当時のSOTAをはるかに少ない計算量で実現
・英仏の学習を 8GPU、3.5日で完了
Keyに対応したQueryを入力すると、
それに対応するvalueが返される ・Encoder/Decoder の2つからなる
・入出力は系列
・RNNが無いので位置情報を付加
12.Transformer
Self-Attention
・入力を全て同じにして学習的に注意箇所を決めていく
受け取った情報に対して狙うべき情報
が近いものをAttentionベクトルとして
取り出し、重み付けを行う。
全ての情報が入力からくる
Attentionには2種類ある
・Source Target Attention と Self-Attention
バナナ(x1)の内部状態を求めたい(z1というアウトプットを出したい)。
z1は、バナナ・が・好きののドット積をとっていき、最終的に重みを合計して値をえる。
CNNに近いイメージ。周辺情報からある単語の重み(抽象表現)を得る。
Transformer-Encoder
・自己注意機構により文脈を考慮して各単語をエンコード
系列が位置情報を失わないまま、self-
attentionを流れて内部状態に変換される
12.Transformer
Position-Wise-Feed-Forward Networks
・位置情報を保持したまま順伝播させる。
- 各Attention層の出力を決定
- 2層の全結合NN
- 線形変換→ReLU→線形変換
Scaled dot product attention
・全単語に関するAttentionをまとめて計算する。
Multi-Head Attention
・重みパラメーターの異なる8個のヘッドを使用
- 8個のScaled Dot-Product Attentionの出力をConcat
- それぞれのヘッドが異なる種類の情報を収集
Outputの次元を揃えるための
全結合層
q,k,vが入力として与えられ、線形変換されたものが出力となる
q,kの行列積をとってsoftmaxをかけると attentionとなる
8個に分離させることで、それぞれが独
自のattentionのかけ方を学習し、ア
ンサンブル学習のような効果を期待。
12.Transformer
Decoder
・Encoderと同じく6層
- 各層二種類の注意機構
- 注意機構の仕組みはEncoderとほぼ同じ
・自己注意機構
- 生成単語列の情報を収集。直下層の出力へのAttention
- 未来の情報を見ないようにマスク
・Encoder-Decoder attention
- 入力分の情報を収集。Encoderの出力へのAttention
Add&Norm
・Add(Residual Connection)
- 入出力の差分を学習させる
- 実装上は出力に入力をそのまま加算するだけ
- 効果:学習・テストエラーの低減
・Norm(Layer Normalization)
- 各層においてバイアスを除く活性化関数への入力を平均0、分散1に正規化
- 効果:学習の高速化
Position Encoding
・RNNを用いないので単語列の語順情報を追加する必要がある
- 単語の位置情報をエンコード
- posの(ソフトな)2進数表現
- 動作イメージ↓
Self-attention と Source target
attentionがそれぞれ使われている。
学習のテクニック
Position Encoding
縦軸が単語の位置、横軸が成分の次元
(左半分がsin, 右半分がcos)
位置情報が2進数で付加される
12.Transformer
Transformer まとめ
12.Transformer
BERT:Pre-training of Deep Bidirectional Transformers for Language
Understanding@2018/10/11
著者:Jacob Devlin Ming-Wei Chang Kenton Lee Kristina Toutanova
(Google AI Language)
概要:- Bidirectional Transformerをユニットにフルモデルで構成したモデル
- 事前学習タスクとして、マスク単語予測タスク、隣接文判定タスクを与える
- BERTからTransfer Learningを行った結果、8つのタスクでSOTA達成
- Googleが事前学習済みモデルを公開済み / TensorFlow / PyTorch
背景
・様々な自然言語処理タスクにおいて事前学習が有効
- 文レベルのタスク:文同士の関係性が重要
文章類似度、言い換え
- トークンレベル:モデルはトークンレベルで良い出力が求められる
Named Entity Recognition、 Q&A
・学習には2種類のアプローチがある
- Feature-based(特徴量抽出器)
- Fine-tuning(より良い初期値を得る BERT)
Feature-basedアプローチ
・特徴量抽出器として活用するためのもの
- 様々なNLPタスクの素性として利用される
N-gramモデル や Word2Vecなど、文や段落レベルの分散表現に拡張されたものもある
- 最近では Elmo[Peters et al., 2017,2018]が話題に
Context-Sensitiveな素性を抽出。既存の素性にconcatして使うことで複数のNLP
タスクでSOTA。(QA、極性分類など)
Fine-tuningアプローチ
・言語モデルの目的関数で事前学習する
- 事前学習の後に、使いたいタスクの元で教師あり学習を行う。
(すなわち事前学習はパラメータの初期値として利用される)
-最近では、OpenAI GRT[Ralford et al., 2018]など
GLUEスコアでSOTA。TransformerのDecoderだけを利用する単方向接続モデル。
Transformerをたくさんつなげたモデル
12.Transformer
BERT
Fine-tuningアプローチの事前学習に工夫を加えた
・双方向Transformer
- tensorを入力とし、tensorを出力
- モデルの中に未来情報のリークを防ぐためのマスクが存在しない
→ 従来のような言語モデル型の目的関数は採用できない
(カンニングになるため)
→ 事前学習タスクにおいて工夫する必要がある
入力表現
3種類のEmbeddingのSumを入力とする
・文章のペア or ひとつの文章を入力にする(事前学習の際は必ずペア)
・以下3種類のEmbeddingを使用する
- トークンの埋め込み:WordPieceでTokenizationしたものをEmbedding
- 単語位置埋め込み:系列長1~512の表現
- 文区別埋め込み:一文目、二文目の区別
12.Transformer
事前学習(Pre-training)タスク
空欄語予測と隣接文字予測の2タスクを行う
・空欄語予測と隣接文字予測を同時に学習する
→ 単語分散表現と文章分散表現を同時に獲得できる
空欄語予測(Masked Language Prediction)
文章中の単語のうち15%がMASK対象に選ばれる
→ 選ばれた15%の単語の位置はフラグを立てておく。
選ばれた単語の内、80%が[MASK]に置き換えられ、10%が他の単語に置き換えられ、残りの10%は置き換えられずにおかれる。
→ 文章を入力としてフラグがついている位置のオリジナルの入力単語が何であるかを出力する(15%対象外の単語に関しては扱わない)
双方向モデルは、left-to-rightモデルや双方向concatしたものよりも一般的に強力
・しかし一般的な条件付き言語モデルでは学習できない
- 特定の単語予測
- 双方向だと間接的に複数層の文脈から自分自身を見てしまう
・そこで、発想を転換し次の単語ではなくランダムに抜かれた単語を予測するモデルにする。(CBOWの発想)
・一方でこの手法を採用すると単語全体の15%しか学習材料に使えないため学習に時間がかかってしまう。
12.Transformer
隣接文予測(Next Sentence Prediction)
2つの文章の関係性理解も重要
言語モデルのタスクのみでは捉えきれない
2つの連なる文章ペアに対して、隣接文を50%の確率でシャッフルする。
→2つの文章を入力として、隣接文であるかの T/F を出力する。
Pre-training 手続き
・データセット:Books Corpus(800MB)+ English Wikipedia(2500MB)
・入力文章の合計系列長が512以下になるように2つの文章をサンプリング
- Next Sentence Predictionのため、文章1と文章2の組み合わせは50%の確率で変わる
- MLMのためWordPieceトークンに分けられた後マスクされる
・バッチサイズ:256(=256×512系列 = 128,000単語/バッチ)
- 1,000,000ステップ = 33憶の単語を40エポック学習
・Adam:LR=1e-4、L2weight_decay=0.01
・Dropout:0.1
・活性化関数:GeLu
・系列レベルの分類問題
- 固定長の分散表現は最初の[CLS]トークンの内部表現から得られる
- 新しく追加する層は分類全結合層+ソフトマックス層のみ
- BERTも一緒に学習させる
・トークンレベルの分類問題(NERなど)
- 各タスクの仕様に合わせて学習させる
・Fine-tuning自体は高速にできるので、ハイパーパラメータ探索も可能
Fine-tuning概要
12.Transformer
8個のNLPベンチマークタスク
タスクSpecificなアーキテクチャを組むことなく一気にSOTA
12.Transformer
12.Transformer
12.Transformer
Encoder-Decoder実装
入力に英語、出力に日本語
文章をIDに変換する
Paddingトークン:固定長にする必要がある(短い文章は長く、長い文章は短くする)
BeginOfSentenceトークン:文章の最初に S を置く
EndOfSentenceトークン:文章の最後に S を置く
Unknownトークン:変換できないもの
2回以上使用されていないものは取り除く。
12.Transformer
12.Transformer
Packed Sequence は PyTorchでRNNを扱う際に必要な処理となる。
パディングをうまいこと処理してくれて、その後の計算が楽になる。
packedSequenceのインスタンスを生成 packedSequenceのインスタンスを生成はそのまま使えないので、元のテンソルに戻す。
12.Transformer
ID情報をEmbeddingする。(pad済のembeddingメソッドをパックする)
出てきた情報を元に戻す。
12.Transformer
Encoder Hidden 内部状態 h
RNNは最初に間違いが起こると連鎖的に後に繋がっていく。
→ 正解データをそのまま使う。ただし、訓練でよくても検証でよくない制度と
なることがある。このため、正解を与えるのが2割とするなどして対応する。
12.Transformer
パディングトークンに対しても損失を計算してし
まうため、マスクする
BLUE翻訳でよく使われる指標。
12.Transformer
12.Transformer
13.物体検知・セグメンテーション
出力
分類 (画像に対し単一又は複数の)
クラスラベル
物体検知 Bounding Box [bbox/BB]
意味領域分割 (各ピクセルに対し単一の)
クラスラベル
個体領域分割 (各ピクセルに対し単一の)
クラスラベル
物体検知の全体像
入力:画像(カラー・モノクロは問わない)
13.物体検知・セグメンテーション
出力
分類 (画像に対し単一又は複数の)
クラスラベル
物体検知 Bounding Box [bbox/BB]
意味領域分割 (各ピクセルに対し単一の)
クラスラベル
個体領域分割 (各ピクセルに対し単一の)
クラスラベル
入力:画像(カラー・モノクロは問わない)
物体の位置は問わない
インスタンスの区別は問わない
易
難
タスクの
難易度
画像一枚に対してク
ラスを出力
どこに何があるかを見
つける
BBの代わりにピクセルに
対してラベル
BBの代わりにピクセルに
対してラベルが与えられ、
風船ごとに区別できる
→物体個々に興味
以降、主として物体検知について考える
13.物体検知・セグメンテーション
代表的データセット
クラス Train+Val Box/画像
VOC12 20 11,540 2.4 Instance
Annotation
VOC:Visual Object Classes
主要貢献者が2012年に亡くなりコンペも終了
ILSVRC17 200 476,668 1.1 コンペは2017年に終了(後継:Open Images Challenge)
ILSVRC:ImageNet Scale Visual Recognition Challenge
ImageNet(21,841クラス/1400万枚以上)のサブセット
MS COCO18 80 123,287 7.3 Instance
Annotation
COCO:Common Object in Context
物体位置推定に対する新たな評価指数を提案
OICOD18 500 1,743,042 7.0 Instance
Annotation
ILSVRCやMS COCOとは異なるannotation process
Open Images V4(6000クラス以上/900万枚以上)のサブセット
Box/画像
小 大
Box/画像
アイコン的な映り
日常感とはかけ離れやすい
部分的な重なりも見られる
日常生活のコンテキストに近い
13.物体検知・セグメンテーション
代表的データセットのポジショニングマップ
OICOD18
MS COCO18
VOC12
ILSVRC17
(20,2.4)
(200,1.1)
(500,7.0)
(80,7.3)
Box/画像
クラス数
自分がどんな分析をしたいのか?目的にあったデータ
セットを選択する必要がある。
目的に応じた Box/画像の選択をすること。
クラス数が大きいことはうれしいのか?
13.物体検知・セグメンテーション
評価指標
予測
真値
Positive Negative
Positive True Positive False Negative
Negative False Positive True Negative
混同行列
Precision = TP/(TP+FP)
Recall = TP/(TP+FN)
閾値変化に対する振る舞い
Conf. Pred.
S1 0.88 1
S2 0.82 1
S3 0.71 1
S4 0.52 1
S5 0.49 0
S6 0.44 0
Threshold=0.5
Conf. Pred.
S1 0.88 1
S2 0.82 1
S3 0.71 0
S4 0.52 0
S5 0.49 0
S6 0.44 0
Threshold=0.8
クラス分類 物体検出
Conf. Pred. BB
P1 0.92 人 x1,y1,w1,h1
P2 0.85 車 x2,y2,w2,h2
P3 0.81 車 x3,y3,w3,h3
P4 0.70 犬 x4,y4,w4,h4
P5 0.69 人 x5,y5,w5,h5
P6 0.54 車 x6,y6,w6,h6
Conf. Pred. BB
P1 0.92 人 x1,y1,w1,h1
P2 0.85 車 x2,y2,w2,h2
P3 0.81 車 x3,y3,w3,h3
Threshold=0.5
Threshold=0.8
車 人 犬
Ground-Truth
Thresholdに関わらず6個の結果が得られる Thresholdによって得られる結果(BB)の数が変わる
13.物体検知・セグメンテーション
IOU:Intersection over Union
物体検出においてはクラスラベルだけでなく、物体位置の予測精度も評価したい。
Confusion Matrixの要素を用いて表現
IoU = TP/(TP+FP+FN)
別名 Jaccard係数とも呼ばれる
出力例
Predicted BB
Ground-Truth BB
以下のような場合でもきちんと精度を表現できるよう IoUは定義されている
13.物体検知・セグメンテーション
Conf. Pred. IoU
P1 0.92 人 0.88 IoU>0.5より TP(人を検出)
P2 0.85 車 0.46 IoU<0.5より FP
P3 0.81 車 0.92 IoU>0.5より TP(車を検出)
P4 0.70 犬 0.83 IoU>0.5より TP(犬を検出)
P5 0.69 人 0.76 IoU>0.5であるが既に検出済みなのでFP
P6 0.54 車 0.20 IoU<0.5より FP
車 人 犬
Ground-Truth
入力1枚で見るPrecision/Recall
Conf.の閾値:0.5
IoUの値:0.5
Precision:
3/(3+3) = 0.50
Recall:
3/(3+0) = 1.00
13.物体検知・セグメンテーション
Pic. Conf. Pred. IoU
P1 1 0.92 人 0.88
P2 2 0.85 人 0.46
P3 2 0.81 人 0.92
P4 3 0.70 人 0.83
P5 1 0.69 人 0.76
P6 3 0.54 人 0.20
人
Ground-Truth1
人
Ground-Truth2
人
Ground-Truth3
人
Ground-Truth4
TP/FP
P1 TP
P2 FP
P3 TP
P4 TP
P5 FP
P6 FP
Conf.の閾値:0.5
IoUの値:0.5
Precision:
3/(3+3) = 0.50
Recall:
3/(3+1) = 0.75
Precition/Recallの計算例(クラス単位)
13.物体検知・セグメンテーション
Conf.
の閾値
IoU
の閾値
Precision Recall
0.05 0.5
0.1 0.5
1.00 0.5
人
Ground-Truth1
人
Ground-Truth2
人
Ground-Truth3
人
Ground-Truth4
P=f(R) [Precision-Recall curve]
AP:Average Precision
クラスラベル
を固定
Conf.の閾値をβとするとき
Recall = R(β), Precision=P(β)
2式からβを消去すれば Recallの
関数としてPrecisionが求められる
APの定義
※厳密には各Recallのレベルに対して最大のPrecisionにスムージング
※積分はInterpolated APとして有限点(e.g.,11点)で計算される。
(PR曲線の下側面積)
13.物体検知・セグメンテーション
mAP:mean Average Precision
(算術平均):クラス数がCのとき
参考:MS COCOで導入された指標
ここまで、IoUは閾値0.5で固定 → 0.5から0.95まで、0.05刻みでAP & mAP を計算し算術平均を計算
車 人 犬
AP 86.4 67.2 64.3
mAP 約72.6
計算例
13.物体検知・セグメンテーション
FPS:Flames per Second
応用上の要請から、検出精度に加え検出速度も問題となる。
13.物体検知・セグメンテーション
マイルストーン:深層学習以降の物体検知
2012年:AlexNetの登場を皮切りに、時代はSIFTからDCNNへ
※SIFT:Scale Invariant Feature Transform
DCNN:Deep Convolutional Neural Network
代表的なネットワーク 物体検知のフレームワーク
VGGNet
GoogLeNet
(Inveption-v1)
VGGNet
Inception-ResNet
(Inception-v4)
DenseNet
MobileNet
AmoebaNet
DetectorNet
RCNN
SPPNet
Fast RCNN
Faster RCNN
YOLO
SSD
RFCN
FPN
Mask
RCNN
YOLO9000
RetinaNet
CornerNet
2段階検出器(Two-stage detector)
2013
2014
2015
2016
2017
2018
・候補領域の検出とクラス推定を別々に行う
・相対的に精度が高い傾向
・相対的に計算量が大きく推論も遅い傾向
1段階検出器(One-stage detector)
・検出領域の検出とクラス推定を同時に行う
・相対的に精度が低い傾向
13.物体検知・セグメンテーション
2段階検出器/1段階検出器の構造・出力イメージ
13.物体検知・セグメンテーション
SSD:Single Shot Detector
1.Default BOXを用意 2.Default BOXを変形し、conf.を出力
人 人
Default BOX 検出したい物体 人:0.94
車:0.22
犬:0.15
検出したい物体
Test Image Test Image
1段階検出器(YOLOに並んで有名)
Default Boxを適当な位置に用意しておく
→ Default Boxを変形しconfを求める
13.物体検知・セグメンテーション
VGG16のネットワーク図
入力サイズに応じて
SSD300, SSD512
等と表記される
VGG16の10層目に
相当するconv層
VGG16のFC層(全結合層)をConv層に変更
(VGG16の最後のFC層は削除)
SSDの特徴である
マルチスケール特徴マップ
SSDのネットワークアーキテクチャ
SSDのベースネットワーク
(”VERY DEEP CONVOLUTIONAL NETWORK FOR LARGE-SCALE IMAGE RECOGNITION)
全部で16層のネットワーク
解像度の異なる特徴マップから
出力を作っている
13.物体検知・セグメンテーション
特徴マップからの出力
マップ中の1つの特徴量における1つのDefault Boxについて
マップ中の各特徴量にk個のDefault Boxを用意するとき、
更に、特徴マップのサイズがm×nであるとすれば、
出力サイズ:#Class + 4
出力サイズ:k(#Class + 4)
出力サイズ:k(#Class + 4) mn
オフセット項
Δx, Δy, Δw, Δh
特徴マップごとに用意する
Default Box数
SSDにおけるオフセット項の注意
・
原点
(x0,y0)
h0
w0
・
特徴量
3×3の特徴マップ
13.物体検知・セグメンテーション
Default Boxは各特徴に4つ Default Boxは各特徴に6つ
VOCデータセットではクラス数20に背景クラスが考慮され、#Class=21となることに注意して
4×(21+4)×38×38 + 4×(21+4)×3×3 + 4×(21+4)×1×1
6×(21+4)×19×19 + 6×(21+4)×10×10 + 6×(21+4)×5×5 = 8,732 × (21+4)
余談)
13.物体検知・セグメンテーション
その他の工夫
多数のDefault Boxを用意したことで生ずる問題への対処
Non-Maximum Suppression Hard Negative Mining
人 人
・RCNNでも既に用いられており初出の処理ではない
・他にも、原著論文では学習上の工夫としてDefault Box
のアスペクト比の選び方やData Augmentationについて
も触れられている
非背景:背景
2:14
2:6
背景
非背景
1つの物体に対して複数のBBが存在している
IoUを計算し、最もconf.が大きいものだけを残してそれ以外を排除
PositiveとNegativeの差が1:3となるように、NegativeのBBを削っている
13.物体検知・セグメンテーション
損失関数
検出位置に対する損失
confidenceに対する損失
Faster RCNNでも用いられる
Smooth L1 loss
13.物体検知・セグメンテーション
SSDの進化
SSD: Single Shot MultiBox Detecto
DSSD: Deconvolutional Single Shot Detector
Extend the shallow part of Single Shot MultiBox Detector via Convolutional Neural Network
Single-Shot Refinement Neural Network for Object Detection
13.物体検知・セグメンテーション
Semantic Segmentation の概略
Up-Samplingの壁 VGG16
Convolution/Poolingを行うことで入力時の解像度からがどんどん落ちていく
→ 落ちた解像度を元に戻すこと(Up-sampling)
→ Poolingしなくてもよいのでは?
→ Poolingは解像度を落としながらも受容野を広げるため。(そのままの解像度では計算量が膨大となる)
緑の枠を見ると解像度が 7×7まで落ちている
13.物体検知・セグメンテーション
FCN(Fully Convolutional Network)の基本アイディア
VGG16 に対して、最後のFC層をConvolution層に置き換えている
→ ヒートマップのような出力が得られる
13.物体検知・セグメンテーション
Deconvolution/Transposed convolution
通常のConv.層と同様、kernel size、padding、stride を指定
処理手順
1.特徴マップのpixel間隔をstrideだけ空ける
2.特徴マップの周りに(kernel size-1)-padding だけ余白を作る
3.畳み込み演算を行う
※逆畳み込みと呼ばれることも多いが畳み込みの逆演算ではないことに注意
→ 当然、poolingで失われた情報が復元されるわけではない
左図はkernel size =3、padding =1、stride =1 のDeconv.により
3×3の特徴マップが5×5にUp-samplingされる様子。
VGG16 に対して、最後のFC層をConvolution層に置き換えている
→ ヒートマップのような出力が得られる
13.物体検知・セグメンテーション
輪郭情報の補完
Poolingによりローカルな情報(輪郭)が失われていく
例レイヤーPooling層の出力をelement-wise addition
することでローカルな情報を保管してからUp-sampling
要素ごとに足し算する
13.物体検知・セグメンテーション
U-Net
Up-samplingによってチャネル方向へ結合している
(これがelement-wise-decompositionとの違い)
104×104×256
104×104×256
13.物体検知・セグメンテーション
輪郭情報の補完
13.物体検知・セグメンテーション
どこが最大の情報を持っていたかと
いう情報を保持しておく、
その情報を保持したままPoolingす
るため、元に戻すときにどこが最大
値かという情報を使用して戻せるた
め、解像度が上がりやすい
Unpooling
13.物体検知・セグメンテーション
Dilated Convolution
Convolutionの段階で受容野を広げる工夫
14.DCGAN
GAN(Generative Adversal Nets)とは
生成器と識別機を競わせて学習する生成&識別モデル
・Generator:乱数からデータを生成
・Discriminator:入力データが真データ(学習データ)であるかを識別
GANの構造
真データの確率分布
横軸:データの値
縦軸:そのデータがとる確率
乱数zの確率
右図は一様分布
ランダムなzをジェネレータに与えることで
真データと同じ範囲の値をとりうる
Generatorは
Discriminatorに1と判断さ
せたい(誤判断させたい)
Discriminatorは真データを1と判断したい
(正しく判断したい)
14.DCGAN
2プライヤーのミニマックスゲームとは
・一人が自分の勝利する確率を最大化する作戦をとる
・もう一人は相手が勝利する確率を最小化する作戦をとる
・GANでは価値関数Vに対し、Dが最大化、Gが最小化する作戦をとる
・単一データのバイナリークロスエントロピー
バイナリクロスエントロピーと似ている??
・真データを扱うとき:
・生成データを扱うとき:
・2つを足し合わせる:
・複数データを扱うために期待値を取る
・期待値:何度も試行する際の平均的な結果値 ∑xp(x)
Vを最大にするDの中で、
Gを最小化する。
GANの価値関数はバイナ
リクロスエントロピーそのもの
14.DCGAN
最適化方法
・Generatorのパラメータθgを固定
>真データと生成データをm個ずつサンプル
>θdを勾配上昇方(Gradient Ascent)で更新
・Discriminatorのパラメータθdを固定
>生成データをm個ずつサンプル
>θgを勾配降下方(Gradient Decent)で更新
θdをk回更新 θgを1回更新
なぜGeneratorは本物のようなデータを生成するのか?
・生成データが本物とそっくりな状況とは p_g=p_data であるはず
・価値関数が p_g = p_data の時に最適化されていることを示せばよい
・2つのステップにより確認する
1.Gを固定し、価値関数が最大値を取るときのD(x)を算出する
2.上記のD(x)を価値関数に代入し、Gが価値関数を最小化する条件を算出
Discriminatorの更新 Generatorの更新
GANでは一般にDiscriminator
を複数回更新して、Generator
は1回更新する
生成データと真データの分布が一致(その中に
入る)するとき
14.DCGAN
ステップ1:価値関数を最大化するD(x)の値は?
・Generatorを固定
と置けば、
と表せ、この極値を求めればよい。
なので
となり、価値観数が最大値を取るときのD(x)が判明
14.DCGAN
ステップ2:価値関数はいつ最小化するか?
・価値観数 で置き換え
・2つの確率分布がどれくらい近いのか調べる必要がある
>有名な指標としてJSダイバージェンスがある
>
>JSダイーバージェンスは非負で、分布が一致するときのみ0の値をとる
・min_g Vはp_data = p_g の時に最小値となる(-2log2 ≈ -1.386)
・GANの学習によりGは本物のようなデータを生成できる
JSダイバージェンスの形をつくる
14.DCGAN
GANの学習ステップの可視化
zはランダムに生成され、
Generatorに入力しxの値を出
力する。その分布がp_gとなる。
青線はDiscriminatorにp_g
が入力されたときに出力する結
果
Discriminatorの更新をすると、
出力の精度が向上する
Generatorを更新して、
Discriminatorの出力に合わ
せてpgを合わせに行く
Discriminatorは判断できず、
全ての領域で0.5となる
14.DCGAN
DCGAN(Deep Convolution GAN)とは
・GANを利用した画像生成モデル
・いくつかの構造制約により生成品質を向上
■Generator
・Pooling層の代わりに転置畳み込み層を使用
・最終層はtanh、その他はReLU関数で活性化
■Discriminator
・Pooling層の代わりに畳み込み層を使用
・Leaky ReLU関数で活性化
■共通事項
・中間層に全結合層を使わない
・バッチノーマライゼーションを適用
DCGANのネットワーク構造
・Generator
>転置畳み込み層により乱数を画像にアップサンプリング
・Discriminator
>畳み込み層により画像から特徴量を抽出し、最終層を
Sigmoid関数で活性化
Discriminatorは判断できず、
全ての領域で0.5となる
14.DCGAN
応用技術紹介
・Fast Bi-layer Neural Synthesis of One-Shot Realistic Head Avatars
・1枚の顔画像から動画像を高速に生成するモデル
一般的な顔アバター生成フロー
・初期化部と推論部からなる
>初期化:人物の特徴を抽出、1アバターにつき1回の計算コスト
>推論:所望の動きを付ける、時間フレーム分だけの計算コスト
・計算コストの比較
>従来:初期化の計算コストが小さく、推論部の計算コストが大きい
>提案:初期化の計算コストが大きく、推論部の計算コストが小さい
14.DCGAN
推論部の計算コスト削減方法
・緻密な輪郭と粗い顔画像を別々に生成し結合する
>初期化時に輪郭情報を生成(ポーズに非依存)
>推論時に粗い動画像を生成(ポーズに依存)
ネットワーク構造
・輪郭画像と低周波動画像を別々に生成する

More Related Content

What's hot

Curriculum Learning (関東CV勉強会)
Curriculum Learning (関東CV勉強会)Curriculum Learning (関東CV勉強会)
Curriculum Learning (関東CV勉強会)Yoshitaka Ushiku
 
[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輪読会]深層強化学習はなぜ難しいのか?Why Deep RL fails? A brief survey of recent works.
[DL輪読会]深層強化学習はなぜ難しいのか?Why Deep RL fails? A brief survey of recent works.[DL輪読会]深層強化学習はなぜ難しいのか?Why Deep RL fails? A brief survey of recent works.
[DL輪読会]深層強化学習はなぜ難しいのか?Why Deep RL fails? A brief survey of recent works.Deep Learning JP
 
深層生成モデルと世界モデル(2020/11/20版)
深層生成モデルと世界モデル(2020/11/20版)深層生成モデルと世界モデル(2020/11/20版)
深層生成モデルと世界モデル(2020/11/20版)Masahiro Suzuki
 
モデルアーキテクチャ観点からのDeep Neural Network高速化
モデルアーキテクチャ観点からのDeep Neural Network高速化モデルアーキテクチャ観点からのDeep Neural Network高速化
モデルアーキテクチャ観点からのDeep Neural Network高速化Yusuke Uchida
 
ICLR2020の異常検知論文の紹介 (2019/11/23)
ICLR2020の異常検知論文の紹介 (2019/11/23)ICLR2020の異常検知論文の紹介 (2019/11/23)
ICLR2020の異常検知論文の紹介 (2019/11/23)ぱんいち すみもと
 
[DL輪読会]BANMo: Building Animatable 3D Neural Models from Many Casual Videos
[DL輪読会]BANMo: Building Animatable 3D Neural Models from Many Casual Videos[DL輪読会]BANMo: Building Animatable 3D Neural Models from Many Casual Videos
[DL輪読会]BANMo: Building Animatable 3D Neural Models from Many Casual VideosDeep Learning JP
 
[DL輪読会]近年のエネルギーベースモデルの進展
[DL輪読会]近年のエネルギーベースモデルの進展[DL輪読会]近年のエネルギーベースモデルの進展
[DL輪読会]近年のエネルギーベースモデルの進展Deep Learning JP
 
【メタサーベイ】数式ドリブン教師あり学習
【メタサーベイ】数式ドリブン教師あり学習【メタサーベイ】数式ドリブン教師あり学習
【メタサーベイ】数式ドリブン教師あり学習cvpaper. challenge
 
【DL輪読会】ConvNeXt V2: Co-designing and Scaling ConvNets with Masked Autoencoders
【DL輪読会】ConvNeXt V2: Co-designing and Scaling ConvNets with Masked Autoencoders【DL輪読会】ConvNeXt V2: Co-designing and Scaling ConvNets with Masked Autoencoders
【DL輪読会】ConvNeXt V2: Co-designing and Scaling ConvNets with Masked AutoencodersDeep Learning JP
 
【DL輪読会】Flow Matching for Generative Modeling
【DL輪読会】Flow Matching for Generative Modeling【DL輪読会】Flow Matching for Generative Modeling
【DL輪読会】Flow Matching for Generative ModelingDeep Learning JP
 
画像認識と深層学習
画像認識と深層学習画像認識と深層学習
画像認識と深層学習Yusuke Uchida
 
【メタサーベイ】Vision and Language のトップ研究室/研究者
【メタサーベイ】Vision and Language のトップ研究室/研究者【メタサーベイ】Vision and Language のトップ研究室/研究者
【メタサーベイ】Vision and Language のトップ研究室/研究者cvpaper. challenge
 
Attentionの基礎からTransformerの入門まで
Attentionの基礎からTransformerの入門までAttentionの基礎からTransformerの入門まで
Attentionの基礎からTransformerの入門までAGIRobots
 
[DL輪読会]Wav2CLIP: Learning Robust Audio Representations From CLIP
[DL輪読会]Wav2CLIP: Learning Robust Audio Representations From CLIP[DL輪読会]Wav2CLIP: Learning Robust Audio Representations From CLIP
[DL輪読会]Wav2CLIP: Learning Robust Audio Representations From CLIPDeep Learning JP
 
Transformer メタサーベイ
Transformer メタサーベイTransformer メタサーベイ
Transformer メタサーベイcvpaper. challenge
 
画像生成・生成モデル メタサーベイ
画像生成・生成モデル メタサーベイ画像生成・生成モデル メタサーベイ
画像生成・生成モデル メタサーベイcvpaper. challenge
 
[DL輪読会]HoloGAN: Unsupervised learning of 3D representations from natural images
[DL輪読会]HoloGAN: Unsupervised learning of 3D representations from natural images[DL輪読会]HoloGAN: Unsupervised learning of 3D representations from natural images
[DL輪読会]HoloGAN: Unsupervised learning of 3D representations from natural imagesDeep Learning JP
 
猫でも分かるVariational AutoEncoder
猫でも分かるVariational AutoEncoder猫でも分かるVariational AutoEncoder
猫でも分かるVariational AutoEncoderSho Tatsuno
 

What's hot (20)

Curriculum Learning (関東CV勉強会)
Curriculum Learning (関東CV勉強会)Curriculum Learning (関東CV勉強会)
Curriculum Learning (関東CV勉強会)
 
[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輪読会]深層強化学習はなぜ難しいのか?Why Deep RL fails? A brief survey of recent works.
[DL輪読会]深層強化学習はなぜ難しいのか?Why Deep RL fails? A brief survey of recent works.[DL輪読会]深層強化学習はなぜ難しいのか?Why Deep RL fails? A brief survey of recent works.
[DL輪読会]深層強化学習はなぜ難しいのか?Why Deep RL fails? A brief survey of recent works.
 
深層生成モデルと世界モデル(2020/11/20版)
深層生成モデルと世界モデル(2020/11/20版)深層生成モデルと世界モデル(2020/11/20版)
深層生成モデルと世界モデル(2020/11/20版)
 
モデルアーキテクチャ観点からのDeep Neural Network高速化
モデルアーキテクチャ観点からのDeep Neural Network高速化モデルアーキテクチャ観点からのDeep Neural Network高速化
モデルアーキテクチャ観点からのDeep Neural Network高速化
 
ICLR2020の異常検知論文の紹介 (2019/11/23)
ICLR2020の異常検知論文の紹介 (2019/11/23)ICLR2020の異常検知論文の紹介 (2019/11/23)
ICLR2020の異常検知論文の紹介 (2019/11/23)
 
[DL輪読会]World Models
[DL輪読会]World Models[DL輪読会]World Models
[DL輪読会]World Models
 
[DL輪読会]BANMo: Building Animatable 3D Neural Models from Many Casual Videos
[DL輪読会]BANMo: Building Animatable 3D Neural Models from Many Casual Videos[DL輪読会]BANMo: Building Animatable 3D Neural Models from Many Casual Videos
[DL輪読会]BANMo: Building Animatable 3D Neural Models from Many Casual Videos
 
[DL輪読会]近年のエネルギーベースモデルの進展
[DL輪読会]近年のエネルギーベースモデルの進展[DL輪読会]近年のエネルギーベースモデルの進展
[DL輪読会]近年のエネルギーベースモデルの進展
 
【メタサーベイ】数式ドリブン教師あり学習
【メタサーベイ】数式ドリブン教師あり学習【メタサーベイ】数式ドリブン教師あり学習
【メタサーベイ】数式ドリブン教師あり学習
 
【DL輪読会】ConvNeXt V2: Co-designing and Scaling ConvNets with Masked Autoencoders
【DL輪読会】ConvNeXt V2: Co-designing and Scaling ConvNets with Masked Autoencoders【DL輪読会】ConvNeXt V2: Co-designing and Scaling ConvNets with Masked Autoencoders
【DL輪読会】ConvNeXt V2: Co-designing and Scaling ConvNets with Masked Autoencoders
 
【DL輪読会】Flow Matching for Generative Modeling
【DL輪読会】Flow Matching for Generative Modeling【DL輪読会】Flow Matching for Generative Modeling
【DL輪読会】Flow Matching for Generative Modeling
 
画像認識と深層学習
画像認識と深層学習画像認識と深層学習
画像認識と深層学習
 
【メタサーベイ】Vision and Language のトップ研究室/研究者
【メタサーベイ】Vision and Language のトップ研究室/研究者【メタサーベイ】Vision and Language のトップ研究室/研究者
【メタサーベイ】Vision and Language のトップ研究室/研究者
 
Attentionの基礎からTransformerの入門まで
Attentionの基礎からTransformerの入門までAttentionの基礎からTransformerの入門まで
Attentionの基礎からTransformerの入門まで
 
[DL輪読会]Wav2CLIP: Learning Robust Audio Representations From CLIP
[DL輪読会]Wav2CLIP: Learning Robust Audio Representations From CLIP[DL輪読会]Wav2CLIP: Learning Robust Audio Representations From CLIP
[DL輪読会]Wav2CLIP: Learning Robust Audio Representations From CLIP
 
Transformer メタサーベイ
Transformer メタサーベイTransformer メタサーベイ
Transformer メタサーベイ
 
画像生成・生成モデル メタサーベイ
画像生成・生成モデル メタサーベイ画像生成・生成モデル メタサーベイ
画像生成・生成モデル メタサーベイ
 
[DL輪読会]HoloGAN: Unsupervised learning of 3D representations from natural images
[DL輪読会]HoloGAN: Unsupervised learning of 3D representations from natural images[DL輪読会]HoloGAN: Unsupervised learning of 3D representations from natural images
[DL輪読会]HoloGAN: Unsupervised learning of 3D representations from natural images
 
猫でも分かるVariational AutoEncoder
猫でも分かるVariational AutoEncoder猫でも分かるVariational AutoEncoder
猫でも分かるVariational AutoEncoder
 

Similar to 深層学習②

Getting Started with Deep Learning using Scala
Getting Started with Deep Learning using ScalaGetting Started with Deep Learning using Scala
Getting Started with Deep Learning using ScalaTaisuke Oe
 
深層学習 第4章 大規模深層学習の実現技術
深層学習 第4章 大規模深層学習の実現技術深層学習 第4章 大規模深層学習の実現技術
深層学習 第4章 大規模深層学習の実現技術孝昌 田中
 
20180729 Preferred Networksの機械学習クラスタを支える技術
20180729 Preferred Networksの機械学習クラスタを支える技術20180729 Preferred Networksの機械学習クラスタを支える技術
20180729 Preferred Networksの機械学習クラスタを支える技術Preferred Networks
 
Deep Learning技術の最近の動向とPreferred Networksの取り組み
Deep Learning技術の最近の動向とPreferred Networksの取り組みDeep Learning技術の最近の動向とPreferred Networksの取り組み
Deep Learning技術の最近の動向とPreferred Networksの取り組みKenta Oono
 
効率的学習 / Efficient Training(メタサーベイ)
効率的学習 / Efficient Training(メタサーベイ)効率的学習 / Efficient Training(メタサーベイ)
効率的学習 / Efficient Training(メタサーベイ)cvpaper. challenge
 
読解支援@2015 06-26
読解支援@2015 06-26読解支援@2015 06-26
読解支援@2015 06-26sekizawayuuki
 
Cvim saisentan-6-4-tomoaki
Cvim saisentan-6-4-tomoakiCvim saisentan-6-4-tomoaki
Cvim saisentan-6-4-tomoakitomoaki0705
 
Generative deeplearning #02
Generative deeplearning #02Generative deeplearning #02
Generative deeplearning #02逸人 米田
 
Evolving Deep Unsupervised Convolutional Networks for Vision-Based Reinforcem...
Evolving Deep Unsupervised Convolutional Networks for Vision-Based Reinforcem...Evolving Deep Unsupervised Convolutional Networks for Vision-Based Reinforcem...
Evolving Deep Unsupervised Convolutional Networks for Vision-Based Reinforcem...Shunta Nomura
 
深層学習(岡本孝之 著) - Deep Learning chap.1 and 2
深層学習(岡本孝之 著) - Deep Learning chap.1 and 2深層学習(岡本孝之 著) - Deep Learning chap.1 and 2
深層学習(岡本孝之 著) - Deep Learning chap.1 and 2Masayoshi Kondo
 
Deep learningの概要とドメインモデルの変遷
Deep learningの概要とドメインモデルの変遷Deep learningの概要とドメインモデルの変遷
Deep learningの概要とドメインモデルの変遷Taiga Nomi
 
DLフレームワークChainerの紹介と分散深層強化学習によるロボット制御
DLフレームワークChainerの紹介と分散深層強化学習によるロボット制御DLフレームワークChainerの紹介と分散深層強化学習によるロボット制御
DLフレームワークChainerの紹介と分散深層強化学習によるロボット制御Ryosuke Okuta
 
[DL輪読会]EfficientDet: Scalable and Efficient Object Detection
[DL輪読会]EfficientDet: Scalable and Efficient Object Detection[DL輪読会]EfficientDet: Scalable and Efficient Object Detection
[DL輪読会]EfficientDet: Scalable and Efficient Object DetectionDeep Learning JP
 
Using Deep Learning for Recommendation
Using Deep Learning for RecommendationUsing Deep Learning for Recommendation
Using Deep Learning for RecommendationEduardo Gonzalez
 

Similar to 深層学習② (20)

Getting Started with Deep Learning using Scala
Getting Started with Deep Learning using ScalaGetting Started with Deep Learning using Scala
Getting Started with Deep Learning using Scala
 
Efficient Det
Efficient DetEfficient Det
Efficient Det
 
深層学習 第4章 大規模深層学習の実現技術
深層学習 第4章 大規模深層学習の実現技術深層学習 第4章 大規模深層学習の実現技術
深層学習 第4章 大規模深層学習の実現技術
 
深層学習①
深層学習①深層学習①
深層学習①
 
20180729 Preferred Networksの機械学習クラスタを支える技術
20180729 Preferred Networksの機械学習クラスタを支える技術20180729 Preferred Networksの機械学習クラスタを支える技術
20180729 Preferred Networksの機械学習クラスタを支える技術
 
Deep Learning技術の最近の動向とPreferred Networksの取り組み
Deep Learning技術の最近の動向とPreferred Networksの取り組みDeep Learning技術の最近の動向とPreferred Networksの取り組み
Deep Learning技術の最近の動向とPreferred Networksの取り組み
 
効率的学習 / Efficient Training(メタサーベイ)
効率的学習 / Efficient Training(メタサーベイ)効率的学習 / Efficient Training(メタサーベイ)
効率的学習 / Efficient Training(メタサーベイ)
 
読解支援@2015 06-26
読解支援@2015 06-26読解支援@2015 06-26
読解支援@2015 06-26
 
Cvim saisentan-6-4-tomoaki
Cvim saisentan-6-4-tomoakiCvim saisentan-6-4-tomoaki
Cvim saisentan-6-4-tomoaki
 
Generative deeplearning #02
Generative deeplearning #02Generative deeplearning #02
Generative deeplearning #02
 
深層学習入門
深層学習入門深層学習入門
深層学習入門
 
Evolving Deep Unsupervised Convolutional Networks for Vision-Based Reinforcem...
Evolving Deep Unsupervised Convolutional Networks for Vision-Based Reinforcem...Evolving Deep Unsupervised Convolutional Networks for Vision-Based Reinforcem...
Evolving Deep Unsupervised Convolutional Networks for Vision-Based Reinforcem...
 
20150930
2015093020150930
20150930
 
Res net
Res netRes net
Res net
 
Sprint16
Sprint16Sprint16
Sprint16
 
深層学習(岡本孝之 著) - Deep Learning chap.1 and 2
深層学習(岡本孝之 著) - Deep Learning chap.1 and 2深層学習(岡本孝之 著) - Deep Learning chap.1 and 2
深層学習(岡本孝之 著) - Deep Learning chap.1 and 2
 
Deep learningの概要とドメインモデルの変遷
Deep learningの概要とドメインモデルの変遷Deep learningの概要とドメインモデルの変遷
Deep learningの概要とドメインモデルの変遷
 
DLフレームワークChainerの紹介と分散深層強化学習によるロボット制御
DLフレームワークChainerの紹介と分散深層強化学習によるロボット制御DLフレームワークChainerの紹介と分散深層強化学習によるロボット制御
DLフレームワークChainerの紹介と分散深層強化学習によるロボット制御
 
[DL輪読会]EfficientDet: Scalable and Efficient Object Detection
[DL輪読会]EfficientDet: Scalable and Efficient Object Detection[DL輪読会]EfficientDet: Scalable and Efficient Object Detection
[DL輪読会]EfficientDet: Scalable and Efficient Object Detection
 
Using Deep Learning for Recommendation
Using Deep Learning for RecommendationUsing Deep Learning for Recommendation
Using Deep Learning for Recommendation
 

Recently uploaded

論文紹介: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
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
論文紹介: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
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
論文紹介: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
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
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
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 

Recently uploaded (9)

論文紹介: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...
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
論文紹介: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
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
論文紹介: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」の紹介
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
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
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 

深層学習②