본문 바로가기

파이썬/파이썬 관련 도움글

활성화 함수 알기

 

#활성화 함수

1. 정의

  입력된 데이터의 가중 합을 출력 신호로 변환하는 함수이다. 인공 신경망에서 이전 레이어에 대한 가중 합의 크기에 따라 활성 여부가 결정된다.

  이때 함수는 비선형 함수를 사용해야 하는데, 선형 함수는 심층 신경망으로 가면 큰 도움이 되지 않기 때문이다. 현실 세계의 문제는 대부분 비선형 문제이다. 그렇기에 다양한 비선형 활성화 함수를 사용하여 모델이 문제를 잘 풀수 있도록 선형 함수를 사용하지 않는 것이 좋다.

 

2. 비선형 함수

  (1) 시그모이드 함수(Sigmoid Function)

위키피디아 그림 참조

  시그모이드 함수는 S자형 곡선을 갖는 수학 함수이다. 식으로는

 라고 표현할 수 있지만 외울 필요까지는 없이 이 함수의 특징만 알고 사용할 수 있으면 된다. 

PyTorch로 시작하는 딥 러닝 입문 wikidocks 참조

위의 시그모이드 함수에서 유의미하게 사용되는 부분은 -2 ~ 2 부분이다. 나머지 부분은 기울기를 계산하면 0에 가까운 아주 작은 값이 나오게 되는데, 이 0에 가까운 아주 작은 기울기는 역전파 과정에서 기울기가 전달이 되지 않는다. 이를 기울기 소실 문제라고 부른다. 결론적으로 시그모이드 함수는 은닉층이 존재하는 딥러닝에서 사용하지 않는 것이 좋다.

 

  (2) 렐루 함수(ReLU)

 

위키피디아 그림 참조

    음수를 입력하면 0을 출력하고 양수를 입력하면 입력값을 그대로 반환한다. 특정 양수값에 수렴하지 않는 특성 덕에 딥러닝에서 시그모이드 함수보다 잘 작동한다. 또한 단순 임계값으로 계산하여 연산 속도도 빠르다는 장점이 있다.

  하지만 입력값이 음수면 기울기가 0이라는 것은 시그모이드와 마찬가지로 기울기 소실 문제가 발생한다. 이 죽은 뉴런은 다시 회생하는 것이 매우 어렵다. 이를 죽은 렐루(dying ReLU)라고 부른다.

 

  (3) 하이퍼볼릭탄젠트 함수(Hyperbolic tangent function)

입력값을 -1과 1사이의 값으로 반환한다. 이 함수는 시그모이드 함수와 유사하지만 0을 중심으로 하고 있다는 특징 덕에 반환값의 변화폭이 더 크다. 그래서 기울기 소실 증상이 더 적은 편이라 은닉층이 있는 딥러닝에서 시그모이드 함수보다는 많이 사용된다.

 

 

참고자료

https://wikidocs.net/60683

'파이썬 > 파이썬 관련 도움글' 카테고리의 다른 글

과대적합, 과소적합 알기  (0) 2023.08.02
loc, iloc에 대해 알기  (0) 2023.08.02
상관계수 알기  (0) 2023.07.21
알고리즘 순서도를 그리는 방법  (0) 2023.07.05