G検定(ジェネラリスト検定)
にゅーらるねっとわーく
ニューラルネットワーク
NN
Neural Network
ニューラルネットワークは、ノードと呼ぶ小さな計算単位を層の形につなぎ、入力された数値を層ごとに変換して予測や分類の答えを出す計算モデルです。各ノードは入力に重みを掛けて足し合わせ、バイアスを加えた値を活性化関数に通します。答えが正解に近づくように重みとバイアスをデータから調整することを学習と呼び、隠れ層を何層も重ねた形がディープラーニングの土台になっています。
詳しい説明
数値を受け取り層ごとに変換して答えを出す計算モデル
ニューラルネットワーク(Neural Network)は、ノードと呼ぶ小さな計算単位をたくさん並べ、それらを層の形につないだ計算モデルです。ノードは人工ニューロンやユニットとも呼ばれます。入力された数値は、層から層へ受け渡されるたびに少しずつ別の数値へ変換され、最後の層から予測や分類の答えが出てきます。略してNNと書かれることもあります。
名前の「ニューラル」は神経の、という意味です。脳の神経細胞(ニューロン)が、ほかの細胞から信号を受け取り、条件がそろうと次の細胞へ信号を送るという働きを、数式で単純化して借りてきたことに由来します。ただし、あとで述べるとおり、いま使われているニューラルネットワークは脳の忠実な再現ではありません。
入力と出力の例を挙げます。手書きの数字を読み取るネットワークなら、入力は画像の画素ごとの明るさを並べた数値の列で、出力は0から9のそれぞれの数字である見込みを表す10個の数値です。住宅の価格を予測するネットワークなら、入力は広さや駅からの距離などの数値で、出力は価格という1つの数値です。どちらの場合も、ネットワークが行っているのは、数値の列を受け取って別の数値の列を返す計算です。
1つのノードが行う計算
1つのノードが行う計算は単純です。前の層から受け取った入力のそれぞれに重みという数を掛けて足し合わせ、そこにバイアスという数を加えます。こうして得た1つの値を活性化関数に通した結果が、そのノードの出力になります。重みは、その入力をどれだけ強く反映させるかを表します。重みが負の数なら、その入力が大きいほどノードの出力を下げる向きに働きます。バイアスは、入力がすべて0のときにも出力を上下させるための調整の値です。
数値で追ってみます。入力が2つで、値が1と0.5、それぞれの重みが0.8と-0.4、バイアスが0.1のノードを考えます。重みを掛けて足すと0.8 × 1 + (-0.4) × 0.5 = 0.6になり、バイアスを加えると0.7になります。活性化関数が「0より大きければ1、そうでなければ0を出す」という階段状の関数なら、このノードの出力は1です。活性化関数が「負の値は0にし、それ以外はそのまま出す」ReLUという関数なら、出力は0.7になります。
活性化関数には、曲がった形、つまり非線形の関数を使います。掛け算と足し算だけの計算、つまり線形の計算は、何層重ねても1回の線形の計算にまとめられてしまいます。層の間に非線形の関数をはさむことで、層を重ねるほど複雑な入力と出力の関係を表せるようになります。
入力層と隠れ層と出力層
ノードの層は、役割によって3つに分けて呼ばれます。
入力層は、外から与えられた数値をそのまま受け取り、次の層へ渡す層です。入力層では重みを掛ける計算を行わず、入力の数値の個数だけノードを並べるのが一般的です。
隠れ層は、入力層と出力層の間にある層で、中間層とも呼ばれます。外から直接は値が見えないので「隠れ」と呼ばれます。隠れ層の各ノードは、前の層の出力を組み合わせて新しい値を作ります。層を重ねると、前の層が作った値をさらに組み合わせた値が作られていきます。
出力層は、最後の答えを出す層です。分類の問題では、候補ごとの確からしさを表す値を出すことが多く、数値を予測する問題では、予測した値そのものを出します。
入力層から出力層へ向かって一方向に計算を進める構成を、順伝播型のネットワークと呼びます。各層のすべてのノードが次の層のすべてのノードとつながった構成は、全結合と呼ばれます。画像向けの畳み込みニューラルネットワークや、順番のあるデータ向けの再帰型ニューラルネットワークのように、つなぎ方を工夫した構成もあります。
重みとバイアスを学習で調整する
ニューラルネットワークの計算の中身を決めるのは、すべてのノードの重みとバイアスです。まとめてパラメータと呼びます。層の数や各層のノードの数、活性化関数の種類は人が先に決め、パラメータの値はデータから決めます。この値を決める作業を学習と呼びます。
ここでは、入力と正しい答えの組から学ぶ教師あり学習の場合を例に説明します。学習では、入力と、そのときの正しい答えの組をたくさん用意します。入力をネットワークに通して出てきた答えと正しい答えのずれを、損失関数という関数で1つの数値にします。そのうえで、この数値が小さくなる向きに重みとバイアスを少しずつ動かすことを繰り返します。どの重みをどちらへどれだけ動かせば、ずれが小さくなるかを、出力層の側から入力層の側へ向かって効率よく計算する方法が、バックプロパゲーション(誤差逆伝播法)です。
学習の結果、パラメータには、データの中にある入力と答えの関係が数値として書き込まれます。人が「この画素がこうなら数字の7」といった規則を書き込むのではなく、例となるデータから関係を取り出す点で、ニューラルネットワークは機械学習の手法の1つに数えられます。
神経細胞のモデルから始まった歴史
神経細胞を数学で扱う試みとして知られる論文に、1943年にウォーレン・S・マカロック(Warren S. McCulloch)とウォルター・ピッツ(Walter Pitts)が発表した「A Logical Calculus of the Ideas Immanent in Nervous Activity」があります。この論文は、神経系を、しきい値(threshold)を持つニューロンがつながった網(net)として捉えました。そのうえで、ニューロンの興奮が起こるか起こらないかのどちらかになる、全か無か(all-or-none)の性質を持つことに注目しました。興奮するかしないかを真か偽かに対応させれば、ニューロンの活動とその関係を命題論理で記述できることを示したのです。
1958年には、フランク・ローゼンブラット(Frank Rosenblatt)がパーセプトロンを提案したとされます。コーネル大学の公式ニュースサイトの記事によれば、ローゼンブラットは当時、ニューヨーク州バッファローにあったコーネル大学航空研究所(Cornell Aeronautical Laboratory)で研究に携わっていました。同じ記事は、1958年7月に米海軍研究局(Office of Naval Research)がパーセプトロンの実演を公開したと伝えています。その実演では、部屋ほどの大きさの計算機IBM 704にパンチカードを次々と読み込ませ、50回試した後に、左側に印のあるカードと右側に印のあるカードを見分けられるようになったとされます。
ニューラルネットワークの起点をマカロックとピッツの論文に置くか、ローゼンブラットのパーセプトロンに置くかは、説明する文脈によって分かれます。
その後、隠れ層を持つネットワークを学習させる方法が整い、計算機の性能と使えるデータの量が増えたことで、隠れ層を何層も重ねたネットワークが実用になりました。これがディープラーニングです。
脳との似ている点と違う点
入力を受け取り、条件によって次へ信号を送る単位が、たくさんつながって全体で働くという発想は、脳の神経細胞から借りたものです。
一方で、いま使われているニューラルネットワークは、脳の仕組みを正確に写したものではありません。ノードの出力は、重み付きの和を関数に通しただけの1つの数値で、実際の神経細胞の複雑な振る舞いは大きく省かれています。学習の方法も、脳で実際に起きていることをまねて決めたものではなく、数学的に計算しやすい方法が選ばれています。「脳と同じように考える機械」と受け取るのは誤解のもとです。
機械学習やディープラーニングとの関係
機械学習は、データから規則や関係を取り出す手法をまとめて呼ぶ言葉です。ニューラルネットワークはその中の1つで、決定木やサポートベクターマシンなどとは別の手法です。
ディープラーニングは、隠れ層を何層も重ねたニューラルネットワークを使う手法を指します。つまり、ニューラルネットワークはディープラーニングの土台になる構造で、層を深くしたものがディープラーニングだと位置づけられます。隠れ層が1層だけの浅いネットワークも、ニューラルネットワークに含まれます。
使うときの限界と注意点
ニューラルネットワークは、パラメータの数が多いほど複雑な関係を表せます。その分、学習にはたくさんのデータと計算が必要になります。データが少ないのにパラメータが多いと、学習に使ったデータには合うのに新しいデータには合わない過学習が起きやすくなります。
また、答えを出した理由が、たくさんの重みの値として分散して書き込まれているため、人が読んで理由を説明するのは簡単ではありません。判断の根拠を説明する必要がある場面では、この点に注意が要ります。
試験で問われること
G検定
- ニューラルネットワークは、ノードを層の形につなぎ、入力された数値を層ごとに変換して答えを出す計算モデルです。層は、入力を受け取る入力層、その間にある隠れ層(中間層)、答えを出す出力層の3つに分けて呼ばれます。
- 1つのノードは、入力に重みを掛けて足し合わせ、バイアスを加えた値を活性化関数に通して出力します。学習によってデータから調整されるのは重みとバイアスで、層の数やノードの数は人が先に決めます。
- 活性化関数に非線形の関数を使うのは、線形の計算だけでは何層重ねても1回の線形の計算にまとめられてしまうからです。非線形の関数をはさむことで、層を重ねるほど複雑な関係を表せるようになります。
- 1943年のマカロックとピッツの論文は、しきい値を持ち全か無かで興奮するニューロンの網の活動を、命題論理で記述できることを示しました。1958年にはローゼンブラットがパーセプトロンを提案したとされます。
- ディープラーニングは隠れ層を何層も重ねたニューラルネットワークを使う手法で、ニューラルネットワークはその土台になる構造です。ニューラルネットワーク自体は機械学習の手法の1つに数えられます。
最終更新日: 2026/09/23