https://youtu.be/O0DpGt2KbCI

위 영상을 참고하여 작성

 

퍼셉트론

: 다수의 입력을 받으면 하나의 결과를 내보내는 알고리즘으로 구성 (0 or 1로 출력)

 

딥러닝의 기본 아이디어 - 퍼셉트론

- x : 입력 값

- w : 가중치 ; 해당 입력값의 중요도

- b : 편향 ; 결과값을 얼마나 쉽게 활성화 할 지, 얼마나 쉽게 1을 출력할 것인지를 돕기 위한 값

 

활성화 함수 (계단 함수)

if wx+b > 0:
  return 1
else:
  return 0

 

AND, OR, NOT 논리게이트로 만든 덧셈 계산기

 

퍼셉트론 구현하기 by 퍼셉트론

w1=1
w2=1
b=1

def perceptron(x1, x2):
    y=w1*x1+w2*x2+b
    if y>0:
        return 1
    else:
        return 0

for x1, x2 in [(0,0), (0,1), (1,0), (1,1)]:
    print("입력 : ", x1,",", x2, ' 출력 : ', perceptron(x1, x2))

 

가중치 바꿔서 AND, OR 게이트 구현하기

- AND 게이트

 

- OR 게이트

 

 

단일 퍼셉트론의 XOR 문제

XOR : 같으면 0, 다르면 1 출력

-> 직선으로 이을 수 없음 => 다층 퍼셉트론 으로 해결

 

다층 퍼셉트론 (MLP)

2층, 3개로 구현한 XOR 게이트

def p1(x1, x2):
    w1=1
    w2=1
    b=0
    y=w1*x1+w2*x2+b
    if y>0:
        return 1
    else:
        return 0

def p2(x1, x2):
    w1=1
    w2=1
    b=-1
    y=w1*x1+w2*x2+b
    if y>0:
        return 1
    else:
        return 0

def p3(x1, x2):
    w1=1
    w2=-2
    b=0
    y=w1*x1+w2*x2+b
    if y>0:
        return 1
    else:
        return 0

for x1, x2 in [(0,0), (0,1), (1,0), (1,1)]:
    print("입력 : ", x1,",", x2, ' 출력 : ', p3(p1(x1, x2), p2(x1, x2)))

 

퍼셉트론의 한계

- 가중치를 자동화하여 업데이트 할 수 있는 방법이 없다.

 

+ Recent posts