AI

ニューラルネットワークのCNNとRNNを理解しよう

深層学習(ディープラーニング)は、多層のニューラルネットワークによる機械学習ということからも分かるとおり、ニューラルネットワークの1種です。この「ニューラルネットワーク」というものは、非常に面白い仕組みなのですが、なかなか理解がしづらく、しっかりと説明できる人も少ないです。ここでは、入力層や隠れ層、畳み込み、戻り値などの専門用語を使わないで、なんとなくイメージで理解をしていただけるように、お伝えしていきます。AIに携わる携わらないに関わらず、皆さんに少しでも理解をしていただければ嬉しいです。

目次

ニューラルネットワーク

まず、以下の手書き文字の画像を見てみてください。

皆さんは、4×4=16個の数字が、それぞれいくつであるか判断をすることができるかと思います。
ただ、ニューラルネットワークを持たない機械は、これを判断することが非常に難しいです。
「この場合はこう...」「あの場合はこう...」なんてパターンをいくつも作る必要が出てきます。

ここで、一つの画像の特徴を「要はこういうことだよね」と、情報を減らしたり、変化させたり、つなげたり、重要度を変えたりしていけば、機械でも判断ができるようになっていきます。この、人間の判断に似せたアルゴリズムが、いわゆる「ニューラルネットワーク」と呼ばれています。

CNN(畳み込みニューラルネットワーク)

以下の手書き文字「0」を判断する例だと、実際はもっと細かい分割になりますが、画像をピクセル単位で分割し、「要はこういうことだよね」という特徴を持たせた変換を、繰り返し何度も行います。これにより、機械が画像そのもののデータではなく、特徴を持って変換した後のデータを持つことになります。これがCNNです。

少し難しい話をすると、この変換が数学でいう行列の計算によって行われます。そして、python言語を使うと、行列の計算が簡単に記述できることから、AIでpython言語が広く使われるということにつながっています。

RNN(リカレントニューラルネットワーク)

今までは、画像の話をしてきましたが、文章やデータ、音楽などの予測について考えてみましょう。

例えば、「今日は雨が降るみたいだから、傘を持って行った方が良い」という文章について考えてみます。

「今日」→「は」、「雨」→「が」
「雨が」→「降る」、「傘を」→「持っていく」
「雨が降る」→「傘を持っていく」 など

これらには、強い相関があり、それを皆さんは、頭の中でなんとなく知っていますよね。
また、文章に限らず、人間は過去の経験から何かを予測して、判断をし、動くことができます。

こういったつながりを機械に記憶させて、時系列の次のデータを判断をするのが、RNNの原理です。

面白いことに、記憶が膨大に増え続けると、機械は記憶をうまく呼び出せなくなってきます。そこで、「忘れる」という概念も含ませたLSTMというニューラルネットワークも誕生しました。まさに、人間の仕組みを真似たアルゴリズムですね。

おすすめリンク

関連記事

前の記事

一覧

次の記事