퍼셉트론의 기본 개념과 학습 규칙, 한계점
- IT/머신러닝
- 2020. 2. 17. 16:47
퍼셉트론(Perceptron)을 실제로 구현해보기 전에 퍼셉트론이란 무엇인지 퍼셉트론의 정의와 학습 규칙에 대해 먼저 살펴본다. 그리고 단층 퍼셉트론(Single Layer Pereptron)과 다층 퍼셉트론(Multi Layer Perceptron)이 어떤 차이가 있는지, 단층 퍼셉트론의 한계점과 이를 해결하기 위해 등장한 다층 퍼셉트론의 경우 어떤 특징이 있는지 등을 살펴본다.
퍼셉트론(Perceptron) 이란?
퍼셉트론이란 신경망의 기원이 되는 알고리즘으로 다수의 신호( in(t):x1,x2... )를 입력으로 받아 하나의 신호( out(t) )를 출력한다. 여기서 퍼셉트론은 복수의 입력 신호에 고유한 가중치(w1,w2...)를 부여하는데 이는 각 신호가 결과에 주는 영향력을 조절하는 요소로 작용하게 된다.
아래 그림을 보면, 입력값들이 가중치를 부여받고 net 함수와 활성화 함수를 거쳐 출력값으로 나오는 모습을 볼 수 있다.
퍼셉트론의 활성화 함수(Activation Function)
위 그림에서도 볼 수 있듯이 입력값들이 출력값으로 변환되기 전에 활성화 함수를 거쳐가는데 이 활성화 함수란 무엇일까. 뇌 신경망에는 시냅스라는 것이 있는데 인공 신경망에서는 이런 방식을 모방해서 활성화 함수를 만들어냈는데 의미 그대로 입력값들의 계산 결과에 대한 활성을 할지 말지를 결정하는 역할을 한다고 보면 된다.
무수히 많은 활성화 함수가 있지만 퍼셉트론에서는 주로 단순한 활성화 함수를 사용하는데 계단 함수(Step Function)와 시그모이드 함수(Sigmoid Function)를 예로 들 수 있다. 이와 같은 활성화 함수는 값이 작을 때는 출력값을 작은값으로 막고 일정한 값을 초과하는 출력값이 급격히 커지는 함수이다.
퍼셉트론의 학습규칙
다층 퍼셉트론의 학습 규칙인 델타 규칙을 다음 포스팅에서 자세히 살펴보기 전에 퍼셉트론의 학습규칙이 어떤 방식으로 이루어지는지 먼저 간단히 살펴본다. 처음에는 각 가중치들을 초기화하고 특정 임계값을 정한다. 그리고 입력값과 목표값을 적용해 퍼셉트론을 활성화 함수에 넣어 활성화시킨다(f: 활성화 함수, N: 입력벡터의 크기, θ: 임계값) 위 그림에서 본 net 식에서 임계값과 활성화 함수만 추가된 형태이다.
즉, 쉽게 표현하면 (임계값은 없다고 가정 시)각 입력값 xi와 가중치 wi를 전부 곱해서 더한 총합을 활성화 함수에 넣어서 나온 결과값이 f(net)이다.
그리고 그 결과값 f(net)이 목표(정답)값과 오차가 얼마나 되는지 계산한 후 이 오차를 줄이기 위한 변화율(아래 빨간 네모 박스)을 계산해 가중치값을 w_old에서 w_new로 업데이트하는 것이다. 그리고 허용오차 범위 내로 들어올 때까지 이 과정을 계속 반복한다.
결국 이 과정에서 학습시키는 것은 바로 가중치(w)인 것이다. 허용오차 범위 내로 들어오는 최적의 가중치를 찾는 것이 퍼셉트론 학습의 목표이다.
하지만 이렇게만 이해해서는 정확히 어떤식으로 퍼셉트론이 동작하는지 이해하기 힘들수도 있다. 지금은 '아 가중치와 입력값을 곱한 값을 활성화 함수에 넣어 출력값이 나오게 되고 그 출력값이 정답과의 오차가 얼마나 되는지를 계산해서 가중치를 업데이트시키고 이걸 반복하는구나~'만 이해하면 된다.
바이어스(편향) 이란?
위에서 본 식에서 처음보는 임계값이 등장했는데 이 임계값은 결국 아래 식에서 보는 것과 같이 바이어스로 치환된다. 가중치는 각 입력값이 출력값에 주는 영향력을 조절하는 변수라면 바이어스는 뉴런이 얼마나 쉽게 활성화되느냐 (아래의 예시에서는 얼마나 쉽게 결과를 1로 출력하느냐)를 조절하는 변수이다.
단층 퍼셉트론(Single Layer Perceptron) 이란?
다층 퍼셉트론으로 본격적으로 들어가기 위해선 단층 퍼셉트론을 알아볼 필요가 있다. 사실 우리가 위에서 살펴본 것들은 단층 퍼셉트론의 모습이라고 보면 된다. 즉, 층이 입력층과 출력층이 끝인 경우 단층 퍼셉트론이라고 하며 이러한 단층 퍼셉트론의 경우 직선으로 나뉘는 두 영역을 만들기 때문에 선형분리만 가능하다는 단점이 있다.
아래 그림에서 보이다시피 AND 연산의 경우 선형 분리로 해결이 가능하지만 XOR 연산으로만 가도 분류를 못하게 된다는 한계가 있는 것이다. 물론 옛날이긴 하지만 이렇게 인공지능에는 1차 겨울이 오게 된다...
다층 퍼셉트론(Multi Layer Perceptron)의 등장
위와 같은 단층 퍼셉트론의 한계를 극복하기 위해 다층 퍼셉트론 일명 MLP가 등장하게 된다. 아래 그림 첫번째가 단층 퍼셉트론이고 두번째가 다층 퍼셉트론이다. 차이점이 느껴지는가! 은닉층이 추가되었다.
그렇다면 왜 다층퍼셉트론이 선형 분리의 한계점을 해결했다는 것일까? XOR 문제를 예로 들어보자. XOR 문제는 선형 분리로는 해결할 수 없었지만 연두색의 은닉층이 추가됨으로써 아래와 같이 XOR 문제를 해결할 수 있게 된다.
다층 퍼셉트론은 위에서 보는바와 같이 입력층(Input Layer), 은닉층(Hidden Layer), 출력층(output Layer)로 구분되어 있다. 여기서 은닉층은 1개일수도 있고 그 이상일 수도 있다. 어쨌든 다층 퍼셉트론은 단층 퍼셉트론의 한계를 극복하기 위해 등장한 층이 3개 이상인 퍼셉트론이라는 것이 중요하다.
- 입력층(Input Layer)
- 은닉층(Hidden Layer)
- 출력층(output Layer)
입력층은 입력 데이터를 받아들이는 층으로 입력층의 노드 수는 입력 데이터의 특성 개수와 일치한다. 은닉층은 입력층과 출력층과는 다르게 뉴런 수와 층 수에 정답이 없다. 설계자의 직관과 경험에 의존하여 설정하며 여러 실험을 거쳐 최적의 수를 찾아내는 편이다. 마지막 출력층은 해결하고자 하는 문제의 성격이라고 보면 된다. 예를 들어 필기체 숫자를 인식하는 문제라고 한다면 출력층의 뉴런은 0~9까지의 10개의 노드가 된다.
'IT > 머신러닝' 카테고리의 다른 글
아나콘다(Anaconda)에 tensorflow-cpu 설치하기 (0) | 2020.03.04 |
---|---|
신경망의 지도학습, 델타규칙과 경사하강법 (0) | 2020.02.18 |
sklearn을 사용한 SVM(Support Vector Machine) 분류 (7) | 2020.02.17 |
sklearn을 사용한 로지스틱 회귀분석(Logistic Regression) (4) | 2020.02.10 |
sklearn을 사용한 선형 회귀분석(Linear Regression) (5) | 2020.02.05 |