テクノロジー

2024年11月15日

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

ニューラルネットワークは脳(神経系)の情報伝達を模倣した数理モデルの事です。
神経細胞(ニューロン)では、入力刺激がしきい値を超えた場合に発火(活性化)し、活動電位を発生させ、他の細胞に情報を伝達します。
この発火が連鎖的に起こることで情報を伝え、計算を実現します。

著者プロフィール

IT分野における教育の先駆者として、多くのエンジニアを育成するプログラミングスクールの運営、Web開発やAI研修を行なっています。幅広いレベルの受講生に対して実践的なスキルを提供。生徒の成長を第一に考え、効果的で魅力的な教育プログラムの設計に情熱を注いでいます。

ゴール

  • 「機械学習スクラッチ ニューラルネットワーク」を解くうえで必要な数学的な知識について理解する

目的

  • ニューラルネットワークの背景にある数学を理解する。
  • このテキストのヒントをもとに、ニューラルネットワークを一から実装できるようになる。

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

それでは、「課題 ニューラルネットワーク」の目次を見ていきましょう。
ニューラルネットワークには様々な種類のものがありますが、根本の考え方として人間の脳の働きを模倣してデータの関係性をとらえる手法のことです。

ニューラルネットワークは脳(神経系)の情報伝達を模倣した数理モデルの事です。
神経細胞(ニューロン)では、入力刺激がしきい値を超えた場合に発火(活性化)し、活動電位を発生させ、他の細胞に情報を伝達します。
この発火が連鎖的に起こることで情報を伝え、計算を実現します。ニューロンの結合の強さが変化していく事を学習と呼びます。

一方で、ニューラルネットワークでは、入力ベクトルを重み(結合荷重)と活性化関数によって別のベクトル空間へ写像します。
これを連鎖的に行い情報を抽出します。この過程で重みが強調される事を学習と呼びます。

Image from Gyazo
Image from Gyazo

MNISTデータセット

ここでは、ニューラルネットワークの説明をする上でMNISTという手書き文字の画像データからなるデータセットを使用して説明します。

例えば、1行のデータから予測結果を計算する通常のニューラルネットワーク(下部の画像の図のような3層の浅いニューラルネットワーク(Network training))の他にも、画像などの2次元データから予測結果を計算する畳み込みニューラルネットワーク(CNN)などがあります。

本来は入力として与えられる画像は2次元データですが、各要素を1行に並べる変換をして1次元の入力データと解釈することで、通常のニューラルネットワークを作成していきます。

このテキストでは、浅いニューラルネットワーク(NN)、深いニューラルネットワーク(DNN)、畳み込みニューラルネットワーク(CNN)の順に学習していきます。
また、全てのニューラルネットワークの解説にMNISTのデータセットを例に用いて説明していきます。

本来、画像データに対してはCNNを基にした手法が用いられることが多いですが、理解を容易にするために、このテキストではMNISTデータセットを使用してNN/DNN/CNNを統一的に実装していきます。

データセットの準備

手書き文字データセット(MNISTデータセット)をニューラルネットワークに入力し、0~9(数字)の多クラス分類を行う。

アイデア:(y_train:正解ラベルについて)
2クラスに分ける場合:
ひとつのサンプルに対応する正解ラベルを、0あるいは1のようなスカラ(int型)のまま学習に用いる。
多クラスに分ける場合:
ひとつのサンプルに対応する成果ラベルが与えられたら、クラス分の長さを持つワンホットベクトルに変換させて学習に用いる。

Image from Gyazo

まとめ

  • ニューラルネットワークとは人間の脳の働きを模倣したもの
  • ニューラルネットワークには様々な種類がある(NN, DNN, CNN)

ダイビックのことをもっと知ってみませんか?