MENU
じゃぱざむLINE@バナー
なお
じゃぱざむ運営主
20歳 | WEBメディアの会社で部長をやりながら、じゃぱざむ・特化メディア・WEB制作~コンサル・SEOディレクター・投資・就活相談など幅広くやっています。
今井
エンジニア志望の大学生
21歳 | 独学でWebアプリ開発の勉強をしながら、IT系の記事執筆・アイキャッチ画像やバナー画像などのデザインを行っています。
【5分でわかる】今からプログラミングを学ぶのは遅いのか?

ニューラルネットワークとは何か?わかりやすく解説!

未経験からエンジニアを目指す方へ。おすすめのプログラミングスクールのバナー
こんにちは!
今井(@ima_maru)です。

人工知能(AI)について学ぼうとした時、「ニューラルネットワーク」という言葉に出会うかと思います。

ニューラルネットワークは様々なバリエーションがあって、混乱してしまうこともあるかと思うので、この記事ではわかりやすく説明していきます!

目次

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

ニューラルネットワークとは、脳の神経細胞(ニューロン)とそのつながりを数式的なモデルで表現したものです。

ニューロンとは?

ニューロンとは何かというと、以下のような神経細胞のことをいいます。

生物学的なニューロンについて詳しく知りたい方は、以下の記事を参考にしてみてください。

ニューロンとは (gifu-nct.ac.jp)

神経細胞 – Wikipedia

ニューラルネットワークの基本となるのは、この「ニューロン」の数理モデルである「人工ニューロン」です。

人工ニューロンの代表例として、「パーセプトロン」というモデルがあります。

次は、パーセプトロンの説明に移りましょう。

パーセプトロンとは?人工ニューロンとの違いは?

パーセプトロンは、もっとも一般的な人工ニューロンのモデルです。

人工ニューロンと混同されがちですので、「パーセプトロンは人工ニューロンの一つのモデルである」という関係性を抑えておきましょう。

パーセプトロンの構造は以下のようになっています。

重要な点は、以下の3点です。

  • 各入力\(x\)がある
  • 各入力\(x\)にはそれぞれ特有の重み\(w\)がある
  • 出力\(y\)は「各入力\(x\)の重みづけ和を活性化関数に通した値」である

じつはこの入力と出力の関係が、脳の神経細胞と似たような作用を表しています。

詳しくは「」で解説するので、今は入力があって出力が計算されるんだなって感じでイメージしといてください。

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

ニューラルネットワーク(Neural Network)とは、脳の神経回路網を模した数理モデルです。

要は、脳の神経回路網を「人工ニューロン」の繋がりで表現したモデルになります。

一般的には、このようにパーセプトロンをいくつもつなげて作ります。

Neural Networkの頭文字をとって、NNと略されることがあります。また、人間の脳の話と区別するために「人工」ニューラルネットワークと強調して言われることがあります。どちらも頭の片隅においておきましょう。

ニューラルネットワークと機械学習の違い

ニューラルネットワークは、機械学習でよく用いられる学習モデルです。

違いというよりは、以下のような関係性であるという認識で良いでしょう。

  • 機械学習:分野
  • ニューラルネットワーク:学習モデル

ニューラルネットワークとディープラーニングの違い

層を深くしたニューラルネットワークは、学習コストが上がるものの、それだけ複雑な問題を解くこと可能性を秘めています。

そのような層を深くしたニューラルネットワークを「ディープニューラルネットワーク(DNN)」と呼び、DNNを使った機械学習のことを「ディープラーニング(深層学習)」と呼びます。

こちらも違いというよりは、以下のような関係性であるという認識で良いでしょう。

  • ディープラーニング:手法
  • ニューラルネットワーク:学習モデル

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

ニューラルネットワークは、実は1950年代ごろから研究が行われていた技術であり、いままでにいくつもの進化を遂げてきました。

そんなニューラルネットワークの歴史について、詳しく見ていきましょう。

単純パーセプトロン

初めに提案されたのは「単純パーセプトロン」というモデルです。

これは、以下のような図であらわされるモデルで、入力層と出力層の2層のみからなるニューラルネットワークです。

しかしこの単純パーセプトロンでは、線形分離可能な問題しか解くことできませんでした。

線形分離可能な問題とは以下のような、直線で分離可能な問題のようなイメージです。

現実のデータはこのように直線で分類できるような問題ばかりではありません。

ということで、単純パーセプトロンはあまり実用的なモデルとは言えなかったのです。

マルチレイヤーパーセプトロン=多層パーセプトロン

次に提案されたのが「マルチレイヤーパーセプトロン」「多層パーセプトロン」でした。

その名の通り、多層にしたパーセプトロンです。

単純パーセプトロンは入力層と出力層の2層のみでしたが、マルチレイヤーパーセプトロンの場合は「隠れ層(中間層)」を取り入れるということをしました。

これにより、単純パーセプトロンでは処理できなかったより複雑な問題の処理が可能になりました。

しかし、当時の技術では、層を増やすことである問題が起きてしまいました。

それは、データの不足で学習がうまく進まないということです。

そのこともあり、不十分な精度になってしまったり、学習データに適合しすぎてしまう「過学習」という現象が起きたりしました。

ディープニューラルネットワーク (DNN)

そして現在のAIブームで注目されているのがディープニューラルネットワーク(DNN)です。

これは、「層をより深くしてより複雑な問題に対処しよう」というアイデアでした。

このアイデア自体は多層パーセプトロンの時からありましたが、学習データ不足という問題があり実現できていませんでした。

しかしここで、「Web」が登場しました。

この「Web」や「SNS」などが登場したおかげで、画像データを数千万枚集めるといったようなことが可能になりました。

そのため、層を増やしても十分に学習できる程のデータを用意できるようになったのです。

最近注目されている「ディープラーニング」とは、このディープニューラルネットワークを使った機械学習のことを言います。

もっと詳しくニューラルネットワークの歴史について詳しく知りたい方は、以下の記事をご覧になるとよいでしょう。

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

ニューラルネットワークにはさまざまな種類がありますが、ここでは簡単な順伝播の5層のニューラルネットワークで説明しましょう。

ニューラルネットワークの構造を理解するうえでの重要な要素は、以下のようなものが挙げられます。

用語説明
入力層入力データが入力される第一層目のこと。
隠れ層(中間層)入力層と出力層の間の層全体のこと。重要な役割を果たす。
出力層出力結果が出力される最終層のこと。
重み入力値の重要性や影響度を表した数値。よく\(w\)で表される。
活性化関数重みづけされた入力値の総和から、出力値を決定するための関数。
ニューラルネットワークの構造を理解するうえでの重要な要素

入力層

入力層とは、その名の通り入力データを入力する層です。

ニューラルネットワークにおいて、一番初めに来る層で、入力データの次元数と同じになるようにノードの数が設定されます。

例えば、縦28px×横28px画像の場合は、入力層には28×28=784個のノード数が必要になるというようなイメージです。(実際はいろいろ違います。)

隠れ層(中間層)

隠れ層、別名中間層は、入力層と出力層の間の層全体のことをいいます。

実は、この隠れ層こそが、ニューラルネットワークの根幹を担っています。

隠れ層では、入力層から出力された値に様々な処理を加えて、特徴量を抽出していきます。

出力層

出力層とは、その名の通り出力結果を出力する層です。

ニューラルネットワークにおいて、一番最後に来る層で、出力したい結果の数と同じになるようにノードの数が設定されます。

例えば、「犬」か「猫」か「猿」かということを出力結果としたいのであれば、出力層のノード数は3個必要ということになりますね。

重み

重みとは、入力値の重要性や影響度を表した数値であり、よく\(w\)で表されます。

重みの値が大きいほどノード間のつながりが強く、小さいほどつながりが弱いことを意味します。

活性化関数

活性化関数とは、重みづけされた入力値の総和から、出力値を決定するための関数です。

例えば「シグモイド関数」「ReLU(ランプ関数)」といった活性化関数があります。

ほかにも代表的な活性化関数として以下のものが挙げられます。

代表的な活性化関数
  • ステップ関数
  • シグモイド関数
  • ソフトマックス関数
  • \(\tanh\)(ハイパボリックタンジェント)
  • ReLU(ランプ関数)

基本的に、活性化関数は非線形の関数です。

詳しく知りたい方は、以下の記事が分かりやすいでしょう。

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

ニューラルネットワークの仕組みについて紹介していきます。

ここでは、学習済みのモデルがどのような仕組みで動いているのかを確認しましょう。(重みの学習方法については次の部分で解説します)

モデルとしては、先ほどと同じ5層のニューラルネットワークを使いましょう。

大きく「入力」「伝播」「出力」という3工程に分けて説明していきます。

  • 入力:入力層に入力する
  • 伝播:次の層に伝わっていく
  • 出力:出力層によって出力される

それでは見ていきましょう。

入力:入力層に入力する

まずは、入力層にデータの入力が行われるところから始まります。

画像の入力であれば、各pixelの画素値などがすべて入力値として入ります。

画像の入力であれば、各pixelの画素値などがすべて入力値として入ります。

縦28pxで横28pxの画像であれば、入力層のノード数は28×28=784個の画素値が入力になるということです。(RGBなどに分ける場合などいろいろと異なる場合が多いですが)

入力のイメージつきにくい方は、以下の記事を少し見るとわかりやすいと思います。

ニューラルネットワークの中をのぞく (ml4a.github.io)

伝播:次の層に伝わっていく

出力が次の層に伝わっていくことを伝播といいます。

伝播で行う処理は主に2つあります。

1つ目は、重みづけ和を計算する処理。2つ目は、活性化関数による処理です。

1つ目の処理として、前の層のノードの出力値とそれに対応する重みの値を掛け合わせた値を計算する処理を行います。

そして、それらの総和を計算します。この総和のことを「重みづけ和」としましょう。

次の層すべてのノードについて、この重みづけ和を計算していきます。

2つ目の処理では、計算された重みづけ和を活性化関数に通す処理を行います。

代表的な活性化関数は以下のようなものが挙げられます。

これらの活性化関数に重みづけ和を入力し、出てきた値がそのノードの最終的な出力値になります。

そしてこの最終的な出力値が、さらに次の層の入力値として利用されるという流れで伝播は進んでいきます。

つまり、出力層に到達するまで伝播の処理が続きます。

出力:出力層によって出力される

伝播は最終的に出力層へと到達します。

中間層の伝播と基本的にやることは変わりませんが、出力層特有の処理を行うこともあります。

例えば、出力層の各ノードの値がそのまま確率となるように、出力層の全ノードの合計値が1になるような活性化関数(softmax関数)を適用するなどです。

このようにしてニューラルネットワークは入力データから出力結果を計算しています。

また、この出力層の結果は、ニューラルネットワークの学習に用いられることもあります。

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

ニューラルネットワークの構造と仕組みが分かったところで、次はニューラルネットワークの学習方法について紹介します。

誤差逆伝播法(Back propagation)

ニューラルネットワークの学習方法として、「誤差逆伝播法」「バックプロパゲーション」が挙げられます。

誤差逆伝播法とは、出力と教師データの誤差を用いて重みを修正していく学習手法のことです。

通常の伝播とは逆方向に学習が進むことから、誤差逆伝播法と呼ばれています。

誤差逆伝播法は、関数の偏微分を用いて誤差が少なくなるほうに重みを調整するということを行っています。

数学的な知識が必要で少し難しいですが、詳しくは以下の記事などを参考にするとよいでしょう。

遺伝的アルゴリズム(GA:Genetic Algorithm)

遺伝的アルゴリズムとは、生物の自然淘汰をモデルにした学習アルゴリズムです。

ニューラルネットワークの重みを解として、適応度を出力結果と正解の誤差とすれば、遺伝的アルゴリズムを適用することができます。

詳しくは以下の記事をご覧ください。

代表的なニューラルネットワークの種類

上で書いたニューラルネットワークは単純なモデルでした。

実際に用いられるニューラルネットワークは、もう少し複雑になっています。

ここでは、有名なニューラルネットワークとして「CNN」「RNN」「GAN」を紹介します。

CNN:畳み込みニューラルネットワーク

CNN(畳み込みニューラルネットワーク)は、画像認識でよく用いられるニューラルネットワークです。

Convolutional Neural Networkの頭文字をとってCNNです。

画像データをいくつものフィルターに通し、それらを圧縮してニューラルネットワークに入力するという構造を持っています。

特徴的な処理として、畳み込み層とプーリング層というものが挙げられます。

RNN:再帰型ニューラルネットワーク

RNNは、機械翻訳動画分析などさまざまな分野に使われるニューラルネットワークです。

Recurrent Neural Networkの頭文字をとってRNNです。

RNNの様々な呼ばれ方
  • RNN
  • 再帰型ニューラルネットワーク
  • 回帰型ニューラルネットワーク
  • リカレントニューラルネットワーク

RNNは、出力が入力に再度戻ってくるという構造をしています。

そのため、前の値が次の値に影響を及ぼす「時系列データ」に対して有効です。

例えば、意味のなす文字列や株価などが時系列データです。

RNNをさらに進化させた「LSTM」もRNNの一種で、時系列データの解析に用いられています。

GAN:敵対的生成モデル

GANは、あたかも本物のような画像を生成することなどができるニューラルネットワークです。

Generative Adversarial Networkの頭文字をとってGANです。

生成ネットワークと識別ネットワークを競わせて互いに学習を深めていくことから、敵対的生成ネットワークと呼ばれています。

ニューラルネットワークは何に使われる?

ここからはニューラルネットワークが何に使われているか?について紹介していきます。

画像認識

画像認識とは、画像データを読み込んでその画像を認識・分類する技術です。

最近では、手書き数字の認識や猫や犬の分類などタスクができるようになり、AIへの注目が一気に高まっています。

例えば、車を認識できることで自動運転に応用したり、癌細胞を発見したりと画像認識の応用先は様々です。

音声処理

音声処理とは、音声を認識してテキストに変える技術です。

音声処理によって会議を録音して自動で議事録を作成したりすることができるようになりました。

他にはGoogle HomeやAmazon Echoなどのスマートスピーカーにも音声処理の技術は活用されています。

自然言語処理

自然言語処理は人間が話す言葉(自然言語)をコンピュータに理解させる技術です。

例えばひらがなを漢字に変換する際の処理や、Google検索の際の予測キーワードなどに活用されています。

未経験から3ヶ月でAIエンジニアになる!

ここまで読んでニューラルネットワークについてもうちょっと詳しく学びたいという方にはAidemy Pleium Planというコースがおすすめです。

3ヶ月で未経験からAIエンジニアを目指すコースもありますので、興味のある方は下記のリンクを参照ください。

\ 機械学習エンジニアの転職実績あり(希少) /

以上「ニューラルネットワークとは何か?わかりやすく解説!」でした!

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

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
URLをコピーする
URLをコピーしました!
目次
閉じる