logo

인공 신경망이란? 📂機械学習

인공 신경망이란?

定義

現実の生物の神経系を模倣したネットワーク人工ニューラルネットワークartificial neural network (ANN)と呼ぶ。

数学的定義

  • スカラー関数 $\sigma : \mathbb{R} \to \mathbb{R}$について、$\overline{\sigma}$という表記を次のように定義する。 $$ \overline{\sigma}(\mathbf{x}) = \begin{bmatrix} \sigma(x_{1}) \\ \sigma(x_{2}) \\ \vdots \\ \sigma(x_{n}) \end{bmatrix} \qquad \text{where } \mathbf{x} = \begin{bmatrix} x_{1} \\ x_{2} \\ \vdots \\ x_{n} \end{bmatrix} $$

ディープラーニングでは、線形ベクトル関数 $L : \mathbb{R}^{n} \to \mathbb{R}^{m}$をレイヤーlayer, 層といい、非線形スカラー関数 $\sigma : \mathbb{R} \to \mathbb{R}$を活性化関数activation functionという。レイヤーと活性化関数を反復的に合成したものを人工ニューラルネットワークartificial neural networkという。 $$ f(\mathbf{x}) = L_{N} \circ \overline{\sigma} \circ L_{N-1} \circ \overline{\sigma} \circ \cdots \circ \overline{\sigma} \circ L_{1}(\mathbf{x}) $$

数学的説明

人工ニューラルネットワークを簡単に説明すると、ただ線形関数と非線形関数の合成である。$N = 1$の場合は$f$を(単層)パーセプトロンという。$N$が十分大きければ、$f$をディープニューラルネットワークdeep neural networkという。文脈上、人工ニューラルネットワークを指すことが明確であれば、単にneural networkまたはnetworkという。韓国語でも신경망と呼ばれることが多い。

最初の層 $L_{1}$を入力層input layerといい、最後の層 $L_{N}$を出力層output layerという。中間層 $L_{2}, \dots, L_{N-1}$を隠れ層hidden layerという。$\mathbf{x}$はしばしば入力ベクトルと呼ばれ、$f(\mathbf{x})$は出力ベクトルと呼ばれる。実際にはレイヤー $L_{i}$に定数ベクトル $\mathbf{b}$を加えることが一般的である。これをバイアスbiasという。 $$ \overline{\sigma}(L_{i} (\mathbf{x}) + \mathbf{b}) $$ そうすれば、レイヤーを次のように一般化して再定義できる。

$L_{i} : \mathbb{R}^{n} \to \mathbb{R}^{m}$を線形変換としよう。$b \in \mathbb{R}^{m}$を固定ベクトルとしよう。 ディープラーニングでは、アフィン変換 $\mathbf{x} \mapsto L_{i}(\mathbf{x}) + \mathbf{b}$をレイヤーと定義する。

$W_{\ell}$を$L_{i}$の行列表現としよう。$W_{\ell}$の成分重みweightsという。すると人工ニューラルネットワークの関数値(出力)は、次のように行列の積の反復で表せる。

$$ f(\mathbf{x}) = W_{N} \overline{\sigma}(W_{N-1} \overline{\sigma}(\cdots \overline{\sigma}(W_{1} \mathbf{x}))) \tag{1} $$

バイアスがある場合は、次のように表せる。

$$ f(\mathbf{x}) = W_{N} \overline{\sigma}(W_{N-1} \overline{\sigma}(\cdots \overline{\sigma}(W_{1} \mathbf{x} + \mathbf{b}_{1}) + \mathbf{b}_{2}) + + \mathbf{b}_{N-1}) + \mathbf{b}_{N} $$

「表せる」とは、見た目が複雑なのでよく使われる表記法ではないという意味だ。アフィン変換は少しのトリックを使って行列の積で表せる。そこで$W_{\ell} \equiv \big[ W_{\ell}\ |\ \mathbf{b}_{\ell} \big]$と$\mathbf{x} \equiv \big[ \mathbf{x} \quad 1 \big]^{\mathsf{T}}$のように再び表記法を定義すると、次のように簡単に表せる。$(1)$のような形だ。

$$ f(\mathbf{x}) = W_{N} \overline{\sigma}(W_{N-1} \overline{\sigma}(\cdots \overline{\sigma}(W_{1} \mathbf{x}))) $$

すべての重みとバイアスの(成分の)集合を$f$のパラメータparameterという。よく使われる表記としては$\Theta$などがある。

$$ \Theta = \theta = \left\{ \text{all elements of $W_{\ell}$ and $b_{\ell}$ for } \ell = 1, 2, \dots, N \right\} $$

혹은

$$ \Theta = \theta = \left\{ W_{\ell}, b_{\ell} : \ell = 1, 2, \dots, N \right\} $$

生物学的モチーフ

神経系はニューロンの結合で構成されている。神経細胞体は樹状突起を通じて刺激を受け入れ、軸索突起を通じて電気刺激を伝達する。人間を含む多くの生物はこのように単純なニューロンの結合を環境に適するように進化させてきた。その結果、神経系は光を感知したり、脚を動かしたり、記憶したり、想像したりするような複雑なことができるようになった。

20190317\_195625.png

20190317\_201846.png

人工ニューラルネットワークはニューロンにおける神経細胞体をノードとして、軸索突起をリンクとして模倣したネットワークを指す。各ノードは神経細胞体と同じく情報を受け取り、それを伝える過程で意味のある結果を得られる計算を行う。

簡単な例としてデータ $Y := \begin{bmatrix} 5 \\ 7 \\ 9 \end{bmatrix}$ 와 $X := \begin{bmatrix} 2.2 \\ 3.1 \\ 3.9 \end{bmatrix}$ 에 대해서 $Y$ 와 $X$ の相関関係について把握する問題があるとしよう。

もちろんこの問題は非常に簡単なので、$Y \approx {\color{red}2} X + \color{blue}{1}$のような線形相関関係があることを難なく推測できる。

これを単純回帰分析 $Y \gets X$で解けば、デザイン行列として表された $$ \begin{bmatrix} 5 \\ 7 \\ 9 \end{bmatrix} = \begin{bmatrix} 1 & 2.2 \\ 1 & 3.1 \\ 1 & 3.9 \end{bmatrix} \begin{bmatrix} \color{blue} {\beta_{0} } \\ {\color{red}\beta_{1}} \end{bmatrix} $$ の最小二乗解 $( \color{blue} {\beta_{0} } , {\color{red}\beta_{1}} )$ を求める問題になる。

一方、この問題に対する人工ニューラルネットワークは

20190317\_205730.png

のように構成されるかもしれない。まずは$Y = {\color{red}w} X + \color{blue}{b}$のような関係があると仮定してみよう。このとき$\color{red}{w}$を重みweight、$\color{blue}{b}$をバイアスbiasと呼ぶ。与えられたデータ $\begin{bmatrix} 2.2 \\ 3.1 \\ 3.9 \end{bmatrix}$ 를 입력 받은 노드 $X$ 는 일단 무작정 랜덤한 $( {\color{red}w_{1}} , \color{blue}{b_{1}} )$ 로 $\begin{bmatrix} {\color{red}w_{1}} 2.2 +\color{blue}{b_{1}} \\ {\color{red}w_{1}} 3.1 +\color{blue}{b_{1}} \\ {\color{red}w_{1}} 3.9 +\color{blue}{b_{1}} \end{bmatrix}$ 를 계산해서 노드 $Y$ に渡す。

20190317\_205604.png

もしこのように大まかに得た結果が気に入らないなら、次のようにより良い重みで継続的に更新し、満足する結果が得られるまで反復する。

20190317\_210511.png

このような意味で人工ニューラルネットワークは機械が自ら学習するという概念である機械学習machine Learningを実現すると見なすことができ、この過程がより複雑で効率的に発展したものがディープラーニングdeep Learningと言っても差し支えない。

理論的側面

統計学や数学に慣れ親しんだ学習者は、これらの技法に対する理論的土台が整えられていないという点において強い拒否感を示すことがよくある。誤差が最小になるように、学習が最適化される条件について知られていることもなく、どの関数を使いながらもなぜ使うのかその理由を知らないことが多いからである。しかし、新しい論文の新しい技法が気に入らなくても、ベンチマーク上でパフォーマンスが改善されたならば何も言えない。

もちろん、これら一つ一つに対してそれなりに数学的なアプローチを試みる先生がいたかもしれない。しかし、研究にある程度進捗が見られる時期には、産学界では既に古臭いものになってしまうのが現実である。理論を勉強する人にとっては挑戦する価値があまりないのだ。

それにもかかわらず、これらの技法を軽視できない理由は明らかで、結果を信頼できないにもかかわらずパフォーマンスが非常に優れているからである。ディープラーニングはデータサイエンスにおいて拒否できない魅力である。すぐに流行が過ぎ去っても、パフォーマンスが圧倒的に優れているから学ぶ価値は十分にあり、数学ほど厳密ではないが、その分野ではその分野なりの理論的土台が整えられているので、心を開いて受け入れてみるのも悪くないだろう。

関連資料