[Neural Network] Multi-Layered Perceptron

지난번에 perceptron에 대해서 간단하게 설명하였다. 하나의 perceptron으로 점을 분류하는 간단한 예제를 확인해 보았다. 하나의 perceptron으로는 linearly separable 한 점을 분류할 수 있다. 아래 그림 1과 같이 AND와 OR gate는 하나의 perceptron만 사용하여 간한하게 결과값을 찾을 수 있다.

 

ch10_12
그림 1: AND/OR gate 결과 (출처)

 

 반면 그림 2와 같이 XOR의 경우 하나의 라인으로 답을 분류할 수 없다. 아마 대부분의 classification은 하나의 perceptron으로는 해결할 수 없다. 하지만, 여러 개의 perceptron을 이용하면 XOR과 같은 문제를 해결 할 수 있다. 물론 facial classification과 같은 문제도 여러 개의 perceptron을 이용한 예제이다.

 

ch10_13
그림 2: OR gate 결과 (출처)

 

그림 3과 같이 perceptron을 여러 개 연결하면 XOR 문제를 해결할 수 있다. 그림과 같이 여러 개의 perceptron이 연결된 형태를 Multi-Layered Perceptron이라고 한다. (다양한 자료를 찾다 보면 그림 3과 같은 형태를 neural network이라고도 한다) 하나의 perceptron과 같이 network는 input을 받아서 output을 계산한다. 물론 output을 계산하기 위해 더 많은 연산이 필요하다. Input과 output 중간에 있는 layer를 hidden layer이라고 정의한다. Hidden layer가 2개 이상(여러 개라고 정의함)일 경우를 Deep Neural Network (DNN)이라고 한다. 그림 4가 Deep Neural Network의 그림이다.

 

ch10_14
그림 3: Multi-Layered Perceptron (출처)
main-qimg-970d2b5f57b6b5cd13dc11f5371166b2-c
그림 4: Deep Neural Network (DNN) 그림 (출처)

 

Network는 training을 통해서 weight 값이 변경된다. Network training으로 Supervised Learning 방법이 많이 사용된다. Supervised learning 관련하여서는 이전에 포스팅하였다 (참조). Input으로 데이터값을 입력하면 network에서 연산을 수행하여 output을 출력한다. 이렇게 출력된 output 결과값과 예상 결과 값을 비교한다. 만약 network의 output과 예상 결과값이 틀릴 경우 backpropagation을 사용하여서 weight 값을 수정한다. 위와 같이 Supervised learning을 계속하다 보면 network는 더욱 정확한 결과값을 계산할 수 있다. (계속 learning을 하다 보면 overfilling이라는 문제가 생긴다고 한다. 특정 input에 너무 최적화되어서 오히려 오류가 더 심하게 발생하는 문제를 말한다. 더 정확한 것은 다음에 찾아서 정리할 계획이다)

 

결과적으로 multi-layered perceptron이 DNN을 의미하는 것 같다. 여러 개의 perceptron이 하나의 network가 되고, 해당 network는 다양한 learning 방법을 통해서 학습한다.

 

출처
1. http://natureofcode.com/book/chapter-10-neural-networks/
2. https://en.wikipedia.org/wiki/Deep_learning

Leave a Comment