일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Multi-Head Attention
- 딥러닝
- cs231n
- deep learning
- Regularization
- Machine Learning
- computer vision
- assignment1
- CNN
- Adam
- 밑바닥부터 시작하는 딥러닝
- DFS
- SQLD
- Baekjoon
- mask r-cnn
- assignment2
- Optimization
- 밑바닥부터 시작하는 딥러닝2
- C++
- RNN
- dropout
- BFS
- Alexnet
- Transformer
- Algorithm
- do it! 알고리즘 코딩테스트: c++편
- Positional Encoding
- Python
- CPP
- marchine learning
- Today
- Total
newhaneul
[Seoul National Univ: ML/DL] Lecture 5. Classification 1(Logistic Regression) 본문
[Seoul National Univ: ML/DL] Lecture 5. Classification 1(Logistic Regression)
뉴하늘 2025. 3. 5. 18:53본 포스팅은 서울대학교 이준석 교수님의 M3239.005300 Machine Learning & Deep Learning 1을 수강하고 공부한 내용을 정리하기 위한 포스팅입니다.
이준석 교수님에게 강의 자료 사용에 대한 허락을 받았음을 알립니다.
https://youtu.be/p6JzKE11r1E?si=PUQJp6H5vxUBPx9G
1. Logistic Regression
Logistic Regression은 Classification 문제를 해결하는 Supervised Learning 모델이다. 일반적으로 Binary Classification에 사용된다. Linear Regression을 Classification 문제에 사용하게 되면 예측값이 0~1 범위를 벗어나게 되기 때문에 문제가 하게 된다.
선형 회귀의 기본 식은 다음과 같다.
- 이 식을 사용하면 출력값이 0~1을 넘어서는 경우가 많다.
- 예를 들어, 0 또는 1을 예측해야 하는데 출력값이 1.5, -0.3 같은 값이 나올 수 있음 → 확률로 해석할 수 없음.
- 확률값으로 변환하려면 추가적인 처리가 필요하다.
로지스틱 회귀는 선형 회귀(Linear Regression)와 비슷하지만, 예측값을 확률로 변환하기 위해 시그모이드 함수(Sigmoid Function)를 사용한다.
시그모이드(Sigmoid) 함수
- 이 함수는 출력 값을 항상 0과 1 사이의 확률 값으로 변환한다.
- z가 0보다 크면 1에 가까운 값, 0보다 작으면 0에 가까운 값을 반환한다
Logistic Regresion 모델에서 x를 넣었을 때 y = 1이 될 확률은 아래와 같다.
그럼 일어나지 않을 확률은 1 - 일어날 확률이므로 계산하게 되면 아래와 같음을 알 수 있다.
이때 Logistic Regression 모델에서는 선형 식을 이끌어내기 위해 어떤 사건이 일어날 확률과 일어나지 않을 확률을 의미하는 Odds라는 개념이 있다.
이 Odds에 로그를 취한 값을 Log-Odds라고 하는데, 이 형태가 선형 회귀 형태를 나타낸다.
즉, Logistic Regression 모델은 Log-Odds가 Linear하다고 가정한다.
그럼 이제 Linear Regression 모델에서 MLE(Maximum Likelihood Estimator)를 통해 최적의 parameter를 구하는 식을 찾았던 것 처럼 Logistic Regression 모델에서도 MLE를 진행해본다. 이때 Likelihood는 어떤 확률이 일어날 확률을 의미한다. Likelihood Function을 Log-Likelihood Function으로 변환하는 이유는 곱을 합으로 바꿔 연산하기 편리해지기 위해서이다.
최적의 Parameter를 구하기 위해 진행하는 Maximum Likelihood Estimator은 β의 미분을 통해 구한다.
Logistic Regression 모델에서 MLE를 적용한 결과 Linear Regression 모델과는 달리 closed form solution이 존재하지 않는다는 것을 알 수 있다. 즉, Log-Likelihood Function의 미분 결과가 Non-Linear하기 때문에, 해석적인 해를 구할 수 없다. 그래서 이를 해결하기 위해 수치적 방법인 Gradient Descent를 적용한다. 그리고 Log-Likelihood Function을 Log-loss라 하고 이 Loss의 최소를 구하는 것을 학습 과정에서의 목표로 한다.
2. Optimization: Stochastic Gradient Descent(SGD)
Stochastic Gradient Descent는 Loss-Function을 최소화하는 parameter를 찾는 과정에서 전체 데이터셋을 사용하는 대신, 임의로 선택한 하나의 샘플을 사용하여 빠르게 수행하는 최적화 알고리즘이다.
그러나 SGD는 각 샘플에 대해 기울기를 계산하므로, 기울기가 노이즈가 많고 불안정한 단점이 있다. 이 단점을 해결하기 위해 Mini-batch Gradient Descent 알고리즘을 사용하곤 한다.
Mini-batch Gradient Descent는 데이터를 작은 배치(batch)로 나누어 한 번에 여러 샘플을 사용하는 방법이다. 이렇게 하면 속도와 안정성을 동시에 개선할 수 있다. 하지만 minibatch의 size를 너무 작게 설정하면, 계산량이 매우 증가하는 문제가 있고, minibatch size를 너무 크게 설정하면, 계산으로 얻을 수 있는 값이 부족해지게 된다. 따라서 적절한 minibatch size를 정하는 것이 중요하다.
지금까지는 Logistic Regression 모델에서 Binary Classification에 대해 알아봤다. 이번엔 Multi Classification에 대해서 알아보도록 한다. Binary Classification 식으로부터 Softmax Function을 유도하는 과정은 아래와 같다. 먼저 x가 입력될 때 y = 1인 확률과 y = -1인 확률에 각각 부호가 다른 e^(- βTX/2)를 곱한다.
그리고 이 부호가 다른 e^(- βTX/2)를 β_1, β_-1로 치환한 식은 아래와 같다.
위의 식을 잘 보면 분모는 분자들의 합이고 분자는 +1, -1번째 class의 score임을 알 수 있다. 두 식의 합이 1이 되는 것을 보면 확률의 정의도 만족함을 알 수 있다. 그럼 class를 확장하여 3개 이상의 class라고 가정해보면 아래와 같은 식이 유도되고, 이를 Softmax Function이라 한다.
정리하면 Softmax Function은 다중 클래스 분류 문제에서 각 클래스에 대해 확률을 계산하는 함수이고, Softmax는 여러 개의 클래스가 있을 때, 각 클래스에 대한 확률적 출력을 생성하기 위해 각 클래스의 지수 함수를 사용하여 계산한다.
여기서:
- K는 클래스의 총 개수
- (w_k)Tx는 클래스 k에 대한 선형 예측값
- 분모는 모든 클래스에 대해 지수 함수를 합산하여 확률이 되도록 정규화하는 역할을 한다.
Step 1. 모델을 결정한다.(Logistic Regression)
Step 2. 결정한 모델의 y와 f(x)가 비슷해지도록 정한다.
Step 3. Training data로 최적의 parameters를 찾는다.
Step 3-1. label y를 추정하기 위해 Training Data x를 모델에 Input으로 준다.
Step 3-2. 추정한 y값과 실제 label y를 비교하여 loss function으로 나타낸다..
Step 3-3. 이 loss function을 기반으로 parameters 값을 변경한다.(Optimization: Gradient Descent)