해당 포스팅은 '밑바닥부터 시작하는 딥러닝1'을 공부하고 정리, 요약한 글입니다. 모든 내용은 해당 도서 기준입니다.
◾ 2.1 퍼셉트론
퍼셉트론은 다수의 신호를 입력으로 받아 하나의 신호를 출력한다. 여기서는 1을 신호가 흐르는 것으로, 0을 신호가 흐르지 않는 것으로 사용한다.
그림 2-1은 입력으로 2개의 신호를 받은 퍼셉트론의 예이다. x1과 x2는 입력 신호, y는 출력 신호, w1과 w2는 가중치를 의미한다. 그림에서 원을 뉴런 혹은 노드라고 부른다.
입력 신호가 뉴런에 보내질 때는 각각의 고유한 가중치가 곱해진다. 뉴런에서 보내온 신호의 총합이 정해진 한계(임계값, θ)를 넘어설 때만 1을 출력하며 이를 뉴런이 활성화한다 라고 표현하기도 한다.
이를 수식으로 나타내면 식 2.1과 같다.
퍼셉트론은 복수의 입력 신호 각각에 고유한 가중치를 부여하며 가중치는 각 신호가 결과에 주는 영향력을 조절하는 요소로 작용한다. 즉, 가중치가 클수록 해당 신호가 그만큼 더 중요함을 의미한다.
◾ 2.2 단순한 논리 회로
▪️ AND 게이트
AND 게이트는 입력이 둘이고 출력은 하나이다. 두 입력이 모두 1일 때만 1을 출력하고, 그 외에는 0을 출력한다.
▪️ NAND 게이트
NAND는 Not AND를 의미하며 AND 게이트의 출력을 뒤집은 동작을 하게 된다. 두 입력이 모두 1일 때만 0을 출력하고 그 외에는 1을 출력한다.
▪️ OR 게이트
OR 게이트는 입력 신호 중 하나 이상이 1이면 출력이 1이 되는 논리 회로 이다.
◾ 2.3 퍼셉트론 구현하기
▪️ 간단한 구현 (AND 게이트)
매개변수 w1, w2, theta는 함수 안에서 초기화하고 가중치를 곱한 입력의 총합이 임계값을 넘으면 1을 반환하고 그 외에는 0을 반환한다.
▪️ 가중치와 편향 도입
식 2.1의 θ를 -b로 치환하면 퍼셉트론의 동작이 식 2.2처럼 되며, 여기서 b를 편향(bias)라고 한다.
식 2.2를 해석하면, 퍼셉트론은 입력 신호에 가중치를 곱한 값과 편향을 합하여 그 값이 0을 넘으면 1을 출력하고 그렇지 않으면 0을 출력한다.
넘파이를 사용해서 식 2.2를 구현하면 아래와 같다.
▪️ 가중치와 편향 구현하기
가중치와 편향을 도입한 AND 게이트는 다음과 같이 구현할 수 있다.
NAND 게이트는 다음과 같이 구현할 수 있다.
OR 게이트는 다음과 같이 구현할 수 있다.
NAND와 OR 게이트의 코드에서도 AND와 다른 곳은 가중치와 편향 값을 설정하는 부분 뿐이다.
◾ 2.4 퍼셉트론의 한계
XOR 게이트는 배타적 논리합이라는 논리 회로로, 두개의 입력 중 한쪽이 1일 때만 1을 출력한다.
지금까지 본 퍼셉트론으로는 XOR 게이트를 구현할 수 없다.
XOR 게이트는 그림 2-7처럼 나타낼 수 있는데 (o와 △는 XOR 게이트의 출력을 나타낸다) 직선 하나로 o와 △를 나누는 영역을 만들 수 없다.
하지만 직선이라는 제약을 없앤다면 가능하다.
이처럼 퍼셉트론은 직선 하나로 나눈 영역만 표현할 수 있다는 한계가 있다.
그림 2-8과 같은 곡선의 영역을 비선형 영역, 직선의 영역을 선형 영역이라고 한다.
◾ 2.5 다층 퍼셉트론
퍼셉트론으로는 XOR 게이트를 표현할 수 없다. 하지만 퍼셉트론의 아름다움은 층을 쌓아 다층 퍼셉트론을 만들 수 있다는 데 있다.
따라서 층을 하나 더 쌓아서 XOR을 표현할 수 있다.
XOR 게이트를 만들기 위해 위 그림에서 AND, NAND, OR을 조합을 조합하여야 한다.
그림 2-11과 같은 조합이라면 XOR 게이트를 구현할 수 있다.
두 개의 입력이 NAND와 OR 게이트의 입력이 되고 NAND와 OR의 출력이 AND 게이트의 입력으로 이어진다.
이를 진리표로 만들면 그림 2-12처럼 된다.
XOR 게이트를 파이썬으로 구현하면 다음과 같다.
XOR은 그림 2-13과 같은 다층 구조의 네트워크이다. XOR은 모두 3층으로 구성되어 있지만 가중치를 갖는 층은 0층과 1층 사이, 1층과 2층 사이 뿐이기 때문에 2층 퍼셉트론이라고 부른다.
단층 퍼셉트론으로는 표현하지 못한 것을 층을 하나 늘려 구현할 수 있으며, 퍼셉트론은 층을 쌓아(깊게 하여) 더 다양한 것을 표현할 수 있다.
◾ 정리
퍼셉트론에서는 가중치와 편향을 매개변수로 설정한다.
페섭트론으로 논리 회로를 표현할 수 있으며 2층 퍼셉트론을 이용하면 XOR 게이트도 표현할 수 있다.
단층 퍼셉트론은 직선형 영역만 표현할 수 있고 다층 퍼셉트론은 비선형 영역도 표현할 수 있다.