[밑시딥] 2. 퍼셉트론

PurinYun·2023년 12월 6일
0

AIffel

목록 보기
46/75

퍼셉트론(perceptron)

: 신경망(딥러닝)의 기원이 되는 알고리즘.
퍼셉트론의 구조를 배우는 것은 신경망과 딥러닝으로 나아가는데 중요한 아이디어를 배우는 일

: 다수의 신호 input, 하나의 신호로 output

1. 입력이 2개인 퍼셉트론

: 0/1 두 가지 값만을 가짐

X1, X2는 입력신호, Y는 출력신호, W1, W2는 가중치.

그림의 원은 뉴런(노드). 입력 신호가 뉴런에 보내질 때는 각각 고유한 가중치가 곱해진다(W1X1, W2X2).
뉴런에서 보내온 신호의 총합이 정해진 한계를 넘어설 때만 1을 출력(이를 ‘뉴런이 활성화한다’라고 표현).
한계를 임계값(세타) 이라 하고 기호로 나타낸다.

퍼셉트론은 복수의 입력신호 각각에 고유한 가중치를 부여한다.
가중치는 각 신호가 결과에 주는 영향력을 조절하는 요소로 작용.
가중치가 클수록 해당 신호가 그만큼 더 중요하다.

저항과 가중치는 신호를 통제한다는 점에서 같은 기능을 한다.

2. 단순한 논리 회로

딥러닝에서 "게이트(gate)"는 주로 순환 신경망(RNN)이나 장기 단기 메모리(Long Short-Term Memory, LSTM)와 같은 네트워크 구조에서 사용되는 요소입니다. 게이트는 입력 데이터의 흐름을 제어하고 조절하여 네트워크가 어떤 정보를 기억하거나 무시할지를 결정합니다.

일반적으로 게이트는 시그모이드 함수와 같은 활성화 함수를 사용하여 0과 1 사이의 값을 출력합니다. 이 출력값은 입력 데이터에 대한 중요성을 나타내며, 게이트가 이를 통해 정보의 흐름을 제어합니다.

곡선 표현의 원리

여러 직선의 결합: 단층 퍼셉트론은 단일 직선으로 데이터를 분리합니다. 하지만 다층 퍼셉트론에서는 여러 퍼셉트론이 각각 다른 직선을 학습합니다.
직선의 조합으로 곡선 형성: 이러한 여러 직선들이 층을 이루면서 복잡한 형태, 즉 곡선을 형성할 수 있습니다.

AND 게이트

: 입력이 둘이고 출력은 하나.
두 입력이 모두 1일 때만 1을 출력, 나머지는 0 출력

NAND 게이트

: Not AND. AND의 출력을 뒤집은 것.
모두 1일때만 0, 나머지는 0 출력.

퍼셉트론 : (-0.5, -0.5, -0.7). AND의 부호 반전.

OR 게이트

: 입력 신호 중 하나 이상이 1이면 출력이 1이 되는 논리 회로.

퍼셉트론의 구조는 AND, NAND, OR 게이트 모두에서 같다. 다른 것은 매개변수(가중치, 임계값)의 값이어서
퍼셉트론의 매개변수의 값만 적절히 조정하면 AND, NAND, OR로 변신할 수 가 있는것이다.

3. 퍼셉트론 구현

간단한 구현

b: 편향 / w1, w2는 가중치 / theta: 임계값(세타)

퍼셉트론은 입력신호에 가중치를 곱한 값과 편향을 합하여 그 값이 0을 넘으면 1을 출력하고 그렇지 않으면 0을 출력한다.

# AND 게이트 구현 : 가중치(w와 b)를 다음과 같이 구현할 수 있다.
def AND2(x1, x2):
    x=np.array([x1, x2])
    w=np.array([0.5, 0.5])
    b=-0.7
    tmp=np.sum(w*x)+b
    if tmp<=0:
        return 0
    else:
        return 1


# NAND 게이트 구현   * AND 게이트와 가중치(w와 b)만 다르다!
def NAND(x1, x2):
    x=np.array([x1, x2])
    w=np.array([-0.5, -0.5])
    b=0.7
    tmp=np.sum(w*x)+b
    if tmp<=0:
        return 0
    else:
        return 1
    
 
 # OR 게이트 구현   * AND 게이트와 가중치(w와 b)만 다르다!
def OR(x1, x2):
    x=np.array([x1, x2])
    w=np.array([0.5, 0.5])
    b=-0.2
    tmp=np.sum(w*x)+b
    if tmp<=0:
        return 0
    else:
        return 1
        
        
# XOR 게이트 구현    
 def XOR(x1, x2):
    s1 = NAND(x1, x2)
    s2 = OR(x1, x2)
    y = AND(s1, s2)
    return y       
        
print(XOR(0, 0)) # 0을 출력
print(XOR(1, 0)) # 1을 출력
print(XOR(0, 1)) # 1을 출력
print(XOR(1, 1)) # 0을 출력        
        
        
        

가중치, 편향 구현

가중치(w)는 각 입력 신호가 결과에 주는 영향력(중요도)를 조절하는 매개변수

편향(b)은 뉴런이 얼마나 쉽게 활성화(결과로 1을 출력)하느냐를 조정하는 매개변수

단, 문맥에 따라 모두 '가중치'라고 할 때도 있다...

퍼셉트론의 한계

퍼셉트론은 직선 하나로 나눈 영역만 표현할 수 있다.
(곡선 표현 불가)
따라서 퍼셉트론으로는 XOR 게이트 표현 불가

XOR 게이트 (배타적 논리합)

x1, x2 중 하나만 1일 때만 1을 출력한다.

퍼셉트론의 한계를 해결하기 위해

기존 게이트 조합하기

: 즉, 단층에서 다층 퍼셉트론으로 변환

기존의 AND, NAND, OR 게이트를 조합하여 XOR 게이트를 구현하기

XOR게이트 구현하기

XOR은 다층 구조의 네트워크, 0층에서 1층으로 신호가 전달, 이어서 1층에서 2층으로 신호가 전달.

① 0층의 두 뉴런이 입력 신호를 받아 1층의 뉴런으로 신호를 보낸다.

② 1층의 뉴런이 2층의 뉴런으로 신호를 보내고, 2층의 뉴런은 이 입력 신호를 바탕으로 Y를 출력

이렇게 단층 퍼셉트론으로는 표현하지 못한 것을 2층 구조의 퍼셉트론을 사용해 XOR 게이트를 구현 가능

퍼셉트론의 학습 방법

새 연결강도 = 현 연결강도 + 현 입력값오차학습률

Summary

퍼셉트론은 (정해진 규칙에 따라) 입출력을 갖춘 알고리즘
퍼셉트론의 매개변수는 가중치, 편향
퍼셉트론으로 AND, OR 게이트 등의 논리 회로 표현 가능
단, XOR 게이트는 단층 퍼셉트론으로 표현 불가하여 2층 퍼셉트론 사용
단층 퍼셉트론으로는 직선형 영역만 표현가능하므로.
(다층 퍼셉트론은 비선형 영역 표현가능)

단순 퍼셉트론

(Simple Perceptron):

단순 퍼셉트론은 선형 분리 가능한 문제를 해결할 때 주로 사용됩니다. 즉, 입력값들을 하나의 선으로 나눌 수 있는 문제에 적합합니다.
예를 들어, AND, OR, NAND와 같은 간단한 논리 회로 문제를 해결하는 데 사용될 수 있습니다.

하지만 단순 퍼셉트론은 XOR와 같은 비선형적으로 분리되는 문제를 해결하는 데에는 적합하지 않습니다.

다층 퍼셉트론

(Multi-Layer Perceptron, MLP):

다층 퍼셉트론은 단순 퍼셉트론의 한계를 극복하기 위해 고안되었습니다. 비선형적으로 분리되는 문제나 복잡한 패턴을 가진 문제를 해결할 때 주로 사용됩니다.
여러 개의 은닉층을 포함하여 깊은 신경망을 구성할 수 있어, 비선형성을 갖춘 복잡한 함수를 근사(approximate)하는 데에 유용합니다.
이미지 인식, 음성 인식, 자연어 처리와 같은 복잡한 문제를 다루는 데에 주로 사용됩니다.

일반적으로, 단순 퍼셉트론은 단순하고 선형적인 문제를 다루는 데에 사용되며, 다층 퍼셉트론은 비선형적이고 복잡한 문제를 다루는 데에 사용됩니다. 다층 퍼셉트론은 보다 복잡한 데이터 패턴을 학습할 수 있기 때문에, 신경망 모델의 발전과 함께 많은 실제 문제에 적용되고 있습니다.

Quiz

  1. 퍼셉트론은 하나의 신호를 입력받아 하나의 신호를 출력하게 되는데
    이 신호는 흐른다/안 흐른다와 같은 1이나 0의 두 가지 값을 가진다. (O/X)

X, 다수의 신호를 입력받는다

  1. 퍼셉트론은 복수의 입력신호에 일정한 가중치를 부여한다. (O/X)

퍼셉트론에서 복수의 입력 신호가 뉴런에 보내질 때는 각각에 고유한 가중치를 부여한다.
가중치는 각 신호가 결과에 주는 영향력을 조절하는 요소로 작용하며
가중치가 클수록 해당 신호가 그만큼 더 중요하다는 것을 의미한다.

  1. 이 때, 뉴런에서 보내온 신호의 총합이 정해진 한계를 넘어설 때만 1을 출력하게 되는데
    그 한계를 무엇이라고 하는가?

임계값(세타): 뉴런이 활성화되기 시작하는 지점

  1. 입력 데이터의 흐름을 제어하고 조절하여 네트워크가 어떤 정보를 기억하거나 무시할지를 결정하는 요소는 무엇이라고 하는가?

게이트(gate),
딥러닝에서 "게이트(gate)"는 주로 순환 신경망(RNN)이나 장기 단기 메모리(Long Short-Term Memory, LSTM)와 같은 네트워크 구조에서 사용되는 요소

  1. 입력 신호 중 하나 이상이 1이면 출력이 1이 되는 논리 회로 게이트는?

OR 게이트

  1. 퍼셉트론의 '이것'을 적절히 조정하면 AND, NAND, OR 게이트로 만들 수가 있다. '이것'은 무엇인가?

매개변수,
퍼셉트론의 매개변수(가중치, 임계값),
퍼셉트론의 구조는 AND, NAND, OR 게이트 모두에서 같으나 매개변수(가중치, 임계값)의 값이달라서 퍼셉트론의 매개변수의 값만 적절히 조정하면 AND, NAND, OR로 변신할 수 가 있습니다.

  1. '배타적 논리합' 이라는 논리 회로를 뜻하는 ___ 게이트는 무엇인가?

XOR 게이트, 2층 퍼셉트론

  1. 이 게이트에서 출력값이 1이 나오기 위한 조건을 말해보세요.

X1 이나 X2 둘 중 한 쪽이 1일 때만 1이 출력된다.

  1. 입력 신호가 결과에 주는 영향력을 조절하는 매개변수는?

가중치(W1, W2..)

  1. 뉴런이 얼마나 쉽게 활성화 하느냐를 조정하는 매개변수는?

편향 (b)
뉴런이 활성화 한다는 뜻은 임계점(세타)을 넘어 1로 출력하는 것

  1. b가 -20 이면 각 입력 신호에 가중치를 곱한 값들의 합이 어떤 숫자를 넘지 않으면
    뉴런이 활성화되지 않을까요?

20

단층 퍼셉트론은 구조상 은닉층이 존재할 수 없는데, 다층 퍼셉트론은 구조상 뉴런이 많아지니까 은닉층을 만들 수 있다.

profile
Fantivation

0개의 댓글