ニューラルネットワーク 【neural network】 NN
概要
ニューラルネットワーク(neural network)とは、動物の脳の内部で情報の処理や記憶を行っている、大量の微小な神経細胞(ニューロン)が相互に網状に繋がった構造のこと。また、これを模式化した数学的なモデルをコンピュータ上で再現し、機械学習などの知的な操作に応用したもの。IT分野では専ら後者を指す。脳の内部にはニューロンが複雑に絡み合ったネットワークが存在し、神経系を通じて体内の器官から刺激を受け取ると、細胞間で互いに電気信号を交換し合い、記憶が形成されたり発話や運動など各器官への指示が出力されたりする。
この仕組みを抽象化して数理モデルとして定式化したものや、さらにコンピュータ上のソフトウェアなどに実装して情報処理に応用したものを「人工ニューラルネットワーク」(ANN:Artificial Neural Network)という。IT分野において、文脈上、本物の神経回路網と混同する恐れが無い場合は、このANNを指して単にニューラルネットワークと呼ぶ。
ニューラルネットワークの構造
模式化されたニューラルネットワークは、神経細胞を模したノードを層状に配置した構造を持つ。各ノードは固有のパラメータに基いて比較的単純な計算を行う能力を持ち、上位層の各ノードの計算結果を入力として所定の計算を行う。計算結果は下位層の各ノードへそれぞれ固有の重み付けを行った上で出力される。
最もよく知られる順伝播型の3層ニューラルネットワークの場合、ノードは「入力層」「中間層」(「隠れ層」とも呼ばれる)「出力層」の3層に分かれて配置される。最上位のノード群は処理対象のデータの入力を受け付ける「入力層」で、対象を表すデータモデルの構造に従って数や役割が設定される。
入力層のノードはそれぞれの入力値に基いて計算を行い、結果を「中間層」の各ノードへ伝達する。中間層のノードは入力層から受け取った値を合計し、やはり同じように計算を行って結果を「出力層」の各ノードへ伝達する。出力層の計算結果がネットワーク全体の出力(回答)となる。
機械学習への応用
各ノードが行う計算式の係数や、ノード間で値を伝達する際の重み付け(ノードxからノードyへの重みがwのとき、xの出力のw倍をyの入力とする)などのパラメータ群を対象や目的に合わせて調整すると、入力データから何らかの推論や予測、分類などを得るシステムを作ることができる。
例えば、手書きの数字が書かれた画像データを入力すると、『「1」の確率が90%、「7」の確率が10%』といったように何の数字が書かれているか推論(分類)するシステムや、賃貸物件の最寄り駅と駅からの距離、広さを入力すると家賃を予測(回帰)するシステムなどを構成することができる。
パラメータを開発者が一つ一つ決定していくことも理屈の上では不可能ではないが、実用的なシステムではパラメータの数も組み合わせも膨大な数にのぼるため手動で調整するのは現実的ではなく、実際のデータを「お手本」としてパラメータ調整を自動で行う「機械学習」(ML:Machine Learning)の手法が用いられる。
ニューラルネットワークの学習手法として最も一般的な「教師あり学習」では、入力データと出力すべき「正解」データをセットにした「教師データ」と呼ばれるデータの組を用意する。初期状態では各ノードのパラメータはランダムに決定しておき、教師データを入力すると当然ながらデタラメな出力を行う。
これを「正解」の出力データと比較すると、望ましい状態からのズレを定量的に評価することができる。このズレを(少しだけ)打ち消すように、各ノードのパラメータを出力層から遡って順番に修正していく(誤差逆伝播法)。これを様々な教師データを用いて繰り返し行うことで、教師データ群の傾向を学習し、似た入力に対して似た出力を返せるようになる。
ニューラルネットワークの種類
ニューラルネットワークにはノード間の結合の仕方や学習の仕方などによって様々な種類がある。どのノードも下層のすべてのノードへ結合するものを「全結合型」、入力から出力へ一方向に信号が伝播するものを「順伝播型」(フィードフォワード型)という。最も初期に考案されたニューラルネットワークは全結合の順伝播型にあたる。
一方、順伝播型だが層間が全結合になっていないものを「畳み込みニューラルネットワーク」(CNN:Convolved Neural Network)、信号の伝播を双方向に行うものを「再帰型ニューラルネットワーク」(RNN:Recurrent Neural Network/回帰型ニューラルネットワーク、リカレントニューラルネットワーク、循環ニューラルネットワークとも)という。また、中間層が2層以上(全体が4層以上)の深い階層を構成したものは「深層ニューラルネットワーク」(DNN:Deep Neural Network/ディープニューラルネットワーク)と呼ばれる。
他にも、教師なし学習を行うための「オートエンコーダ」や「ボルツマンマシン」、DNNで強化学習を行うための「DQN」(Deep-Q-Network)、データの生成が可能な「敵対的生成ネットワーク」(GAN:Generative Adversarial Network)、複素数や複素演算を扱うよう拡張した「複素ニューラルネットワーク」など、様々な種類のニューラルネットワークが考案されている。