マッチ箱で作るAI(ニューラルネットワーク)

2024/09/11

AI

AIとは

AI(人工知能)は人間の知能をコンピュータ上で再現する技術で、ニューラルネットワークを含む様々なアルゴリズムが提案されている。

マッチ箱で作るニューラルネットワーク

ニューラルネットワークは脳の仕組みを模したアルゴリズムで、各ニューロンが信号やり取りして最終的な判断を下す。この記事では、マッチ箱を用いてニューラルネットワークの基本的な仕組みを解説する。

以下の図に示すような大中小3つの円が箱の中に収まるかどうかを判定するという簡単な問題を解くこと考える。

Notion Image

例えば、「大」を箱に入れると「中」「小」が入るスペースは残っておらず、「中」「小」は一緒に箱に入れることができる。

Notion Image

大中小3つの円の選び方とそれらが箱の中に収まるかどうかの判定を一覧表にまとめると以下のようになる。

 大  中  小  判定 
000OK
001OK
010OK
011OK
100OK
101NG
110NG
111NG

例えば、上から四行目の0, 1, 1, OKは「中」と「小」を選択したとき、それらを一緒に箱に入れることができることを表している。

マッチ箱でニューラルネットワークを表現するため、大中小3つの円とそれらが箱の中に収まるかどうかに対応したマッチ箱を用意し、以下のように配置する。また、その際に適当な数(何本でもOK)のマッチ棒をマッチ箱の中に入れておく(下図ではわかりやすいようにマッチ箱の右側に表示する)。

なお、マッチ棒の本数はニューラルネットワークのパラメータに対応し、この本数を調整することで、ニューラルネットワークは賢くなっていく。

Notion Image

「大」「中」「小」のマッチ箱は入力が0の場合は何もせず、1の場合はマッチ箱の中のマッチ棒の本数分を矢印の先のマッチ箱に送る。そして、送られてきたマッチ棒の和が「箱に収まるか」のマッチ箱内のマッチ棒の本数(閾値)以下であれば「OK(箱に収まる)」と判定する。

例えば以下の図のような場合、送られてきたマッチ棒の和が4本、「箱に収まるか」のマッチ箱内のマッチ棒の本数(閾値)が3本なので、送られてきたマッチ棒の和の方が大きくNG(箱に収まらない)と判定する。

Notion Image

上の図は、与えられた大中小の組に対して偶然正しい結果を返したが、最初のマッチ棒の本数は適当に決めたため、間違った結果を返す場合もある。

例えば以下の図のような場合は、今のモデルでは結果としてNGを返すが、この結果は間違っており、本当はOKを返してほしい。

Notion Image

このとき、「中」「小」から送られるマッチ棒の本数が多いのが良くないので、それぞれ1本ずつ減らし、さらに閾値を1本増やすという形で機械的にマッチ棒の本数を調整する。

Notion Image

これによって、与えられた大中小の組に対して正しい結果を返すようになった。しかし、まだ間違った結果を返す場合がある。

例えば以下の図のような場合は、今のモデルでは結果としてOKを返すが、この結果は間違っており、本当はNGを返してほしい。

Notion Image

このとき、「大」「中」から送られるマッチ棒の本数が少ないのが良くないので、それぞれ1本ずつ増やし、さらに閾値を1本減らすという形で機械的にマッチ棒の本数を調整する。

Notion Image

このモデルは、最初に示した判定一覧表を満たしている。このように、データを基にマッチ棒の本数(パラメータ)を調整していくことで、与えられた問題を解決できるニューラルネットワークを作ることができる。

上で見てきたように、マッチ箱ニューラルネットワークは一回に一つの組み合わせについてしか学習できないので、教師データとして五つの組み合わせを学習させたいときは、一つ目の組み合わせの判定→学習→二つ目の組み合わせの判定→学習→…→五つ目の組み合わせの判定→学習と順に学習させていき、これが1サイクルになる。実用的な問題では1サイクルの学習で十分なことはほとんどないため、このサイクルを何度も繰り返してモデルを学習していく。

現在利用されているニューラルネットワークのパラメータ調整ではもっと複雑な処理を行っているが、原理的にはマッチ箱ニューラルネットワークとほぼ同じである。

参考資料


著者画像

ゆうき

2018/04からITエンジニアとして活動、2021/11から独立。主な使用言語はPython, TypeScript, SAS, etc.