0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

パーセプトロン

パーセプトロンとは、人間の脳の神経細胞(ニューロン)を数学的に模倣したモデルであり、複数の入力を受け取り、重み付きの合計が一定の閾値を超えるかどうかで出力を決める仕組みを持つ。

このもとになっているのが 形式ニューロンである。形式ニューロンは
• 複数の信号を入力として受け取る
• 加算する
• 閾値を超えれば「1」、超えなければ「0」
という単純な処理を行う。

この形式ニューロンの考え方をそのまま利用して構築されたのが単純パーセプトロンである。

単純パーセプトロンの仕組み

単純パーセプトロンでは、

image.png
image.png

という加重和を計算し、その値が閾値を超えるかどうかで出力が決まる。
image

このシンプルな構造は、論理回路の実装にも適しており、以下の3つの基本的な論理演算を実行できる。
• AND(論理積):両方の入力が1のときだけ1を出力

• NAND(否定論理積):ANDの逆、両方1なら0、それ以外は1

• OR(論理和):どちらか一方が1であれば1

これらを組み合わせることで、より複雑な論理回路を表現することも可能になる。

単純パーセプトロンの限界

パーセプトロンは単純ゆえに以下の限界を持つ。

● 2クラス分類しかできない

パーセプトロンは基本的に2値(0/1)の分類しか扱えない。

● 線形分離できる問題にしか適用できない

例えば「XOR(排他的論理和)」のように直線では分けられない問題は、単一のパーセプトロンでは学習不能である。
この限界を克服するために登場したのが多層パーセプトロンである。

多層パーセプトロン(MLP)

多層パーセプトロンは、単純パーセプトロンを複数層に積み重ねたモデルである。
隠れ層を追加することで、線形では分けられない複雑な問題にも対応できるようになる。
• 直線分離不可能な問題(例:XOR)も扱える
• 回帰問題(数値予測)にも使われる
• 活性化関数を用いて非線形な変換を行う

この多層化の概念は、後述するニューラルネットワークへそのまま発展する。

ニューラルネットワークへ発展する考え方

ニューラルネットワークは、多層パーセプトロンの枠組みをさらに拡張したものである。
重要なのは、複数の単純な関数(パーセプトロン)を組み合わせることで、非常に複雑な関数を表現できるようになるという点だ。
image

これにより、
• 非線形な分類
• 時系列の予測
• 画像・音声の認識

など幅広いタスクに対応できる。

「重み」と「バイアス」

パーセプトロンの計算で重要なのは重みバイアスである。
• 重み:入力の重要度
• バイアス:決定境界の位置調整

直感的には、
「多数の人が意見を出す会議で、誰の意見をどれだけ重視するかを決める係」
が重みである。

重要だと判断された意見には大きな重みがつけられ、結果の判断に強く影響する。逆に、あまり重要でない意見は重みが小さくなる。

次のステップでは、多層パーセプトロンの行列計算やニューラルネットワークにおける活性化関数の役割に踏み込んでいく。

パーセプトロンの処理の流れ

パーセプトロンは以下の 4 ステップで処理を行う。

① 各入力に重みを乗じる

入力 x1, x2, …, xn に対して、それぞれ重み w1, w2, …, wn を掛け算する。
• 重みは「どの変数をどれくらい重要視するか」という指標である。
image.png

② 重み付き入力とバイアスを総和する

重み付き入力の合計にバイアス b を加えて、以下の値を求める。
バイアスは実数で、出力を調整する「ずらし役」でもある。

image.png

③ 総和を行列の掛け算で表す

上の総和は行列形式でも書ける。

image.png

このように、パーセプトロンは線形代数の視点で「ベクトルと行列の掛け算」と捉えることができる。

④ 活性化関数に通して出力を得る

総和aを活性化関数hに入力して出力yを得る。

image.png

活性化関数は、線形な計算に「非線形性」を与えて、複雑な問題が解けるようにするための重要な仕組みである。
代表的な例としてシグモイド関数がある。

線形と非線形の比較

項目 線形 非線形
概要の説明 入力と出力の関係が比例し、一次式で表せる。操作が足し算と掛け算だけで完結する。 入力と出力の関係が比例せず、一次式では表せない。曲線的・複雑な関係を持つ。
数学的な特徴 ( f(x) = ax + b ) のように直線で表せる。複数の入力があっても足し合わせて表現できる。 ( y = x^2 ), ( y = sin x ), 閾値処理などのように曲線・折れ線・段差になる。
入力が2倍になった場合 出力も2倍(または比例した値)になる。 出力は2倍にならない。むしろ小さくなったり大きくなったり不規則に変化する。
グラフの形状 直線になる。 曲線、折れ線、段差など直線ではない形状になる。
代表的な例(数学) 一次関数、線形回帰、行列の線形変換(回転・伸縮)。 二次関数、指数関数、三角関数、ステップ関数。
代表的な例(機械学習) 線形回帰、ロジスティック回帰(途中は線形)。 ニューラルネットワーク(活性化関数)、決定木、カーネルSVM。
表現できるパターン 単純な傾向や直線的な関係のみ。 複雑なパターン・曲線・分類境界など幅広い。
計算のしやすさ 高速で計算しやすく、解析も容易である。 計算量が多く、解析が難しいこともある。

多層パーセプトロン(MLP)

多層パーセプトロン(MLP)は、パーセプトロンを複数層に組み合わせたニューラルネットワークである。
パーセプトロンが線で結ばれて次の層へ渡されていく。

多層パーセプトロンの処理の流れ

① 各層で「総和 → 活性化関数」の処理を行う

第1層では、パーセプトロンで求めた出力を
image.png

のように得る。

② 次の層は、前の層の出力を入力として同じ処理を行う

例えば、第1層の出力から第2層に渡る場合は以下のように計算される。

image.png

そして活性化関数hに通して

image.png

となる。

③ 出力層は別の活性化関数を使う場合がある

中間層とは異なる活性化関数(例:softmax)が使われることがあるため、出力層の関数はσと書かれることが多い。

softmax の式
image.png

処理の本質はパーセプトロンと同じで、
1. 重み付き入力+バイアス → 総和
2. 活性化関数に通す

を層ごとに繰り返していく構造になっている。

各パラメータの役割

入力(x)

パーセプトロンに与えられる値
記号は
• x1:入力1
• x2:入力2

必要に応じて入力の数は自由に増やせる。

重み(w)

各入力の重要度を調整する値。

例:
• 入力を重要視したい → 重みを大きくする
• 影響を小さくしたい → 重みを小さくする

記号は
• w1:入力 x1 の重要度
• w2:入力 x2 の重要度

重みを変えることで、パーセプトロンの“判断基準”が変わる。

バイアス(b または w₀)

バイアスは、出力が 1 になるか 0 になるかを調整する“しきい値”の役割を持つ。

つまり、
バイアスは「発火しやすさ(1を出力しやすさ)」をコントロールするつまみのようなもの。

バイアスのノードには常に「1」が入力されており、その値に重み w_0 が掛けられる。

出力(y)

パーセプトロンの最終的な結果で、0 または 1 の二値分類を行う。
記号は y を用いる。

ニューロンの発火

パーセプトロンでは、入力と重み、バイアスを使って次の値を計算する:

image.png

この値 y’ を用いて次のルールで出力を決める。

image.png

計算結果 y’ が 0 以上になるとき、ニューロンが発火した(= 1 を出力した)と表現する。

image.png

この条件が満たされるかどうかが、パーセプトロンがどちらの判断をするかを決定する。

ここで重要なのがバイアス w_0であり、バイアスの値が大きいと発火しやすく、小さいと発火しにくくなる。

パーセプトロンの直感的理解

パーセプトロンは本質的には、
「重み付き入力の合計がしきい値を超えるかどうかを評価する計算機」
だと言える。
• 重み → 各入力の重要度
• バイアス → 発火のしやすさ
• 入力 → 判断材料
• 出力 → 判断結果(0 or 1)

シンプルな構造だが、これが多層に組み合わさると、ニューラルネットワークとして複雑な問題を解くことができる。

ニューラルネットワーク(NN)は、入力されたデータに対して多数の「変換」を行い、最終的な予測を出す仕組みだ。その中でも、NNの表現力を左右する重要な要素が 活性化関数 である。

活性化関数は、各ニューロンで適用される数学的な関数であり、NNが線形では表現できない複雑なパターンを学習するために不可欠な役割を持つ。

活性化関数の役割

活性化関数は、以下の目的で使われる。

① 非線形性の導入

線形変換だけでは、複雑な境界(くねくねした曲線)を学習できない。
活性化関数によって NN は曲線的な分類や複雑なパターンのモデリングが可能になる。

② 特徴抽出を助ける

どの特徴を強調し、どれを抑えるかを決めるフィルターのような役割を持つ。

③ 勾配の制御

誤差逆伝播で勾配を伝える際、勾配が大きすぎたり消えてしまうのを防ぐための機能もある。

活性化関数の種類と特徴

以下では、代表的な活性化関数の特徴・メリット・デメリット・用途をまとめる。

活性化関数一覧表

関数 数式 メリット デメリット 主な用途
ステップ関数 image.png 仕組みが非常にシンプル 微分できない、学習に不向き 古典的モデル、パーセプトロン
Sigmoid image.png 出力が0〜1で確率的解釈が容易 勾配消失が起きやすい 2値分類の出力層
Tanh image.png 出力が-1〜1で学習が安定しやすい 大きな入力で勾配消失が起きる 中間層(古いNNで多用)
ReLU image.png 計算が速い、勾配消失が起きにくい 負値でニューロンが死ぬ問題 CNN・MLPで最も一般的
Leaky ReLU image.png 死んだReLU問題を緩和 追加パラメータが必要 ReLUの改良版
Swish image.png(σ(x)はシグモイド関数) 滑らかで学習が安定 計算コスト高め 高性能モデルに使用
Softmax image.png 出力が確率になり解釈しやすい 計算量が多い 多クラス分類の出力層
GELU image.pngΦ(x) は標準正規分布の累積分布関数(CDF)。 Transformerで高性能 実装がやや複雑 BERT・GPTなど多くのNLPモデル

なぜ非線形が必要なのか?

線形変換だけのNNは、何層重ねても結局ひとつの線形変換にまとまってしまう。
それでは、「直線でしか区切れない世界」にしか対応できない。

しかし現実のデータはそんなに単純ではない。
活性化関数を通すことでNNは曲線的な境界を引けるようになる。

図で示すと、以下のようなイメージ。
• 活性化関数なし → 直線でしか分類できない
• 活性化関数あり → 曲がった境界でデータを分類できる

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?