_3分で理解_AIの3つの応用領域と領域と機械学習種類をまとめてみた__1_

【3分で理解】ニューラルネットワークを解説!前編「パーセプトロン」とは?

こんにちは、村田泰祐です。サイバーエージェントのアドテク本部というところで働いています。

「AIをビジネスに応用できるプロダクトマネージャー」を目指しています。以前、【3分で理解!】AIの3つの応用領域と機械学習の種類がわかる!というnoteを書きました。こちらでは機械学習の種類について図解で紹介しました。

今回から、機械学習の「教師あり学習」の一種であるニューラルネットワークについて前編・後編で解説していきます。少しばかり数式を使って説明しますが、今回も図解を交えて進めるのでそこまで難しくないかと思いますので安心してください!

ニューラルネットワークとは

ニューラルネットワークは人間の脳内にある神経回路を数字モデルで表したものです。ということは、そもそもこの脳内にある神経回路がどんなものか知る必要があります。

では、先に脳内にある神経回路について説明していきます。脳の神経細胞を「ニューロン」と呼び、隣のニューロンと接合する部分を「シナプス」と言います。

この下の図がニューロンです。

引用:パーセプトロンとは?

刺激があるとニューロンから電気信号が発生し、それが一定以上になるとシナプスを経由して連結している次のニューロンへと信号が伝達していきます。

さて、ニューラルネットワークに話を戻します。1943年、外科医のウォーレン・マカロックと数学者のウォルター・ピッツは形式ニューロン、つまり人工の脳神経のモデルを発表します。

ニューラルネットワークでは、ニューロンの役割を「ノード」シナプスの役割を「エッジ」と呼びます。

一応置き換えると以下のようになります。

ニューロン→ノード
シナプス→エッジ

そして、各ノード間が接続されてネットワークを構成しており、この構造を「単純パーセプトロン」と呼びます。ちなみに、この単純パーセプトロンは1957年にアメリカの心理学者のフランク・ローゼンブラットが考案したものです。

ニューラルネットワークの構造「単純パーセプトロン」を図で理解

単純パーセプトロンを図式化すると以下のようになります。

単純パーセプトロンは大きく分けて、入力層、出力層の2つで構成されています。

それぞれの図の丸がノードです。前のノードの値(入力層)とエッジの重み(係数と思ってください)でノードの出力(出力層)は計算されます。そして、単純パーセプトロンで出力されるのは「1か0」のみです。

では、その1か0を出力するための計算式を見ていきましょう。上記の図を見ながら読んでいただけると比較的分かりやすいかと思います。

Xが入力値、Wが重み、∑が関数、yが出力値です。

出力値のyを表す式は以下のようになります。XとWをかけた合計がθを超えたかどうかで1か0を出力します。

とは言っても、計算式で見ても想像がしにくい、分かりにくいかと思います。この数式を使えば何ができるのか見ていきましょう。

単純パーセプトロンの計算式を事例で理解

単純パーセプトロンはどのようなことに使えるのでしょうか。例えば、メールがスパムかスパムでないかを判定するときに使えます

わかりやすくするために、スパムメールかどうかの判定には2つの特徴があるとします。佐藤という怪しい人物から、振り込みに関するスパムメールが来ていると思ってください。

スパムメールの2つの特徴は「佐藤」「振り込み」とします。

再び、数式に戻ります。入力値のXは今回の「佐藤」と「振り込み」が何回登場するかの回数になります。

「X=スパムメールの特徴の登場回数」になるので

X1=「佐藤」の登場回数

X2=「振り込み」の登場回数

となります。では、Xにかける重みのWはどうすればいいのでしょうか。どうやって求めればいいのでしょうか?

機械学習の目的は、この重みの値を求めることになります。正しい出力値を求めるために、重みの値を求めないといけないのです。だから、Wは学習していくことで変わります。これを「重みの更新」と言います。

重みの更新をどうやるかの手法については、一旦すっ飛ばします(笑)ここについては次で紹介します。

重みの更新をしていくこと=Wの値を最適化していけば、下の図の右側のように線より左側はスパムではない、右側はスパムというように判断できるのです。このように分割することができることを「線形分離可能」と言います。

図の説明:〇=スパムではない ✖=スパム

Wの値を変化させていくことで様々な線分を引くことができ、スパム判定できように機械学習を進めていくのです。この線分を決定法界と呼ぶのですが、この線をきちんと引けることを目指すとも言えるでしょう。

ニューラルネットワークの学習方法

では、先ほどすっ飛ばしたWの数値をどのように求めるかを説明してきます。

まず、Wの数値をランダムな値で初期値とします。そこでy=出力を計算して0(正解)か1(不正解)か分かります。

ここで正解のデータ=tが分かるので、正解のtと推論値になるyの差を無くしていくことになります。正解tと推論値yの差の2乗のような関数を「損失関数」と呼びます。

損失関数で計算された損失を全部の訓練データと足し合わせたものを「コスト関数」と呼び、このコスト関数が最小となるようなWの値を探していくのが学習のプロセスとなります。

目指すところは、モデルの予測値と実際の値の誤差を無くすことです。しかし、入力値が多次元にわたるので、正解を求めるのは困難な場合が大半です。

そこで、最終的には、正解を求めるのではなくて最適解を探索する手法がとられます。その手法を「勾配降下法」といいます。

図:ニューラルネットワークの「基礎の基礎」を理解する ~ディープラーニング入門|第1回

勾配に沿って降りていって、平らな道(=0、つまり正解)を目指していきます。この重みの更新を続けていって最適解を見つけていきます。

勾配降下法の落とし穴・・・

ただし、勾配降下法には問題があります。

図のスタート地点から勾配に沿っていきます。一見これが最小値に見えるかもしれませんが、勾配が0となる地点が複数あると最適解ではない可能性があります。

この見せかけの最適解を「局所最適解」本当の最適解を「大域最適解」といいます。勾配が複数あるので、探索する範囲を広げすぎると最適解を通り過ぎてしまう問題もあります。

単純パーセプトロンで解ける問題少なくない?

勾配降下法の問題を紹介しましたが、そもそも単純パーセプトロンにも問題があります。

先ほどの例で、スパムメールかそうでないか分けましたが2つに分類することしかできないのです。そして、線形分離可能な問題以外を解くことはできません

1957年にアメリカの心理学者のフランク・ローゼンブラットがパーセプトロンを考案、1958年に発表して単純パーセプトロンは盛り上がったのですが「線形分離可能な問題は解けないじゃん」と1969年に指摘が入ってしまいます。

ちなみに、パーセプトロンのダメ出しをしたのはローゼンブラットの高校の同級生のマービン・ミンスキーです。

そこで線形分離できない問題も解決できるように「多層パーセプトロン」が考案されます。

この多層パーセプトロンはディープラーニングの前身的なものです。そんな多層パーセプトロンについては次回に解説したいと思います!

いただいたサポートは書籍購入費に充てます!