---
title: 【ゼロから作るDeap Learning】2.1~2.3
tags:  #パーセプトロン #論理回路  
author: [京都大学人工知能研究会KaiRA](https://convert.docswell.com/user/kyoto-kaira)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/9J2D895QJR.jpg?width=480
description: 【ゼロから作るDeap Learning】2.1~2.3 by 京都大学人工知能研究会KaiRA
published: April 28, 25
canonical: https://convert.docswell.com/s/kyoto-kaira/KQRJGJ-2025-04-28-203816
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/9J2D895QJR.jpg)

2025年度前期輪読会 #2 (2025/4/28)
第2章 パーセプトロン (〜2.3節まで)
京都大学大学院理学研究科 M1
松田 拓巳
0


# Page. 2

![Page Image](https://bcdn.docswell.com/page/DEY264KYEM.jpg)

アジェンダ
n パーセプトロンとは
n 単純パーセプトロン
n パーセプトロンの限界
n 多層パーセプトロン
n 普遍性定理
1


# Page. 3

![Page Image](https://bcdn.docswell.com/page/VJN8ZYRR78.jpg)

この節の目標
パーセプトロンの基本を理解し、ニューラルネットワークへの第一歩を踏み出す
本節のゴール
パーセプトロンの位置づけ
パーセプトロンの仕組みを理解し、
• 1957年に考案された古典的なアルゴリズム
簡単な論理回路を実装できるようになる。
• ニューラルネットワークの起源
• 基本的な考え方が詰まっている
2


# Page. 4

![Page Image](https://bcdn.docswell.com/page/YE9KZPMZE3.jpg)

パーセプトロンって何？
パーセプトロンは、重み付き合計が閾値を超えるかで分類する、基本の線形モデル
問題設定
パーセプトロン
入力 𝑥! , 𝑥&quot; が与えられたとき、それが「0」に
入力情報に重みをつけて足し合わせ、その合計が特
属するか「1」に属するかを分類したい
定の基準（閾値）を超えるかどうかで2つのカテゴ
リに分類するモデルを考える
𝑥&quot;
𝑥!
𝑤!
𝑥!
𝑥&quot;
&gt;𝜃?
𝑦
𝑤&quot;
3


# Page. 5

![Page Image](https://bcdn.docswell.com/page/GE8R1D1YJD.jpg)

パーセプトロンの仕組み
各入力の重要度（重み）を加味した合計が、ある基準（閾値）を超えたら「1（信号を流す）」と判断
Step1
重み付き和の計算
Step2
Step3
閾値θとの比較
出力𝒚の決定
各入力𝑥# にその重み𝑤# をかけ
計算した「重み付き和」が、
もし𝑤! 𝑥! + 𝑤&quot; 𝑥&quot; &gt; 𝜃なら→ 𝑦 = 1 (発火する)
て、全て足し合わせる。
設定された「閾値θ」より大
もし𝑤! 𝑥! + 𝑤&quot; 𝑥&quot; ≤ 𝜃なら→ 𝑦 = 0 (発火しない)
𝑤! 𝑥! + 𝑤&quot; 𝑥&quot;
きいか？
𝑥!
𝑥&quot;
𝑤!
&gt;𝜃?
𝑦
𝑤&quot;
𝑦=#
1,
0,
𝑤! 𝑥! + 𝑤&quot; 𝑥&quot; &gt; 𝜃
𝑤! 𝑥! + 𝑤&quot; 𝑥&quot; ≤ 𝜃
4


# Page. 6

![Page Image](https://bcdn.docswell.com/page/LELKQMQ9JR.jpg)

パーセプトロンで論理回路を表現 ‒ ANDゲートの場合
パーセプトロンは、適切な「重み」と「閾値」を設定することでANDゲートの動きを再現できる
ANDゲート
パラメータ設定例
2つの入力が「両方とも1」の時だけ出力が1になる
𝑤! = 0.5, 𝑤&quot; = 0.5, 𝜃 = 0.7 として試す。
𝑼
𝑨
𝑩
𝒙𝟏
0
𝒙𝟐
0
𝒚
0
計算確認
1
0
0
𝑥! , 𝑥&quot; = 0,0 ⟹ 0.5×0 + 0.5×0 = 0 ≤ 0.7 ⟹ 𝑦 = 0
0
1
0
1
1
1
𝑥! , 𝑥&quot; = 1,0 ⟹ 0.5×1 + 0.5×0 = 0.5 ≤ 0.7 ⟹ 𝑦 = 0
𝑥! , 𝑥&quot; = 0,1 ⟹ 0.5×0 + 0.5×1 = 0.5 ≤ 0.7 ⟹ 𝑦 = 0
𝑥! , 𝑥&quot; = 1,1 ⟹ 0.5×1 + 0.5×1 = 1 &gt; 0.7 ⟹ 𝑦 = 1
このような出力をする関数を
パーセプトロンで表現したい
このパラメータでANDゲートが実現できた！
5


# Page. 7

![Page Image](https://bcdn.docswell.com/page/4JM21Y1VJW.jpg)

パラメータの組み合わせは無限大
条件を満たす「重み」と「閾値」の組み合わせは無数に存在する
ANDゲートを実現する (𝑤! , 𝑤&quot; , 𝜃) の組み合わせは、実は無限にある！
他の例
重要なこと
𝑤! = 0.5, 𝑤&quot; = 0.5, 𝜃 = 0.8 でもANDゲートになる。 設定したパラメータが、目的の動作（今回ならAND
𝑤! = 1.0, 𝑤&quot; = 1.0, 𝜃 = 1.0 でもANDゲートになる。 ゲートの真理値表）を満たしているかが重要
（※各自、計算して確かめてみてください）
機械学習では、この「適切なパラメータを探す作業」を
コンピュータがデータから自動で学習する
6


# Page. 8

![Page Image](https://bcdn.docswell.com/page/PJRML9LWE9.jpg)

重みとバイアス
閾値(θ) を「バイアス(b)」という形に書き換えると、後の計算や実装がよりシンプルになる
元の判定式
（𝑦 = 1の条件）
バイアスを用いた式
𝑤! 𝑥! + 𝑤&quot; 𝑥&quot; &gt; 𝜃
𝑤! 𝑥! + 𝑤&quot; 𝑥&quot; + 𝑏 &gt; 0
式変形
𝑦=#
𝑤! 𝑥! + 𝑤&quot; 𝑥&quot; − 𝜃 &gt; 0
1,
0,
𝑤! 𝑥! + 𝑤&quot; 𝑥&quot; + 𝑏 &gt; 0
𝑤! 𝑥! + 𝑤&quot; 𝑥&quot; + 𝑏 ≤ 0
ここで、𝑏 = −𝜃 と置き換える（この𝑏をバイアスと呼ぶ）
𝑤! 𝑥! + 𝑤&quot; 𝑥&quot; + 𝑏 &gt; 0
判定基準が「0」になった！
7


# Page. 9

![Page Image](https://bcdn.docswell.com/page/PEXVWQWV7X.jpg)

バイアスの役割
バイアスはニューロンがどれだけ「発火しやすいか（出力1になりやすいか）」を調整する役割を持つ
パラメータの役割
重み（𝒘𝟏 , 𝒘𝟐 ）
各入力信号の 重要度 を調整。
バイアス（𝒃）
ニューロン全体の発火しやすさ（出力が1になるためのハードル）を調整。
バイアスの値による影響
bが大きい（値がプラスに近い、例：-0.1）
→ニューロンは発火しやすい。( 𝑤! 𝑥! + 𝑤&quot; 𝑥&quot; が少しでも 0.1 を超えれば発火）
bが小さい（値がマイナスに大きい、例：-20.0）
→ニューロンは発火しにくい。( 𝑤! 𝑥! + 𝑤&quot; 𝑥&quot; が 20 を超えないと発火しない）
8


# Page. 10

![Page Image](https://bcdn.docswell.com/page/3EKQV9V5ED.jpg)

PythonでANDゲートを実装してみよう
NumPyライブラリを使うと、重み付き和とバイアスの計算を簡潔に実装できる
ANDゲートのパラメータ（バイアス形式）
𝑤! = 0.5, 𝑤&quot; = 0.5, 𝑏 = −0.7 として試す。
（∵ 𝜃 = 0.7だったので𝑏 = −0.7）
import numpy as np
def AND(x1, x2):
x = np.array([x1, x2])
w = np.array([0.5, 0.5])
b = -0.7
# 入力を配列に
# 重みを配列に
# バイアス
# ① 重み付き和 + バイアス を計算
tmp = np.sum(w * x) + b
# np.sum(w * x) は w1*x1 + w2*x2
# ② 0より大きいか判定
if tmp &lt;= 0:
return 0
else:
return 1
9


# Page. 11

![Page Image](https://bcdn.docswell.com/page/L73PMWM1E5.jpg)

他のゲートへの応用（NAND, OR）
AND、NAND、ORゲートは、同じパーセプトロンの構造のまま、パラメータ（重みとバイアス）を変えるだけで実現可
NANDゲート
パラメータ設定例
2つの入力が「両方とも1」の時だけ出力が0になる
𝑤! = −0.5, 𝑤&quot; = −0.5, 𝑏 = 0.7 として試す。
𝑼
𝑨
𝑩
𝒙𝟏
0
𝒙𝟐
0
𝒚
1
計算確認
1
0
1
𝑥!, 𝑥&quot; = 0,0 ⟹ −0.5×0 − 0.5×0 + 0.7 = 0.7 &gt; 0 ⟹ 𝑦 = 1
0
1
1
1
1
0
𝑥!, 𝑥&quot; = 1,0 ⟹ −0.5×1 − 0.5×0 + 0.7 = 0.2 &gt; 0 ⟹ 𝑦 = 1
𝑥!, 𝑥&quot; = 0,1 ⟹ −0.5×0 − 0.5×1 + 0.7 = 0.2 &gt; 0 ⟹ 𝑦 = 1
𝑥!, 𝑥&quot; = 1,1 ⟹ −0.5×1 − 0.5×1 + 0.7 = −0.3 ≤ 0 ⟹ 𝑦 = 0
このような出力をする関数を
パーセプトロンで表現したい
このパラメータでNANDゲートが実現できた！
10


# Page. 12

![Page Image](https://bcdn.docswell.com/page/87DL6K6KEG.jpg)

他のゲートへの応用（NAND, OR）
AND、NAND、ORゲートは、同じパーセプトロンの構造のまま、パラメータ（重みとバイアス）を変えるだけで実現可
ORゲート
パラメータ設定例
2つの入力が「両方とも0」の時だけ出力が0になる
𝑤! = 0.5, 𝑤&quot; = 0.5, 𝑏 = −0.2 として試す。
𝑼
𝑨
𝑩
𝒙𝟏
0
𝒙𝟐
0
𝒚
0
計算確認
1
0
1
𝑥!, 𝑥&quot; = 0,0 ⟹ 0.5×0 + 0.5×0 − 0.2 = −0.2 ≤ 0 ⟹ 𝑦 = 0
0
1
1
1
1
1
𝑥!, 𝑥&quot; = 1,0 ⟹ 0.5×1 + 0.5×0 − 0.2 = 0.3 &gt; 0 ⟹ 𝑦 = 1
𝑥!, 𝑥&quot; = 0,1 ⟹ 0.5×0 + 0.5×1 − 0.2 = 0.3 &gt; 0 ⟹ 𝑦 = 1
𝑥!, 𝑥&quot; = 1,1 ⟹ 0.5×1 + 0.5×1 − 0.2 = 0.8 &gt; 0 ⟹ 𝑦 = 1
このような出力をする関数を
パーセプトロンで表現したい
このパラメータでORゲートが実現できた！
11


# Page. 13

![Page Image](https://bcdn.docswell.com/page/VJP2YKY3J8.jpg)

まとめ
パーセプトロンは、パラメータを変えるだけで様々な動作を実現できる、ニューラルネットワークに通じる基本の考え方
パーセプトロンとは
•
入力に「重み」付けして合計し、「バイアス」と比較 (基準は0) して出力を決める。
•
（本質的には、データを直線で2つに分ける線形分類器）
•
（神経細胞の単純なモデル化）
重要なポイント
•
構造が同じでも パラメータ（𝒘, 𝒃）を変える だけで、振る舞い（AND, NAND, OR）を変えられる！
•
「適切なパラメータを見つける」こと（＝学習）が非常に重要。
限界
•
単純なパーセプトロンは 線形分離可能な問題 しか解けない→この限界を超えるために 多層パーセプトロン へと発展
12


