본문 바로가기
Machine Learning

Artificial Neural Network, ANN

by Nowkeeh Ahc

 인공신경망 (Artificial Neural Network, ANN)은 수많은 뉴런 (Neuron)과 각 뉴런을 연결하는 시냅스 (Synapse)로 구성된 인간의 뇌 신경망을 노드 (Node)와 링크 (Link)로 모형화한 네트워크 형태의 지도학습 모형이다. 즉, 인공신경망은 수많은 뉴런과 뉴런이 시냅스로 상호 연결되어 정보를 처리하는 뇌의 정보처리 및 전달 프로세스를 모방하여 분류 또는 수치 예측을 수행한다. 지금까지 살펴본 머신러닝 지도학습 모형들이 단순히 인간의 학습 방식을 모방한 것이라면, 인공신경망은 인간의 생물학적 신경계를 모형화해 인간의 정보 처리 및 추론 과정을 모방한 것이다. 

 초기의 인공신경망은 성능 면에서 랜덤 포레스트나 SVM보다 좋지 않아 실용성이 떨어졌지만, 2000년 이후부터 알고리즘과 하드웨어의 발전으로 성능이 개선되면서 딥러닝 (Deep Learning)이라는 이름으로 다시 불리게 되어 많은 분야에서 활용되고 있다. 

인공신경망은 노드로 표현되는 인공 뉴런이 가중치를 가지는 링크로 연결되어 있는 망 (Network) 구조를 가지며, 입력 데이터를 받아들이는 입력층 (Input Layer), 처리된 결과가 출력되는 출력층 (Out Layer), 입력층과 출력층 사이에 위치해 외부로 보여지지 않는 은닉층 (Hidden Layer)으로 구성된다. 입력 데이터는 입력층을 통해 받아들여지며, 이렇게 입력된 데이터들은 은닉층을 지나면서 처리가 이루어지고, 출력층을 통해 최종 결과가 출력된다.

[그림 1] 인공신경망의 구조

 이렇게 입력층에서 시작된 정보가 출력층까지 순서대로 진행되는 인공신경망을 피드포워드 신경망 (Feedforward Neural Network, FNN)이라고도 한다. 입력층의 노드는 입력 뉴런 (Input Neuron)이라고 하고, 특별한 연산 없이 입력값을 그대로 출력시켜 은닉층으로 전달하기 때문에 입력 뉴런은 입력값 자체를 말하기도 한다. 이와 달리 은닉층과 출력층의 뉴런은 전달받은 데이터에 대해 특정한 연산을 수행하게 된다.

[그림 2] 인공 뉴런의 개념적 표현

  은닉층과 출력층의 인공 뉴런은 링크를 통해 입력값을 받아 가중합을 구하고, 이 값을 활성화 함수 (Activation Function)에 적용하여 출력 신호를 내보낸다. 출력 신호는 최종적인 해 (Solution)이거나 다른 뉴런의 입력값이 된다. 여기서 활성화 함수는 뉴런의 활성화 여부를 판단하는 함수로 가중합이 활성화 함수가 가지고 있는 임계치보다 크면 뉴런은 활성화되고, 작으면 뉴런은 비활성화된다. 이러한 메커니즘은 인간의 뇌를 구성하는 신경 세포 뉴런이 전위가 일정치 이상이 되면 활성화되어 시냅스를 통해 신호를 전달하는 모습을 모방한 것이다. 이러한 뉴런의 동작 원리를 수식으로 나타내면 다음과 같다.

상기 수식에서 출력값으로 0과 1을 가지는 뉴런의 경우 가중합이 임계치(θ)를 넘으면 활성화되어 1을 출력하고, 임계치 이하면 비활성화되어 0을 출력한다. 오른쪽 식은 임계치를 0으로 표준화시키기 위하여 일정한 편향값 (Bias)으로 b를 삽입한 것이다. 편향은 뉴런이 얼마나 쉽게 활성화되느냐를 조정하는 활성화 가능도로서 항상 1을 출력하는 편향 노드로 표현된다. 이는 출력층을 제외한 모든 층에 포함되나 편의상 그림에서 표시하지 않는 경우도 많으므로 본서에서도 이후 그림에 편향 노드는 생략하기로 한다. 

한편, 입력층과 출력층과는 달리 은닉층은 하나 이상의 층을 가질 수 있는데, 이렇게 은닉층의 개수가 많아져 깊어진 인공신경망을 딥러닝이라고 한다. 

 출력층은 인공신경망의 마지막 층으로서 최종적인 값을 출력한다. 출력층에서 사용되는 활성화 함수는 문제 유형에 따라 달라지는데, 일반적으로 수치 예측에는 입력을 그대로 출력하는 항등 함수 (Identity Function)를, 분류 예측에는 시그모이드 함수(이진 분류)나 소프트맥스 함수(다중 분류)를 사용하게 된다. 

 

 

 인공신경망은 대량의 데이터에 내재된 신호를 잡아내어 매우 복잡한 모형을 만들 수 있기 때문에 기존 모형으로는 예측하기 어려운 문제를 해결할 수 있으나, 하드웨어의 성능이 좋아야 하고, 학습 시간이 오래 걸리는 편이며, 인자의 튜닝이 비교적 까다롭다는 단점이 있다. 또한 은닉층에서 실제값은 기록되지 않아 분석자가 알 수 없기 때문에 출력값에 대한 논리적 추론이 불가능하다. 이렇게 모형의 출력값만 알고 분석과정을 사용자가 알 수 없는 모형을 블랙박스 모형 (Black Box Model)이라 한다. 아래의 표는 인공신경망의 장단점을 요약하고 있다.

 

 [표 1] 인공신경망 모형의 장단점

장점 인공신경망 구조에서 각 뉴런은 하나의 독립 프로세스이므로 병렬 처리에 유리하다.
적용 가능한 문제의 영역이 광범위하다. 즉, 입력변수의 형태에 의존적이지 않다.
복잡한 데이터 집합에 내재된 패턴을 찾아내는 능력이 있다.
많은 노드에 정보가 분산되어 있기 때문에 일부 노드에서 결함이 발생하더라도 전체 시스템에 큰 영향을 주지 않는다.
단점 블랙박스 모형이기 때문에 분류나 예측 결과만을 제공할 뿐 어떻게 그런 결과가 나왔는지에 대해 사용자가 알기 어렵다. 
복잡한 학습 과정을 거치기 때문에 최적의 모형을 구축하는 데 많은 시간이 소요될 수 있다.
은닉층의 과다 설정은 학습 데이터 집합과 거의 일치하는 모형을 유도해낼 수 있으므로 과잉적합 문제를 발생시킬 수 있다.

 

 

[1] 퍼셉트론

퍼셉트론 (Perceptron)은 다수의 신호를 입력으로 받아 하나의 결합된 신호를 출력하는 모형으로서 인공신경망이 작동되는 원리를 제공하는 기본 알고리즘이다. 퍼셉트론은 층의 수에 따라 단층 퍼셉트론과 다층 퍼셉트론으로 구분할 수 있다.

 

(1) 단층 퍼셉트론

 단층 퍼셉트론 (Single Layer Perceptron)은 입력층과 출력층만으로 구성되어 있다. 앞서 언급했듯이 입력층에는 어떠한 연산도 일어나지 않기 때문에 단층 퍼셉트론은 출력층에 속하는 하나의 뉴런만을 사용하므로 인공 뉴런의 수학적 모형을 일컫는 용어로 사용되기도 한다. 

[그림 3] 단층 퍼셉트론의 개념적 표현

 단층 퍼셉트론에서는 활성화 함수로 계단 함수를 이용한다. 그 중 일반적으로 사용하는 것은 헤비 사이드 계단 함수 (Heaviside Step Function)이며, 종종 부호 함수 (Sign Function)를 사용하기도 한다. 각 함수의 일반적인 모형은 다음과 같다.

  • z는 가중합을 의미한다.

 

(2) 다층 퍼셉트론

 단층 퍼셉트론은 일종의 선형 분류기이기 때문에 분류 예측 문제에서 복잡한 식별 경계를 만들 수 없다. 즉, 단층 퍼셉트론 모형으로는 선형 분리가 불가능한 배타적 논리합 XOR (eXclusive OR) 분류 문제를 해결할 수 없다. 여기에서 XOR 문제는 다음과 같이 배타적인 두 개의 명제 가운데 하나만 참일 경우만 결과를 참으로 판단하는 논리합 연산이다.

[표 2] XOR 문제

x1 x2 XOR
0 0 0 (-)
0 1 1 (+)
1 0 1 (+)
1 1 0 (-)

 

 이러한 XOR 문제는 [그림 10-4]와 같이 (+), (-)를 직선(선형)으로 분리할 수 없다.

[그림 4] 선형 분리가 불가능한 XOR 문제 

 이러한 문제를 해결하기 위해 고안된 것이 다층 퍼셉트론이다. 다층 퍼셉트론 (Multi Layer Perceptron, MLP)은 말 그대로 여러 개의 퍼셉트론을 쌓아 올려 다층의 퍼셉트론을 만든 것으로서 입력층과 출력층 사이에 중간층인 은닉층을 추가한 것이다. 보통 인공신경망은 다층 퍼셉트론을 의미하기도 한다.

[그림 5] 다층 퍼셉트론

 [표 3]은 다층 퍼셉트론을 이용하여 XOR 문제를 해결하는 개념적 과정을 나타내고 있다. 은닉노드 h1x1x2의 1(True)에 대한 논리곱(AND)에 의한 결과값을 산출하고, 은닉노드 h2x1x2의 0(False)에 대한 논리곱에 의한 결과값을 산출한다. 다시 y는 은닉노드 h1h2의 0에 대한 논리곱 결과값을 산출하여 이 결과를 XOR 문제의 최종 해로 결정하게 된다. 

[표 3] 다층 퍼셉트론을 이용한 XOR 문제

x1 x2 h1 h2 y XOR
0 0 0 1 0 0
0 1 0 0 1 1
1 0 0 0 1 1
1 1 1 0 0 0

 

 인공신경망이 발전함에 따라 다층 퍼셉트론에는 계단 함수 외의 다양한 비선형 활성화 함수가 도입되었다. 다층 퍼셉트론이 사용하는 대표적인 비선형 활성화 함수는 다음과 같다.

- 시그모이드 함수 (Sigmoid Function)

 시그모이드 함수는 앞서 로지스틱 회귀모형에서 다루었던 대표적인 비선형 활성화 함수로서 입력값을 0과 1 사이의 값으로 변환해준다. 시그모이드 함수는 계산이 쉽고, 해석이 용이해 가장 기본적으로 사용되는 활성화 함수이다. 

[그림 6] 시그모이드 함수

- 하이퍼볼릭 탄젠트 함수 (Hyperbolic Tangent Function, Tanh Function)

Tanh 함수는 스케일이 조정된 시그모이드 함수로서 입력값을 -1과 1 사이의 값으로 변환해준다. Tanh 함수는 은닉층에서 활성화 함수로 자주 사용되며, 조금 더 극단적인 분류가 이루어지므로 실제 분류 예측 문제에 있어서 더 선호된다. 

[그림 7] 하이퍼볼릭 탄젠트 함수

- 렐루 함수 (Rectified Linear Unit Function, ReLU Function)

ReLU 함수는 은닉층에서 가장 많이 사용되는 활성화 함수로서, 입력값이 0을 넘으면 그 입력을 그대로 출력하고, 0 이하일 경우는 0을 출력해주는 함수이다. ReLU 함수는 0을 출력하는 경우를 제외하고, 강제적인 수치 변환이 이루어지지 않으므로 학습이 훨씬 빨라지며, 비용이 크지 않고 구현이 매우 간단하다는 장점이 있다.

[그림 8] 렐루 함수

 

[2] 오차 역전파법

 오차 역전파법 (Back Propagation)은 인공신경망이 학습하는 메커니즘을 설명하는 알고리즘으로서 모형의 오차를 최소화하기 위해 출력층부터 입력층까지 역의 방향으로 오차를 전파하며 가중치와 편향을 조정해 나간다.

 아래 그림에서 보는 바와 같이 인공신경망은 입력층에서 출력층 방향으로 데이터를 처리하며 그 결과를 차례로 전파하는 순전파 (Forward Propagation)를 통해 예측값을 출력하며, 예측값과 실제값을 비교하여 발생한 오차값을 이용하여 다시 역방향으로 가중치를 수정해 나간다.

[그림 9] 오차 역전파법을 이용한 학습 메커니즘

 

인공신경망에서 오차를 계산할 때 사용되는 대표적인 손실 함수는 다음과 같다.

- 평균제곱오차 (Mean Squared Error, MSE)

 주로 수치를 예측할 때 사용되는 손실 함수로 실제값(y)과 예측값(y)의 차이를 제곱한 값의 평균을 나타낸다. 손실 함수의 값이 최소화될수록 최적화된 모형이므로 MSE를 최소화하는 방향으로 모형이 학습된다.

- 교차 엔트로피 오차 (Cross Entropy Error, CEE)

 교차 엔트로피 오차는 종속변수가 범주형일 때 주로 사용되는 손실 함수이다. 위 식에서 y는 원핫인코딩된 범주이고, yi는 특정 범주에 속할 확률이다. 만약, 이진 분류의 경우y=[1, 0], y=[0.7, 0.3]과 같이 처리되며, 결과적으로 예측값이 클래스 1에 속할 경우를 제외한 나머지는 무조건 0이 나오므로 CEE는 클래스 1에 속할 확률에 대한 자연로그를 계산하는 식이 된다. 따라서 확률이 낮을수록 CEE 값은 커지기 때문에 MSE와 마찬가지로 CEE를 최소화하는 방향으로 모형이 학습된다.

 

 오차 역전파법은 이러한 손실 함수 값이 최소가 되는 가중치와 편향을 찾는 방법이다. 대부분의 인공신경망 알고리즘은 가중치 갱신을 위해 경사하강법 (Gradient Decent)을 사용하는데, 이는 손실 함수의 기울기가 가장 완만해지는 지점을 찾아가는 최적화 방법이다. 수학적으로 설명하자면, 가중치 w에 대해 편미분하여 현재 w위치에서의 접선의 기울기를 구한 다음 기울기를 낮은 방향으로 조금씩 이동시켜서 경사가 가장 완만해지는(기울기가 가장 작아지는) 지점에 이를 때까지 반복하게 된다.

[그림 10] 경사하강법의 개요 

이러한 경사하강법을 수식으로 나타내면 다음과 같다.

 wt+1는 초기 가중치 wt에 손실 함수 E에 대해서 w로 편미분한 값 ∆w(t)를 더하여 갱신한 가중치를 의미한다. 여기에서 는 학습률 (Learning Rate)을 의미하는데, 학습률의 크기에 따라 전역 최솟값에 도달하는 이동거리가 달라지므로 결국 가중치 갱신의 크기를 조절하게 된다.

[그림 11] 학습률 크기에 따른 경사하강법

 학습률이 작으면 안전하게 전역 최솟값에 도달하지만 반복 횟수가 많아져 계산 시간이 오래 걸리는 단점이 있으며, 반대로 학습률이 높으면 한 번에 학습되는 이동 거리가 커서 전역 최솟값을 쉽게 찾지 못하는 단점이 있다. 

 인공신경망도 다른 머신러닝 모형과 마찬가지로 모형이 학습 데이터에 과잉적합 되는 것을 막기 위해 일정 단계에 도달했을 때 학습을 정지시킬 수 있는 기준이 필요한데, 인공신경망에서는 최소 정확도, 최소 오차 변화율, 최대 훈련 반복 수, 최대 훈련 시간 등을 고려할 수 있다.


This post was written based on what I read and studied the book below.

http://www.kyobobook.co.kr/product/detailViewKor.laf?mallGb=KOR&ejkGb=KOR&barcode=9791195511747

댓글