일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- BFS
- 코테
- sort
- 알고리즘
- 삼성코딩테스트
- bfs문제
- 영상처리
- 포스코 ai 교육
- 코테 문제
- 코딩테스트
- 초소형머신러닝
- dfs
- dfs문제
- 컴퓨팅사고
- 다이나믹프로그래밍
- tinyml
- 삼성역량테스트
- 임베디드 딥러닝
- 삼성역테
- DP
- MCU 딥러닝
- 그리디
- DP문제
- 포스코 교육
- 포스코 AI교육
- 삼성코테
- 자료구조
- tflite
- TensorFlow Lite
- 딥러닝
- Today
- Total
코딩뚠뚠
[머신러닝 공부] 딥러닝/Activation Function종류 본문
활성화 함수(Activation Function) 은 어디에서 쓸까?
딥러닝 네트워크를 쪼개보면 시작은 하나의 퍼셉트론 구조임을 알 수 있다.
여기서 출력 f를 바로 다음 레이어로 전달하지 않고 활성화함수를 통과시킨 후 전달한다.
왜 활성화 함수를 통과시키나?
단층 신경망인 퍼셉트론은 XOR연산을 할 수 없었다. 이를 풀기 위해서는 출력을 비선형으로 분리해야 했다.
1. 직선 하나만으로는 여러 입력을 제대로 구분할 수 없기 때문에 히든레이어가 필요했다. (여러 직선 필요)
2. 비선형으로 된 활성화 함수로 신경망의 출력을 변환해야 한다. (단순히 중간층 연결한다고 비선형이 되지는 않음)
- 출력을 활성화함수를 거치지 않고 그대로 출력해준다면 layer 가 아무리 깊어져도 하나의 linear 연산으로 나타낼 수 있게 되고 이는 즉 층을 많이 쌓는 의미가 줄어들게 되는 것인데 식으로 나타내면 다음과 같다.
- y(x)=ax
- y(x)=h(h(h(x)))
- 1번이나 2번 둘 다 hidden layer 가 없는 네트워크로 표현할 수 있다.
따라서 활성화함수는 출력값을 비선형으로 만들기 위한 함수
활성화 함수의 종류
많은 종류의 함수가 존재하지만 가장 많이 쓰이고 의미있는 함수들만 정리해보려 한다.
1. Sigmoid (시그모이드)
output을 0~1 로 만들어주고 평균값은 0.5가 되게 된다. 특징으로는 input이 일정값 이상이거나 이하이면 gradient가 0에 수렴하게 되는 것이 있다.
단점 :
Vanishing gradient - 여러 layer를 쌓았을 때 back propagation을 거치며 대부분의 노드에서 기울기가 0이 되어 결국 입력층 노드들의 기울기가 사라져 학습이 되지 않게 된다.
사용 :
기울기 소실에의 단점으로 인해 최근에는 layer 를 쌓을때 대부분 ReLU 함수를 사용한다. 하지만 binary classification 마지막 layer의 경우 출력 노드가 1개 이므로 0,1 값을 output 으로 받으므로 시그모이드 함수를 사용할 수 있다.
2. ReLU (Rectified Linear Unit)
앞서 말했듯 최근 hidden layer단에 가장 많이 사용되는 함수이다. 대부분 input 에 대해 기울기가 0으로 되지 않아 vanishing gradient 현상이 덜 발생하게 된다.
0 이하에서는 기울기가 0이지만 이 부분에 대해서는 대부분의 input값은 0보다 크기 때문에 실제로 기울기가 0이 되는 경우는 많지 않다.
3. Leaky ReLU
f(x) = max(0.01x, x)
ReLU에서 만약 Batch normalization을 사용한다면 input값의 중심은 0이 되고 0 이하로 normalized 된 input들은 기울기가 0이 되게 된다. -> vanishing gradient 로 이어질 수 있다.
따라서 기울기가 0이 되는 Dying ReLU를 해결하기 위해 나온 함수가 Leaky ReLU이다.
하지만 ReLU와 성능차이가 크지 않아 일반적으로 많이 쓰지는 않는다.
4. Tanh
시그모이드 함수와 비슷한 함수의 모양이지만 평균이 0이라는 점이 다르다.
하지만 시그모이드와 마찬가지로 일정 값 이상이거나 이하일 때 기울기가 0이므로 Vanishing gradient 문제가 발생할 수 있다.
이 외에도 Hard Sigmoid, ELU, PReLU, Swish, Softsign, Softplus, ThresholdReLU 등의 활성화 함수도 존재한다.
각각의 특징이 존재하기 때문에 상황에 맞춰 사용하면 된다.
'공부 > ML&DL' 카테고리의 다른 글
[머신러닝 공부] Tiny ML -1 / 개요 (0) | 2021.09.22 |
---|---|
[머신러닝 공부]딥러닝/Optimizer정리 (5) | 2021.07.18 |
[머신러닝 공부] 딥러닝/앙상블(ensemble) (0) | 2021.05.03 |
[머신러닝 공부] 딥러닝/SSD (object detection) (0) | 2021.04.27 |
[머신러닝 공부] 딥러닝/YOLO V1 (object detection) (0) | 2021.04.21 |