✨
[機械学習]多層パーセプトロン(MLP)の仕組みを解説する
はじめに
今まで機械学習の勉強をしてきましたが、機械学習のアルゴリズムをちゃんと説明できるようにアウトプットしていきたいと思います。プログラムの書き方というよりはアルゴリズムを解説していきたいと思います。
想定読者
- 基礎的な微分、線形代数は理解している
- プログラムは書けるけど、原理を理解していない方
- 機械学習に興味のある方
多層パーセプトロン(MLP)を簡潔に説明すると?
多層パーセプトロンは、名前の通りパーセプトロンをいくつも結合させて多層化したものになります。パーセプトロンは、複数の入力を受け取り、一つの信号を出力する関数になります(下図参照)。
パーセプトロン、多層パーセプトロンについてそれぞれ詳しく解説していきます。
まずはパーセプトロンについて
パーセプトロンの中身をもう少し詳しく描いたものがこちらの図になります。
パーセプトロンの処理の流れは以下の通り。
- 各入力に重みを乗じる(重みはどの変数をどれくらい重要視するかの指標)
- 入力と重みの積(重み付き入力)とバイアスを総和する
- 総和を活性化関数に入力
- 出力を得る
1~4についてそれぞれ説明します。
まずは、各変数と重みの掛け算をします。
そして、重み付き入力とバイアスの総和
また、この総和は行列の掛け算として表記することもできます。
そして、総和
活性化関数にはある閾値を境に出力が切り替わる関数が使用されます。例えば、sigmoid関数(下図)が使用されます。
MLPの処理の流れ
MLPはパーセプトロンを複数繋げた構造になります。パーセプトロンの出力が次のパーセプトロンの入力になる構造となっています。
処理の流れとしては下記の通り。
- 重み付き入力とバイアスの総和
を活性化関数a に入力し、出力h を得る(図の緑枠)z - 第1層のパーセプトロンの出力
,z^{(1)}_1 にそれぞれ重みを乗じ、バイアスとの総和を第2層の活性化関数z^{(1)}_2 に入力(図の赤枠)h
- 第2層の総和
,a^{(3)}_1 を、出力層の活性化関数a^{(3)}_2 に入力し、出力を得る\sigma
出力層の活性化関数を
基本的な流れはパーセプトロンと同じで、①重み付き入力とバイアスの総和を算出、②総和を活性化関数に入力という流れになります。
おわりに
MLPの仕組みをなるべく日本語で説明しました。scikit-learn
などのライブラリを使えばMLPは簡単に実装できますが、仕組みを理解したい方の一助になれば幸いです。
Discussion