데이터를 기반으로

Logistic Regression에서 Activation Function으로 Sigmoid를 사용하는 이유 본문

데이터 분석(Python)/딥러닝(Deep Learning)

Logistic Regression에서 Activation Function으로 Sigmoid를 사용하는 이유

이노후 2022. 9. 9. 21:14
728x90
반응형

천천히 기본 개념 부터 올라와 드디어..

 

기존에 궁금했던 내용으로 다시 돌아왔다.

 

 

해당 제목에 대한 궁금증을 해결하기 위해 아래의 두 가지 개념을 이해하기 위해 많은 노력을 했다.

 

https://ds92.tistory.com/82?category=1121703 

 

선형(Linearity)과 비선형(Non-linearity)의 차이점

선형함수와 비선형함수는 정확히 어떤 차이점을 가질까? 위와 같은 질문을 시작으로 선형과 비선형의 본질적인 의미까지 파악해보고자 한다. 우선 먼저 선형이란 무엇일까? [ 선형 ] 선형성(線

ds92.tistory.com

https://ds92.tistory.com/83

 

활성화 함수(Activate Function)

활성화 함수에 대해 이해하기 앞서 뉴럴 네트워크를 이용한 학습 프로세스를 알아야한다. 해당 설명에서는 간략히 큰 과정만 정의한 것이니, 정확한 과정은 추후 정리할 예정이다. [ 뉴럴 네트

ds92.tistory.com

 

나의 원초적인 질문은 이것이었다.

 

이진분류에 사용 가능한 step / sigmoid / tanh 등 많은 함수가 존재하는데 왜 로지스틱은 sigmoid를

사용하는 것일까?

 

하나 씩 확인하며 넘어가보자.

 

일단, 먼저 왜 sigmoid를 사용했는가 부터 다른 함수들은 왜 사용을 하기 어려운건지에 대한 관점의 흐름으로 공부해려고 한다.

 

우선 왜 Sigmoid 함수가 Logistic Regression에서 활성화 함수가 된 것인지 부터 알아보자.

 

이를 알기 위해서는 2가지 측면의 고려할 사항들이 필요하다.

 

1. 그래프로 이해하기

→ 해당 개념은 크게 어려운 부분은 아니다. 직접 그림을 그리기 복잡해..타 참고했던 링크를 추천드린다.

https://icim.nims.re.kr/post/easyMath/64

 

활성함수(Activation) 시그모이드(Sigmoid)함수 정의 | 알기 쉬운 산업수학 | 산

 

icim.nims.re.kr

해당 블로그 이미지를 보면 우리가 예측해야할 값은 0과 1 총 2가지의 값이다. 이러한 2가지 값을 예측하기 위해 선형함수(직선)을 사용하게 되면 해당 직선을 벗어나는 값들이 입력될 때 y 를 예측하기 어려운 환경에 처한다.

 

하여, Sigmoid와 같은 곡선 그래프를 활성함수로 적용해야 더 많은 이상치를 커버할 수 있다.

 

2. 오즈(Odds)로 부터 파생되는 개념

→ 오즈와 오즈비에 대한 개념을 확실히 이해해야한다.

(학부생때 공부좀 할걸...엄청 후회중입니다.)

 

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=ifyougirl&logNo=60123191493 

 

오즈(odds)와 오즈비(odds ration)

성공할 확률 에 대한 성공의 오즈(odds)는 다음과 같이 정의된다. 즉, 오즈는 성공할 확률이 실패할 확률의...

blog.naver.com

제가 오즈에 대한 개념이 부족했는데 많은 오즈에 관련된 글을 서칭한 결과 해당 블로그가 가장 쉽게 이해할 수 있게  풀어써준 글이라 해당 블로그를 추천한다.

 

오즈와 오즈비에 대한 개념을 이해하고 왔다.

근데 왜 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

 

5-6. 로지스틱 회귀분석(Logistic Regression)

로지스틱 회귀분석 지금까지 학습한 선형 회귀분석 단순/다중은 모두 종속변수Y가 연속형 이었다. 로지스틱회귀분석 은 종속변수가 범주형이면서 0 or 1 인 경우 사용하는 회귀분석이다. 로지스

nittaku.tistory.com

 

해당 그림과 설명은 위 블로그를 참고하면 좀 더 쉽게 이해할 수 있다.

 

그렇게 log(p/(1-p)) = ax + b 인 식을 p 를 기준으로 변형을 해주면 (위 블로그에 있는 수식을 그림으로 캡쳐해서 사용하는 것은 너무 양심이 없는 것 같아....해당 블로그의 방문을 높이고자 글로 설명을 이어나가겠다.)

우리가 자주 보던 sigmoid 함수의 모양으로 변하는 것이다.

 

이렇기에 우리는 로지스틱 회귀에서는 활성함수로 Sigmoid를 사용하게된 것이다.

 

 

 

다시, 원래의 질문으로 돌아와서

 

왜 step, tanh 등 다른 활성화 함수를 사용하지 않는 것일까?

 

이에 대한 질문 자체가 잘못된 것을 공부하다가 알게되었다.

 

tanh와 sigmoid에 대한 차이점은 아래의 블로그가 가장 잘 설명해주는 것 같다.

 

https://leeejihyun.tistory.com/32

 

sigmoid보다 tanh를 쓰는 이유

1. sigmoid보다 tanh의 기울기가 더 크기 때문이다. 기울기가 더 크면 경사 하강법을 할때 더 큰 step으로 W와 b를 업데이트할 수 있으므로 더 빨리 cost를 0으로 만들 수 있다. cost는 0에 가까울수록 성

leeejihyun.tistory.com

 

결국, tanh는 sigmoid의 단점을 보완하기 위한 활성화함수였고 Relu, Reaky Relu 등 다양한 활성화 함수들이 존재하며 각각 상황과 목적에 맞게 사용할 함수를 선택해야하는 구조였던 것이다.

 

물론, Step은 역전파를 진행할 때 미분을 해야하는 데 전 구간이 미분불가능이기에 사용이 불가능하다.

 

 

이렇게...sigmoid로 부터 궁금증이 생겨 '왜?' 라는 관점으로 여기까지 정리할 수 있었다.

 

역시 공부할 때는 항상 '왜?' 라는 것은 마법과도 같다. 많은 스트레스와 공부할 양을 만들어주지만 항상 끝은 창대하다.

 

 

사실 해당 글을 엄청 잘 정리한 것도, 나만의 공부로 승화시켜 타 블로그를 참고하지 않고 나만의 글을 작성한 것도 아니다.

 

하지만, 내가 이해한 것들을 토대로 정리를 한 것이고 혹여나 나와 비슷한 누군가에게 도움이 되었으면 좋겠다.

 

내일 부터 다시 기존에 공부하던 다른 활성화 함수에 대한 진도를 나가기 시작해야겠다.

 

(본문의 '왜?' 때문에 2주 정도 진도가 늦어졌다...ㅠㅠ)

728x90
반응형