【グラフ深層学習】第3章 深層学習の基礎

機械学習は、サンプルデータから適切な動作を学習させることを目的としたコンピュータの研究分野であり、その一種である深層学習は、ニューラルネットワークを基盤とした機械学習アルゴリズムです。深層学習の多くの構成要素は数十年前から存在していましたが、広く普及したのは近年のことです。

ニューラルネットワークのアイデアは1940年代にマカロック・ピッツのニューロンモデルで初めて紹介され、線形モデルによって二つのカテゴリを判断できるようになりました。その後、パーセプトロンの開発により、サンプルを用いたパラメータ学習が可能になりました。1980年代には、誤差逆伝播法を用いた深層ニューラルネットワークモデルの学習が成功し、深層学習の研究が盛り上がりました。

現代においては、ビッグデータや強力な計算資源の充実、GPUの登場により、大規模な深層モデルの学習が可能になり、深層学習は様々な分野で成功を収めています。特に、画像認識、音声認識、自然言語処理の分野において顕著な進歩が見られ、深層ニューラルネットワークは従来の手法を大きく上回る成果を上げています。

この章では、グラフ深層学習の研究に必要な基本的な深層学習技術、すなわち順伝搬型ネットワーク、畳み込みネットワーク（CNN）、リカレントニューラルネットワーク（RNN）、オートエンコーダーなどについて紹介します。これらの基本的なモデルに焦点を当てつつ、後の章では変分オートエンコーダー（VAE）や敵対的生成ネットワーク（GAN）などのより高度なモデルについても議論を展開していきます​​。

## 深層順伝播型ネットワーク

深層順伝播型ネットワークは、多くの重要な深層学習技術の基礎となっています。このネットワークの目的は、与えられたデータを用いて、ある関数$f^{\ast}(x)$ を近似することです。分類タスクでは、理想的な分類器である $f^{\ast}(x)$ は入力 $x$ を正解の分類 $y$ に対応づけます。順伝播型ネットワークは、理想的な分類器をうまく近似できるような写像 $f(x | \Theta)$ を見つけることを目指します。

ニューラルネットワークは、出力 $f(x)$ を理想的な出力 $f^{\ast}(x)$ または正解の分類 $y$ に近づけることを学習します。出力層からの結果は直接学習データと比較されますが、全ての中間層はそうではありません。これらの中間層は「隠れ層」と呼ばれ、間接的な情報を用いてパラメータを決定します。各層はベクトル値関数として考えることができ、層の各要素はノード（ユニット）として扱われます。

ニューラルネットワークの各層は、入力ベクトルを線形的に結合し、活性化関数によって変換します。この活性化関数はニューラルネットワークに非線形性を付加し、近似能力を向上させます。隣り合った層は完全二部グラフを形成し、隠れ層の各ノードは入力層の全ノードと接続されています。ノードで行う演算は、入力を重みを用いて線形的に結合し、活性化関数を用いて変換することです。

ニューラルネットワークの $k$ 番目の層の出力は $\mathbf{h}^{(k)}$ と表され、$k+1$ 番目の層の出力は以下の式で計算されます：

```math
\mathbf{h}_j^{(k+1)} = \alpha\left(b_j^{(k)} + \sum_{i=1}^{N^{(k)}} \mathbf{W}_{ji}^{(k)} \mathbf{h}_i^{(k)}\right)
```

ここで $\mathbf{W}_{ji}^{(k)}$ は重み、$b_j^{(k)}$ はバイアス項を表します。出力層にも同様の構造が採用されますが、異なる活性化関数が使われることが多いです。

活性化関数は、入力信号を通過させるかどうかを決定し、ニューラルネットワークに非線形性を導入します。この非線形性により、ニューラルネットワークの近似能力が向上します。主な活性化関数には、ReLU（Rectified Linear Unit）やシグモイド、ハイパボリックタンジェント（tanh）などがあります。

## 畳み込みニューラルネットワーク
### 畳み込みニューラルネットワーク（CNN）
畳み込みニューラルネットワーク（CNN）は、特に画像認識タスクにおいて顕著な成功を収めています。CNNは空間的な情報を保存し、局所的な特徴を効果的に捉える能力を持ちます。これは、画像などの高次元データを直接処理できるという大きな利点です。

### 畳み込み演算と畳み込み層
CNNの核心部分は畳み込み演算です。この演算では、入力データに対して小さなフィルタ（カーネル）を適用し、局所的な特徴を捉えます。フィルタは入力データ上をスライドさせながら畳み込みを行い、特徴マップを生成します。この特徴マップは入力データの局所的な特徴を捉えたもので、深い層に進むにつれてより高次の特徴を捉えます。

### 実際の畳み込み層
畳み込み層は一般に、畳み込み演算と活性化関数から構成されます。活性化関数は通常ReLU（Rectified Linear Unit）が使用され、非線形変換を提供します。また、畳み込み層は入力データのサイズを小さくするためにストライド（ステップサイズ）を調整します。

### 検出層（非線形活性化層）
検出層は、各畳み込み層の後に配置され、非線形性を導入する役割を果たします。これにより、ネットワークはより複雑な関数を学習する能力を持ちます。ReLU関数は最も一般的な活性化関数で、正の入力に対してはそのままの値を、負の入力に対しては0を出力します。ReLU関数の一般化としてLeakyReLUやELU（Exponential Linear Unit）関数が提案されています。

### プーリング層
プーリング層は、特徴マップのサイズを減少させるために使用されます。プーリングは、特定の範囲内の値を要約し、主に最大値（最大プーリング）または平均値（平均プーリング）を取り出します。プーリングにより、特徴マップのサイズが減少し、計算負荷が軽減されるとともに、過学習のリスクが低減されます。

### CNNフレームワークの全体像
CNNフレームワークは、複数の畳み込み層とプーリング層から構成され、最終的には全結合層に接続されます。この全結合層は従来のニューラルネットワークと同様に、特徴マップを最終的な出力（例えば、分類ラベル）にマッピングします。CNNは入力データの空間的な構造を保存しながら、効果的に特徴抽出を行い、画像認識などのタスクにおいて高い性能を発揮します。

## RNN：リカレントニューラルネットワーク
### RNNの基本構造
リカレントニューラルネットワーク（RNN）は、時系列データや順序付きデータの処理に適しています。RNNは、過去の情報を保持し、それを用いて現在の出力を計算する機能を持ちます。これにより、時系列データの内部的な動的特性をモデル化することが可能になります。

### 従来のRNNの問題点
従来のRNNは長期依存性を捉えるのが難しいという問題がありました。これは、過去の情報が時間とともに失われ、長いシーケンスではその影響が薄れてしまうためです。この問題は、勾配消失や勾配爆発と呼ばれる現象に起因します。勾配消失は、誤差逆伝播時に勾配が急速に減少し、重みの更新が不十分になることです。一方、勾配爆発は、勾配が非常に大きくなり、数値的に不安定になることです。

### LSTM（Long Short-Term Memory）
LSTM（Long Short-Term Memory）は、従来のRNNの問題を解決するために開発されました。LSTMは、情報を長期間保持するための特別な構造を持っています。これには、入力ゲート、忘却ゲート、出力ゲートと呼ばれる３つのゲートが含まれており、それぞれのゲートが情報の流れを制御します。入力ゲートは新しい情報をどの程度受け入れるかを決定し、忘却ゲートは過去の情報をどの程度保持するかを決定します。出力ゲートは、次の隠れ状態にどの情報を送るかを決定します。これらのゲートにより、LSTMは長期依存性を効果的に捉えることができます。

### GRU（Gated Recurrent Unit）
GRU（Gated Recurrent Unit）は、LSTMと同様に長期依存性を扱うことができるRNNの一種です。GRUはLSTMよりも単純な構造を持ち、リセットゲートと更新ゲートという２つのゲートを用います。リセットゲートは過去の情報をどの程度忘れるかを決定し、更新ゲートは新しい情報と過去の情報をどのように組み合わせるかを決定します。GRUはLSTMに比べてパラメータ数が少なく、計算効率が高いという特徴があります。

## オートエンコーダ

オートエンコーダー（自己符号化器）は、入力データを低次元表現に圧縮し、その後元の次元に復元するニューラルネットワークモデルです。このモデルは、入力データの効率的な特徴表現を学習するのに使用されます。

### 不完全オートエンコーダー
不完全オートエンコーダーは、入力データを圧縮（エンコード）し、その後元のデータに復元（デコード）するプロセスを通じて、データの有用な特徴を捉えます。この圧縮された表現は、元のデータと同じまたはそれ以下の次元を持ちます。学習の目的は、入力データと出力データの差（再構成誤差）を最小限にすることです。

### 正則化オートエンコーダー
正則化オートエンコーダーは、再構成誤差の最小化に加え、エンコーダー出力に制約を加えることで、より有用な特徴表現を学習します。例えば、スパースオートエンコーダーは、アクティベーションを稀にすることで、より情報の豊かな特徴表現を生成します。別の例として、変分オートエンコーダー（VAE）は、エンコーダー出力を特定の確率分布に制約することで、生成モデルとしても機能します。

オートエンコーダーは、データの圧縮、ノイズ除去、特徴抽出など、様々なタスクに応用されます。また、教師なし学習の一形態としても注目されており、深層学習の分野で広く利用されています。

## 深層ニューラルネットワークの学習
### 勾配降下法
深層ニューラルネットワークの学習において、最も基本的なアルゴリズムは勾配降下法です。この方法では、モデルの損失関数を最小化するために、パラメータを少しずつ調整していきます。損失関数の勾配（すなわち、パラメータに対する損失関数の導関数）を計算し、この勾配の方向にパラメータを更新していくことで、損失を減少させます。

### 誤差逆伝播法
深層ニューラルネットワークでは、多くの場合、誤差逆伝播法を使用して勾配を計算します。この方法では、出力層から入力層に向かって、各層の出力に関する損失の勾配を逐次的に計算していきます。これにより、ネットワークの全パラメータに関する勾配を効率的に求めることができます。

### 過学習の抑制
深層ニューラルネットワークは、しばしば過学習（モデルが訓練データに過剰に適応し、新しいデータに対する汎化性能が低下すること）の問題に直面します。過学習を防ぐためには、モデルの容量を調整する、データ拡張を行う、正則化技術を使用する、ドロップアウトを適用するなどの方法があります。これらの方法は、モデルの複雑さを制御し、新しいデータに対する汎化能力を向上させるのに役立ちます。

## より詳細を知りたい方へ
以上、「グラフ深層学習」の第3章についてまとめました。
もし気に入っていただければ，ぜひ書籍版をご購入くださると嬉しいです．
本書の概要ページは以下になります．

https://deeplearning-on-graphs.github.io