ANN(Artificial Neural Network) 이란?
💡 사람의 신경망 원리와 구조를 모방하여 만든 기계학습 알고리즘
- 사람의 신경망
뉴런들이 어떤 신호, 자극 등을 받고, 특정 임계값(Threshold)을 넘어서면 결과 신호를 전달하는 과정
1. Perceptron
💡 사람의 뉴런을 모방한 최조의 신경망 모델
(프랭크 로젠블럿(Frank Rosenblatt)은 1957년에 발표)
[좌]뉴런(Neuron), [우]인공 뉴런(artificial neuron, 퍼셉트론)
퍼셉트론의 구조
뉴런(Neuron)은 생물의 신경계를 이루는 신경 세포로 Dendrite(수상돌기), Soma(세포체), Axon(축삭돌기)를 추상화하여 위 그림의 우측과 같이 인공 뉴런을 구현하였다.
- Dendrite(수상 돌기): 전기적 신호를 통해 입력 신호를 받는 기능을 수행한다. 인공 뉴런에서는 벡터의 형태로 입력된 데이터 $x=[x_1x_2...x_M]^T$를 전달받는 역할을 한다.
- Soma(세포체): 수상돌기를 통해 전달받은 입력을 합산하는 기능을 수행한다. 인공 뉴런에서는 각각의 수상돌기의 입력에 weight(가중치) $w=[w_1w_2...x_M]^T$를 곱하여 합산한다. 인공 뉴런에서 soma의 output $s(x;θ)$는 $s(x;θ)=\displaystyle \sum^M_{j=1} w_jx_j + b$로 정의되며, linear function의 형태를 갖는다. 이때 b는 bias라고 하는 linear function의 상수항이며, θ는 인공 뉴런을 구성하는 parameter인 w와 b를 의미한다.
- Axon(축삭돌기): soma에서 계산된 값을 출력한다. 인공 뉴런에서는 soma에서 출력된 s(x;θ)를 activation function(활성화 함수) f에 입력하여 계산된 output y를 전달한다. 이때 activation function은 s(x;θ)를 바탕으로 어떠한 결정을 내리는 기능을행한다. Activation function으로는 unit step function, sigmoid function, cross entropy 등 다양한 형태의 function을 이용될 수 있다
- 신경망과 인공 신경망 모델 기능
- 들어온 자극, 신호 : Input Data
- 특정 임계값 : 가중치(weight)
- 자극에 의한 행동 : Output Data
Perceptron의 한계
AND, OR 과 같은 선형 분류(linear Classification)는 높은 정확도를 보여주었지만. XOR과 같은 비선형 분류는 불가능하다. 이 문제를 해결하기위해 다층 퍼셉트론(MLP) 모델이 등장했다.
다층 퍼셉트론(Multilayer Perceptron)
💡 입력층과 출력층 사이에 1개 이상의 은닉층을 추가한 모델(1986)
비선형 분류가 불가능한 단층 퍼셉트론의 한계를 극복하기 위한 모델이다.
다층 퍼셉트론으로 비선형 문제를 해결할 수 있지만 각각의 weight와 bias를 학습시킬 방법이 없다는 문제점이 발생하였다. 얼마후 해결 방법으로 역전파 알고리즘(Backpropagation Algorithm, 1986)이 발표되어 신경망 모델이 주목 받기 시작했다.(아래 글 참조)
2. ANN의 구조
다수의 입력을 받는 Input Layer, 데이터의 출력을 담당하는 Ouput Layer, 입력층과 출력층 사이에 존재하는 hidden Layer가 존재한다.
모델을 구성한다고하는 것은 hidden Layer들의 갯수와 노드의 개수를 구성하는 것을 말한다. hidden Layer의 적절한 활성화함수 등을 사용하여 최적의 Weight와 bias를 찾아내는 것을 목표로한다(모델을 잘 구성하는 것)
ANN과 같은 딥러닝 모델은 머신러닝 모델과 다르게 Feature의 정의가 필요하지 않고 학습을 통해 최적의 weight와 bias를 찾아준다.
ANN의 활성화 함수(Activation function)
hidden Layer에서 활성함수는 대표적으로 Sigmoid function을 사용한다. 파라미터를 최적화하기위해서는 활성화 함수가 미분이 가능해야 하기 때문이다.
output Layer에서 활성함수는 크게 3가지가 있다. 출력값 형태에 따라 다른게 사용한다
- Identical function $(f(x)=x)$ : 마지막 hidden layer에서 입력된 값을 그대로 output에서 사용하는 것이다. 보통 Regression(회기분석)에 사용된다.
- Softmax function : 주로 Classification(분류)문제에서 사용된다. output 출력 값이 0과 1사이의 값이며 모든 output값들을 합하면 1이 된다. 즉, 출력을 확률값으로 대응할 수 있는 것이다. 특히 Multi-class Classification에 사용된다.
- Sigmoid function : 주로 hidden Layer에서 사용되는 활성함수로 Classification(분류)문제에서 사용된다. softmax function과는 달리 하나의 데이터가 1개 이상의 class(label)를 동시에 가질 수 있는 Multi-label Classification에 사용 된다.
ANN 학습
역전파(Backpropagation) 방법을 사용하여 학습을 진행한다. 역전파란 예측값과 실제값의 차이(error 또는 loss값)에 따라 반대방향(input layer 방향)으로 error값을 최소화 해주도록 파라미터 조정하여 최적화해주는 방법이다. [역전파 알고리즘]
3. ANN의 문제점
- 학습과정에서 파라미터의 최적값을 찾기 어렵다.
- 역전파과정에서 gradient vanishing(기울기 소실)이 발생하여 최적의 파라미터찾기 어려움
- Overfitting에 따른 문제
- 학습시간이 너무 느리다
- 은닉층이 많으면 정확도는 올라가지만 연산량이 증가하여 학습시간이 오래걸린다.
'AI > DeepLearning' 카테고리의 다른 글
DeepLearning에 사용되는 Activation Function 정리 (0) | 2021.07.18 |
---|---|
DNN(심층신경망) (0) | 2021.07.14 |
Deep Convolutional Neural Network (0) | 2020.11.08 |
Introduction to Deep Learning (0) | 2020.10.19 |