1. Linear Regression
1) 개념
- 지도 학습(supervised learning)의 한 종류
- 학습 데이터(training data set)를 이용한 학습(training) 과정을 거쳐 데이터에 가장 잘 맞는 선형 모델의 매개변수(parameter)를 찾아 예측하는데 여기서 예측의 범위는 연속적인 범위를 가집니다.
다시 말해, 종속변수 y와 한 개 이상의 독립변수 x와의 선형 상관관계를 모델링하는 회귀분석 기법입니다. 한 개의 독립 변수(또는 설명 변수)에 기반한 경우에는 단순 선형 회귀, 둘 이상의 독립 변수에 기반한 경우에는 다중 선형 회귀라고 합니다. 실제로 많은 데이터들이 아래의 그래프와 같이 선형(linear)으로 분포하는 경향이 있기 때문에 선형 회귀를 통해 예측이 가능합니다.
- 종류 : 단순 선형회귀 / 다중 선형회귀
2) Hypothesis(가설)
3) cost fuction (비용함수)
비용함수의 값이 적을수록 가장 잘 예측한 것입니다. 위의 가설에서 예측한 값과 실제 값의 오차가 가장 작아지는 W와 b를 구합니다. 그런데 예측값(cost)의 값이 음수가 나온 경우에는 평균제곱오차 공식을 이용해서 구합니다.
4) optimization (최적화)
① 경사하강법 (Gradient Descent Method)
그래프에서 경사가 감소되듯이 기울기가 점차 초저점 방향으로 따라가다 보면 언젠가는 손실율이 최소값에 도달합니다.
step 1. w1에 대한 시작점을 선택합니다.
step 2. 시작점에서 손실곡선의 기울기를 계산합니다.
step 3. 위 과정을 반복해서 최소값에 점점 접근합니다.
- 가설
- 학습률 (lr)
학습률이 아주 작을 경우 학습률이 큰 경우 학습률이 크고,
W 초기값이 잘못된 경우
- 학습률이 아주 작을 경우 아주 조금씩 움직입니다. 데이터의 양이 많을 경우 반복횟수가 많기 때문에 학습시간이 오래 걸린다는 단점이 있습니다.
- 학습률이 큰 경우 학습시간이 적게 걸린다는 장점이 있지만 보폭이 너무 커서 지그재그 방향으로 움직여서 양의 기울기와 음의 기울기가 반복한다는 단점이 있습니다.
- 학습률이 크고 초기값이 잘못될 경우에는 학습률이 크기 때문에 발산할 가능성도 있습니다. 그러나 프로그램 실행 시 테스트를 하면서 학습률을 조정하기 때문에 시행착오를 충분히 극복할 수 있는 문제입니다.
② 확률적 경사하강법 (Stochastic Gradient Descent Method)
좌측그림은 볼록해서 임의의 기울기가 있을 때 비용이 최소화 되는 기울기를 이렇게 줄여가면서 찾아 가는게 GD방식입니다. GD gradient descent 진행 방향으로 이게 학습률에 따라 일정하게 진행되어 나갑니다.
단점으로 복잡한 신경망 구조에서는 궁극적인 최솟값을 찾지 못하고 로컬미니멈을 따라가다 보면 경사에 궁극적인 최솟값을 찾지 못하고 국소적인 최솟값을 사용하게 되는데,
즉, 현재 우리가 손실함수에 대해서 그래프를 그리면 볼록한 형태의 그래프가 그려지고, 실질적으로 이 모델이 복잡하고 망이 많을 경우는 볼록한 부분이 하나가 아니라 여러 개가 될 수가 있습니다. 그래서 GD같은 경우는 궁극적으로 찾는 글로벌 미니멈을 찾지 못하고 로컬미니멈을 찾는 경우가 있을 수도 있습니다.
그래서 갱신한 것이 stochastic gradient descent 입니다.
이 SGD는 매 스탭에서 배치사이즈별로 한 개의 샘플은 무작위로 선택하고 그 샘플에 대한 gradient를 계산하는 방식입니다. 손실함수가 매우 불규칙할 경우 알고리즘이 로컬미니멈을 건너뛰도록 도와줄 수 있고 그다음에 글로벌 미니멈을 찾을 가능성이 높습니다. 그런데 stochastic gradient는 단점으로는 방향성이 없습니다. 그래서 이러한 문제점을 개선하기 위해서 Momentum, Adagrad, RMSprop, Adam 등 다양한 최적화 알고리즘들이 있습니다.
5) 다중 선형회귀
다중선형회귀는 독립변수가 여러개고 독립변수와 종속변수 간의 관계가 선형인 형태를 의미합니다. 실질적으로 우리가 학습시킬 때 단순 선형식 보다 다중 선형회귀식을 더 많이 사용합니다.
비용함수와 경사하강법은 단순 선형회귀와 같은 방식입니다. 비용함수에서 단지 독립변수 개수만 다를 뿐입니다.
2. Logistic Regression
1) 개념
Logistic Regression은 Binary classification을 이용하여 독립변수와 종속변수를 입력 후, 실제 값과 비교하여 예측 값과 실제 값이 가장 가깝도록 학습하고 새로운 값이 입력되면 그것을 분류하여 클래스에 속할 확률을 출력하는 학습법입니다.
데이터를 두 개의 그룹으로 분류하는 문제에서는 로지스틱 회귀분석이 가장 기본적인 방법입니다. 회귀분석과의 차이는 회귀분석에서는 우리가 원하는 것인 예측값이 실수이기 때문에 종속변수의 범위가 실수이지만, 로지스틱 회귀분석에서는 종속변수 yy값이 0 또는 1을 가집니다. 그래서 우리는 주어진 데이터를 분류할 때 0인지 1인지 예측하는 모델을 만들어야 합니다.
2) 활성화 함수
Logistic Regression에서는 시그모이드 함수를 사용합니다.
선형함수는 치역이 0과1의 범위를 벗어날 수 있고 새로운 데이터의 추가가 기울기를 바꿀 수 있기 때문에 기존의 분류 모델에 큰 영향을 미칠 수 있고, tanh 함수는 치역이 0과 1의 범위를 벗어나므로 시그모이드 함수를 사용합니다.
단순선형회귀분석은 목표가 실수 값 예측이기 때문에 선형함수 y= wx+b를 이용하여 예측하지만 로지스틱 회귀분석은 종속변수가 0또는 1이기 때문에 y=wx+b를 이용하여 예측하는 것은 의미가 없고 그래서 Odds를 이용합니다.
Odds는 승산율로 확률에서 시작되어, y=1일 성공이라 가정할 때, 실패 (1-p)에 대한 성공 (p)할 확률 비를 의미합니다
=> p(y=1|x)일 때, Odds(p)=p/1-p
그런데 Odds는 만약 p가 1에 가까울수록 승산이 치솟고 p가 0이면 0이 됩니다.
=> 0<=odds<=∞ (z의 범위는( –∞, ∞))
그래서 0 ~ 1의 출력을 위한 Logit 변환이 필요합니다.
=> Logit = log(odds(p)) = log(p / 1-p) = wx+b
로짓 변환을 하면 입력 0~1사이에 대해 출력값의 범위는( –∞,∞) 가 되고, 0<= P <=1 을 만족합니다. Log(Odds(p))의 범위는 실수이므로 이 값에 대한 선형회귀분석을 하는 것은 의미가 있습니다.
로짓 함수에 역함수를 취하면 시그모이드 함수가 되고
로지스틱 회귀의 가설 함수인 시그모이드 함수는 0과 1사이의 값으로 확률을 생성하고 독립변수 x와 가중치에 대해 로짓 관계를 선형 함수로 표현하는 것이 가능합니다.
학습이 끝난 네트워크를 사용할 때,
확률이 0.5 보다 작으면 0으로, 0.5보다 크거나 같으면 1로 분류할 수 있습니다.
3) cost function
-베르누이 분포
베르누이 시행이란 결과가 두 가지 중 하나로만 나오는 시행으로
베르누이 확률변수는 베르누이 시행 결과를 0또는 1의 숫자로 바꾼 이산확률변수입니다.
확률질량함수 (probability mass function, PMF)
종속변수 y에 대한 분포는 시행 결과가 0 또는 1인 베르누이 분포와 동일합니다.
-Entropy
정보량은 발생할 확률이 1이면( p(xi)=1) 정보량이 0 (I(xi)=0)이 됩니다. 사건이 일어나기 전 결과 확신 가능하기 때문에 정보는 없는 것입니다.
=> I(xi) = -log p(xi)
Entropy = 정보량의 기댓값(평균)
이고 확률분포함수를 입력으로, 숫자를 출력하는 함수로 정의합니다.
-Binary Cross Entropy
베르누이 확률질량 함수를 Entropy에 적용해 Logistic Regression의 cost function 인 Binary Cross Entropy 를 만들었습니다.
각 정보량을 더해 비용 함수를 만들어 주었습니다.
3. Logistic Regression에서 cross entropy를 사용하는 이유
Linear regression에서는 MSE가 Cost function으로 사용되었습니다. 반면에 Logistic Regression에서는 조금 더 복잡하게 생긴 cross entropy를 cost function으로 사용합니다. Logistic Regression에서는 왜 MSE를 사용하지 않고 cross entropy를 사용하는 것일까요??
앞서 살펴본 것처럼 logistic regression은 비선형인 sigmoid함수를 활성화 함수로 사용해 비선형 값을 출력하기 때문에 MSE를 사용할 수 없다고 합니다. MSE의 식처럼 제곱을 하게 되면 한 개의 최저점을 갖는 볼록함수가 아닌 여러 개의 최저점을 갖는 함수가 나오기 때문에 비용함수로 사용할 수가 없습니다.
그렇다면 cross entropy는 왜 비용함수로 사용할 수 있을까요? 이유는 2가지입니다. 우선 위의 비용함수 C의 값은 항상 양수입니다.
타겟y와 모델을 사용해 예측한 a의 값은 0과 1 사이이기 때문에 ylna + (l-y)ln(l-a)의 값은 항상 음수이며 이 값을 -1/n로 곱해주어 양수 값을 갖게 됩니다. 두 번째 이유는 타겟값 y와 예측값 a가 비슷할수록 C의 값이 0에 가까워진다는 것입니다. 예를 들어 y=0, a=0일 경우 −ln(1−a)≈0이나옵니다. 반면에 y=0, a=1인 경우에 -ln0로 무한대로 가게 됩니다. 이처럼 cross entropy를 비용함수로 사용하면 목표와 예측이 얼마나 가까워지고 있는지 확인할 수 있습니다.
reference
http://neuralnetworksanddeeplearning.com/chap3.html
https://ml-cheatsheet.readthedocs.io/en/latest/logistic_regression.html#id12
'4기(20200711) > 1팀' 카테고리의 다른 글
부산대 강의 마무리 - 비지도학습, 벡터화 개념 정리 (0) | 2020.09.07 |
---|---|
과적합, CNN, RNN (0) | 2020.08.08 |
경사소실을 해결하는 방법 - 가중치 초기화, 배치 정규화 (0) | 2020.07.31 |
소프트맥스 회귀와 클러스터링 (0) | 2020.07.25 |