밑바닥부터 시작하는 딥러닝 Chapter 2
Repeat is the best medicine for memory.
퍼셉트론 (Perceptron)
퍼셉트론은 깊은 신경망, 즉, 딥러닝의 기원이 되는 알고리즘이다. 퍼셉트론의 구조와 흐름을 통해 깊은 신경망(딥러닝)의 Flow를 이해할 수 있고 다양한 variation도 이해할 수 있다.
퍼셉트론은 다수의 신호를 입력으로 받아 하나의 신호를 출력하는 노드(뉴런)를 말한다.
퍼셉트론을 떠올리면 우리 뇌의 가장 작은 전달 구조인 뉴런 또는 전기전자학에서의 노드가 생각이 난다. 이런 예처럼 퍼셉트론은 어떤 값을 받아 그 값들의 합과 곱이 일정 임계값을 넘는다면 +(positive) 신호를, 그렇지 않다면 -(negative) 신호를 내보낼 것이다. 또는 뉴런의 관점에서는 임계값이 넘을 때만 신호를 보내고 넘지 않는다면 신호 자체를 내보내지 않을 수도 있겠다.
위 그림은 퍼셉트론의 수식이다. 가중치에 해당하는 w1, w2와 임계값 θ (theta)에 의해 신호(1, 0)가 결정된다.
AND 게이트
AND, NAND, OR 게이트는 퍼셉트론의 단순한 논리 회로 게이트이다.
각각의 게이트는 x1과 x2의 입력에 의해 출력 y가 나오는 진리표가 존재한다.
AND 게이트는 x1과 x2 모두 1일 때만 1인 출력이 나오는 게이트이다. 이외의 입력은 모두 0 출력.
NAND, OR 게이트
NAND 게이트는 NOT AND 게이트로 AND 게이트의 출력을 모두 반대로 내뱉는 게이트이다.
즉, x1과 x2가 모두 1일 때만 0을 출력하고 이외 모든 입력은 1을 출력하는 게이트이다.
OR 게이트는 x1과 x2 둘 중에 하나만 1이더라도 1을 출력하는 게이트이다.
즉, x1과 x2 모두 0일 때만 0을 출력하고 이외 모든 입력에서는 1을 출력한다.
XOR 게이트
이번에는 XOR이라는 논리 연산에 대해 알아보자.
XOR은 배타적 논리합이라는 논리로 x1과 x2 둘 중 하나만 1일 때, 1을 출력하고 x1과 x2가 같다면 0을 출력한다.
즉, 아래와 같은 논리표를 가진다.
그렇다면 x1(A), x2(B)를 통해 y(C)를 출력하려면 어떤 매개변수를 가져야 할까?
답은 'AND, NAND, OR 게이트를 설명할 수 있었던 매개변수 방식으로는 불가능하다' 이다.
위와 같이 XOR논리는 선형으로 해결할 수 없다.
하지만 지금까지의 퍼셉트론은 항상 선형에 대한 문제만 해결했기 때문에 이런 한계가 존재한다.
이것이 단층 퍼셉트론의 한계이다.
이 문제를 해결하기 위해서는 위 그림처럼 XOR을 설명할 수 있는 비선형 함수가 필요하다.
그렇게 제안된 방법이 바로 다층 퍼셉트론이다.
다층 퍼셉트론
XOR 게이트의 논리를 단층 퍼셉트론으로 설명할 수 없는 문제가 있었는데, 이를 기존의 게이트들을 조합하는 방식으로 XOR 게이트를 설명할 수 있다.
위 그림처럼 NAND 게이트와 OR 게이트에서 동일한 입력을 받고, 그 입력으로 나온 출력을 AND 게이트에 넣어주면 XOR 게이트를 만들 수 있다.
위 진리표처럼 x1과 x2의 값을 받아 NAND 게이트는 s1, OR 게이트는 s2라는 출력을 내뱉고 이 s1, s2를 입력으로 하는 AND 게이트에서 XOR과 같은 출력을 볼 수 있다.
즉, x1, x2를 넣어 XOR 논리를 만족하는 출력을 얻을 수 있는 것이다.
결국 게이트의 조합은 위 다층 퍼셉트론 구조를 만족하도록 설계된 것이다.
이렇게 단층 퍼셉트론은 선형적인 영역만을 표현할 수 있지만 다층 퍼셉트론은 비선형적인 영역도 표현할 수 있다.
정리
- 매개변수 w1, w2는 입력 신호를 얼마나 크게 적용할 것인지 결정 (중요도)
- θ는 편향으로 얼마나 쉽고 또는 어렵게 임계값을 넘게 할 것인지 결정 (활성화의 어려움 정도 결정)
- 다층 퍼셉트론으로 XOR 논리 영역을 표현할 수 있다.
- 이는 단층 퍼셉트론(NAND, OR, AND)의 조합으로 표현하는 것과 같다.
Reference
https://amber-chaeeunk.tistory.com/3
딥러닝) 다층 퍼셉트론
1. 다층 퍼셉트론 단층 퍼셉트론으로는 XOR게이트를 표현할 수 없다. 즉 단층 퍼셉트론으로는 비선형 영역을 분리할 수 없다. 그러나 퍼셉트론의 층을 쌓아 다층 퍼셉트론(multi-layer perceptron)을 만
amber-chaeeunk.tistory.com
https://godcode.tistory.com/12
퍼셉트론
이 글은 [밑바닥부터 시작하는 딥러닝]을 읽고 정리한 글이다. 1. 퍼셉트론(Perceptron)이란? 퍼셉트론은 다수의 신호를 입력으로 받아 하나의 신호로 출력한다. 이 그래프에서 각 x는 입력 신호, y는
godcode.tistory.com