Image processing/Deep-learning

[Pytorch] 선형 레이어와 비선형 레이어

유니디니 2019. 12. 26. 16:32
728x90
반응형

참고 자료

[1] Pytorch로 시작하는 딥러닝, 비슈누 수브라마니안 지음, 김태완 옮김


딥러닝 학습과정



선형 레이어

선형 레이어는 여러가지 이름으로 불린다. 다른 프레임워크에서는 덴스 레이어(dense Layer) 또는 연결 레이어(Fully Connected Layer)라고 부르기도 한다. 다수의 복수 레이어를 사용한다는 개념은 각 레이어 마다 입력 데이터의 패턴을 학습하고, 다음 레이어는 앞에서 학습한 패턴을 기반으로 학습을 이어나간다는 것이다. 


그러나, 단순히 선형 레이어를 연속으로 여러 개 쌓게 되면 1개 선형 레이어로 간단하게 표현된 학습 결과와 같다. 


Y = 2(3X) - 2개의 선형 레이어

Y = 6(X) - 1개의 선형 레이어


이러한 문제를 해결하기 위해, 여러 비선형 함수를 사용하게 되며 다양한 관계를 학습하도록 돕는다. 


비선형 레이어

비선형 활성화 함수는 입력을 받아 수학적 변환을 적용하고 출력을 생성하는 함수다. 딥러닝에서 주로 사용되는 비선형 활성화 함수는 다음과 같다.

    • Sigmoid

    • Tanh

    • ReLU

    • Leaky ReLU


시그모이드(Sigmoid)


시그모이드는 여러 아키텍쳐에서 오랫동안 사용되어왔으며, 한 가지 큰 단점이 존재한다. 시그모이드 함수는 함수의 출력 값이 0 또는 1에 가까워지면, 시그모이드 함수의 앞 레이어 기울기는 거의 0이 된다., 가중치가 조정되지 않는 현상이 발생하게 된다.


탄젠트 함수(Tanh)


Tanh 함수는 실수를 입력받고, 입력값을 -1과 1 사이의 값으로 변환한다. Tanh도 -1과 1에 가까운 값을 출력할때, 기울기가 없어지는 시그모이드와 같은 문제가 발생한다. 그러나, 출력값은 0을 중심으로 만들어지기 때문에 시그모이드와 비교해 변환값의 변화폭이 더 크다. 따라서, 시그모이드보다 기울기가 소멸하는 증상이 작게 발생한다. 


ReLU 함수


ReLU 함수는 최근 몇 년간 최고의 인기를 얻고 있으며, 간단한 수식에 의해 표현될 수 있다.


ReLU는 음수를 입력하면 0을 출력하고, 양수를 입력하면 입력값을 그대로 반환한다. 이러한 함수는 다음과 같은 특징을 갖는다. 

1. 옵티마이저가 더 빨리 올바른 가중치를 찾도록 돕는 것으로 알려져 있다. 즉, SGD(Stochastic Gradient Descent)가 더 빨리 수렴할 수 있도록 한다.

2. 연산 비용이 저렴하다. ReLU는 임계값을 가질 뿐이며, 시그모이드 함수와 Tanh 함수와 같은 연산을 수행하지 않는다. 

3. ReLU에도 한 가지 단점이 있다. 역전파를 진행하면서 기울기가 큰 값을 ReLU에 전달하면 종종 응답이 없어진다. 이런 현상을 "죽은 뉴런"이라 칭하며, 학습률을 신중하게 설정함으로써 방지할 수 있다. 


Leaky ReLU 함수



Leaky ReLU는 0으로 수렴해 더이상 학습되지 않는 문제를 해결하기 위해 제안된 ReLU의 변형된 형태다. 음수가 입력될 경우에 0이 아닌 0.001과 같은 매우 작은 수를 반환한다. 


반응형