AI資格ドリル
資格を選ぶ

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

G検定のパーセプトロンの学習を手計算で確認

G検定のニューラルネットワークの基礎では、単純パーセプトロンと多層パーセプトロンの違いが問われます。このページでは、入力が2つの単純パーセプトロンにANDを覚えさせる計算を、重みの更新から6周目の収束まで手で追います。続けて、同じ規則ではXORが解けないことと、隠れ層を足すと解けることを、同じ4つの入力で確かめます。単純パーセプトロンは、まちがえたときだけ重みを直し、1本の直線で分けられる問題だけを学べます。

このページは試験の学習用の整理です。数値はすべて説明用の例です。

公式情報の確認

試験日、料金、申込条件、試験方式など変動する情報は、公式情報を最終確認してください。

試験の出題範囲・実施要項は変動するため、受験前に公式情報を確認してください。

単純パーセプトロンの更新式とAND・XORの学習結果

  1. 単純パーセプトロンは、入力に重みを掛けて足し、0より大きければ1、そうでなければ0を出す
  2. 重みは、出力が正解とちがったときだけ「学習率×(正解−出力)×入力」の分だけ変える
  3. ANDは、学習率1・初期値0から数えて6周目に、4つとも正解になって収束する
  4. XORは、同じ規則で何周回しても、毎周まちがいが残る。1本の直線で分けられないため
  5. 隠れ層を足し、OR・NAND・ANDを組み合わせると、XORも4つとも正解になる

単純パーセプトロンの計算

入力x1・x2に、重みw1・w2を掛けて足し、さらにバイアス(しきい値を動かす定数)を加えた合計zを作ります。zが0より大きければ出力1、0以下なら出力0です。この「0より大きいか」で出力を切り替える関数が、ステップ関数です。

学習は、入力を1つずつ入れて、出力が正解とちがうときだけ重みを直します。直し方は、重みに「学習率×(正解−出力)×入力」を足す形です。バイアスは、入力を常に1とみなして同じ式で直します。出力が正解と同じなら、重みは変わりません。このページでは学習率を1、バイアスと重みの初期値をすべて0にします。

ANDを学習する6周

ANDの正解は、入力(1,1)のときだけ1で、あとの(0,0)(0,1)(1,0)は0です。4つを(0,0)(0,1)(1,0)(1,1)の順に1周とし、重みを(バイアス, w1, w2)で表します。

1周目は、(0,0)(0,1)(1,0)で合計0、出力0で正解なので何も変わりません。(1,1)でも合計は0で出力0ですが、正解は1です。正解−出力は1なので、バイアスも2つの重みも1ずつ増え、(1, 1, 1)になります。

周その周の終わりの重み何が起きたか
1周目(1, 1, 1)(1,1)で初めて誤り。合計0で出力0、正解は1なので全部+1
2周目(0, 2, 1)(0,0)と(0,1)で出力1の誤り。引いたあと、(1,1)で+1
3周目(−1, 2, 1)(0,1)と(1,0)と(1,1)で更新
4周目(−1, 2, 2)(1,0)と(1,1)で更新
5周目(−2, 2, 1)(0,1)で更新
6周目(−2, 2, 1)4つとも正解。更新なしで収束

6周目は4つとも更新がありません。最終の重み(−2, 2, 1)で、4つの入力を確かめます。合計はバイアス−2に、2×x1と1×x2を足した値です。

入力合計出力正解
(0, 0)−200
(0, 1)−100
(1, 0)000
(1, 1)111

(1,0)は合計がちょうど0で、0より大きくないので出力0です。「0より大きい」と「0以上」のどちらで切り替えるかで、境目の入力の出力が変わります。問題文に切り替えの条件が書かれているかを確かめます。

XORが解けない理由

XORは、2つの入力がちがうときだけ1を返す演算です。(0,0)と(1,1)は0、(0,1)と(1,0)は1です。同じ学習規則を、初期値0から100周回すと、まちがえた入力の数は最初の3周で2・3・4、あとは毎周4つになります。更新を続けても、まちがいが消えません。

理由は、図に4つの点を描くとわかります。(0,0)と(1,1)が対角に、(0,1)と(1,0)がもう一方の対角に並びます。1本の直線で、同じ対角の2点ずつを分けることはできません。単純パーセプトロンは1本の直線で分けるモデルなので、線形に分けられないXORは何周しても学べません。ANDやORは、直線1本で分けられる問題です。1969年に、MinskyとPapertの本『Perceptrons』が、この種のネットワークがXORを学べないことを示しました。ただし、その本は、層を重ねたネットワークがXORを表せることは否定していません。

隠れ層でXORを解く

隠れ層に2つの素子を置きます。1つ目はOR(x1+x2−0.5が0より大きければ1)、2つ目はNAND(−x1−x2+1.5が0より大きければ1)です。出力の素子は、2つの出力を足して1.5を引いた値が0より大きければ1、つまりANDにします。

入力隠れ層のOR隠れ層のNAND出力(AND)
(0, 0)010
(0, 1)111
(1, 0)111
(1, 1)100

出力は0・1・1・0になり、XORと一致します。隠れ層が、入力を「少なくとも一方が1か」と「両方が1ではないか」という2つの見方に変え、出力の素子がその両方を満たすものを選んでいます。隠れ層を足すと、直線を複数使えるので、線形に分けられない問題も扱えます。ただし、隠れ層に非線形の活性化関数がなければ、層を重ねても全体は線形のままです。活性化関数の違いは別のページで扱っています。

よくある質問

単純パーセプトロンと多層パーセプトロンの違いは何ですか?

単純パーセプトロンは入力層と出力層だけで、線形に分けられる問題しか学べません。多層パーセプトロンは間に隠れ層を1つ以上持ち、XORのような線形に分けられない問題も扱えます。違いを項目ごとに比べた表は、別ページの比較にまとめています。

パーセプトロンの重みは、どのように更新されますか?

正解と出力が違ったときだけ、重みを「学習率×(正解−出力)×入力」の分だけ変えます。出力が正解と同じなら重みは変わりません。このページでは学習率を1、出力は合計が0より大きければ1としています。

XORが単純パーセプトロンで解けないのは、なぜですか?

単純パーセプトロンは、1本の直線で2つのグループを分けるモデルだからです。XORの正解は(0,1)と(1,0)が1、(0,0)と(1,1)が0で、1本の直線では分けられません。隠れ層を足すと、直線を複数使って分けられます。

次に読むと効率的なページ

執筆: AI資格ドリル編集部(運営者情報を見る)