퍼셉트론
퍼셉트론(perceptron) 알고리즘은 신경망(딥러닝)의 기원이 되는 알고리즘입니다.
퍼셉트론은 다수의 신호를 입력받고 하나의 신호를 출력하는 구조입니다. (적어도 하나의 output을 출력합니다.)
퍼셉트론은 신호가 흐른다 또는 흐르지 않는다. (각각 1과 0)의 두가지 값을 가집니다.
그림은 입력으로 2개의 신호를 받는 퍼셉트론입니다.
x1, x2는 입력 신호, w1, w2는 가중치 y는 출력 신호입니다.
원은 뉴런 혹은 노드라고 부릅니다.
신호가 다음 노드로 보내질 때는 각각 고유한 가중치가 곱해집니다.
위의 예시에서는 y = w1x1 + w2x2로 나타낼 수 있으며 신호의 총합이 정해진 임계값을 넘으면 1을 출력합니다.
이때 임계값은 theta 또는 T로 주로 표시합니다.
퍼셉트론의 동작 원리를 수식으로 나타내면 아래와 같습니다.
가중치는 각 신호가 결과에 주는 영향력을 조절하는 요소로 작용하기에, 가중치가 클수록 해당 신호가 더 중요하다고 생각할 수 있습니다.
위의 수식에서 theta를 -b로 치환하면 아래의 수식처럼 표현할 수 있습니다.
여기에서 b를 편향(bias) 라고 합니다. 이 식을 해석하면, 퍼셉트론은 입력 신호에 가중치를 곱한 값과 편향을 합해, 그 값이 0 을 넘으면 1을 출력하고 그렇지 않으면 0 을 출력합니다.
편향은 뉴런(노드)이 얼마나 쉽게 활성화(1을 출력) 하느냐를 조정하는 매개변수로 볼 수 있습니다.
논리회로
AND 게이트
AND 게이트는 입력이 둘이고 출력이 하나인 퍼셉트론으로 나타낼 수 있는 예시입니다.
AND게이트는 두 입력이 모두 1일 때만 1을 출력하고, 그 외에는 0을 출력합니다.
이러한 AND의 조건을 충족하는 매개변수 (w1, w2, theta)의 조합은 무한히 많습니다.
즉, 조건을 충족하는 퍼셉트론은 무한히 많습니다.
NAND 게이트
NAND 게이트는 Not AND를 의미하는 게이트입니다. 즉 입력이 모두 1일 때만 0을 출력하고, 그 외에는 1을 출력합니다.
NAND의 조건을 충족하는 매개변수 (w1, w2, theta)의 조합 또한 무한히 많습니다.
OR 게이트
OR 게이트는 입력 신호 중 하나 이상이 1이면 출력이 1이 되는 논리 회로입니다.
퍼셉트론으로 AND, OR, NAND 게이트를 표현할 수 있음을 확인했습니다.
중요한 점은 퍼셉트론의 구조는 AND, OR, NAND에서 항상 같았고, 매개변수(가중치, 임계값)의 값만 다르다는 것 입니다.
결국 이게 앞으로 딥러닝을 통해 해결할 문제의 주 내용 (매개변수 값 갱신) 입니다.
퍼셉트론의 한계
앞에서 확인한 퍼셉트론은 '단층 퍼셉트론' 이었습니다. AND, NAND, OR 게이트를 구현하는 데는 문제가 없었지만 앞으로 볼 XOR게이트는 구현할 수 없습니다. (퍼셉트론의 한계라는 말은 단층 퍼셉트론의 한계를 말합니다.)
앞의 게이트들은 이렇게 직선으로 나눈 두 영역으로 표현 가능했습니다.
예시로 위 그림에서 붉은 선 아래의 영역은 0, 위의 영역은 1을 출력하도록 나눈다면 (1,1) 즉 입력이 모두 1일 때만 1을 출력하는 AND 게이트로 생각할 수 있습니다.
마찬가지로 선을 어떻게 그리느냐에 따라 OR, NAND 게이트도 표현이 가능합니다.
XOR 게이트
XOR 게이트는 입력 신호 중 하나만 1일 때, 1을 출력합니다.
이런 XOR 게이트는 위처럼 직선으로 영역을 나눠 표현할 수 없습니다. 따라서 우리는 '직선'이라는 제한을 깨야합니다.
위 그림과 같이 '비선형' 영역으로 표현하면 XOR게이트를 구현할 수 있습니다.
다층 퍼셉트론
단층 퍼셉트론만으로는 XOR 게이트를 표현할 수 없었습니다. 층을 쌓아 다층 퍼셉트론 (multi-layer-perceptron)을 만들어 XOR을 구현할 수 있습니다.
XOR 게이트는 NAND 게이트의 출력과, OR 게이트의 출력을 AND 게이트의 입력으로 사용하면 구현할 수 있습니다.
위 진리표에서, s1은 NAND 게이트의 출력, s2는 OR 게이트의 출력으로 볼 수 있고 s1과 s2를 입력으로 AND게이트의 출력을 나타내면 y와 같습니다.
XOR의 퍼셉트론으로 표현하면 위 그림과 같습니다.
이처럼 층이 여러개인 퍼셉트론을 다층 퍼셉트론이라고 합니다.
우리는 이번 내용에서 층을 쌓아 더 다양한 것을 표현할 수 있음을 확인했습니다.
읽어주셔서 감사합니다 ^^
[참고자료]
[1] 밑바닥부터 시작하는 딥러닝1 (사이토 고키)
[2] https://deep-learning-study.tistory.com/8?category=942011
[3] https://eehoeskrap.tistory.com/137?category=618276
'머신러닝, 딥러닝 ML, DL > 이론' 카테고리의 다른 글
[Deep Learning] 6. 경사 하강법, 기울기 (2) | 2021.08.04 |
---|---|
[Deep Learning] 5. 배치, 미니배치, 수치 미분, 기울기 (0) | 2021.08.04 |
[Deep Learning] 4.신경망 학습, 손실 함수(오차제곱합, 교차 엔트로피 오차) (2) | 2021.07.28 |
[Deep Learning] 3. 출력층의 소프트맥스 함수(Softmax), 항등 함수 (0) | 2021.07.25 |
[Deep Learning] 2. 신경망, 활성화 함수(시그모이드 Sigmoid, 렐루 Relu) (2) | 2021.07.24 |