TIL(32일차)

김규현·2022년 10월 20일
0

오늘은 논리 회귀(Logistic regression)에 대해 알아보았다.
이진 클래스(Binary class)로 INPUT(입력값)을 넣었을 때 OUTPUT(출력값)을 0과 1로 나타낼 수 있는데 시그모이드 함수(Sigmoid function)를 사용해서 어떤 값의 INPUT(입력값)을 받아도 OUTPUT(결과값)이 0과 1로 출력된다.

시그모이드 함수(Sigmoid function)는 x(입력)가 음수 방향으로 갈 수록 y(출력)가 0에 가까워지고, x(입력)가 양수 방향으로 갈 때는 y(출력)가 1에 가까워져 결국 결과는 0과 1 사이의 결과값이 나온다.

따라서 논리회귀는 x(입력값)를 넣었을 때 선형회귀를 거쳐 나온 output(출력값)을 시그모이드 함수를 만나 y(결과값)를 0과 1사이의 결과값을 출력한다.

또, 논리회귀에서는 cost(loss)를 줄이기 위해 crossentropy의 손실 함수를 사용한다.
crossentropy는 선형회귀에서 가설과 정답값의 거리를 최소화하기 위해 mean_squared_error를 사용 했던 것 처럼 원하는 확률 분포 그래프를 만들도록 binary_crossentropy 손실 함수를 사용한다.

다항 논리 회귀는 INPUT(입력값)을 넣었을 때 OUTPUT(출력값)을 여러개의 숫자로 나눌 수 있다.
마찬가지로 논리 회귀이기 때문에 0과 1로 결과를 나타내야 하는데 0과 1로만 나눌 수 가 없다.

따라서 출력값이 여러개이기 때문에 SOFTMAX라는 손실함수를 사용해 여러개의 출력값을 각각의 가중치로 만들어 다 더했을 때 1(100%)이 나올 수 있도록 One-hot-encoding을 사용해 값을 모두 더한다.

SOFTMAX를 통과한 결과값을 확률 분포 그래프로 그려서 정답 값과의 차이를 최소화 하는 방향으로 학습시키기 위해 categorical_crossentropy 손실함수를 사용한다.

profile
웹개발 회고록

0개의 댓글