Neural Network와 그 구조😶
이름대로 뇌의 뉴런의 동작방식을 모방하여 만든 모델이다. (Brain Inspired Model)
구조를 보며 어떻게 nn이 뇌를 모방하여 만든 것인지 이해해보자.
뉴런의 모습이다.
nn의 기본적인 unit structure는 아래와 같다.
input signal들을, 각각의 weight, bias와 함께 activation function에 넣어 output을 내는 형태다.
뉴런에서 외부에서 들어온 자극을 신호로 변환해서 다음 뉴런에게 전달하는 방식과 유사하다.
수식으로 표현하면 아래와 같다.
$$y=g(w^{T}x+b)$$
x는 input, y는 output, g는 activation function이다.
✔️Feed-Forward Neural Network
뉴런이 외부에서 들어온 자극을 신호로 변환하는 것과 동일한 과정이다.
변환한 신호를 다시 input으로서 다음 unit에 전달하는 것.
unit과 unit 사이에 feedback connection은 없으며, output이 다시 모델에 fed back되는 경우도 없다.
✔️Backpropagation
feedfoward network를 끝낸 후, gradient를 계산해 파라미터를 업데이트해주기 위해 feedforward의 반대방향으로 돌아가는 과정이다.
자세한 내용은 다시 포스팅할 예정.
✔️Multilayer Perceptron (MLP)
여러 FC Layer로 구성된 multilayer 형태의 neural network이다.
여기서 FC Layer는, 모든 input unit이 모든 output unit으로 연결되는 형태의 구조를 말한다.
NN과 Non-Linearity😶
데이터가 Linearly Separable하지 않을 때가 있다.
이럴때는, linear classifier로 분류가 가능하도록 feature map을 transform해주는 방법을 사용할 수 있을 것이다.
또는, activation function으로 non-linear한 모델을 사용하는 것도 방법이다!
아래에 NN에서 사용될 수 있는 non-linear한 activation function의 형태와 특징을 정리해두었다.
✔️NN에서 사용되는 Non-Linear Activation Function
sigmoid✨
logistic regression에서 사용되는 activation function과 같은 것을 사용할 수 있다.
아래는 sigmoid function을 그림으로 나타낸 것.
수식으로 나타내면 아래와 같다.
$$\sigma (x) = {1/over 1+e^{-x}}$$
sigmoid function의 경우 역사적으로 popular한 방식이라는 점, 뉴런의 firing rate를 반영한다는 점 등이 장점이다.
하지만, zero-centered ouput이 아니라는 점 (0이 아닌 0.5임을 확인할 수 있다),
gradient가 0인 구간에서 training이 갇힐 수 있다는 점 (Vanishing Gradient Problem)을 한계점으로 꼽을 수 있다.
Tanh✨
sigmoid와 유사한 형태지만 원점을 지난다.
수식으로 나타내면 아래와 같다.
$$tanh(x)$$
zero-centered라는 점, 0에서 Linearity를 지닌다는 점(training이 쉬움)이 장점이다.
하지만 여전히 vanishing gradient problem은 남아있다.
위의 sigmoid와 tanh 함수의 경우, 이러한 vanishing gradient problem으로 인해 neural network의 feedforward hidden unit에서 activation function으로 사용되는 것은 보통 추천되지 않는다.
(output unit에서는 괜찮다.)
ReLU✨
양수(+) region에서 vanishing gradient problem이 없는 것을 확인할 수 있다.
또한 sigmoid보다 converge가 빠르며, computationally efficient하다는 점이 장점이다.
하지만 zero-centerd output이 아니라는 점,
음수(-) region에서 여전히 vanishing gradient problem이 존재하는 것 등이 한계로 남아있는 것을 알 수 있다.
Leaky ReLU✨
ReLU의 한계점을 극복하기 위해 변형된 형태이다.
수식은 아래와 같다.
$$g(x) = max(\alpha x, x)$$
음수에서의 vanishing gradient problem을 해결한 것을 확인할 수 있다.
모든 곳에서 gradient를 얻는 것을 보장한다는 점이 장점이겠다.
반면 파라미터나 뉴런의 수를 더 많이 필요로 한다는 점은 단점이다.
이밖에도 Maxout, ELU 등이 activation function으로 사용될 수 있다.
✔️NN에서의 Practical Activation Function Usage
실제로 nn을 설계할 때 activation function을 어떻게 적용하면 좋을지 정리했다.
우선 ReLU를 작은 learning rate와 함께 사용하는 것이 방법이다. (음수에서의 vanishing gradient 문제 때문에 양수 중 작은 수를 learning rate로 두는 것.)
Leaky ReLU나 maxout같은 좀 더 복잡한 activation function을 사용하는 것도 방법이다.
주의해야 할 점은 hidden unit에서는 절대 sigmoid형태의 함수를 사용해서는 안된다는 점.
참고로 Loss Function은 주로 cross-entropy loss를 사용한다.
그러면, Deep NN이 Linear Classifier보다 낫다고 말할 수 있나?😶
linear classifier는 linear activation function을 사용한다.
이 linear classifier를 여러 layer로 쌓아 sequence로 만든 NN 모델이 있다고 치자.
linear layer를 어떤 sequence로 쌓는다고 해도, 이를 그냥 single linear layer로 변형하는 것이 가능하다.
즉, NN에서는 linear activation function을 사용하는 것이 의미가 없다는 이야기다.
반면, NN모델에서 non-linear activation function을 사용했을 때, 좀 더 복잡한 형태의 데이터를 분류하는 것이 가능하다는 점에서 linear classifier보다 낫다.
(단, 데이터의 형태가 linear하게 나뉘기 어려운 상황에서의 이야기.)
'Data Science > ML | DL' 카테고리의 다른 글
Backpropagation (0) | 2023.03.05 |
---|---|
NLP 딥모델 정리(Transformer와 BERT) (0) | 2023.01.03 |
Anomaly Detection Model 공부를 위한 Normalizing Flow 정리 (0) | 2022.08.30 |
Optimization: Random Search부터 Gradient Descent까지 (0) | 2022.08.21 |
[Pytorch] Classification 모델 구현하고 MNIST 데이터로 훈련하기 (0) | 2022.08.15 |