概要
G検定に向けて、比較的新しいモデルについて記載します。
深層生成モデル
- 生成モデル
- 画像のデータセットがどのような分布になっているかを推測し、その分布に基づいて、元の画像と似たような画像データを生成するモデルです。
- 深層生成モデル
- ディープラーニングを取り入れた生成モデルのことです。
- 潜在空間
- 深層生成モデルでは、元データセットから画像が持つ潜在空間を学習して、ベクトルとして表現します。
- 潜在空間を得ることで、新しい画像を生成できます。
こちらのページに記載のオートエンコーダ (自己符号化器) は、例えば入力画像を圧縮して特徴を捉えた隠れ層を学習します。入力データを、より低次元のベクトルで表現することができます。
変分オートエンコーダ VAE は、オートエンコーダに工夫を加えて、新しいデータを生成できるようにしたモデルです。
VAE のエンコーダ部分では、入力データ $x$ を、「入力データを生成する何かしらの分布 $p_\theta(x | z)$ のパラメータ」に変換するような学習を行います。
この分布内の変数を潜在変数 $z$ とよび、潜在変数による空間を潜在空間 (latent space) とよびます。
最も基本的な VAE において、分布には正規分布を仮定します。その場合、学習すべき分布パラメータは、平均 $\mu$ と分散 $\sigma^2$ となります。
デコーダ部分では、潜在空間からサンプリングされたデータを入力として、$x'$ を出力します。
$$\begin{eqnarray}
p_\theta(x) &=& \int_z p_\theta (x, z) dz \\
&=& \int_z p_\theta (x | z) p_\theta (z) dz \\
\end{eqnarray}
$$
敵対的生成ネットワーク GAN (Generative Adversarial Network)
Generator は、潜在空間からサンプリングしたノイズを、「興味のあるデータ分布内のデータ」に変換しようとします。
Discriminator は、入力されたデータ (Generator が出力したデータ、または本物の学習用のデータ) が、興味のあるデータ分布内のデータであるかを判定します。
Generator と Discriminator の学習は少しずつ交互に進めます。先に Discriminator の学習が完了している状況においては、Generator は Discriminator をうまく騙すような出力を得ることが難しく、学習が進み難くなるためです。
勾配消失問題だけでなく、モード崩壊とよばれる問題にも注意します。多様性のない画像などを生成してしまう現象です。
DCGAN (Deep Convolutional GAN) は GAN のアークテクチャを応用したモデルです。Generator と Discriminator それぞれのネットワークに、全結合層ではなく畳み込み層 (Convolutional layer) を用いています。
Pix2Pix
GAN において、Generator の入力は、潜在空間からサンプリングしたノイズでした。
Pix2Pix においては、Generator 相当のネットワークへの入力を画像データ (A) にします。Generator 相当のネットワークの出力は画像 B です。
Discriminator 相当のネットワークは、「A と B のペア」が本物であるかどうかを判定します。
昼の画像を夜の画像に変換したり、線画をカラー画像に変換したりできます。
ただし、予めペア画像を学習のために用意しておく必要があります。
「Generator 2 つ」と「Discriminator 2 つ」を学習します。
Pix2Pix と同様に、画像から画像への変換を行います。その際、Pix2Pix と異なり、画像のペアを用意しておく必要がありません。
Generator の出力画像を、Discriminator で教師データを用いて本物であるかを判定することは GAN と同様です。
Cycle GAN では更に、二つの Generator を学習する際に、片方の Generator が出力した画像を、もう片方の Generator で再度変換します。そして、一つ目の Generator への入力が、二つ目の Generator の出力と一致するように Cyclic に学習する部分が特徴です。
モデルの説明可能性・解釈性 (Explainability, Interpretability)
ROC 曲線や AUC によってモデルの性能を評価することはできても、性能が高いモデルの出力について、説明や解釈を行なうことは必ずしも簡単ではありません。
例えば、こちらのページに記載の決定木においては、それぞれの特徴量における分割回数が多いほど、その特徴量は重要であると解釈できます。
しかしながら、深層学習のようにモデルが複雑な場合において、解析することによってモデルを説明する手法はスケールしません。
そこで、モデルは解析せずにブラックボックスとして扱い、モデルへの入力を変化させて出力の変化を確認することで、モデルを理解する手法が考えられています。
また、後述の Grad-CAM のように、深層学習モデルの出力を解釈し易くするための可視化手法も考えられています。
複雑なモデルを線形モデルに近似するため、変数の値を大きく変化させた場合には近似がうまくいかない可能性があることに注意が必要です。
SHAP
Grad-CAM (Gradient-weighted Class Activation Mapping) は、CNN ベースのモデルの出力について、予測を行なうにあたって重視された箇所を可視化する手法です。Grad-CAM: Visual Explanations from Deep Networks via Gradient-based Localization (2016 年)
seq2seq における Attention のように、モデルが重視する箇所を示す情報が存在します。
Grad-CAM では、モデルが重視した箇所をヒートマップで表示した Grad-CAM 画像を生成します。
更に、Guided Backpropagation とよばれる既存の手法で別の画像を生成します。
これらの二つを合わせることで、Guided Grad-CAM 画像を出力します。
arXiv
arXiv (アーカイヴ) は、ディープラーニングを含めて、物理学や数学等の論文が、保存・公開されている Web サイトです。
査読を通過していないプレプリントも保存・公開できます。
現在はコーネル大学が運営しています。
LIME、SHAP、Grad-CAM の論文もダウンロードできます。
自動運転レベルは、アメリカの SAE International という非営利団体が定義しています。
自動運転では、「走行環境の認識」、「次に取るべき運転行動の判断」、「車両の制御」、が必要になります。ディープラーニングは主に、安全な自動走行を実現するための「走行環境の認識」で用いられます。
2021年3月に、Honda SENSING Elite が搭載された、新型「LEGEND」が発売されました。日本で初めてのレベル3の車両です。高速道路渋滞時など一定の条件下で、システムがドライバーに代わって運転操作を行います。
画像認識
物体識別
物体識別 (画像識別) は、画像内に写っている代表的な物体クラスの名称を出力するタスクです。
ILSVRC において CNN を用いたモデル
こちらのページに記載した ILSVRC (ImageNet Large Scale Visual Recognition Challenge) は、物体識別に関する精度を競います。
AlexNet とよばれる CNN を用いたモデルが勝利を収めて以降、CNN を用いたモデルが開発されています。
- AlexNet (2012年)
- ILSVRC において、初めて深層学習の概念を取り入れました。
- 8層構造です。
- GoogLeNet (2014年)
- Inception モジュールという、小さなネットワークを積み上げた構造をしています。
- 22層構造です。
- 3つの異なるサイズの畳み込みフィルタ (1x1, 3x3, 5x5) と、max プーリングから構成されています。
- 5x5 の畳み込みフィルタを複数持たせた「畳み込み層」でも「Inception モジュール」と同じことが実現できます。
- ただし、「Inception モジュール」では、畳み込み層と比較して、パラメータ数が少なくて済みます。
- VGG16 (あるいは単に VGG、または VGGNet) (2014年)
- ネットワーク構造を単純化したモデルです。
- サイズの小さな畳み込みフィルタを用いて、計算量を減らしています。
- 13層の畳み込み層と 3層の全結合層の、合計 16層から構成されています。
- 3x3 の小さな畳み込みフィルタのみを用いており、層が深いという特徴があります。
- 5x5 の畳み込み一回と、3x3 の畳み込み二回は、同じ表現となります。
- 5x5 の畳み込みフィルタ一枚よりも、3x3 の畳み込みフィルタ二枚の方が、パラメータ数は少なくて済みます。
- ResNet (2015年)
- Squeeze-and-Excitation Networks (SENet)
その他の物体識別のモデル
-
LeNet
- 1989年にヤン・ルカンによって提唱されました。
- CNN を用いています。
- Wide ResNet
- DenseNet
物体検出
画像に写っている物体のクラスの識別 (物体識別) に加えて、物体の位置を特定するタスクです。物体の位置は、バウンディングボックスによって検出します。
顔検出アプリや自動車の安全機能のように、物体クラスを予め、顔や人に限定している場合も含みます。
2段階モデル
物体の大まかな位置を特定してから、その物体クラスを識別します。
- R-CNN
- Selective Search というセグメンテーションの方法で、物体の候補を抽出します。
- CNN で最終判定は行わず、最上位層の一つ前の層を特徴ベクトルとして、SVN に入力してクラス識別します。
- 物体の候補領域毎に処理を行なうため、処理時間がかかります。
- Fast R-CNN
- R-CNN の構造を簡略化して高速化しました。
- 物体の候補領域それぞれを CNN に入力するのではなく、画像全体を CNN に入力します。
- CNN から得られた特徴マップにおける、物体の候補領域に相当する部分を切り出して、識別処理に利用します。
- Faster R-CNN
- Selective Search は処理に時間がかかるため、Region Proposal Network という CNN モデルに置き換えました。
- FPN
1段階モデル
物体の位置特定とクラス識別を同時に行います。処理を単純にできるため、高速に処理できることが期待できます。
- YOLO (You Only Look Once)
- 出力層を工夫して、入力画像の各位置における「物体領域らしさ」と「矩形領域」を直接出力します。
- SSD
- YOLO の後継です。
- CNN の途中の特徴マップから、領域単位で「物体らしさ」と「矩形領域」を出力します。
セグメンテーション
画像に写っているものについて、領域や物体クラスを、ピクセル単位で識別します。
- セマンティックセグメンテーション
- 画像全体を対象とします。
- 同一クラスをひとまとめにします。
- FCN (Fully Convolutional Network)
- CNN をセマンティックセグメンテーションに利用しています。
- CNN の畳み込み層とプーリング層を利用しており、全結合層は利用しません。
- CNN の特徴マップのサイズは、層を重ねる毎に小さくなります。
- サイズが小さくなった特徴マップを拡大することで、画素毎にクラス識別します。
- SegNet
- 小さくなった特徴マップを徐々に拡大する構造を採用しています。
- 特徴マップを小さくしていく部分を、エンコーダとよびます。
- 特徴マップを大きくしていく部分を、デコーダとよびます。
- U-Net
- デコーダ側で特徴マップを拡大して畳み込み処理する際に、エンコーダ側の特徴マップも利用します。
- PSPNet
- エンコーダとデコーダの間に Pyramid Pooling Module を追加しています。
- DeepLab
- セマンティックセグメンテーションにおいては、広い範囲の情報を集約することが重要となります。
- カーネルのサイズは大きいほど良いということになります。
- カーネルのサイズが大きいと、学習すべきパラメータと計算量は増えてしまいます。
- Diated convolution または Atrous convolution を用いると、カーネルサイズは同じままで、広い範囲の情報を集約できます。
- DeepLab は Atrous convolution を導入しています。
- DeepLab V3+
- SegNet や U-Net のエンコーダおよびデコーダの機構を導入しています。
- PSPNet のように、複数の解像度の特徴を捉える機構を採用しています。
- Atrous Spatial Pyramid Pooling (ASPP)
- インスタンスセグメンテーション (オブジェクトセグメンテーション)
- パノプティックセグメンテーション
- 人などの個々の物体をそれぞれ分離しつつ、建物や道路はひとまとめにします。
姿勢推定
人の頭や足、手などの関節位置を推定するタスクです。
- Convolutional Pose Machines
- CNN を多段に組み合わせて、徐々に信頼度マップを高精度化します。
- Open Pose
- 複数の人の骨格を同時に推定できるようにした手法です。
- Parts Affinity Fields を導入しています。
マルチタスク学習
- 複数のタスクを一つのモデルで対応することを、マルチタスクとよびます。
- Faster R-CNN や YOLO は、「物体識別」と「物体検出」を同時に行っており、マルチタスクに含まれます。
- Mask R-CNN
- Faster R-CNN による物体検出に加えて、セグメンテーションタスクも同時に行うモデルです。
- 物体検出した領域毎にセグメンテーションを行なうため、インスタンスセグメンテーションとなります。
ネットワーク構造の探索 (AutoML)
CNN のネットワーク構造には、層数、フィルタのサイズ、フィルタ数など、決めるべき項目がたくさんあります。そのため、人が最適なネットワーク構造を探し出すことは不可能です。また、すべての組み合わせを含めた最適化は、スーパーコンピュータを利用したとしても困難です。
そこで、学習によって、準最適なネットワーク構造の探索を行なうことが考えられています。
- Neural Architecture Search (NAS)
- リカレントニューラルネットワークと深層強化学習を用います。
- NASNet
- NAS における、深層強化学習で生成するネットワークの単位を、ResNet の Residual Block のような塊にする工夫を導入しています。
- MnasNet
- モバイル端末での計算量も考慮する工夫を導入しています。
EfficientNet
- 「ネットワーク構造の探索」によって誕生したネットワーク構造をもとにしています。
- モデルの深さ、広さ、入力画像の大きさをバランス良く調整しているのが特徴です。
- これまでに登場したモデルよりも大幅に少ないパラメータ数でありながら、SoTA を達成した高精度で高速なモデルです。
- 補足: SoTA (State of the Art) は、現時点での最先端であり最も高精度であることを意味します。
- 2019年に Google から発表されたモデルです。
- 転移学習に有用なモデルです。
エッジデバイス
G検定シラバスの「ディープラーニングの手法」における「モデルの軽量化」に関する事項です。
AIシステムの提供方法には、
- クラウド上で Webサービスとして提供する方法の他に、
- エッジデバイスにモデルをダウンロードして、常に最新の状態になるように更新を続ける方式があります。
- リアルタイム性が高く、インターネット接続が必ずしも必要ありません。
- クラウドと比較して、モデルの更新や設定が困難です。
- クラウドと比較して、ダウンした際の影響範囲は小さくなります。
- クラウドと比較して、ネットワークの遅延を考える必要がありません。
通常の畳み込み処理の代わりに、Depthwise Separable Convolution を用います。通常の畳み込み処理と比較して、計算量を 1/8 程度に削減しています。
- 通常の畳み込み処理
- 入力特徴マップの空間方向とチャネル方向の両方向に対して積和の処理を行います。
- Depthwise Separable Convolution
- 入力特徴マップの空間方向とチャネル方向について、それぞれ独立に畳み込み処理を行います。
- 近似計算であるため、精度は一致しません。
- 空間方向
- Depthwise Convolution
- 特徴マップのチャネル毎に畳み込み処理を行います。
- チャネル方向
- Pointwise Convolution
- 1x1 の畳み込み処理を行います。
AutoML である MnasNet 等によって、MobileNet の構造をより良くした MobileNetV3 が登場しました。
Introducing the Next Generation of On-Device Vision Models: MobileNetV3 and MobileNetEdgeTPU (2019年)
音声処理
音声認識
例えば音声認識において、以前は、GMM-HMM (Gaussian Mixture Model - Hidden Markov Model) とよばれるモデルで、音声の特徴から音素を作成して、言語モデルを用いて音素からテキストを生成するアプローチが一般的でした。
近年では、音素列を作らずに、直接テキストを生成する CTC などの音声認識の手法が登場しています。
CTC では、こちらのページに記載の RNN を、音声認識に利用します。
RNN において、入力データの数と出力データの数は一致しますが、時間軸に沿って入力した音声データの数と、正解の出力の音素数は必ずしも一致しません。
そこで、CTC では出力に blank を含めることで、この問題を回避しています。
音声生成
WaveNet
- 音声生成のモデルです。
- 2016年に DeepMind 社によって開発されたモデルです。
- CNN で構成されます。
- PixelCNN というモデルをベースに作られています。
- 最初の入力から次の出力を次々に予測していくアプローチをとります。
自然言語処理
形態素解析
- 「形態素」とよばれる、言語で意味を持つ最小単位まで分割して解析する手法です。
- その際、それぞれの形態素の品詞判別なども行います。
- 英語では既にスペースが入っていますが、形態素解析によって、品詞などの情報を付与できます。
- 形態素解析は辞書なしで行なうことも可能ですが、造語や新語などを特定することが難しい場合があり、辞書を登録しておくことで確実な処理を行うことができます。
Bag-of-Words (BoW)
文書が複数あるとき、出現し得る単語それぞれが、各文書で出現した回数をテーブルにしたものです。
自然言語の最も単純なベクトル化手法です。
- 文書の長さによる影響を考慮していないという欠点があります。
- 文書が長ければ長いほど、その文書ではどの単語も出現頻度が高くなりますが、それが考慮できていません。
- 単語の意味を考慮できていないため、重要であるが出現頻度は低い単語をうまく扱えません。
- 自然言語の特徴量エンジニアリングの一つです。
- 一般的な単語の重みを低くして、特定の文書に特有な単語を重要視する手法です。
TF と IDF の積で定義されます。
Term Frequency (TF) → 単語 $t$ の文書 $d$ 内での出現頻度。ただし、$f_{t,d}$ は文書 $d$ 内における単語 $t$ の出現回数とします。
$$tf(t, d) = \frac{f_{t,d}}{\sum_{t' \in d} f_{t',d}}
$$
Inverse Document Frequency (IDF) → 「その単語 $t$ が存在する文書の割合」の逆数の対数。ただし、$N$ は文書の個数であるとします。
$$idf(t, D) = log \frac{N}{| \{ d \in D : t \in d \} |}
$$
Bags-of-Words と比較して、出現頻度が低い珍しい単語に注目できるようになりましたが、文書の長さは依然として考慮できていません。
「局所表現」と「分散表現 (単語埋め込み)」
自然言語処理において、コンピュータに単語を理解させるために、固定長のベクトルで表す表現が必要となります。
こちらのページに記載した「ダミー変数 (One-Hot ベクトル)」は、値が 0 または 1 のみであり、離散的でした。更に、次元数が単語の種類数と等しくなるため、非常に高次元であるという特徴があります。このような単語の表現を局所表現 (local representation) とよびます。
局所表現では単語同士の意味の近さを考慮することができません。
局所表現を、実数値全体を取るように連続的にして、値が 0 であるような次元が少なくなるように情報を密にした表現を、「分散表現 (distributed representation)」または「単語埋め込み (word embedding)」とよびます。
分散表現された単語同士は、ベクトル間の距離や位置関係から、意味の近さなどを計算できます。
word2vec
- word2vec は、単語の分散表現を得るための代表的な手法です。
- ニューラルネットワークを用います。
- Bags-of-Words というカウントベースの手法に対して、word2vec は推論ベースの手法です。
- 2013年に Google のトマス・ミコロフの研究チームが開発しました。
- 「単語の意味は、その周辺の単語によって決まる」という分布仮説を実現したものと考えられます。
以下の二つのモデルが存在します。
- Skip-gram
- ある単語から、その文脈を構成する周囲の単語を予測するモデルです。
- CBOW よりも精度が高いと言われる一方で、学習コストが高く計算に時間がかかります。
- CBOW (Continuous Bag-of-Words)
- ある単語周辺の文脈から、その単語を予測するモデルです。
どちらのモデルでも、中間層の表現である、ニューロン数の次元を持つ実数ベクトル、をその単語の意味表現とみなします。
fastText
- word2vec の延長線上にあるライブラリです。
- word2vec を提案したトマス・ミコロフらによって開発されました。
- 訓練データには存在しない単語 (Out Of Vocabulary; OOV) であっても、単語埋め込みを計算できます。
ELMo
- word2vec も fastText も、単語に対して得られる分散表現は一つです。
- そのため、特定の別の単語と結び付いて特別な意味を持つ単語を扱えません。
- そこで、ELMo (Embeddings from Language Models) とよばれる、文脈を考慮した分散表現を得る手法が提案されました。
トピックモデル
- トピックとは「意味のカテゴリ」のことです。
- 文書や単語に潜む潜在的なカテゴリを説明するモデルです。
- 通販サイトにおいて、顧客の購買履歴から商品の潜在的なカテゴリ分けを知ることもできます。
-
k-means 法と同様に、クラスタリングを行ないます。
- k-means 法などとは異なり、複数のクラスタにデータを分類するのが特徴です。
代表的なモデルに LDA (Latent Dirichlet Allocation) があります。
- 文章集合から、各文章における、トピックの混合比率を推定する手法の一つです。
- 一つの文章には複数の潜在トピックが存在すると仮定します。
- 各トピックから単語が生成される確率も推定します。
- 具体的な単語などのデータがそれぞれ生成される確率は、トピックごとに異なります。
他にも LSI (Latent Semantic Indexing) が有名です。
RNN の欠点の一つに、入力データを時間軸に沿って処理する必要がある、というものがあります。
2017 年に提案された Transformer は、RNN を Attention で置き換えることで、並列処理を可能にしました。
seq2seq に付随して用いられた Attention 機構では RNN が前提となっていましたが、RNN を用いません。
The Illustrated Transformer
画像処理分野において、CNN を用いない Vision Transformer (ViT) も提案されています。
Self-Attention (自己注意機構)
- 「入力文内の単語間 (エンコーダ)」または「出力文内の単語間 (デコーダ)」の関連度を計算したものです。
- ある単語の分散表現を、文脈を考慮して更新することができます。
- 語順の情報を失わないために、Positional Encoding (位置エンコーディング) とよばれる情報を、入力に付与します。
- デコーダでは、まだ出力していない未来の情報は使えないため、未来の情報をマスキングする必要があります。
- そのため、デコーダ処理は並列化できません。
- モデル訓練時の処理は並列化できます。
Source-Target Attention (Encoder-Decoder Attention)
- 入力文の情報を利用するために、デコーダで用いられます。
- GPT (Generative Pre-Training) は OpenAI が 2018 年に提案した事前学習モデルです。
- Transformer の Decoder 部分と似た構造を持ちます。
- 過去の単語列から次の単語を予測する言語モデルの事前学習を行います。
- 転移学習を行うことで、
- 自然言語推論 (Natural Language Inference; NLI)
- 二つの文書の内容に矛盾があるか判定。
- 二つの文書について、一方が片方を含意するかどうかを判定。
- 質問応答 (question answering)
- 意味的類似度 (semantic similarity)
- 文書分類 (document classification)
- 与えられた文書が属すクラスを予測。
- 評判分析 (sentiment analysis)
- などが可能になります。
- これら言語理解タスクをまとめた General Language Understanding Evaluation (GLUE) ベンチマークのデータセットが公開されています。
- GPT-2
- OpenAI が 2019 年に発表した Transformer ベースのテキスト生成モデルです。
- 800万の Web ページを学習しています。
- 約15億のパラメータを持ちます。
- GPT-3
- 2020年5月に登場しました。
- パラメータ数は 1750億に到達しています。
- Megatron-LM
- Turning-NLG
- 170億のパラメータ
- Microsoft、2020年
- BERT は Bidirectional Encoder Representations from Transformers の略です。
- 双方向 Transformer を使ったモデルです。
- Transformer の Encoder を利用しています。
- Google が開発した自然言語処理のモデルです。
- 登場した当時、多くの自然言語処理タスクにおいて SoTA を達成しました。
- 補足: SoTA (State of the Art) は、現時点での最先端であり最も高精度であることを意味します。
- 事前学習に特徴があり、MLM および NSP が使用されました。
- 自然言語処理のタスクで用いられることが多い MLM は、複数箇所が穴となっている文章の単語予測を行なうものです。
- 全文書が見えている状態で学習する必要があり、GPT と同様の事前学習は行えません。
- ALBERT、DistilBERT
- タスクの精度は落とさずに、パラメータ数を削減する工夫をしました
Masked Language Model (MLM)
文中の複数箇所の単語をマスクして、本来の単語を予測するタスクです。
Next Sentence Prediction (NSP)
連続した文であるかどうかを判定するタスクです。