こんにちは、AI研究所の三谷です。
IT業界にいる方なら絶対に知っておかなければいけない知識になってきているAI。
現代のAI(人工知能)ブームを支えている手法は機械学習と深層学習になります。
特に機械学習の中の1つニューラルネットワークは、深層学習(ディープラーニング)の基礎ともなる手法です。
今回は、このニューラルネットワークとはそもそも何なのか解説し、どのような種類があるのか代表的なものを紹介していきます。
ニューラルネットワークとは
ニューラルネットワークとは、人間の脳の働きをモデルにしてコンピューターに応用したものです。
人間の脳には、神経細胞(ニューロン)が大量にあり、これらが結びつき神経回路と呼ばれるネットワークを構成しています。
神経細胞(ニューロン)での電気信号の伝達によって脳内の情報は処理されます。
このことをコンピューターに当てはめて、数理モデルで表したものがニューラルネットワークと呼ばれます。
ニューラルネットワークは機械学習の一つであり、さまざまな手法が研究されてきました。
現在の最先端分野であるディープラーニングはニューラルネットワークを応用した手法で、ディープニューラルネットワークとも呼ばれます。
ニューラルネットワークの基本モデル構造は、
- 入力層
- 隠れ層
- 出力層
からなります。
「入力層」は情報を機械学習させるべき情報を入力させます。
その後、情報は「隠れ層」でフィルターにかけられて複雑化されたり、単純化されたりすることになります。
「隠れ層」は複数の層を持つこともできます。
この層が特に深くなったものをディープラーニング(深層学習)と呼びます。
各層は「活性化関数」と呼ばれる関数を持ち、つながりは「重み」で表されます。
この形をニューラルネットワークの基本形として、さまざまな学習方法が考案されています。
各層から重みを関数として計算することによって、「出力層」で出力される情報が変化してきます。
この出力された情報の制度を、高めていくために隠れ層での情報入力と関数を管理するのが人間の役割になります。
ニューラルネットワークの種類
「ニューラルネットワーク」と言っても、ニューラルネットワークにはさまざまな種類があります。
機械学習をさせるにしても学習させる領域は広く、「異常検知」や「画像処理」、「データ処理」、など入力する情報や情報処理の目的によってニューラルネットワークの種類は異なります。
ここからは代表的なニューラルネットワークの種類を順番に紹介していきます。
オートエンコーダ
2006年にジェフリー・ヒントンによってオートエンコーダ(自己符号化器)が提唱されました。
オートエンコーダは、異常検知などに用いられることが多いです。
オートエンコーダの特徴は、入力と出力が同じになるようなニューラルネットワークになります。
入力層から隠れ層には情報の圧縮が行われ、隠れ層から出力層へは圧縮された情報を元に戻すといった処理が行われます。
一度入力情報を要約して、それを元に戻そうとして出力するので、大事な情報だけが隠れ層に反映されます。
入力層→隠れ層となる処理をエンコード、隠れ層→出力層となる処理をデコートと呼びます。
ジェフリー・ヒントンはさらにオートエンコーダを積み重ねる「積層オートエンコーダ」と呼ばれる手法も提唱しています。
畳み込みニューラルネットワーク(CNN)
畳み込みニューラルネットワーク(CNN)は、2次元データをそのまま入力として用いることができるので主に画像処理で用いられます。
畳み込みニューラルネットワーク(CNN)の構造は、入力層と出力層の間に「畳み込み層(CONV)」と「プーリング層(POOL)」の2種類の層を交互に組み合わせた形になっています。
「畳み込み層(CONV)」では、カーネルと呼ばれるフィルタを用いて入力データの特徴を抽出します。
畳み込みニューラルネットワーク(CNN)ではこのフィルタの各値が重みとなります。
畳み込みにより得られたデータは特徴マップと呼ばれます。
また、「プーリング層(POOL)」では、maxプーリングやavgプーリングと呼ばれる処理を行い、特徴マップの最大値や平均値をとります。
これにより、特徴に対する依存性を減らすことができます。
畳み込み層と違うのは、学習すべきパラメータは存在せず、決められたルールに従って計算するだけとなります。
この二つの層をペアとして繰り返し処理を行い、特徴量を組み合わせることで画像を認識するのが畳み込みニューラルネットワークになります。
畳み込みニューラルネットワークの発展形として、AlexNet、VGC、GoogLeNetや
ResNetなどの種類のモデルがあります。
画像処理に関する記事は下記記事も参考にしてください。
リカレントニューラルネットワーク(RNN)
次は、時系列データ分野で用いられるリカレントニューラルネットワーク(RNN)について見ていきましょう。
音声認識などにおいて、音声の意味をより理解するためには前後の時系列データの情報が必要になってきます。
その時系列データの情報を処理するのがリカレントニューラルネットワークです。
リカレントニューラルネットワークは、時系列データを時間軸に沿ってそのまま入力できるようにし、時間情報を反映できるようにしたものです。
リカレントニューラルネットワークの構造としては、前の時系列データの隠れ層を次の時系列データの入力と合わせて学習に用いる形になっています。
リカレントニューラルネットワークでも、ニューラルネットワーク同様、誤差逆伝番法を用います。
誤差は過去に遡って時間軸に沿って反映する必要があり、リカレントニューラルネットワークではこの誤差をBack-Propagation Through Time(BPTT)と呼んでいます。
この技術は主に、自然言語処理や音声処理などに用いられます。
スマートスピーカーなどに使われている技術です。
時系列分析に関する説明はこちらで確認してください。
LSTM
さまざまな分野で応用されているリカレントニューラルネットワークですが、主な問題点が2つあります。
- 勾配消失問題
- 入力・出力重み衝突
と呼ばれる問題です。
勾配消失問題は通常のニューラルネットワークでも起こるもので、誤差を逆伝番する際に、過去に遡るにつれて勾配が消失していってしまう問題です。
また入力・出力重み衝突とは、今の時点と将来の時点での関係性で重みの大きさに矛盾が生じるといった問題です。
この問題は、時系列データを扱ううえでの問題点と言えます。
これらの問題を解決するために考えられた手法が、LSTMになります。
LSTMでは、ニューラルネットワークにおけるユニットごとに2つの機構からなるLSTMブロックを導入しています。
一つ目の機構はセルと言われるものです。
これは、誤差を内部にとどめ、勾配消失を防ぐためのものです。
二つ目の機構はゲートと言われるものです。
必要な情報を必要なタイミングで保持または消却させるためのもので、入力ゲート、出力ゲート、忘却ゲートの3つからなります。
入力ゲートと出力ゲートによって入力・出力重み衝突が解決でき、忘却ゲートでは誤差がセルに溜まるのを防ぐリセットの役割を担っています。
LSTMはリカレントニューラルネットワークを応用させたものですが、その他の発展形として、GRU、BiRNN、RNN Encoder-DecoderやAttentionなどもあります。
敵対的生成ネットワーク(GAN)
最後に、生成モデルと呼ばれ、今非常に注目を集めている敵対的生成ネットワーク(GAN)について見ていきましょう。
ここで、生成モデルとは、元データの分布を推測し、それに基づいて元データと同じようなデータを生成するためのモデルになります。
敵対的生成ネットワーク(GAN)の考え方は簡単に言うと、いたちごっこで競い合うイメージです。
構造としては、ジェネレータとディスクリミネータの2種類のネットワークを構成されています。
ジェネレータでは入力としてランダムベクトルを受け取り、データを生成して出力します。
ディスクリミネータで入力として受け取ったデータが、本物なのかジェネレータで生成された偽物なのかを予測して出力します。
つまり、ジェネレータはディスクリミネータが間違えるようなデータを生成するように学習し、ディスクリミネータは生成されたデータをきちんと見抜けるように学習します。
このいたちごっこにより、最終的に本物と偽物の見分けがつかないデータが作られることになるのが敵対的生成ネットワーク(GAN)になります。
敵対的生成ネットワーク(GAN)について、もう少し詳しく知りたい方はこちらの記事も参考にしてください。
GANについての動画もあります。
ニューラルネットワークとは まとめ
今回は、ニューラルネットワークの基本的な考え方と、ニューラルネットワークの種類について代表的なものを紹介しました。
ニューラルネットワークは、機械学習をさせることによって成長させていくことができますが、種類によって得意とする情報が異なります。
そのため、さまざまなニューラルネットワークの種類を連携させることが大事になるのです。
ニューラルネットワークの基本の形から、画像データや時系列データなど、それぞれの分野の問題点を解決する手法がたくさん開発されています。
今回は、オートエンコーダ、畳み込みニューラルネットワーク(CNN)、リカレントニューラルネットワーク(RNN)、LSTM、生成モデルと言われている敵対的生成ネットワーク(GAN)を取り上げて解説してきました。
それぞれの手法の特徴を理解していただけたでしょうか。
もちろん、ニューラルネットワークには今回紹介した種類以外にも多くあります。
また、ニューラルネットワークや人工知能の分野は日々飛躍的に進化を遂げています。
AI(人工知能)やニューラルネットワークに関する情報や知識、技術も基本的な考え方が身についていなければ、理解することは不可能です。
ニューラルネットワークの基本的な種類に関する知識は、この記事を読んで学びましょう。
最後までご覧いただきありがとうございました。