퍼셉트론,perceptron

x1과 x2: 입력 신호
w1과 w2: 가중치(=가중값,weight)
y: 출력 신호
θ: 임계값

입력이 뉴런에 보내질 땐 각각 고유한 가중치가 곱해진다. (w1x1, w2x2)
뉴런에서 보내온 신호의 총합이 정해진 한계(임계값)을 넘어설 때만 1을 출력함.

$y=\begin{cases}0&(w_1x_1+w_2x_2\le \theta)\\1&(w_1x_1+w_2x_2>\theta)\end{cases}$

θ를 -b로 치환
b: 편향(bias)
$y=\begin{cases}0&(b+w_1x_1+w_2x_2\le 0)\\1&(b+w_1x_1+w_2x_2>0)\end{cases}$

Python Impl

def AND(x1, x2):
    w1, w2, theta = .5, .5, .7 # 가능한 값은 수없이 많음
    tmp = x1*w1 + x2*w2
    if tmp <= theta:
        return 0
    elif tmp > theta:
        return 1

print(AND(0,0),AND(1,0),AND(0,1),AND(1,1))
# 0 0 0 1 출력됨

def NAND(x1, x2):
    w1, w2, theta = -0.5, -0.5, -0.7
    if x1*w1 + x2*w2 <= theta:
        return 0
    else:
        return 1

print(NAND(0,0),NAND(0,1),NAND(1,0),NAND(1,1))
# 1 1 1 0 출력됨

def OR(x1, x2):
    w1, w2, theta = 0.5, 0.5, 0.1 # 책에 연습해보라고 나와 있어서 내가 고안
    if x1*w1 + x2*w2 <= theta:
        return 0
    else:
        return 1

print(OR(0,0),OR(0,1),OR(1,0),OR(1,1))
# 0 1 1 1 출력됨

# XOR은 단층 퍼셉트론으로는 구현 불가, 다층 퍼셉트론(multi-layer perceptron)을 만들어야 함, 다음과 같이.
def XOR(x1, x2):
    s1 = NAND(x1, x2)
    s2 = OR(x1, x2)
    y = AND(s1, s2)
    return y

print(XOR(0,0),XOR(0,1),XOR(1,0),XOR(1,1))
# 0 1 1 0 출력됨


mklink

단층퍼셉트론 single-layer_perceptron (SLP)
https://everything2.com/title/Single-Layer Perceptron
입력층input_layer과 출력층output_layer으로 구성
그 외의 layer는 없는? chk
XOR문제,XOR_problem 해결이 불가능한? chk
이렇게 weight를 주면 not and or 게이트를 만들 수 있다, 그런데 xor 게이트는 만들수 없다 ..... [1]
https://i.imgur.com/yNxVgjh.png


다층퍼셉트론,multi-layer_perceptron,MLP
다층퍼셉트론 multi-layer_perceptron (MLP)
input layer와 output layer 사이의 모든 layers는 hidden layer? chk
hidden layer는 한 개 이상? chk
출력층에서 입력층 방향으로 역방향 학습이 일어나는 것이 역전파,backpropagation?
XOR문제,XOR_problem 해결이 가능해진? chk

https://everything2.com/title/Multi-Layer Perceptron
multi-layered perceptron model
WpKo:다층_퍼셉트론
WpEn:Multilayer_perceptron

threshold_function

활성화함수,activation_function
퍼셉트론의 출력 값을 결정하는 비선형함수?

//wpen
이진분류기,binary_classifier(이진분류,binary_classification기) 의 지도학습,supervised_learning 알고리듬.

//wpko
feedforward_network feedforward_neural_network
XOR_problem
해결법이 다층퍼셉트론? - Yes. 단층 퍼셉트론으로는 XOR 연산이 불가능하지만, 다층 퍼셉트론으로는 가능.

로지스틱회귀,logistic_regression model과 perceptron model의 유사성, 등장한 시간순서, 비교, .... 필요. TBW

역사

Frank Rosenblatt가 1957년 고안

책: Perceptrons (1969) ... WpEn:Perceptrons_(book)

[ISBN-0262631113] Perceptrons: An Introduction to Computational Geometry, Expanded Edition Expanded, Subsequent Edition / 1987
Marvin_Minsky and Seymour_Papert
계산기하학,computational_geometry

Excerpts

from 마스터 알고리즘

퍼셉트론에서 가중치(가중값,weight)의 양수값은 흥분성 연결excitatory connection을 나타내고 가중치의 음수값은 억제성 연결inhibitory connection을 나타낸다. 퍼셉트론은 입력들의 가중치 합(가중합,weighted_sum)을 넘으면 1을 출력하고 넘지 않으면 0을 출력한다. (boolean-valued_function) 우리는 가중치와 한계값을 조절함으로써 퍼셉트론이 수행하는 기능을 바꿀 수 있다. ...... 신경세포 몸체는 가중치가 적용된 입력들을 모두 더하고 축색돌기는 더한 입력에 대해 계단함수,step_function를 적용한다. ..... (단점) 퍼셉트론은 선형경계,linear_boundary(경계,boundary)만 학습할 수 있기 때문에 배타적 논리합(XOR)은 배울 수 없다.

tmp

퍼셉트론: 인공지능의 시작 https://horizon.kias.re.kr/17443/ (시리즈 #1)
{
인지(perception)의 기본요소, hence the name.
활성화함수,activation_function 설명:
두 입력 신호 $(x_1,x_2)$ 가 있을 때
$y=f(w_1 x_1 + w_2 x_2 - b)$
가중치를 적용하고 더한(가중값,weight 적용) $w_1 x_1 + w_2 x_2$
어떤 역치,threshold $b$ 보다 크면:
활성화된 출력 $y=1$ 을 넘겨주고,
그렇지 않으면:
비활성화된 출력 $y=0$ 을 넘겨줌.
이를 결정하는 함수 $f(s)$활성화함수,activation_function라 부름.
가장 유명한 활성화함수는
$f(s)=\frac{1}{1+\exp(-s)}$
시그모이드함수,sigmoid_function.
매개변수를 최적화하는 작업이 학습,learning.
xor 문제.
직선,line $w_1x_1+w_2x_2-b=0$ 을 생각하면, 퍼셉트론은 이 직선을 경계,boundary로 공간?세상? 을 나누는... 즉 2D 공간을 나누는 1D 직선으로 해석 가능. 입력이 2차원 이상인 n차원 초공간,hyperspace에서 퍼셉트론은 (n-1)차원 초평면,hyperplane에 해당. (geometric_interpretation)
xor문제는 숨은층hidden_layer으로 해결 가능.
보편적 어림정리 Universal Approximation Theorem : 충분히 많은 뉴런들로 구성된 숨은층을 가진 신경망,neural_network은 임의의 입력 x와 출력 y사이의 함수관계 y=f(x)를 표현할 수 있다
: 임의의 입력 x와 출력 y 사이의 관계를 표현할 수 있는 신경망이 반드시 존재함을 보장. George Cybenko가 증명. (1989)
//여기선 근사,approximation를 어림으로 번역
이 정리는 신경망이 존재함을 보장하지만 구체적인 숨은 뉴런의 수와 매개변수 등을 알려주지는 않음.
//이건 보니 최적의 매개변수를 즉 매개변수의 최적값을 찾는 최적화,optimization 문제
다차원 입출력 사이의 관계를 다루는 문제는 간단하지 않음 - 오차역전파,error_backpropagation { 오차역전파 알고리즘 1986년 Nature. 데이비드 러멜하트David Rumelhart, 제프리 힌튼Geoffrey Hinton, 로날드 윌리엄스Ronald Willams } 알고리즘으로 해결. 오차(loss)(손실함수,loss_function?)를 정의하고 기울기하강,gradient_descent법으로 매개변수를 계산/갱신. 연쇄법칙,chain_rule 등장.
활성화함수 sigmoid의 한계 - 대안은 ReLU.
확률적기울기하강,stochastic_gradient_descent(SGD).
다음시간엔 생성모형,generative_model.
}




Ref: Deep Learning from Scratch

LinkThese:
인공신경망,artificial_neural_network,ANN
퍼셉트론은 ANN의 구성요소/구성단위.
뉴런,neuron
노드,node
계층,layer
"(퍼셉트론은) 가장 간단한 형태의 피드포워드(Feedforward) 네트워크, 선형분류기로도 볼 수 있다" // 선형분류기,linear_classifier (feedforward_network? feedforward_neural_network?)