지난 글에서는 머신러닝의 함수, 즉 모델을 찾는 방법들 중 Linear Regression과 Gradient Descent, 그리고 Gradient Descent를 확장시킨 SGD(Stochastic Gradient Descent)에 대해서 정리해 보았다. 이번 글에서는 Linear Classification에 대해서 알아보려고 한다.
1. Linear Classfication
Linear Classfication은 무엇일까? Linear Classfication은 Regression 방식과 달리 출력값 y가 실수가 아니라, class label을 예측하는 문제를 다룬다. 즉, 모델이 데이터 입력(x)를 받아서 여러 클래스 중 어디에 속하는지 분류하는 과정이다.
이때, Linear Classfication에서는 f(x)에 대한 표현식을 다음과 같이 사용할 예정이다.

이 식에 대해서 설명하면 다음과 같다.
- f(x; W): 입력 x에 대해 가중치 W를 이용해 클래스의 점수를 나타낸다.
- W: 학습을 통해 찾아야 하는 가중치
- b: 각 클래스별 bias
- 즉, 여기서 관심의 대상은 x가 아니라 W라는 것이다. x는 입력값일 뿐, 학습을 통해 조정해야 되는 대상은 W,b이다.
Linear Regression과 다른 점을 정리해보면, 연속적인 실수 예측이 아닌 클래스 분류(classifcation)로 바뀌었다는 점이다.
다음 예시를 한 번 살펴보자.

위 그림들을 f(x; W)를 통해 분류해 볼 것이다. 기대되는 값은 차 사진을 넣었을 때는 f(x; W)를 통해 차의 class가 나오도록, 고양이 사진을 넣었을 때는, 고양이가 나오도록, 비행기 사진을 넣었을 때는 비행기가 나오도록 하는 것이다. W와 b를 임의의 값으로 설정하고, 다음과 같이 x를 넣는다고 가정하자.



각 입력 이미지는 여러 개의 특징으로 구성된 벡터 x로 표현된다. 예를 들어 차 이미지 x(차) = [x1, x2, x3, x4]와 같이 4차원 벡터로 표현된다고 하자.이를 사용자가 지정해준 W와 b를 통해 계산을 진행하면 다음과 같이 나오게 된다.



즉, 위 그림과 같이
- 차를 넣었을 때, 차 클래스의 score가 가장 높게 출력되었고
- 고양이는 고양이 클래스 score가,
- 비행기는 비행기 클래스 score가 가장 높게 출력되었다.
이때, 결론은 꽤 괜찮은 모델(W,b 값들)을 찾은 것이다.
그렇지만, 만약에, W와 b를 각각 다른 값으로 진행한다면, 차는 고양이로, 비행기는 차로, 고양이는 비행기로처럼 이상하게 분류될 수 있다.
근데, 이때 핵심은 W이다. b는 단순히 나중에 더해주는 값이기 때문에, Input(x)와 직접적인 연산을 진행하는 W(가중치)가 분류 성능에 더 큰 영향을 끼친다.
그럼, 주어진 문제는 이 W를 어떻게 찾는 것인지에 대한 방법이다. 만약에 다음과 같이 W가 2개 존재한다고 가정해보자.

이때, 각각 W1, W2에 대해서 차 사진을 넣고 계산했을 때 결과가 나왔을 때, 어느 것이 더 좋은 모델인지 판단할 수 있는 방법들을 찾아야 한다는 것이다.
가장 단순한 기준은 정답 y와의 차이이다. 예를 들어 분류할 클래스가 [차, 고양이, 비행기]라면, 차 이미지의 이상적인 출력(y)는 다음과 같다. y = [1, 0, 0]. 이때 좋은 W(가중치)는 차 이미지를 넣었을 때 계산한 값과 실제 출력값의 차이가 작으면 된다.
2. Loss Functions
앞서 정리했듯이, 두 모델 W1,W2 중 어느 것이 더 좋은지를 판단하기 위해 Loss를 측정해야 한다. 즉, 수학적으로 정의한 함수 Loss Function을 구해야 한다.
- L1 Loss
- L2 Loss( = MSE Loss)
- Cross-Entropy
이 외에도 여러 함수들이 존재하는데, 그 중 기본적이고 유명한 함수들에 대해서만 정리해 보려고 한다.
각각에 대해 이해를 위해, Lp-Norm 개념을 먼저 정의를 해보려고 한다. Lp-Norm은 다음과 같이 정의된다.

Lp-Norm은 벡터의 크기(길이)를 일반화한 개념이다. 만약 어떤 벡터 x = [x1, x2, x3, ... ,xn]이 있을 때, Lp-Norm이 위처럼 표현되는 것이다. 위 식을 보면 상수 p 값에 따라 벡터의 크기를 측정하는 방식이 달라진다.
예를 들어, 벡터 OA = (2, 3)이 있다고 해보자.
- 만약, p = 2라면 평소 사용했던 벡터의 크기 (13)^1/2가 된다.
- p=1라면 벡터의 크기는 5가 된다.

즉, 모든 절댓값을 더한 것이 벡터의 크기가 된다.
이제, L2-norm과 L1-norm에 대해서 직관적인 이해를 위해 그래프로 표현해보자. L2-norm은 2차원 평면 상에서 같은 크기(norm)를 가지는 점들의 집합을 원의 형태로, L1-norm은 같은 크기(norm)를 가지는 점들의 집합을 마름모 형태로 표현된다. 아래 그림을 참고하자.


최소화 관점에서 보면, 다음과 같은 차이가 있다.
- L2-norm을 최소화하는 경우
- 어떤 점에서 시작하더라도, 그 점에서 원점으로 향하는 직선 방향으로 이동하면 norm이 줄어든다.
- L1-norm을 최소화하는 경우
- 절댓값의 합이 최소가 되어야 하므로, 임의의 점(x1, x2)에 대해 두 좌표의 크기를 먼저 비교한다.
- |x1| > |x2|라면, x1이 더 빠르게 줄어드는 방향으로 이동한다.
- |x1| < |x2|라면, x2가 먼저 줄어드는 방향으로 이동한다.
- 절댓값의 합이 최소가 되어야 하므로, 임의의 점(x1, x2)에 대해 두 좌표의 크기를 먼저 비교한다.
이제, 본격적으로 이 개념을 이용해 L1 Loss와 L2 Loss에 대해서 알아보자. Loss는 Norm에 의해서 정의될 수 있다. 만약, 위의 차, 고양이, 비행기 예시에서 차 사진 Input에 대해 서로 다른 W1, W2에 대해 계산을 진행한 결과가 각각 f(x; W1) = [0, 1.2, 0], f(x;W2) = [0.07, 0.9, 0.05]로 나왔다고 가정하자. 그렇다면, 오차는 벡터로 다음과 같이 표현할 수 있다.
- y - f(x; W1) and y - f(x;W2)
이때, 벡터끼리의 비교는 힘들기 때문에 벡터 크기를 이용해 두 값을 비교하게 된다. Lp-norm에 적용시키면 다음과 같이 표현된다.


왼쪽 식이 MSE Loss(L2 Loss), 오른쪽 식이 L1 Loss로 나타낸 것이다. 즉, 일반화 시키면 다음과 같은 식이 나온다.

+) 이때, 맨 앞의 1/N곱해준 것은 설정 해줘도 되고, 안해줘도 된다.
이때, 이 식을 적용해 위의 예시 Loss를 구하게 되면, 각각 다음과 같이 나온다.
- L1 Loss일때,
- L(W1) = 0.2, L(W2) = 0.22로 W1이 더 좋은 가중치라고 판단
- L2 Loss일 때,
- L(W1) = 0.04, L(W2) = 0.0174로 W2가 더 좋은 가중치라고 판단
따라서, 어떤 Loss 방식을 선택하느냐에 따라 어느 가중치를 쓸 지도 달라지게 된다. 따라서 적절한 Loss 함수를 써야 되고, 이를 판단하는 것은 설계자의 몫이다.
3. Overfitting, Underfitting
이제 정리할 것들은 overfitting, underfitting과 overfitting을 완화시키는 방법인 regularization에 대해서이다. 먼저 Overfitting과 underfitting에 대해서 알아보자.
보통, 데이터들을 학습시키는 모델을 선택할 때, 무조건 성능이 좋은 모델을 쓰면 좋은거 아닌가? 라는 생각이 들 수 있다. 또는, 컴퓨터 성능이 좋지 않다거나 여러 제약사항이 존재해 어쩔 수 없이 가벼운 모델을 쓸 수도 있다. 이럴 때 생기는 문제들이 overfitting과 underfitting 문제이다.
먼저, Underfitting 문제에 대해서 조금 더 정확히 정의하면 다음과 같다.
- Underfitting: 학습시킬 데이터들의 양이나 복잡도에 비해 학습 모델의 성능(표현능력)이 낮을 경우 생기는 문제
즉, 이 상태를 그래프로 표현하면 다음과 같다.

즉 Underfitting 같은 경우, 모델이 데이터가 많아도 데이터를 학습할 수 없다. 이렇게 되면, 학습을 통해 구한 모델 f(x)가 데이터들을 대표하지 못하는 문제가 생긴다. 이런 경우는 더 복잡한 모델을 사용하거나 더 강력한 하드웨어를 사용해 학습 능력을 높이는 방법으로 해결할 수 있다.
다음으로, Overfitting 문제에 대해서 정의하면 다음과 같다.
- Overfitting: 학습시킬 데이터들의 양이나 복잡도에 비해 학습 모델의 성능(표현능력)이 높을 경우 생기는 문제
즉, 이 상태를 그래프로 나타내면 다음과 같다.

Overfitting과 같은 경우, 모델의 성능이 너무 좋아, 위 그림처럼 학습결과 주어진 데이터들을 다 지나는 f(x)를 만들게 된다. 이렇게 되면 다음 Input값을 넣었을 때 예측하지 못했던 값이나 이상한 값인 음수가 나올 수도 있다. 따라서 Input들을 후에 더 넣게 되면 모델이 오히려 더 이상해질 수 있다는 것이다.
4. Regularization
위에서 정리한 Overfitting을 해결하기 위해서 사용되는 대표적인 방법이 Regularization이다. Regularization에 대해서 정의하면 다음과 같다.
- 모델의 파라미터(W, b) 크기를 제한하거나 페널티를 부여함으로써 지나치게 복잡한 모델로 수렴하는 것을 방지하는 방법
이는 Ockham's razor 철학과 연결되는데,간단히 설명하면, "여러 가살 중에서 현상을 설명할 수 있는 가장 단순한 것이 최선이다"라는 철학이다.
즉, 너무 복잡한 모델보다는 단순하면서도 일반화가 잘되는 모델을 찾는 것이 목표이다.
이 정규화는 Loss함수에 다음과 같이 사용된다.

이 식에 대해서 설명하면 다음과 같다.
- Data Loss 부분
- 모델의 계산 결과값 f(x; W)와 실제 output과의 차이를 계산해서 모델이 데이터를 얼마나 잘 맞추는 지 평가한다.
- 오차가 작을수록 모델이 학습 데이터를 더 잘 표현한다는 의미, 그러나 이 값이 너무 작아지면 Overfitting이 발생한다.
- Regularization 부분
- 최종 Loss L(W)가 너무 작아지지 않도록 제한해서 페널티 항을 더해주어 Overfitting을 방지하는 것이다.
- R(W): L2 Regularization일 때 (Ridge Regression), L1 Regularization일 때 ||W||1 (Lasso Regression)
- 람다: Regularization 강도를 조절하는 하이퍼파라미터
- 람다가 커지면 규제가 강해져 모델을 더 단순하게 만듦
- 람다가 작아지면 규제가 약해져 모델을 더 복잡학게 만듦
이때, ||W||22(Ridge Regression)과 ||W||1(Lasso Regression)에 대해서 간단히 정리해보고 넘어가자.
- ||W||22(Ridge Regression): W=[W100, W99, W98, .. W1]로 표현된 W에 대해서 모든 가중치의 크기를 균등하게 축소
- 기하학적 형태: 원형 제약(L2-norm 참고)
- ||W||1(Lasso Regularization): 일부 W 계수를 0으로 만들어 마름모를 축소하는 방식이다.
- 기하학적 형태: 마름모형 제약(L1-norm 참고)
정리하면, L2 Regularization은 전체 Feature를 조금씩 줄여 안정적인 모델을 생성하는 것이고, L1 Regularization은 불필요한 Feature를 제거하여 단순하고 해석 가능한 모델을 만드는 것이다.
5. 최적화
이제, Linear Classfication으로 돌아와서, 최종 목표를 알아보자. 우리가 찾아야할 것을 정의하면 다음과 같다.
- Loss Function(L(W))을 최소화시키는 W(가중치)를 찾는 것
즉, 모델의 계산 결과값 f(x; W)이 실제 Output(결과)와 가장 가까워지도록 하는 최적의 W를 찾는 과정이 최적화이다.
그렇다면, 우리는 이 W, L을 최소화시키는 W를 어떻게 찾을까? 다음과 같은 방법들이 존재한다.
- Random Search
- Analytic Solution
- Numerical Approach(Gradient Descent)
이때, 다음 예시는 모두 L2 Loss Function을 사용한다고 가정한다.
- Random Search
먼저, Random Search이다. 이름에서 알 수 있듯이, 무작위로, 여러 개의 W를 만들어봐서 계산을 진행하고, Loss를 구한 뒤, 그 중 Loss가 제일 작을 때의 W를 쓴다는 것이다.
이 방법은 계산량이 많고, 최적해에 도달하기까지 많은 시간이 걸릴 뿐 아니라 비효율적이다. 또한, 데이터나 파라미터가 많은 모델에서는 쉬운 일이 아니다. 따라서 구할 수는 있지만 거의 사용되지 않는 방법이다.
- Analytic Solution
수학적으로 Loss 함수를 W에 대해 미분하여 미분값이 0이 되는 지점에서 Loss 최솟값을 찾는 방식이다. 이 방식은 Linear 모델 + L2 Loss 조합일 때만 정확히 해를 구할 수 있다.
- Numerical Solution(Gradient Descent)
이 방법은 Gradient Descent를 이용하여 Loss가 줄어드는 방향으로 서서히 W를 조정하는 방법이다. Gradient Descent를 이용하는 방법이며, Gradient Descent 방법에 대해서 궁금하면 이 전글을 보면 된다.
이 방법에도 조건이 있는데, 일단 L(W)가 미분가능해야 되며, 내부함수 f(x; W) 또한 미분 가능해야 한다.
이 방법은 Gradient Descent를 이용하기 때문에 Gradient Descent가 가지고 있는 문제를 그대로 가지고 있다. Local Minima Problem, Exploding Gradient(컴퓨터가 표현할 수 없는 미분값이 나오는 경우), Inexact Gradient(부정확한 미분값)
그래도 Numberical Solution을 사용하긴 했는데, 모델의 복잡도가 커질수록 단순한 선형 모델로는 한계점이 존재한다. 이제 이 한계쩜을 보완하기 위해 등장한 것이 NN(Neuarl Network, 신경망)이다. 이는 다음 글에서 정리할 예정이다.
'학교공부 > [비디오이미지프로세싱]' 카테고리의 다른 글
| [비디오이미지프로세싱] - CNN_Activation Functions (0) | 2025.10.22 |
|---|---|
| [비디오이미지프로세싱] - CNN(Convolutional Neural Network)_주요 Layer (0) | 2025.10.21 |
| [비디오이미지프로세싱] - Neural Networks (0) | 2025.10.18 |
| [비디오이미지프로세싱] - 머신러닝(Linear Regression, Gradient Decsent) (0) | 2025.10.16 |