참고 1 : https://acdongpgm.tistory.com/181
참고 2 : https://colah.github.io/posts/2014-03-NN-Manifolds-Topology/
참고 3: https://docs.likejazz.com/backpropagation/
[Deep Learning] Activation Function ( 활성화 함수 ) - 비선형 함수(non linear function )
딥러닝에서 인공신경망을 설계할때 레이어마다 항상 Activaiton Function(활성화 함수)를 파라미터로 넣게된다. model.add(layers.Dense(units=512, activation='relu')) relu , elu 등등 ... 이런 것들은 왜 필요한 것일
acdongpgm.tistory.com
활성화 함수를 쓰는 이유
다층 레이어 퍼셉트론에서 가장 중요한 개념들 중 몇가지는 back propatation과 활성화 함수이다. back propagation은 정답 레이어와 예측값의 차이를 통한 가중치 업데이트를 학습 가능하게 하는 중요한 요소이므로 대부분 필요성을 인지하고 있지만, 활성화 함수는 기계적으로 sigmoid, tanh, relu 를 사용해야된다 정도로만 알고있는 경우가 많다. 첫 논문 스터디 seq2seq 에서도 이와 관련해 왜 활성화 함수로 sigmoid를 꼭 사용해야 하는지에 대한 질문이 들어왔고 이에 대해 대답하기 위해 자료를 준비했다.
먼저 활성화 함수로 사용되는 함수들의 조건부터 알아보면 아래와 같다.
활성화 함수로 사용가능한 함수 : Back propagation 이 가능한 함수
- 미분 가능 (모든 점에서 연속이며 모든 점에서 미분 가능하다)
- 비선형 표현이 가능
이때, 미분 가능해야함은, back propagation의 chain rule을 적용해야하기 위해 당연한 요소이고, 두번째 조건인 비선형 함수여야 하는 이유를 알아보자.
간단한 이항 분류 문제의 경우를 예로 들면, 단층 퍼셉트론은 두 클래스간의 결정경계를 얼마나 잘 잡는지를 결정하게 된다. 좀 더 정확하게 보면, 이는 각 변수의 일차 선형 결합식 (output = X1+X2+Bias)의 결과값에 계단함수(if output >= threshold, then class = 1, else class = 0)를 취한 것으로, 일차 선형결합식은 항상 직선이기에, 결정경계 역시 항상 직선경계를 갖는다.
그렇다면 좀 더 퍼셉트론을 다층으로 쌓으면 이러한 문제가 해결될까? 위의 그림에서 확인가능하듯 결국 정리하면 층 두개를 거친 output이더라도 계산식을 정리하면 결국 동일한 X1과 X2의 일차결합식이 된다. 이는 결국 직선 결정경계를 만들 뿐이다. 이런 단순 선형 다층퍼셉트론은 우리가 가진 변수들의 평면에서 곡선경계를 갖는 클래스들의 문제들은 전혀 해결해주지 못한다.
딥러닝은 이러한 문제를, activation function의 비선형성을 이용한 공간변형으로 해결한다. 즉 우리가 가지고 있는 변수들의 선형결합만으로는 두 클래스를 구분할만한 적절한 직선경계를 만들 수 없다면, 이를 선형결정경계로 구분가능한 더 고차원 경계로 보내버리는 것이다.(sigmoid(W1X1 + W2X2 + bias)) 아래는 정확하게는 SVM의 커널트릭과 관련된 그림인데, 이를 통해서 activation function의 기능을 같은 이유에서 유추해볼 수 있다.
이를 딥러닝에서는 비선형매핑, 공간의 변형으로 표현하기도 한다. 공간의 변형을 시각적으로 보여주는 링크를 참고하면 더 자세히 이 개념을 살펴볼 수 있다. 간단하게만 살펴보면, 아래의 프로세스로, 직선경계로 구분되지 않던 빨간색과 파란색의 결정경계를 공간을 휘게 함으로서 직선 결정경계로 구분할 수 있도록 만든다. 그리고 이를 다시 원래 변수평면으로 가져오면 마치 곡선 결정경계를 정확하게 만든 것처럼 보이는것이다.
물론 활성화 함수를 단순히 한 층에 집어넣는것만으로 결정경계를 잘 찾아지는 고차원공간으로 매핑될것이라 생각하긴 힘들다. 그러나, 딥러닝의 경우, 매 층, 매 노드마다 activation function을 통해 비선형성을 추가시키기 때문에 층이 깊어질수록 표현력이 좋아지며, 반대로 생각하면 이는 단순하더라도 상관없이 비선형성을 갖기만 해도 activation function으로 사용할 수 있게 만들어준다.
기존에는 설명의 편의성 (확률 표현 가능)과 미분 편의성으로 인해 activation function에 sigmoid function을 고정적으로 사용했으나, gradiant 범위가 매우 좁아 학습이 느린 점, 층이 깊어질수록 graidant vanishing 문제가 쉽게 발생하는 점 등이 문제가 되면서 훨씬 단순한 relu, gelu와 같은 activation function들이 최근에는 많이 사용하는 추세가 되었다.
google의 텐서플로우 플레이그라운드에 가면, 실제로 다양한 classification 문제들에 대해, 자기가 원하는 레이어의 MLP 모형, activation function, 학습률 등을 구성하여, 시각적으로 학습과정을 살펴볼 수 있으므로, 이 내용을 유의하고, linear activation에서 sigmoid, relu등을 변형시켜보는것도 직관에 도움이 될 것이다.
'딥러닝 논문 > 논문 읽기 스터디' 카테고리의 다른 글
[논문 스터디] 1. Effective Approaches to Attention-based Neural Machine Translation (0) | 2023.09.01 |
---|---|
[논문리뷰] 1. Effective Approaches to Attention-based Neural Machine Translation (0) | 2023.09.01 |
[논문리뷰] 0. Sequence To Sequence Learning With Neural Networks (Seq2Seq) (0) | 2023.04.24 |
순환신경망에 대하여(2) - 순환신경망의 순환과정 (0) | 2023.04.23 |
순환신경망에 대하여(1) - 순환신경망의 필요성 (0) | 2023.04.10 |