近年、機械学習の分野において幅広く活躍しており、ニュースでも度々報道されるいわゆるAIの中身である人工ニューラルネットワークについて解説していきます。
わからない部分がありましたら、ご指摘いただければありがたいです。
人工ニューラルネットワークでできること
まずは興味を持っていただくために、人工ニューラルネットワークを使ってできることを紹介していきたいと思います。
私たちの身近なところでは、
- 自動翻訳
- 自動車の自動運転のための画像認識
- 工場での異常品検知
- 会話中に字幕をリアルタイムで表示
などが挙げられます。

このように、今の社会、これからの社会で活躍していくであろう人工ニューラルネットワークとは何かを見ていきましょう。
人工ニューラルネットワークとは

ニューラルネットワークを一言で言うと、人間の脳を真似した構造をとる計算方法です。
また、機械学習と呼ばれる分野の手法の一つでもあり、大きな一つの関数と見ることもできます。
前提知識
まず、必要な知識について、例を通して説明していきます。

数学でよく出てくる、関数「Y=ax」というものがあるとします。この時、xが入力される変数で、aがパラメータとします。aというパラメータを求めたいものとします。
そこで、xに3を入力すると、Yが6を出力し、xに4を入力すると、Yが8を出力しました。
この時、aのパラメータは、2であることが計算により求めることができます。
つまり、複数の値を変数に入れて出力を得て、そこから最適なパラメータを予測しています。
この話を覚えておいて、人工ニューラルネットワークを見ていきます。
構造
人工ニューラルネットワークには、「ニューロン」と呼ばれる変数と、「シナプス」と呼ばれるパラメータの二つがあります。
このニューロンと呼ばれる変数に入力を入れ、出力される値からパラメータであるシナプスの値を学習することで、望む値を出力できるようにします。
この二つのニューロンとシナプスをたくさん用意して、それぞれ繋ぎ合わせていくことで、以下のような構造を作ります。
層が複数層あり、それぞれの層のニューロン間ではつながりがなく、次の層に向かってシナプスがつながっています。

学習方法
ここでは、ニューラルネットワークで画像の分類をできるようにしたいとします。
具体的に、手で書いた数字の画像(1〜3)をどの数字なのか当てられるようにします。
また、ニューロンとシナプスの値は0〜1までの値をとるとします。
まず、学習するために、データを用意します。
このデータというのは、「手で書いた数字画像」と「その画像がどの数字なのか」の二つを用意します。

「その画像がどの数字なのか」は、右側の上の変数が1の時は「1」、二番目の変数が1の時は「2」と判別するとします。
それでは早速学習させていきましょう。
最初に、画像をピクセルに分けて、その輝度値を入力させていきます。
すると、ニューロンは入力された値とシナプスの値を掛けて次のニューロンの値を決めます。

そして、2層目のニューロンの値が決まったら、3層目のニューロンの値も同じくシナプスの値と掛けて計算します。
最後の出力された値によって入力された画像が何かを判断します。
例えば、「3」という画像を入力した時に、出力層の3番目のニューロンの値が1番大きいと、このネットワークが3であると判断したことになります。その時、「3」という画像を入力した時には、1番目と2番目のニューロンは出力が0になるように、3番目のニューロンが1になるようにしたいです。
そこで、出力した値と正解の値の誤差を用いて、パラメータであるシナプスの値を更新します。

詳しい更新のやり方は別記事にて解説します。
この「誤差」を用いて学習を行うところが重要になります。
まとめ
今回は、ニューラルネットワークについてどんなことができるのかや、ニューラルネットワークの構造とその学習法について簡単に解説しました!
より詳しい学習法については後日解説予定ですので、気長にお待ちください。
また、ニューラルネットワークについて詳しく知りたい方、深層学習について学びたい方におすすめの参考書についても載せておきます。
ぜひ活用していただければと思います。