1. 퍼셉트론
퍼셉트론(Perceptron)은 인공신경망(Artificial Neural Network)의 기원으로, 1957년 프룽크 로젠블라트가 고안한 알고리즘이다.

위의 그림은 단층 퍼셉트론을 의미하고 입력층(x1, x2, ..., xm)과 출력층으로 구성된다. 여기서, 활성화 함수는 계단 함수(Step Function)을 사용한다. 단, 다층 퍼셉트론에서는 Sigmoid 등 다른 종류의 활성화 함수들을 사용한다.
2. 퍼셉트론의 한계와 다층 퍼셉트론의 등장

퍼셉트론은 일반적으로 위의 AND, OR 게이트와 같이 선형 분류기로써 잘 동작되지만, XOR 게이트 같은 비선형 게이트에선 한계가 발생한다.

퍼셉트론의 문제를 해결하기 위해 등장한 것이 바로 은닉층(Hidden Layer)이다. 이와 같이 입력층과 출력층 이외에 은닉층이 추가된 구조를 다층 퍼셉트론이라 한다.
단, 은닉층에 포함된 활성화 함수는 비선형 함수이어야 한다. 왜냐하면, y = xW + b 구조만 아무리 많이 쌓아봤자, y′ = y∗W + b′과 같이 동일한 선형 함수로 표현되기 때문이다.
3. 구현

위에서 언급한 AND, OR, NAND, XOR 게이트를 구현한 코드이다. 여기서, XOR은 기존 게이트를 쌓아서 출력 결과를 얻는데 이는 은닉층과 같은 역할을 한다고 보면 된다.
