前回までに、深層学習や機械学習のベーシックな部分についてお話ししてきました。これからは、ニューラルネットワークの中身について詳しく示していきます。
今回は、ニューラルネットワークで行われている計算について例を使って説明します。ニューラルネットワークとはパーセプトロンと呼ばれる関数の集合体です(図1)。パーセプトロンとは複数の値に対して1つの値を返すアルゴリズムです。
これは、脳のニューロンを簡易化し数理的に模倣したモデルです。

図1 パーセプトロン
これから、梅と桜の花の識別を行うニューラルネットワークを例に、どのような計算が行われているかを具体的に説明していきます。与えられる特徴(インプット)は花の大きさ、色、木の高さの三つとします。この時のパーセプトロンは図2のように表すことができます。

図2 パーセプトロンに具体的に特徴を割り当てる
図2ではx1を花の大きさ(数値)、x2を木の高さ(数値)、x3を花の色(白なら0ピンクなら1)とし、ニューラルネットワークからの出力をyとしています。図中のwを重みと呼び、これらも含め、図2のニューラルネットワークは式(1)の様に表せます。(bはバイアスと呼ばれる調整のための定数)
y=x1w1+x2w2+x3w3+b...式(1)
また、ニューラルネットワークでは式の結果yを活性化関数fに入力することで、最終的な出力(アウトプット)になります。
今回の例では、活性化関数はシグモイド関数(3章でも説明した0-1の確率を出力する関数)とし、f(y)が0.5を超えたらさくら、超えなかったら梅というモデルとします。
それでは、桜と梅の花について表1のような具体的に数値を与えてみましょう。

桜と梅の花の数値データ
まず、桜の木についてのニューラルネットワークは図3のように与えられます。
図3ではw(重み)には具体的な数字が入っていますが、実際には学習プロセスにおいてモデルからの出力と正解の差をとることで繰り返し計算がされていき徐々に適切に識別可能なw(重み)に自動調整されていきます。
学習プロセスの説明は次回詳しくするので、この回ではモデルの学習が済んだものとして説明します。

図3 桜のニューラルネットワーク
また、このネットワークを式(1)に代入すると、以下のようになります。
y=2.5×1.5+20×2+0×0.1-15=28.75…(2)
このyの値をシグモイド関数に入力すると最終出力は約0.99。これは閾値0.5を超えているため桜と判断されます。
一方、入力が梅の花の場合は図4のようになります。

図4 梅のニューラルネットワーク
また、式では
y=2.2×1.5+2×2+1×0.1-15=-5.4..(3)
y=-0.9となり、f(y)の最終出力は約0.004。
これは閾値0.5を下回っているので梅の花と判断されます。このように与えられた値から、花の識別ができました。
このように、パーセプトロンを用いて入力と出力の関係を表すのがニューラルネットワークと呼ばれるモデルです。また、このようなパーセプトロンをたくさん繋げることを「深くなる」といい、このことからパーセプトロンが多層になったものを深層学習(ディープラーニング)と呼びます。
深層学習がブラックボックス的と言われることもあるのは、層が深くなればなるほど式の表現が複雑になり説明が難しくなってしまうためです。理由はわからなくても使用できるシステムの導入等には向いていますが、説明が求められる場合においては使用が難しいというデメリットもあります。しかし、最近では説明可能なAIの研究や利用も普及し、積極的な導入が進んでいます。
次回は、今回の話を踏まえて学習プロセスでこの重み(w)がどのように調整されていくかということを「勾配降下」と「損失関数」をキーワードにお話しできればと思います。
カテゴリー: Tips, データアナリティクス