ディープラーニングで欠かせない!ニューラルネットワークとは

初心者向けにニューラルネットワークについて解説しています。これは人間の脳をモデルとした人工知能の仕組みです。ニューラルネットワークの種類や構成、使用される場面の例などを見ていきましょう。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,000以上あります。

今回は、ニューラルネットワークについて解説します。

ニューラルネットワークの仕組みについて説明し、種類も紹介しているので、ぜひ理解しておきましょう。

 

なお本記事は、TechAcademyのAIオンライン講座の内容をもとに作成しています。

 

田島悠介

今回は、機械学習に関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

ニューラルネットワークについて詳しく説明していくね!

大石ゆかり

お願いします!

 

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

ニュートラルネットワークとは、人間の脳内で処理される構造を数式モデルで表現したものです。

コンピューターシステムにおいてのニュートラルネットワークは、脳内でニューロンがシナプスで結合することで、ネットワークを形成している状態の問題解決のモデルのことです。

コンピューターシステムとは、何かの入力によってなにかの処理を行い、最終的に結果を自動的に導き出す、コンピューターを使用したシステムを意味します。

シナプスとは、脳内の情報をやりとりする為にニューロン(神経細胞)同士をつなぐ接合部分のことです。ニューロンとは、脳内で考える場合の神経細胞のことです。ニューロン同士をシナプスで結合させています。

シナプス同士の結合する強度を変化させることで、様々なニュートラルネットワークを選択することができます。

これにより、様々な方法で問題解決を行うことが可能になります。

 

ニューラルネットワークの仕組み

ニュートラルネットワークの基本

ニュートラルネットワークの仕組み自体は非常にシンプルです。

例えば1と2と3という数字をニュートラルネットワークに入力すると、4と5という数字が出力されるとします。

つまり、処理される内容は明示されていないが、複数の数値を入力すると複数の数値が出力されるというのが最も基本的んニュートラルネットワークです。

ここまでは非常にシンプルなのですが、この構造が多層化し、入力と出力以外の処理が存在するようになると、処理が一気に複雑化します。

 

ニュートラルネットワークの応用

ニュートラルネットワークでよく使われる画像認識について、数字を利用して簡単に説明します。

例えば、多くの写真データから、人間と人間以外を分けるニュートラルネットワークがあると仮定します。

写真データを入れた際の処理は次のようになります。

人間だと判断する場合

入力:写真データ
↓
ニュートラルネットワーク
↓
出力:(1,0)

人間以外と判断する場合

入力:社員データ
↓
ニュートラルネットワーク
↓
出力:(0,1)

 

この様に、ニュートラルネットワークを通すと、数値が返ってきます。

つまり、ニュートラルネットワークはプログラミングで考えると、数値を返す関数のようなイメージで捉えることもできます。

 

ニュートラルネットワークの部品

ニュートラルネットワークは、入力層(input cell)、出力層(output cell)、隠れ層(hidden cell)、記憶層(memory cell)、中核(kernel)等で構成されます。

ニュートラルネットワークでは、シナプス同士の結合の強さを変化させることで、情報の伝わりやすさが変化します。

このシナプス同士の結合の強さを、人工ニューロンでは重みを意味するWeightの頭文字を意味するWを使用して表します。

 

ニュートラルネットワークには、教師あり学習と、教師なし学習という考え方があります。

 

教師あり学習とは

教師あり学習とは、正解やより良い方法を膨大なデータとして用意しておき、その正解を元にコンピューターが学習することで、コンピューター自身を成長させる学習方法です。

Googleで開発されたAlphaGoという深層学習(ディープラーニング)により、世界最高峰のプロ囲碁棋士に勝利したプログラムがあります。

このAlphaGoのうち、第3世代までの、AlphaGo Masterは教師あり学習を元に、自己学習を繰り返した結果、プロ棋士に勝てるようになりました。

 

教師なし学習

教師なし学習といっても、最初の段階で教師あり学習のように、正解の大量のデータを教師として学習する部分が無いだけであり、基本的なルールは学習する必要があります。

基本ルール部分を学びますが、その部分は教師として考えないという理論です。

教師なし学習では、基本ルール内で勝つために、自分自身と戦い続けることで、性能を上げていきます。

AlphaGo Masterの次に開発されたAlphaGo Zeroは、教師なし学習を元に発展しました。

AlphaGo Zero では、ルール以外の知識は全く与えずに強化学習を行うことで、40日後に、AlphaGo Masterに89勝11敗しました。

つまり、AlphaGo Zeroは世界最強の囲碁棋士に40日間で成長することができたということです。

 

[PR]機械学習で挫折しない学習方法を動画で公開中

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

単純パーセプトロン

単純パーセプトロンとは、複数の入力層から与えられた値を処理し、出力するというものです。

図解


解説

入力値は複数存在します。

入力nのnは、何番目の入力値かは不明ですが、処理する部分は重み(w)です。

重みで処理する内容としては、入力層から与えられた内容を足したり、掛けたりします。

処理後の結果に対して、活性化関数の操作により出力されるかどうかが決定されます。

活性化関数で行われる処理としては、いくつかありますが代表的なものにステップ関数があります。

ステップ関数とは、ある閾値より大きかったら1を出力します。

そして、ある閾値以下だったら0を出力します。

 

ステップ関数をPythonで実装した場合のコード

def step_function(x):
  if x < 10:
    return 1
  else:
    return 0

ステップ関数をPythonで実装した場合の解説

1行目のdef step_function(x): では、step_functionという名称の関数を宣言しています。

(x)の部分は引数と言います。

引数は関数を利用する際に、ある値を渡すことができます。ここで言う引数は、ニュートラルネットワークの入力層から渡された入力値に重みの処理をしたあとの値になります。

2行目のif x < 10:では、渡された引数が10より小さいかどうかを判断しています。今回の閾値は10です。

3行目のreturn 1は、引数xが閾値の10より大きかった場合に1が出力されるという意味です。0が出力値です。

4行目は、引数xが閾値の10以下だった場合に処理するという意味です。

5行目のreturn 0は、4行目の条件である、引数xが閾値10以下だった場合、0が出力されるという意味です。

 

向いていること

基本的には足し算や掛け算しかできない単純パーセプトロンですが、このパーセプトロンを並列に組み合わせることで、2層構造にすることができます。

2層構造になったパーセプトロンは、足し算や掛け算や平方根などの計算を学習することができます。

つまり、教師あり学習が可能になるということです。

向いていないこと

単純パーセプトロンは線形分離不可能問題を解くことができません。

線形分離とはoとxで構成された情報を線で区切ることです。

 

多層パーセプトロン

多層パーセプトロンとは、複数の入力層から与えられた値を処理し、出力するというものです。

図解

 

解説

多層パーセプトロンは、単純パーセプトロンが複数組み合わさり、複数の重みの先に、隠れ層が存在し、そして更にその先に出力層が複数存在します。

つまり、単純パーセプトロンが相互作用する形になっています。

向いていること

多層パーセプトロンは線形分離不可能問題を解決することが出来ます。

向いていないこと

パラメーターを増やせば増やすほど、各パラメーターの学習を適切にすることが難しくなります。

 

今回は、ニューラルネットワークについて解説しました。

 

この記事を監修してくれた方

中本賢吾(なかもとけんご)
アジマッチ有限会社 代表取締役社長

開発実績:PHPフレームワークを利用した会員制SNS・ネットショップ構築、AWSや専用サーバー下でLinuxを使用したセキュアな環境構築、人工知能を利用したシステム開発、店舗検索スマホアプリ開発など。

その他にも地域の職業プログラマー育成活動を行い、2018年には小学生がUnityで開発したオリジナルAndroidアプリをGooglePlayでリリース。ゲームで遊ぶより作ろうぜ!を合言葉に、小学生でも起業できる技術力を育成可能で有ることを証明し続けている。

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

また、オンラインのプログラミングスクールTechAcademyでは、AIオンライン講座を開催しています。

AI(人工知能)の構築に必要な機械学習・ディープラーニングについて実践的に学習することができます。

現役エンジニアがパーソナルメンターとして受講生に1人ずつつき、マンツーマンのメンタリングで学習をサポートし、最短4週間で習得することが可能です。

また、現役エンジニアから学べる無料のプログラミング体験会も実施しているので、ぜひ参加してみてください。