머신러닝/딥러닝 공부

신경망 (1) - 단층 퍼셉트론 (Single Layer Perceptron) 본문

AI 공부/Machine Learning

신경망 (1) - 단층 퍼셉트론 (Single Layer Perceptron)

호사린가마데라닌 2021. 11. 21. 18:37




퍼셉트론(perceptron)에 대해서는 이미 앞의 포스팅에서 다루었습니다. 한 가지 짚고 넘어갈 점은 퍼셉트론은 선형 방정식을 통해 값을 계산하는 순전파 인공신경망(feed-forward artificial neural network)이라는 것입니다.


https://yhyun225.tistory.com/12

분류 (1) - 이진 분류(Binary Classification)와 로지스틱 회귀(Logistic Regression)

분류 모델은 데이터를 분류하는 방법을 학습합니다. 분류 모델은 크게 이진 분류(Binary Classification)와 다중 분류(Multi Classification)로 나뉩니다. - 이진 분류(Binary Classification)는 입력값에 따라 모..

yhyun225.tistory.com


단층 퍼셉트론(single layer perceptron)이란 이름 그대로 층(layer)이 하나만 존재하는 퍼셉트론입니다. 층(layer)은 사전적으로 정확히 정의하기가 힘듭니다. '모델 내 유입된 훈련 데이터의 연산이 이루어지는, 즉 가중치를 갖는 단계적인 위치' 정도로 해석하면 될 듯합니다.

단층 퍼셉트론(single layer perceptron)



훈련 데이터를 받아들이는 층을 입력층(input layer), 결과를 도출하는 층을 출력층(output layer)이라고 합니다. 모델의 층 개수를 셀 때 보통 입력층을 생략하므로, 위의 모델은 층을 1개 갖는 퍼셉트론, 즉 단층 퍼셉트론이라고 할 수 있습니다.


단층 퍼셉트론은 주어진 데이터에 대해 가장 알맞은 선형 모델을 찾습니다. 이 방식은 데이터의 분포가 선형이라면 좋은 성능을 보이지만 그렇지 않다면 좋은 성능을 보이지 못합니다.


예를 들어 AND, OR, NAND 연산을 살펴보겠습니다.


각 연산은 입력으로 받은 2개의 값에 대해 각각 다음과 같은 값을 내놓습니다.

x1 x2 AND(x1,x2) OR(x1,x2) NAND(x1,x2)
0 0 0 0 1
0 1 0 1 1
1 0 0 1 1
1 1 1 1 0




따라서 각각의 연산은 적당한 가중치와 바이어스, 그리고 임계값을 이용하여 선형 모델을 이용하여 표현할 수 있습니다.

빨간 점:1, 파란 점:0, 노란 선:선형 모델




이제 XOR연산을 살펴보겠습니다. 배타적 논리합(exclusive OR)이라고도 불리는 이 연산은 다음과 같은 값을 내놓습니다.

x1 x2 XOR(x1,x2)
0 0 0
0 1 1
1 0 1
1 1 0



몇 번 시도해보면 알 수 있듯이 이 연산은 하나의 층을 가진 선형 모델로 표현할 수가 없습니다.


대신, XOR연산은 AND, OR 그리고 NAND연산을 조합하여 표현할 수 있습니다.

x1 x2 NAND(x1,x2) OR(x1,x2) AND(NAND,OR)
0 0 1 0 0
0 1 1 1 1
1 0 1 1 1
1 1 0 1 0




이를 그려보면 다음과 같습니다.




단층 퍼셉트론 중간에 층을 하나 추가하여 기존의 선형 모델로 표현할 수 없었던 데이터를 표현할 수 있습니다. 입력층과 출력층을 제외한 층을 갖는, 즉 층이 2개 이상인 퍼셉트론을 다층 퍼셉트론(Multi Layer Perceptron)이라고 합니다. 이에 대해서는 다음 포스팅에서 좀 더 자세히 정리해보도록 하겠습니다.


단층 퍼셉트론은 위의 예시처럼 선형으로 분류되지 않는 데이터들에 대해 적절한 모델링을 할 수 없습니다. 많은 데이터, 특히 비정형 데이터(이미지, 음성 데이터 등)는 대부분이 선형적으로 분류되지 않는 데이터이기 때문에 단층 퍼셉트론은 한계가 존재합니다. 이런 경우 위의 XOR연산에 대한 모델처럼 단순히 퍼셉트론의 입력층과 출력층 사이에 다른 층들을 쌓는 것으로 조금 더 정확한 모델링을 할 수 있게 됩니다. 즉, 층을 추가함으로써 모델의 선형성을 비선형으로 바꿔주는 효과를 누리는 것입니다.


이처럼 층을 추가하여 얻은 모델을 학습시키는 것을 딥러닝(deep learning)이라고 합니다. 모델이 깊다(deep)라는 뜻은 모델의 층이 여러 개라는 뜻입니다. 머신러닝에서는 종종 모델의 층(layer)의 개수를 깊이(depth)라고 표현을 합니다. 이와 비슷하게 층(layer) 안에 있는 노드의 수를 너비(width)라고 표현하기도 합니다.


다음 포스팅에서는 다층 퍼셉트론(multi layer perceptron)에 대한 정리와 활성화 함수(activation function), 역전파 알고리즘(backpropagation)에 대해 정리해보도록 하겠습니다.


Comments