DEVELOPER’s BLOG
技術ブログ
最初に学ぶ ニューラルネットワークの特徴と利用例
ニューラルネットワークとは
ニューラルネットワークとはAI (人工知能)のうちの一つ。また、AIの一つである機械学習のうちの一つでもある。(図1)また、人間の脳内にある神経細胞(ニューロン)とそのつながり、つまり神経回路網を数理モデル化したもの。(図2)
(図1)
ニューラルネットワークを構成している最小単位は、パーセプトロン(単純パーセプトロン)という。パーセプトロンとは、複数の入力に対して1つの値を出力する関数のこと。パーセプトロンへの入力値を(X1~Xn)とすると、それぞれの入力に対して重み(W1~Wn)が存在する。また、バイアスW0が存在する。
f(x)(それぞれの入力値(X1~Xn)に対して重み(W1~Wn)を掛け合わせ、それにW0を足したもの)の値が0より大きい場合は1が出力され、0より小さい場合は0が出力される。(図2)f(x)が0より大きくなり1が出力されることをニューロンの発火という。発火のしやすさはバイアス(W0)によって決まり、バイアス(W0)は発火のしやすさを調整する役割をすると言える。
図のように1つのパーセプトロンは単純パーセプトロンといい、単純パーセプトロンを複数組み合わせたものを多層パーセプトロンという。単純パーセプトロンを複数組み合わせて多層パーセプトロンにすることで、より複雑な関数近似を行うことができ、出力の精度を高めることができる。 (図2)
(図2)において
f(x) < 0 → 1
f(x) = 0 → 0 or 1
f(x) > 0 → 0
のような数式は活性化関数といい、ニューラルネットワークやパーセプトロンで用いられている、モデルを表現するための関数である。活性化関数を用いて変換を行うと様々な値の出力が行え、モデルの表現力を高めることができる。
パーセプトロンにおいてはステップ関数、ニューラルネットワークではシグモイド関数が主に使われている。
(図3)
(シグモイド関数はステップ関数を連続的に表現したもの)
ここで1つ指摘しておきたいのは、単純パーセプトロンを複数組み合わせてできた多層パーセプトロンはほぼニューラルネットワークと言うが、等しいわけではないということである。多層パーセプトロンはステップ関数を用いているが、ニューラルネットワークはシグモイド関数を用いているという点で違いがある。
ニューラルネットワークの構造
(図4)
(画像や音声などの情報も数値として入力する)
ニューラルネットワークは、入力層、中間層、出力層の3つから成り立っている。入力層は人間の脳で言う感覚層、出力層は判別層、中間層は情報の処理を行っている部分に置き換えることができる。
ニューラルネットワークの入力層と中間層、中間層と出力層の間にはニューロン同士のつながりの強度を示す強度W(重み)というものが存在する。ニューラルネットワークでは、この重みを調節することによって、入力したものに対して望む出力(教師データ)に近づけることができる。
※中間層が2層以上のニューラルネットワークをディープラーニングという
ニューラルネットワークの種類
ニューラルネットワークには様々な種類がある。その中でも特によく使われているのが次の3種類である。
- RNN(再帰型ニューラルネットワーク)
- CNN(畳み込みニューラルネットワーク)
- LSTM(Long Short Term Memory)
(今回は一つ一つを説明することができないため、詳しい内容は別の記事で扱っていく)
1. RNN(再帰型ニューラルネットワーク)
再帰型ニューラルネットワーク(Recurrent Neural Network)は主に自然言語処理の分野で使われている。
それまでのニューラルネットワークでは、入力値は互いに独立したものである必要があった。この場合、画像処理などでは問題ないが言語のように入力値に連続性がある場合は適さない。そこで、RNNでは中間層にループを組み込むことによって前のデータの入力を記憶できるようにした。そのことによって前後のデータが関連付けられるようになり、自然言語処理などの時系列データにも対応できるようになった。RNNは主に、機械翻訳、文章生成、音声認識などに使われている。
(図5)
2. CNN(畳み込みニューラルネットワーク)
畳み込みニューラルネットワーク(Convolutional Neural Network)は一般的なニューラルネットワークと違い、畳み込み層とプーリング層でできている。
ここでいう畳み込みとは、簡単に言うと画像の特徴を際立たせることである。画像全体から様々な特徴を取り出していき、画像全体をそのまま分析するのではなく、画像より小さなフィルターを画像全体にスライドさせながら、部分部分で分析していく。フィルターを複数枚使って様々な特徴を抽出していく。そして、畳み込み層で抽出した特徴をもとに特徴マップを作成する。
プーリング層では、特徴マップの要約を行う。特徴マップを小さなウィンドウに区切り、区切ったウィンドウ内の最大値をとっていく。プーリングを行うことによって、特徴の厳密な位置の変化を気にすることなく画像内での特徴を検出することが可能になる。これは、移動普遍性と呼ばれ、画像認識にCNNが向いている大きな理由の一つである。実際のCNNは畳み込み層とプーリング層が何層にも重なってできている。
プーリング層の後に、多次元のデータを1次元のデータにフラット化していき、ソフトマックス法を用いて分類し、出力していく。
(図6)
3. LSTM(Long Short Term Memory)
先ほどのRNNには複雑な構造が故に1つ問題があった。RNNでは入力したデータは全て記憶されてしまい、必要でないデータも記憶してしまうということがあった。そこで、LSTMでは情報を忘れる機能が追加された。それによって、「この情報は必要」と「この情報は必要じゃない」という判断ができるようになった。
それまでRNNが苦手としていた予測情報と関係情報の距離が長いケースでもLSTMで対処できるようになった。これにより、機械翻訳の精度が飛躍的に向上した。
(図7)
ニューラルネットワークによって可能になること
ニューラルネットワークでは、主に以下のことが可能になる。
- 画像認識...主にCNNを用いる
- 音声認識...主にRNNを用いる
- 自然言語処理...主にRNNを用いる
- 異常検知...主にCNNを用いる