차근차근 실습하며 배우는 파이토치 딥러닝이라는 책을 통해 파이토치를 공부하고 있는데 내가 두루뭉술하게만 알고 있었던 내용을 일목요연하게 정리해주는 내용이 있어 한번 정리해보고자 한다.
(시험기간인데 너무 재밌어서 이것만 공부하고 있다.. 😭)
활성화 함수(Activation Function)
결론부터 말하자면 활성화 함수의 공통점은 모두 비선형 함수라는 것이다.
활성화 함수의 비선형성이 왜 필요할까를 생각하기 이전에, 우리가 생각하는 딥러닝 아키텍쳐에 대해 다시 한번 생각해보자.
우리는 흔히 딥러닝을 레고 블럭을 쌓는 것에 비유한다. 이 때 레고 블럭 하나하나를 층(layer)이라고 하며, 각각의 layer는 선형함수다. 이렇게 딥러닝에서 층을 쌓는 이유는 모델이 더 복잡하고 추상적인 표현을 학습할 수 있도록 하기 위해서이다. 층을 깊게 쌓으면 쌓을 수록 더욱 정교한 패턴을 인식하여 딥러닝 모델의 성능을 향상시키고 더 복잡한 문제를 해결할 수 있게 된다.
딥러닝의 흔한 task는 Data Representation이다. 우리의 일상속의 Data Representation 문제를 선형적인 함수만으로 해결할 수 있을까? 단연코 아닐 것이다. 우리의 일상 Data 간에는 XOR 문제같이 선형적으로 풀 수 없는 문제들이 대부분이다. 그러나 위 레고 블럭에서 각각의 단순 선형 함수 합성해 쌓아놓기만 한 함수는 결국 연속적인 선형 연산일 뿐 선형 모델이된다. 선형적인 함수만으로 층이 깊이하면 아예 의미가 없는 것은 아니지만 비선형적인 특성을 반영할 수 없기에 Data Representation에 어느정도 한계가 존재한다. (이는 $y=x$를 여러번 합성해보면 알 수 있다.) 때문에, 선형 함수만을 이용한다면 딥러닝과 같이 여러 층으로 구성하는 이점을 살릴 수 없기 때문에 비선형적인 특성을 반영해야할 필요가 있다. 이 때 사용되는 것이 바로 활성화 함수이다.
앞서 활성화 함수의 공통점은 비선형성을 가진 함수라는 것을 언급하였다. 이 같이 활성화 함수의 목적은 이런 데이터들 간 비선형관계, 비선형적인 특성을 반영하도록 한다. 우리는 딥러닝 층을 쌓을 때, 비선형 함수라고 불리는 활성화 함수를 선형 함수의 사이에 넣어야 비로소 깊은 층을 가진 딥러닝 모델의 의미를 갖을 수 있다. 선형 결합 사이사이에 비선형 적인 요소를 추가하여 모델이 더 유연하고 다양한 데이터 패턴을 포착할 수 있도록 학습을 용이하게 만들 수 있다.
활성화 함수의 잘 알려지지 않은 또 다른 역할이 하나 있는데, 그것은 선형 함수의 출력값을 정형화하는 것이다.
모델의 출력 가장 마지막 단에 활성화 함수를 배치하여 모델의 출력을 0~1 사이의 값을 가진 확률값으로 만들어 출력값이 그 의미를 가질 수 있도록 한다. 이진 분류 모델의 경우 시그모이드 함수를 배치하고 다중 분류 모델 같은 경우는 소프트 맥스 함수를 가장 마지막 단에 배치하여 모델의 출력을 정형화시킨다.
정리하자면, 활성화 함수의 쓸모는 크게 2가지로 요약할 수 있을 것 같다.
1. 선형 결합에 비선형적 요소를 추가하여 학습을 용이하게 한다. (ex. ReLU)
2. 선형함수의 출력값을 정형화 한다. (ex. 시그모이드, 소프트 맥스)
Reference
https://www.yes24.com/Product/Goods/111704966
https://m.blog.naver.com/winddori2002/221937861519
'Analytics' 카테고리의 다른 글
[ML/DL] 인공 신경망(Neural Networks) (0) | 2024.05.10 |
---|---|
[Data] 텐서(Tensor) 구조와 연산 (0) | 2024.05.08 |
[ML/DL] Faiss(Faicbook AI Similarity Search) 사용법 (0) | 2024.05.03 |
[RecSys] 연관 규칙(Association Rule) (0) | 2024.04.30 |
[Data] 정규화(Normalization) / 표준화(Standardization) (0) | 2024.04.30 |