2入力単純パーセプトロンをPythonを使って実装してみる

プログラミング
スポンサーリンク

スポンサーリンク

はじめに

こんにちは。将棋と筋トレが好きな、情報系大学生のゆうき(@engieerblog_Yu)です。

今回はディープラーニングを学ぶ上で必須の知識となる、パーセプトロンについてまとめていきたいと思います。

パーセプトロンとは?

パーセプトロンは複数の入力に対して、一つの信号を出力します。

入力:x、出力:yとすると、yの値は0か1となります。

それぞれ(信号を流す:1信号を流さない:0)に対応しています。

図は入力が二つの場合の単純パーセプトロンです。

信号を流すか流さないかを決める値として、閾値を設定する必要があります。

x1に重みw1をかけた値とx2にw2をかけた値の和が、ある閾値θより小さい場合はy=0となり、大きい場合は1となります。

\(w_1×x_1+w_2×x_2=k\)

\(k<=θ→ y=0\)

\(k>θ→ y=1\)

閾値θを超えてy=1となった場合、「ニューロンが発火する」といった表現をされることもよくあります。

2入力単純パーセプトロンの実装

Pythonで実装した、2入力を受け取り出力を返す、単純パーセプトロンです。

//単純パーセプトロンの実装
def perceptron(x1,x2):
  w1 = 10
  w2 = 20
  theta = w1*x1 + w2*x2
  return h(theta)
//閾値の設定
def h(theta):
  if theta < 100:
    return 0
  else:
    return 1
perceptron(10,20)

バイアスの設定

ニューロンの発火のしやすさを変化させるパラメータとして、バイアスが用いることもあります。

\(w_1×x_1+w_2×x_2+b=k\)

\(k<=θ → y=0\)

\(k>θ→ y=1\)

//単純パーセプトロンの実装
def perceptron(x1,x2):
  w1 = 10
  w2 = 20
  b = 10
  theta = w1*x1 + w2*x2 + b
  return h(theta)

一層パーセプトロンの恩恵と限界

一層パーセプトロンを実装することで、ANDやORの論理回路を表現することができます。

しかしXORゲートは一層パーセプトロンでは表現することができません。

多層のパーセプトロンを実装することができれば、コンピュータの動きを実装することができるので理論上コンピュータを表現することが可能です。

また一層パーセプトロンは線形的であり、非線形的にするためには多層に重ねる必要があります。

一層パーセプトロンではAND,ORの論理回路を表現することができるがXORはできない

一層パーセプトロンは線形的であり、多層パーセプトロンは非線形的である

終わりに

今回は単純パーセプトロンについてまとめました。

パーセプトロンはニューラルネットワークを学ぶ上で必要な知識です。

機械学習、ディープラーニングを学びたい方におすすめの入門書籍です。

ディープラーニングの理論が分かりやすくまとめられていて、力が身につくと思います。

ゆうき
ゆうき

最後まで読んでいただきありがとうございました。

ねこすけ
ねこすけ

他にもいろんな記事があるにゃ。

コメント

タイトルとURLをコピーしました