
7. 機械学習の基本
7.4 ニューラルネットワークの基礎構造
ニューラルネットワークは、数字の列や画像、音などのデータを入力として受け取り、いくつかの計算の段階(層)を通して最終的な答えを出力する仕組みである。構造は大きく「入力層」「隠れ層(中間層)」「出力層」の3種類の層から成り、層の中には多数の「ノード(ニューロン)」が並ぶのが基本形である。入力層はデータを受け取り、隠れ層は受け取った数値を加工し、出力層が最終的な結果(たとえばクラスごとの確からしさ)を出す。隠れ層が1つのものもあれば、複数重ねた「多層」のものもあり、隠れ層が2層以上のときはディープラーニング(深層学習)と呼ぶことが多い。[1][2][3][4][5]
各層のノードは次の層のノードと「重み」と呼ばれるつながりで結ばれている。重みは、前の層から来た数値をどれだけ強く次のノードに伝えるかを表す係数で、ネットワークが学習するときに更新される中心的なパラメータである。1つのノードの内部では、前の層から届いた値に重みを掛けて足し合わせ、さらに「バイアス」と呼ばれる足し算の項を加え、その合計を「活性化関数」に通して次の層へ渡すのが基本動作になる。[4][6][7][1]
活性化関数は、ノードが出力をどのような形にするかを決める変換で、単なる足し算・掛け算の結果をそのまま次へ送るのではなく、非線形な変換をかけて表現の幅を広げる役目を持つ。よく使われる例として、隠れ層ではReLU(0以下は0、0より大きければそのまま)など、出力層では分類ならソフトマックス(出力を確率分布に変換)などが標準的に使われる。ReLUは計算が簡単で学習が進みやすく、深いネットワークで起きやすい勾配の問題を緩和する目的でも広く使われる。ソフトマックスは出力の総和を1に正規化するため、多クラス分類で「各クラスの確からしさ」を直接読める利点がある。[8][6][7][9][10]
この仕組みが連なることで、ネットワーク全体は「左から右へ計算を流して出力を得る」順伝播を行う。計算の流れは、入力層→隠れ層(重み付き和→活性化)→出力層(必要に応じてソフトマックス等)という手順である。学習とは、この出力が望ましい答えに近づくように、重みとバイアスを少しずつ調整していく過程を指す。調整の際には「損失関数」(予測と正解の差を数値にする関数)を小さくする方向へパラメータを更新する。ここで用いられる中核の計算が「誤差逆伝播法(バックプロパゲーション)」で、出力側から入力側へと誤差を逆向きに伝え、各重み・バイアスが誤差にどれほど影響したか(勾配)を効率的に求め、勾配降下法などで更新する。誤差逆伝播は、層をまたぐ複合関数の微分に「連鎖律」を使って、全パラメータに対する損失の勾配を計算する枠組みだと理解するとよい。[11][12][5][13][14][4]
歴史的に見ると、最初期のモデルである単層のパーセプトロンは隠れ層を持たず、直線で分けられる問題しか扱えない限界があったが、隠れ層を導入した多層化により、より複雑な境界や表現を学べるようになった。現代のニューラルネットワークは、多層の隠れ層と適切な活性化関数、誤差逆伝播による学習という組み合わせが基本形である。[2][3][11]
ここで、実務でよく目にする具体例に触れる。分類問題では、出力層のノード数をクラス数に合わせ、ソフトマックスで確率化し、損失関数にはクロスエントロピーを使うのが一般的である。回帰問題では、出力層に恒等関数(活性化なし)を使い、二乗誤差を損失とするのがわかりやすい基本形である。隠れ層の活性化にはReLUやその派生(Leaky ReLU、Swishなど)やtanhなどが利用され、データや深さに応じて選択される。[7][9][15][8][4]
「層」と「ノード」をどう設計するかは、表現力と計算量のトレードオフになる。層数やノード数を増やせば表現力は上がるが、学習が難しくなり過学習のリスクも増える。そこで、正則化(重みの制約)やドロップアウト(学習時だけ一部ノードを無効化して過適合を防ぐ)などの工夫と、適切な活性化関数・初期値・学習率の設定が実用上の鍵になる。また、前処理として入力のスケールを整える(標準化など)ことは、勾配降下の安定性にとって重要で、学習の収束を助ける。[11][4]
ニューラルネットワークの基礎構造をまとめると、次の三点に凝縮できる。1) 構造:入力層—隠れ層—出力層の多層構造で、各層のノードは重みで結ばれ、重み付き和+活性化で信号を次層に渡す。2) 活性化:ReLUやtanhなどの非線形関数で表現力を確保し、分類の出力ではソフトマックスで確率化する。3) 学習:順伝播で出力を計算し、損失を誤差逆伝播で各パラメータに配分して勾配を求め、勾配降下法などで重み・バイアスを更新する。この3点が理解できれば、より発展的な畳み込みネットワークや再帰型ネットワークなどへも、同じ「層・活性化・誤差逆伝播」という視点で繋げて学びやすくなる。[6][12][5][13][1][8][4][7][11]
最後に直感の補足として、ニューラルネットワークは「多数の簡単な関数(重み付き和→活性化)の積み重ね」で、全体として非常に柔軟な関数近似器になっていると捉えると分かりやすい。入力から出力までの計算が複数層の合成関数になっているため、その合成全体が複雑な形を表現できる。学習は、その合成関数の形を、データに合わせて少しずつ変形していく操作だと理解すれば、層の役割や誤差逆伝播の必要性が腑に落ちるはずである。[4][11] [1] https://www.sbbit.jp/article/cont1/33345
[2] https://tutorials.chainer.org/ja/13_Basics_of_Neural_Networks.html [3] https://udemy.benesse.co.jp/data-science/ai/neural-network.html [4] https://free.kikagaku.ai/tutorial/basic_of_deep_learning/learn/neural_network_basic_forward [5] https://japan-medical-ai.github.io/medical-ai-course-materials/notebooks/03_Introduction_to_Neural_Network.html [6] https://qiita.com/namitop/items/d3d5091c7d0ab669195f [7] https://ja.wikipedia.org/wiki/%E6%B4%BB%E6%80%A7%E5%8C%96%E9%96%A2%E6%95%B0 [8] https://ai-kenkyujo.com/artificial-intelligence/algorithm/neuralnetwork-activationfunction/ [9] https://pokoroblog.com/python-activation-function/ [10] https://note.com/taichi_endoh/n/nd017a44d6bcb [11] https://www.ibm.com/jp-ja/think/topics/backpropagation [12] https://www.netattest.com/backpropagation-2024_mkt_tst [13] https://hogetech.info/ml/dl/backpropagation [14] https://qiita.com/43x2/items/50b55623c890564f1893 [15] https://cvml-expertguide.net/terms/dl/layers/activation-function/ [16] https://www.imagazine.co.jp/%E3%83%8B%E3%83%A5%E3%83%BC%E3%83%A9%E3%83%AB%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E3%82%92%E7%90%86%E8%A7%A3%E3%81%99%E3%82%8B%E3%80%80%EF%BD%9E%E3%83%87%E3%82%A3%E3%83%BC%E3%83%97/ [17] https://qiita.com/sakigakeman/items/55f4cc1c50f8236ac7a6 [18] https://note.com/lifeisbeautiful/n/nc173267f4819 [19] https://www.youtube.com/watch?v=O3qm6qZooP0 [20] https://note.com/yeahyeahoh/n/nce2dc057534d※本ページは、AIの活用や研究に関連する原理・機器・デバイスについて学ぶために、個人的に整理・記述しているものです。内容には誤りや見落としが含まれている可能性もありますので、もしお気づきの点やご助言等ございましたら、ご連絡いただけますと幸いです。
※本ページの内容は、個人的な学習および情報整理を目的として提供しているものであり、その正確性、完全性、有用性等についていかなる保証も行いません。本ページの情報を利用したこと、または利用できなかったことによって発生した損害(直接的・間接的・特別・偶発的・結果的損害を含みますが、これらに限りません)について、当方は一切責任を負いません。ご利用は利用者ご自身の責任でお願いいたします。