신경망(Neural Network)?
지난 포스팅에서는 이미지 분류가 어떤 방향으로 발전되어 왔는지에 대해 설명했는데요, 이번에는 인공지능에게 이미지 분류를 학습시키는 것을 가능하게 했던 원리에 대해서 알아보겠습니다.
Neural Network
인간이 언어를 이해하고 사물을 인지하는 등의 능력을 가능케 하는 것은 인간의 뇌입니다. 컴퓨터는 뇌를 가지고 있지 않기 때문에 인간이 세상을 이해하는 능력을 뛰어넘지 못합니다. 하지만 만약 컴퓨터가 뇌를 가지게 된다면, 또 그것이 시간이 갈수록 정교해진다면 어떻게 될까요? 아마 컴퓨터는 인간이 그동안 해결하지 못했던 많은 문제들을 해결할 수 있을 것입니다. 개발자들은 오래전부터 컴퓨터가 뇌의 기능을 갖도록 노력해왔습니다. 신경망(Neural Network)는 이러한 노력의 결과물이라고 볼 수 있습니다.
신경망(Neural Network)의 구성
신경망은 뉴런(Neuron)이라고 불리는 기본유닛이 여러겹으로 놓여있는 있는 구조를 가지고 있습니다. 입력값(input)은 이러한 신경망을 거쳐 출력값(output)을 도출합니다. 신경망은 위 그림과 같이 입력층(Input Layer), 은닉층(Hidden Layer), 출력층(Output Layer) 3개 층으로 나뉘며, 망의 구조와 뉴런의 형태에 따라서 다양한 신경망이 형성됩니다.
인간의 뇌 안에서는 수많은 신경세포가 연결되어 정보를 주고 받습니다. 외부에서 자극이 감지되면 그 정보는 신경세포망을 통해 각각의 신체의 기관으로 전달됩니다.컴퓨터 신경망 또한 이와 동일한 과정을 거칩니다. 입력값(외부자극)은 신경망(뇌의 신경세포들)을 거쳐 적절한 출력값(적절한 정보)를 도출해냅니다. 이 때 뉴런은 가중치(weight)를 통해 뉴런 간의 연결관계를 표현합니다.
신경망을 이루는 기본단위, 뉴런(Neuron)
뉴런은 은닉층을 이루고 있는 요소로, 신경망에서 어떤 출력값이 나올지 결정합니다. 각각의 입력값(x1~xn)은 가중치(w1~wn)과 곱해지고 편향치(b)와 함께 모두 합해집니다. 이 값은 활성화함수(Activation function)에 의해 최종 출력값(y)를 도출합니다.
Activation Function
신경망에서는 출력값을 여러겹의 층(layer)를 통과시키면서 그 값이 더 축약된다는 특징이 있습니다. 활성화함수(Activation Function)은 그 과정을 위한 것으로, 주로 비선형 함수를 사용합니다. 활성화 함수에는 여러가지 종류가 있습니다. 대표적인 활성화 함수에 대해서 알아봅시다.
1.시그모이드 함수(Sigmoid Function)
시그모이드 함수는 어떤 입력값이든 0, 1 둘 중 하나로 변환한다.
시그모이드 함수는 Logistic 함수 불리기도하는데, 입력값을 0,1 두 가지로 변형하여 출력해줍니다. 이 함수는 신경망 초기에는 많이 사용되었지만, 몇몇 단점들 때문에 최근에는 사용하지 않게 되었습니다.
2. tanh 함수(Hyperbolic Tangent Function)
Hyperbolic Tangent는 쌍곡선 함수 중 하나입니다. 이 함수는 시그모이드 함수를 변형해서 얻을 수 있습니다. tanh 함수는 중심값을 0으로 옮겨 시그모이드 함수의 최적화 과정에서 일어나는 문제를 해결했습니다.
3. ReLU 함수(Rectified Linear Unit Function)
ReLU 함수는 최근 가장 많이 사용되는 활성화 함수입니다. 이 함수는 시그모이드, tanh 함수보다 학습시간이 훨씬 단축됩니다. 연산 비용이 크지 않고 구현이 매우 간단하기 때문입니다. 그러나 (x < 0) 구간에서 기울기가 0이기 때문에 뉴런이 작동하지 않는다는 단점이 있습니다. 이러한 단점을 보완하기 위해 Leakly ReLU, PReLU 함수가 등장하였습니다.
4.ELU 함수(Exponential Linear Unit Function)
ELU 함수는 ReLU의 모든 장점을 포함함과 동시에 단점(Dying Neuron) 문제를 해결한 함수입니다. 그렇지만 ReLU와 달리 exp함수를 계산하는 비용이 발생한다는 단점이 있습니다.
5. Maxout 함수
Maxout 함수는 ReLU가 가지는 모든 장점을 가졌으며 Dying Neuron 문제 역시 해결합니다. 그러나 ELU처럼 계산 값이 크다는 단점이 있습니다.
활성화 함수는 위와 같이 여러종류가 있지만 현실적으로 가장 많이 사용되는 함수는 ReLU입니다. 간단하고 사용이 쉽기 때문에 가장 먼저 적용하게 됩니다.
Result
신경망은 이렇게 <입력층 - 은닉층 - 출력층>의 순서로 결과를 출력합니다. 인공지능은 이것을 반복적으로 수행하며 가중치를 변경하는데, 이 과정을 통해 더 정확한 예측값을 찾아낼 수 있습니다.
오늘은 신경망과 그에 대한 구성 요소에 대해서 알아보았습니다. 다음 시간에는 신경망의 다양한 종류와 원리에 대해 포스팅 하겠습니다.