📖
ざっくりと分かる深層学習基礎
1. 深層学習とは何か
- ざっくり言うと、あるデータxから結果yへ写像する関数f(ニューラルネットワーク)を作成すること
2. 深層学習で何ができるのか
達成したいタスクに応じて、独自のニューラルネットワーク(以降ネットワーク)が作られている。
タスクを大きく分類すると画像認識・自然言語処理・画像生成・強化学習の4分野がある
- 画像認識 -
-
物体検知(Yolo, SSD, Mask-R-CNN)
-
姿勢推定(OpenPose, CenterTrack)
-
深度推定(Monodepth, SfMLearner)
- 自然言語処理 -
-
文章生成(GPT, BERT, T5)
- 最近では、GPTで生成された記事を読んだ12%の人間しか偽であると見分けられなかった
- あまりの精度の高さに、AI倫理関係の人たちは今後の展開危惧している
-
自動対話(GPT, BERT, seq2seq)
- 下図はRedditという日本でいう2chのようなサイトで実際に実験された結果。
- 「人生で暗い時期を乗り越えるのに役立ったことは何か?」という質問に対し、GPT-3が「両親や高校、大学での恩師に支えられて今があり、何度も自殺を考えたが両親のおかげで踏みとどまった。」的な嘘をぶっこいている。
- 画像生成 -
-
低解像度から高解像度画像を生成する超解像化(ESRGAN, SRGAN)
-
単語や文章から画像を生成(HDGAN, AttnGAN, Obj-GAN)
- 強化学習 -
-
AlphaGo等によるボードゲーム対戦(DQN)
-
遺伝的アルゴリズムのシミュレーション(DQN)
- Meet Baby Xという子供を模擬したシミュレーター。脳や筋肉を深層学習と遺伝的アルゴリズムで模倣している(https://www.youtube.com/watch?v=UwsrzCVZAb8)
- Meet Baby Xという子供を模擬したシミュレーター。脳や筋肉を深層学習と遺伝的アルゴリズムで模倣している(https://www.youtube.com/watch?v=UwsrzCVZAb8)
3. ネットワークとは
- では、この図のf(x)にあたるネットワークとは何だろうか
- 全体像は以下となり、入力層・隠れ層(中間層)・出力層の代表的な三層からなる構造のことをいい、脳のニューロン構造から発想を得ている。
- 層の中にはノードがあり、そのノードは次の層のノードと繋がっている。
- 隱れ層は入力層と出力層の間に存在する2層以上の層のこと、モデルによっては数万層になる場合もある。
- ノード間の接続には重みwがあり、入力xと各重みを計算し、総和を取る。
- 総和をとった値にバイアス(その値の伝わりやすさ)を足したとき、結果がバイアスを超える場合に次のノードに値が伝わる仕組みとなっている
4. ネットワークの構造
- ではネットワークを俯瞰したとき、全体で何をしているのだろうか
- 大まかな流れは以下となり、順伝播と誤差逆伝播を繰り返してノード間の重みやバイアスの調整を行い、重要な情報だけを次の層に伝わるよう調整を行う
①:入力が画像の場合、ピクセル値を情報としてノードに持たせる
②:順伝播では計算開始前に全ノードの接続に対し適当な重みやバイアスが振られてから計算が行われる
③:各層で②の計算を行い、最終的な推論結果を出力する。
④:推論結果と正解との誤差を計算する
⑤:誤差をもとに、どの方向にパラメータを更新すれば誤差が縮まるかを各次元で微分計算し勾配を算出する。
⑥⑦:⑤で計算された勾配を基に、パラメータを逆方向に伝播していく(結果に近い部分から更新する方が、結果への影響が少ないため)
- 大まかな流れは以下となり、順伝播と誤差逆伝播を繰り返してノード間の重みやバイアスの調整を行い、重要な情報だけを次の層に伝わるよう調整を行う
5. まとめ
- 深層学習は入力に対して出力が適切な結果となるよう、ネットワークのパラメータを調整している
- 深層学習の代表的なタスクとして、画像認識・自然言語処理・画像生成・強化学習があり、タスクに応じて独自のネットワークが創られている
- 深層学習のネットワークは、入力層・隠れ層・出力層の代表的な三層から成り、層はノード同士で繋がっている
- ノード間では重みの乗算が行われ、計算結果を各ノードで総和し、その結果とバイアスを足したとき、バイアスより値が大きい場合に、次のノードに値が伝播する
- ネットワークは順伝播と誤差逆伝播を繰り返して、最適な重みとバイアスになるよう計算が行われている
6. その先へ
- pythonでネットワークの仕組みを詳しく知る
- 機械学習の基礎から深層学習までを知る(辞書的な役割)
- E資格を通して深層学習の全体像を知る&実装を理解する
- 深層学習の基礎となる論文を読んでみる
Discussion