AI研究所 - AI(人工知能)に脅かされないために、AI(人工知能)を作る側の人間になる -

HOME  >  ニューラルネットワークとは?ニューラルネットワークの基礎を徹底解説

公開日:2020.10.20 

ニューラルネットワークとは?ニューラルネットワークの基礎を徹底解説

機械学習

近年のAI(人工知能)ブームは、機械学習と深層学習を用いたものが主流となっています。この記事では、その中でも技術革新としてこのAIブームを支えている機械学習の中の一つ、ニューラルネットワークの基礎について徹底解説していきます。

本記事の内容

ニューラルネットワークとは?
ニューラルネットワークの歴史
ニューラルネットワークの構造
ニューラルネットワークの学習
ニューラルネットワークの評価
ニューラルネットワークの種類と実装
最後に

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

ニューラルネットワークとは、人間の脳の働きをコンピューター上で模倣したものです。
人間の脳には、大量の神経細胞(ニューロン)があり、これらは互いに結びつき神経回路というネットワークを構成しています。
この神経細胞(ニューロン)に電気信号の伝達をすることで脳内の情報が処理されています。
この電気信号の伝達を数理モデルとして複数組み合わせたものがニューラルネットワークです。

ニューラルネットワークの歴史

歴史は第1次AIブームの前から始まりました。
1943年:ウォーレン・マッカロックとウォルター・ピッツがニューラルネットワーク理論を提唱(形式ニューロン)しました。
1957年:フランク・ローゼンブラットが単純パーセプトロンを開発しました。
1986年:デビット・ラメルハートが単純パーセプトロンを多層に改良したバックプロパゲーション(誤差逆伝番学習法)を開発ました。
2006年:ジェフリー・ヒントンが層ごとの事前学習をする自己符号化器(オートエンコーダ)を提唱しました。
このような研究の積み重ねにより、現代のニューラルネットワークが構築されてきました。

ニューラルネットワークの構造

ニューラルネットワークの原点として開発されたものに単純パーセプトロンがあります。
これは複数の入力をもとにして1つの出力を行います。
入力が行われる部分を「入力層」、出力が行われる部分を「出力層」と言います。
入力層と出力層のつながりは「重み」で表され調整されます。
つまり単純パーセプトロンは、入力のそれぞれに重みをかけ、その総和を計算し、出力の正負でクラスを判断という流れで様々な識別器となります。
この時、出力を決定するための関数で、非線形変換を担う関数を活性化関数と言います。
しかし、この単純パーセプトロンは非常に単純な関数しか表現できず、線形分類しか行うことができませんでした。

そこで考えられたのが、「隠れ層(中間層)」という新たな層を追加した多層パーセプトロンです。
多層パーセプトロンは、入力層と出力層の間に隠れ層を追加することで非線形分類ができるようになったものです。
これがニューラルネットワークの基本形のモデルになります。
層が増えることで調整できる重みの数も増え、予測値と実際の値との誤差をフィードバックする誤差逆伝番学習法が考えられたことは効率化につながりました。
そして、この隠れ層をさらに追加したものがディープラーニングと呼ばれ、層が深いことから深層学習とも呼ばれるようになりました。
ディープラーニングはニューラルネットワークを応用した手法ということになります。

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

ニューラルネットワークは、学習しながら予測値と実測値の誤差をなくしていくもので、教師データがあるかないかで教師あり学習と教師なし学習に分けられます。
教師あり学習は、与えられた入力データを元に、どんな出力になるのかを予測するものです。
入力と出力の間にどのような関係があるのかを学習するのが教師あり学習です。
教師あり学習はさらに、分類問題と回帰問題に分けることができます。
分類問題は、連続しない値(離散値)を予測する問題で、回帰問題は連続する値(連続値)を予測する問題のことを言います。
教師なし学習は、入力データのみがあり、出力となるデータはありません。
入力データそのものの基本的な構造や分布をモデル化することです。
つまり、教師とは出力データのことになります。
この望む出力データが出るようにパラメータ(重み)を調整する作業のことを学習と呼びます。
学習をさせる際に考えられたアルゴリズムがバックプロパゲーション(誤差逆伝番学習法)です。
これは予測値と実際の値との誤差をネットワークにフィードバックするもので、この誤差の大きさを表す関数は損失関数(loss function)と呼ばれます。
損失関数の値が最小になるようにパラメータ(重み)を様々な方法で求めていきます。
損失関数は、予測する問題や用いるモデル、特に回帰問題と分類問題では大きく異なります。

ニューラルネットワークの評価

ニューラルネットワークの学習の目的は、未知のデータに対して予測精度を発揮するかどうかです。
しかし、未知のデータは準備できないので、模擬的に未知のデータを作り出さねばなりません。
そこで、手元のデータを訓練データ(training dataset)とテストデータ(test dataset)に分割して評価します。
訓練データは学習用のデータ、テストデータは未知のデータへの予測性能を図るための評価用のデータになります。
このようにデータを分割して評価することを交差検証と言い、訓練データで学習しテストデータで検証という流れを踏みます。
交差検証にはホールドアウト検証とk-分割交差検証の2種類あります。
ホールドアウト検証が事前にデータを訓練データとテストデータに分割する方法です。
しかし、この検証はテストデータに対する評価が良くなってしまうことがあります。
それを防ぐために訓練データとテストデータの分割を複数回行う方法がk-分割交差検証です。
そして、訓練データを更に訓練データと検証データ(validation dataset)に分割し、3つのデータ(訓練・検証・テスト)を用いる場合もあります。
この場合、検証データでモデルを一度評価し、パラメータの調整をしてモデルを決定、再度テストデータで評価することになります。
つまり、ニューラルネットワークの学習とはパラメータを調整する作業のことを言い、評価はそれによって得られたモデルの精度を検証することになります。

ニューラルネットワークの種類

代表的なニューラルネットワークの種類を簡単に見ていきましょう。
まずは有名なディープラーニングです。
ディープラーニングについてはこちら
ディープニューラルネットワークとも呼ばれ、隠れ層が複数あるニューラルネットワークの応用手法です。
他に有名なものでは、画像認識分野で使われる畳み込みニューラルネットワーク(CNN)、自然言語処理で使われる再帰型ニューラルネットワーク(RNN)などがあります。
これらは識別モデルについて扱ったものですが、生成モデルについて扱った敵対的生成ネットワーク(GAN)なども最近注目されています。
AIエンジニアはこれらの手法を様々なプログラミングを使って実装することになります。

最後に

今回の記事では、ニューラルネットワークの基礎について解説しました。
第3次AIブームと言われている現在のAI技術は、ニューラルネットワークを応用したものがたくさん使われています。
ニューラルネットワークとは何かを知ることで、さらにディープラーニングやその他の手法への理解につなげていただければと思います。
ニューラルネットワークに関する動画も参考にしてみてください。

最後までご覧いただきありがとうございました。


参考になったら「いいね!」と「シェア」をお願いします!!

このエントリーをはてなブックマークに追加
AI(人工知能)セミナー開催中