Develog
Optimization 본문
판별 모델과 생성 모델

판별 모델 (Discriminative Model)
판별 모델은 Many-to-One을 목표로 한다. 사용자가 여러 이미지를 제공하면 하나의 라벨을 생성한다.
사용자를 통해 제공받은 샘플 데이터를 학습하여 함수를 정의하고, 해당 이미지에 맞는 라벨을 생성한다. 이후 유사한 이미지가 다시 유입되면 학습한 이미지를 분류한다. 생성형 모델과 다르게 새로운 값을 생성하는 것은 불가능하다. 새로 유입된 이미지가 어떤 라벨에 더 적합한지 확률을 이용해 판별하며, 더 높은 확률을 지닌 라벨을 반환한다.
판별 모델은 유입된 이미지 하나에 대한 라벨끼리만 확률은 나누므로, '이미지 간의 경쟁' 관계가 구축되지 않는다. 즉, 사진 A에서 라벨이 개일 확률이 1.0이더라도 사진 B에 대한 분류에 영향을 미치지 않는다. 학습되지 않은(분류할 수 있는 라벨과 무관한) 형태의 데이터가 유입되더라도 확률을 통해 결과를 반환해야 하므로 부정확한 결과를 무조건 내놓는다. 이 때문에 학습된 범위를 벗어나면 판별 모델은 신뢰성을 잃는다.
- 개와 고양이를 분류할 수 있는 판별 모델에 원숭이 사진을 제공하면 고양이로 분류한다. (분류 자체는 수행함)
생성 모델 (Generative Model)
생성 모델은 One-to-Many를 목표로 한다. 사용자가 하나의 라벨을 제공하면 여러 이미지를 생성한다.
학습용 샘플(강아지 사진 등) 데이터를 제공하면 모델은 학습을 통해 샘플 데이터의 특징을 알아내 함수를 정의한다. 학습이 완료된 생성형 모델은 사용자가 입력한 명령에 따라 새로운 데이터를 생성해 낼 수 있게 된다. 즉, 생성 모델을 생성할 때의 목표는 샘플 데이터를 통해 일반화할 수 있는 함수를 정의하고, 이를 통해 새로운 데이터를 생성할 수 있도록 학습시키는 것이다.
생성형 모델에서는 '진짜 같은 이미지를 만들려는 생성자'와 '가짜를 잡아내려는 판별자'가 서로 경쟁하는 구조를 지닌다. 즉, 한정된 자원(확률 100%)을 이미지들이 최대한 많이 확보하기 위해 서로 경쟁하는 방식이다.
- 개 이미지에 대한 특징을 학습하여 일반화된 함수를 생성하고, 명령에 따라 새로운 개 이미지를 생성한다.
조건부 생성 모델 (Conditional Generative Model)
조건부가 아닌 기본적인 생성 모델은 '아무 이미지'를 제작하는 모델이다. 조건을 지정하지 않고 무작위로 이미지를 생성하기 때문에 어떤 결과가 나올 것인지 예상하기 어렵다.
조건부 생성 모델은 사용자가 '안경을 쓴 남성의 이미지'처럼 특정 조건을 지정하여 해당 조건에 맞는 이미지를 생성하는 모델이다. 현재 사용되는 대부분의 생성형 모델(Text-to-Image, Image-to-Text 등)이 조건부 생성 모델 방식이다.
잠재 변수 모델 (Latent Variable Model)
관찰할 수 있는 데이터 $X$에 숨겨진 관찰되지 않은 원인 $Z$가 있다고 가정하는 통계적 모델. 여기서 $Z$는 매우 복잡하고 높은 차원의 데이터 $X$와 달리 훨씬 단순하고 낮은 차원의 개념으로 가정한다.
수천 명의 얼굴 사진($X$)에는 성별, 나이, 머리색, 눈동자 색 등 다양한 특징($Z$)가 존재한다. 잠재 변수 모델은 이러한 특징들을 잠재 변수와 비지도 학습을 통해 파악한다.
- 관찰 변수($X$): 실제로 수집한 데이터 (수천 명의 얼굴 사진)
- 잠재 변수(Z): 데이터 내부에 숨겨진 본질적인 특징 (얼굴의 각도, 웃음 정도, 성별 등)
잠재 변수 모델에서는 잠재 변수를 어떻게 모델링할 것인지에 집중해야 한다.
- 데이터 생성하기: 숨겨진 특징($Z$)을 바꾸면 그에 대응하는 새로운 데이터가 생성된다.
- 차원 축소: 수만 개의 픽셀 데이터를 몇 개의 핵심 숫자로 압축하여 데이터 본질을 파악한다.
- 데이터 이해: 겉으로 드러난 데이터 사이의 복잡한 관계를 잠재 변수라는 공통의 원인으로 명확히 설명한다.
잠재 변수 모델의 구조는 조건부 확률로 설명될 수 있다.
$P(X) = \int{P(X \mid Z) P(Z) dZ}$
- $P(Z)$: 데이터를 보기 전, 잠재 변수가 어떤 분포를 가질 것이라는 가정.
- $P(X \mid Z)$: 특정한 잠재 변수 $Z$가 주어졌을 때, 실제 데이터 $X$가 어떻게 나타날 것인지 결정하는 확률.
- $P(X)$: 전체 데이터 분포. 모든 가능한 $Z$에 대한 확률을 더해야 하므로 적분으로 계산된다.
단, 인간이 직접 잠재 변수로부터 복잡한 데이터를 만들어내는 수학 공식을 산출하는 것은 연산량이 기하급수적으로 늘어나기 때문에 불가능에 가깝다. - 웃음 수치가 0.1 올라갔을 때, 2000개가 넘는 픽셀값들이 어떻게 변해야 자연스럽게 웃는 얼굴을 만들어낼 수 있는가?
이를 극복하기 위해 직접 연산하는 것 대신 신경망을 사용한다. 즉, 함수를 직접 설계하는 대신 수많은 데이터를 제공하여 Z에서 X로 가는 복잡한 규칙을 찾도록 모델을 학습시킨다.
연속 잠재 변수 표현
데이터의 숨겨진 특징($Z$)은 디지털 값처럼 끊어지는 값이 아니라 아날로그값처럼 연속적으로 이어지는 숫자의 나열로 표현되는 방식이다.
- 데이터의 본질적인 특징을 실수로 표현하여 그 값을 조절함에 따라 데이터가 어떻게 변하는지 모델링하는 것.
데이터를 분류할 때는 보통 개 또는 고양이처럼 이산적 표현으로 생각하기 쉽다. 하지만 연속 잠재 변수는 웃음의 정도를 실수로 표현하는 것처럼 데이터의 특징을 나타내는 값의 변화를 연속적으로 표현한다. 즉, 잠재 변수 $Z$를 조금만 바꾸면 출력되는 데이터 $X$도 조금만 바뀐다.
- 압축의 효율성: 수만 개의 픽셀($X$)을 단 몇 개의 핵심적인 숫자($Z$)로 요약할 수 있다.
- 무한한 생성: $Z$가 실수이기 때문에 무한히 많은 조합이 만들어질 수 있다.
- 구조 파악: 비슷한 데이터끼리는 잠재 공간상에서도 가까운 곳에 모인다.
최적화
우리는 훈련할 수 있는 파라미터를 가지고 함수의 형태를 정의한다. 여기서 모델의 성능을 결정하는 파라미터들의 값은 이미 알고 있다. 그렇다면 입력된 새로운 데이터에 가장 적합한 파라미터 값은 어떻게 훈련해야 하는가?
최적화는 어떠한 문제를 한정된 자원과 비용을 이용해 최대 효율로 해결하기 위한 최적의 방안을 찾는 것이다.
AI 분야에서 최적화는 모델이 가장 적게 틀리도록 정답에 최대한 가까운 파라미터를 찾아가는 과정을 말한다. 최적화는 모델의 타입에 따라서 형태와 구성이 조금씩 달라진다.
최적화를 진행하기 위해서는 아래와 같은 구성요소가 요구된다.
- 목적 함수/손실 함수: 모델이 얼마나 틀렸는지를 측정하기 위한 함수. 점수가 낮을수록 정확도가 높다.
- 파라미터: 모델의 결과를 변화시키는 변수. 선형 모델의 경우 기울기와 절편이 이에 해당한다.
- 최적화 알고리즘: 파라미터를 어떻게 조정할 것인지를 결정하는 알고리즘.
최적화 과정을 단계별로 정의하면 아래와 같다.
- 1차 학습: 모델이 입력된 새로운 데이터에 대해 일차적으로 무작위 파라미터를 이용해 값을 내놓는다.
- 손실함수($L$): 통해 모델이 내놓은 결과가 얼마나 신뢰할 수 있는 값인지 수치화한다.
- 역전파: 파라미터값을 바꿀 때 전체 오차가 어떻게 변화하는지 파악하기 위해 미분(역전파)을 진행한다. 손실 함수를 각 파라미터로 미분하면 오차를 줄이기 위해 파라미터를 어디로 조정해야 하는지 파악할 수 있게 된다.
- 경사하강법: 역전파로 알아낸 방향을 바탕으로 파라미터값을 학습률에 따라 점진적으로 갱신한다.
선형 모델 최적화
선형 모델은 '형태'에 집중한 1차 방정식($y = Wx + b$) 구조의 모델이다. 여기서는 데이터들 사이의 관계가 직선 또는 평면 형태라고 가정한다. 즉, 입력이 커지면 출력도 일정한 비율로 커진다고 가정하므로 선형 모델의 최적화란, 실제 데이터와 모델의 예측값 사이 거리를 최소화하는 $W$와 $b$를 찾는 것에 해당한다.
- 경사 하강법: 현재 $W$, $b$로 예측값을 구하고, 실제 값과의 오차를 계산한다. 오차 함수를 $W$와 $b$로 미분하여 기울기를 파악한 뒤, 오차가 줄어드는 방향을 향해 점진적으로 파라미터를 조정한다.
- 정규 방정식: 데이터가 방대하지 않을 때 사용되며, 점진적으로 파라미터를 조정하지 않고 한 번의 행렬 계산으로 처리한다. 데이터가 적을 때만 유효하다.
선형 모델은 1차 방정식 구조이기 때문에 다룰 수 있는 파라미터의 수가 데이터의 수와 무관하게 항상 2개($W, b$) 뿐이다. 이 때문에 데이터를 통해 모델이 학습한 지식을 모두 저장하기 위해서는 정해진 개수의 파라미터에 모두 압축해서 담는 '파라미터 모델' 구조를 활용해야 한다. 이는 수많은 데이터로 학습을 끝낸 뒤 핵심 요소만 남겨서 저장하는 방식이다.
- 수천 명의 관상을 통해 학습한 '코가 높으면 재물복이 있다'는 한 문장의 규칙만 저장한다. (수천 명의 얼굴에 대한 기억은 불필요)
비선형 모델 최적화
비선형 모델은 데이터가 선형적으로 구분할 수 없을 정도로 복잡한 관계를 가질 때 사용된다. 단순히 비례하는 관계를 넘어 데이터 분포가 꺾이거나, 휘거나, 특정 구간에서만 반응하는 등 복잡한 패턴을 지니고 있다. 이러한 복잡한 패턴에 대응하기 위해서는 선형 모델 사이에 활성화 함수(ReLU, Sigmoid 등)를 적용하여 모델이 '휘게' 만들어야 한다. AI가 사람의 얼굴처럼 복잡한 대상을 이해하기 위해서는 비선형 모델이 필수적이다.
비선형 모델을 최적화할 때는 데이터의 복잡한 관계를 풀기 위해 만들어진 비선형 함수를 사용한다. 이 비선형 함수의 오차를 최소화하는 과정이 비선형 모델의 최적화 과정이 된다. 비선형 모델은 선형 모델과 다르게 일직선 경가 아니라 굴곡이 있는 경로를 다루기 때문에 '비볼록 함수'의 구조로 인해 발생할 수 있는 문제에 경계해야 한다.
- n개의 지역 최소 점: 해당 지점은 주변보다 낮지만, 전체에서 가장 낮은 점이 아님.
- 안장점: 어떤 방향으로는 내려가고 다른 방향으로는 올라가는 지점. (겉보기에는 기울기가 작아 보여도 최저점이 아님)
경사하강법과 같은 선형 모델 최적화에서 흔히 쓰이는 기울기 기반 최적화 방법은 현재 위치 근처의 기울기만 가지고 판단하기 때문에 이러한 비볼록 함수의 특징에 유연히 대응할 수 없다. 이 때문에 비선형 모델을 최적화할 때는 절대적인 최적화보다는 상대적인 최적화에 더 집중해야 한다.
- 모멘텀: 이전 단계의 이동 방향을 누적해 관성을 부여하는 최적화 기법. 단계마다 현재 기울기만 따르는 대신 과거 이동 방향을 함께 반영한다.
- 적응형 학습률: 경사도 방향과 가파른 수준을 알려주는 벡터, 그래디언트의 평균(1차)과 분산(2차)을 동시에 추적하여 파라미터별 학습률을 자동으로 조절한다. 현재 경사와 더불어 지금까지 얼마나 빠르게 움직였는지, 지면이 얼마나 불안정했는지 동시에 고려해 보폭을 조절한다. 최근의 속도 흐름을 유지하면서도 때에 따라 자동으로 속도를 줄여 안정적으로 경사를 내려올 수 있도록 한다.
인공신경망의 딥러닝
딥러닝은 선형 함수로 공간을 정리하고, 비선형 함수로 그 공간을 휘게 만들어서 데이터의 복잡한 패턴에 최적화된 형태를 찾아가는 과정이다. 즉, 선형 함수와 비선형 함수를 겹겹이 쌓아 올린 구조이다.
선형 레이어만 반복적으로 쌓으면 결국 하나의 거대한 선형 함수가 되어 복잡한 데이터를 표현할 수 없게 되므로, 선형 레이어 사이에 비선형 함수를 추가한다. 이를 통해 얼굴의 곡선처럼 복잡한 비선형 데이터에도 대응할 수 있게 된다.
딥러닝을 구축할 때 무작정 레이어를 늘리면 되는 것은 아니다. 레이어를 너무 많이 쌓게 되면 역전파 단계를 수행할 때 마지막 층에서 계산한 오차 정보(기울기)가 앞 층까지 전달되지 못하고 중간에 증발하는 '기울기 소실' 현상이 발생할 수 있다. 역전파를 수행할 때 연쇄 법칙을 사용하여 뒤에서부터 앞으로 미분값을 곱하며 나아간다. 이때 시그모이드 활성화 함수가 적용된다면 아래와 같이 문제가 발생한다.
- 시그모이드 함수의 미분값은 아무리 커도 1보다 작다.
- 미분값이 0.25, 층이 10층이라고 가정한다.
- 맨 앞 층의 오차 정보 값: $0.25^{10}$
즉, 역전파를 거치며 앞쪽으로 나아가는 거리가 길수록 오차 정보 값이 너무 미미하여 무엇이 문제였는지 피드백을 전혀 받을 수 없게 되어버린다.
ReLU 함수는 이러한 기울기 소실 현상을 해결하기 위한 함수이다. ReLU 함수는 미분해도 값이 작아지지 않는 함수이다. ReLU 함수는 입력이 0보다 크면 미분값이 항상 1이다. 1은 여러 번 곱해도 값이 변하지 않기 때문에 층이 깊어져도 오차 정보에 손실이 없다.
합성곱 (Convolution)
딥러닝 중에서 이미지 처리를 위해 사용되는 핵심 연산법 중 하나. 커다란 이미지 위를 필터를 이용해 스캔하듯이 훑으며 중요한 특징만 추출하는 형태로 동작한다.
- 필터/커널: 이미지에서 특징을 찾는 도구. 이미지 위를 훑으며 스캐너처럼 동작한다.
- 스트라이드: 필터가 한 번에 이동하는 칸수. 값이 클수록 결과 이미지 크기가 작아진다.
- 패딩: 이미지 가장자리를 0으로 채우는 작업. 가장자리 정보 손실 방지 및 출력 크기 유지를 위해 사용된다.
이미지 데이터는 숫자로 채워진 거대한 격자판과 같다. 여기에 작은 크기의 필터를 올려두고 옆으로 한 칸씩 이동시키며 필터의 숫자와 이미지의 숫자를 각각 곱한 뒤, 그 결과를 모두 더해 하나의 숫자로 만든다. 이 연산을 옆으로 한 칸씩 이동하며 반복한다. 연산이 모두 끝나면 나오는 결과물을 특성 맵(Feature Map)이라고 부르며, 원본 이미지에서 필터가 찾고자 했던 특징이 어디에 있는지 알 수 있는 축약된 지도가 된다.
일반적인 선형 레이어 방식을 이미지처럼 2D 형태의 데이터에 그대로 적용할 경우, 이미지를 한 줄로 길게 펴서 입력 데이터로 제공해야 한다. 이렇게 되면 '눈 옆에 코가 있다'처럼 공간 정보를 모두 무시하게 된다.
합성곱 방식을 사용하면 이미지를 한 줄로 펴는 작업 없이 그대로 사용할 수 있기 때문에 공간 정보를 보존할 수 있다. 또한 고해상도 컬러 이미지를 선형 레이어 방식에 적용한다면 파라미터 폭발 문제가 발생할 위험이 기하급수적으로 올라간다. 합성곱 방식은 이미지를 스캔하기 위한 작은 필터 하나를 공유해서 쓰는 '가중치 공유(Weight sharing)' 방식을 사용하기 때문에 이러한 문제에서 자유롭다.
- 새의 움직임을 연속적으로 촬영한 사진을 여러 장 입력한다고 가정한다. 개별 사진 속에 있는 새는 사진 속 위치는 모두 다르지만 모두 동일한 새이다.
- 모델이 이를 이해하기 위해서는 사진 속 새에 대한 특징을 추출하여 새의 위치가 바뀌더라도 이해할 수 있도록 신경망을 설계해야 한다. 이때 이미지를 1차원 데이터로 펴게 되면 공간 정보가 파괴되므로 적합하지 않다.
필터링
합성곱 연산이 일어나는 과정 그 자체.
이미지 처리에서 필터링은 원본 이미지에 특정한 수학적 규칙이 담긴 필터를 이용해 원하는 정보만 걸러내거나 강조하는 작업을 말한다. 즉, 필터링은 이미지에서 필요한 핵심 패턴만 남기고 나머지를 가리는 작업이다. 여기서 사용되는 필터의 종류에 따라서 용도와 기능이 달라진다.
- 소벨 필터: 윤곽선을 검출하는 필터.
- 가우시안 필터: 이미지의 노이즈를 제거하거나 이미지를 부드럽게 만드는 필터.
적합한 커널을 선택하기 위해서는 알맞은 커널을 설계하는 것이 아니라, 데이터로부터 커널을 학습하는 접근법을 사용하면 된다. 즉, 딥러닝 프레임워크를 사용하여 데이터로부터 적합한 특징 추출기(필터)가 무엇인지를 알아내도록 학습시키는 것이다.
전통적인 필터링은 인간이 필터를 직접 설계하여 사용해야 했기 때문에 필터를 구성하는 값이 고정되어 있었다. 하지만 딥러닝에서 다루는 필터는 모델의 최적화 과정을 통해 스스로 목적을 달성하기 위한 가장 적합한 필터의 값을 찾아내는 것이 가능하다.
이처럼 딥러닝에서 학습을 수행한다는 것은 데이터의 특징을 가장 잘 뽑을 수 있는 필터의 값(가중치)을 찾는 것과 동일한 의미를 지닌다.
'Technology > AI (2026)' 카테고리의 다른 글
| Transformer (0) | 2026.04.21 |
|---|---|
| Generative Adversarial Networks (0) | 2026.04.21 |
| Autoencoder (0) | 2026.04.11 |
| Probabilistic Modeling (0) | 2026.04.09 |
| Data & AI (0) | 2026.04.08 |