일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 파이썬을활용한시계열데이터분석A-Z올인원패키지
- 독서리뷰
- 방콕여행
- 패스트캠퍼스후기
- 빅데이터
- Ai
- EDA
- 딥러닝
- 패캠챌린지
- 태국여행
- API
- 상관분석
- 직장인인강
- 통계분석
- airflow
- Python
- 리뷰
- 직장인자기계발
- 패스트캠퍼스
- 자동매매프로그램
- 에어플로
- 데이터 분석
- 활성화함수
- 분석
- correlation
- 머신러닝
- 데이터
- 파이썬
- DAGs
- 데이터분석
- Today
- Total
데이터를 기반으로
Logistic Regression에서 Activation Function으로 Sigmoid를 사용하는 이유 본문
Logistic Regression에서 Activation Function으로 Sigmoid를 사용하는 이유
이노후 2022. 9. 9. 21:14천천히 기본 개념 부터 올라와 드디어..
기존에 궁금했던 내용으로 다시 돌아왔다.
해당 제목에 대한 궁금증을 해결하기 위해 아래의 두 가지 개념을 이해하기 위해 많은 노력을 했다.
https://ds92.tistory.com/82?category=1121703
나의 원초적인 질문은 이것이었다.
이진분류에 사용 가능한 step / sigmoid / tanh 등 많은 함수가 존재하는데 왜 로지스틱은 sigmoid를
사용하는 것일까?
하나 씩 확인하며 넘어가보자.
일단, 먼저 왜 sigmoid를 사용했는가 부터 다른 함수들은 왜 사용을 하기 어려운건지에 대한 관점의 흐름으로 공부해려고 한다.
우선 왜 Sigmoid 함수가 Logistic Regression에서 활성화 함수가 된 것인지 부터 알아보자.
이를 알기 위해서는 2가지 측면의 고려할 사항들이 필요하다.
1. 그래프로 이해하기
→ 해당 개념은 크게 어려운 부분은 아니다. 직접 그림을 그리기 복잡해..타 참고했던 링크를 추천드린다.
https://icim.nims.re.kr/post/easyMath/64
해당 블로그 이미지를 보면 우리가 예측해야할 값은 0과 1 총 2가지의 값이다. 이러한 2가지 값을 예측하기 위해 선형함수(직선)을 사용하게 되면 해당 직선을 벗어나는 값들이 입력될 때 y 를 예측하기 어려운 환경에 처한다.
하여, Sigmoid와 같은 곡선 그래프를 활성함수로 적용해야 더 많은 이상치를 커버할 수 있다.
2. 오즈(Odds)로 부터 파생되는 개념
→ 오즈와 오즈비에 대한 개념을 확실히 이해해야한다.
(학부생때 공부좀 할걸...엄청 후회중입니다.)
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=ifyougirl&logNo=60123191493
제가 오즈에 대한 개념이 부족했는데 많은 오즈에 관련된 글을 서칭한 결과 해당 블로그가 가장 쉽게 이해할 수 있게 풀어써준 글이라 해당 블로그를 추천한다.
오즈와 오즈비에 대한 개념을 이해하고 왔다.
근데 왜 log를 씌워주는 logit 을 적용하는 것일까? 이에 대한 해답은 천천히 오즈비를 구하는 방식 부터 뜯어 봐야 한다.
위 블로그 글에서 확인했겠지만,
성공확률 = p
오즈(Odds) = p/(1-p)
위와 같이 구성되어 있다.
p 가 0일때, 1일때 를 각각 대입해보면 오즈가 가질 수 있는 값의 범위는 0 ~ 무한대 이다.
우리는 최종적으로 0과 1 을 분류하는 작업을 하고자하며, 모든 값에대해서 분류를 진행해 주어야 한다.
그럼 x 는 -무한대 ~ +무한대 까지 범위를 가지며 y는 0과 1을 가져야한다.
그렇기에 우리는 오즈의 범위가 -무한대 ~ +무한대 를 가질 수 있도록 자연로그를 오즈에 취해주게 되는 것이다.
ln(p/(1-p)) → 해당 값은 - 무한대 부터 + 무한대의 값을 가진다.
https://nittaku.tistory.com/478
해당 그림과 설명은 위 블로그를 참고하면 좀 더 쉽게 이해할 수 있다.
그렇게 log(p/(1-p)) = ax + b 인 식을 p 를 기준으로 변형을 해주면 (위 블로그에 있는 수식을 그림으로 캡쳐해서 사용하는 것은 너무 양심이 없는 것 같아....해당 블로그의 방문을 높이고자 글로 설명을 이어나가겠다.)
우리가 자주 보던 sigmoid 함수의 모양으로 변하는 것이다.
이렇기에 우리는 로지스틱 회귀에서는 활성함수로 Sigmoid를 사용하게된 것이다.
다시, 원래의 질문으로 돌아와서
왜 step, tanh 등 다른 활성화 함수를 사용하지 않는 것일까?
이에 대한 질문 자체가 잘못된 것을 공부하다가 알게되었다.
tanh와 sigmoid에 대한 차이점은 아래의 블로그가 가장 잘 설명해주는 것 같다.
https://leeejihyun.tistory.com/32
결국, tanh는 sigmoid의 단점을 보완하기 위한 활성화함수였고 Relu, Reaky Relu 등 다양한 활성화 함수들이 존재하며 각각 상황과 목적에 맞게 사용할 함수를 선택해야하는 구조였던 것이다.
물론, Step은 역전파를 진행할 때 미분을 해야하는 데 전 구간이 미분불가능이기에 사용이 불가능하다.
이렇게...sigmoid로 부터 궁금증이 생겨 '왜?' 라는 관점으로 여기까지 정리할 수 있었다.
역시 공부할 때는 항상 '왜?' 라는 것은 마법과도 같다. 많은 스트레스와 공부할 양을 만들어주지만 항상 끝은 창대하다.
사실 해당 글을 엄청 잘 정리한 것도, 나만의 공부로 승화시켜 타 블로그를 참고하지 않고 나만의 글을 작성한 것도 아니다.
하지만, 내가 이해한 것들을 토대로 정리를 한 것이고 혹여나 나와 비슷한 누군가에게 도움이 되었으면 좋겠다.
내일 부터 다시 기존에 공부하던 다른 활성화 함수에 대한 진도를 나가기 시작해야겠다.
(본문의 '왜?' 때문에 2주 정도 진도가 늦어졌다...ㅠㅠ)
'데이터 분석(Python) > 딥러닝(Deep Learning)' 카테고리의 다른 글
배치 정규화(Batch Normalization) (4) | 2022.10.04 |
---|---|
추론(Inference) (0) | 2022.10.03 |
가중치 초기화(Weight initialization) (1) | 2022.10.03 |
활성화 함수(Activation Function) (0) | 2022.09.05 |