본문 바로가기

Machine Learning

[Deep Learning from Scratch] 2장. 퍼셉트론

퍼셉트론알고리즘은 프랑크 로젠블라트(Frank Rosenblatt)에 의해 1957년에 고안된 것으로 신경망(딥러닝)의 기원이 되는 알고리즘입니다.

퍼셉트론은 여러 입력을 받아 하나의 신호를 출력합니다.
이 작업을 수행하기 위해 한 개 이상의 층으로 이루어진 뉴런(노드)을 통해 신호를 전달합니다.

한 뉴런의 출력신호가 그 다음 층 뉴런의 입력신호로 사용되는 형태이며 이 때 고유한 가중치(weigt)가 곱해진 상태로 입력됩니다.
그리고 뉴런에 입력된 신호의 총합이 정해진 임계값을 넘길 때 그 뉴런의 출력신호는 1이 되고 그렇지 않을 경우 0을 출력합니다.

이것을 식으로 나타내보면 다음과 같습니다.

위 식에서 θ를 -b로 치환하면,


이 때 b를 편향(bias)이라고 합니다.

위의 식과 같은 퍼셉트론으로 AND 게이트와 NAND 게이트, OR 게이트까지 구현할 수 있습니다.
$$ AND 게이트 : (w_1, w_2, b) = (0.5, 0.5, -0.9) $$
$$ NAND 게이트 : (w_1, w_2, b) = (-0.5, -0.5, 0.9) $$
$$ OR 게이트 : (w_1, w_2, b) = (0.5, 0.5, -0.4) $$

하지만 XOR 게이트는 구현할 수 없습니다.
위의 식이 선형적인 특성을 가지고 있기 때문입니다. 이것이 단층 퍼셉트론의 한계입니다.
이는 다층 퍼셉트론의 도입으로 해결가능합니다.

$$ x \ XOR\ y\ =\ (x\ NAND\ y) \ AND\ (x\ OR\ y) $$

XOR는 NAND, AND, OR의 조합으로 구성할 수 있습니다.
0층에서는 두 개의 입력을 받고
1층에 두개의 뉴런을 배치, 가중치와 편향은 NAND와 OR에서 사용한 값을 적용합니다.
2층에는 한개의 뉴런을 배치하여 가중치와 편향을 AND에서의 값으로 적용하면
2층 퍼셉트론으로 XOR 게이트를 구현할 수 있습니다.

이렇듯 다층 퍼셉트론은 보다 복잡한 회로를 구성할 수 있습니다.
이론상 NAND 게이트의 조합만으로 컴퓨터를 구현할 수 있기에 퍼셉트론을 이용해서 컴퓨터를 만들 수도 있습니다.