인지야공/강의 요약/4번째 글
패턴인식 — 좋은 특징이란 무엇인가
이 강의에서 가장 오래 남은 것은 모델 구조가 아니라 질문 네 개였다. 강의가 개념을 설명하기 전에 먼저 질문을 던지고, 답을 스스로 생각하게 한 뒤 정리하는 방식이었다.
Q. 개와 고양이를 구별하는 데 좋은 특징은 무엇일까? Q. 문제를 확장하면 어떻게 될까? (모든 동물 중 고양이를 찾는다면) Q. 특징이 많을수록 성능이 좋은가? Q. 모든 특징이 특정 작업에 유의미한가?
패턴과 특징
| 정의 | |
|---|---|
| 패턴 Pattern | 어떤 일이 일어나거나 나타나는 규칙적이고 반복적인 방식. 데이터 내의 규칙성 |
| 특징 Feature | 구별되는 속성이나 측면. 패턴을 효과적으로 표현하기 위해 추출한 유의미한 속성 값 |
특징은 세 가지로 설명된다 — 원시 데이터에서 불필요한 정보를 제거하고 필요한 것만 뽑은 것, 컴퓨터가 패턴을 인식할 수 있도록 변환된 정보(주로 수치 벡터 ), 그리고 인식하려는 패턴을 다른 것과 유일하게 구별할 수 있게 하는 속성.
원시 데이터 → 특징 추출 → 특징 집합 → 인식(분류·예측) → 인식된 패턴
좋은 특징의 조건
그룹 사이에는 차이가 크고, 그룹 안에서는 일관된 것이 좋은 특징이다.
| 예 | |
|---|---|
| 좋은 특징 | 귀 모양(고양이는 주로 뾰족, 개는 다양), 얼굴·두개골 형태, 몸의 비율, 울음소리, 특정 움직임 패턴 |
| 나쁜 특징 | 털 색깔(매우 다양), 크기(겹치는 범위가 넓다), 수염 길이, 꼬리 유무(대부분 있다), 배경 정보(무관), 성격(정량화 어려움) |
핵심은 구별력(Discriminative power) 이다. 꼬리 유무가 나쁜 특징인 이유가 명쾌하다 — 둘 다 있으니 아무것도 갈라 주지 못한다.
문제를 확장하면
‘개 vs 고양이’(Closed-Set)에서 ‘고양이 vs 모든 동물’(Open-Set)로 넓히면 훨씬 어려워진다. 개와 고양이를 가르는 데 유용했던 뾰족한 귀가 여우에게도 있기 때문이다.
문제의 제약이 적을수록, 즉 더 일반적일수록 특징을 일반화하기 어렵고 문제가 어려워진다.
특징이 많으면 좋은가
아니다. 네 가지 문제가 생긴다.
| 문제 | |
|---|---|
| 차원의 저주 | 특징이 늘면 데이터 공간이 희소해져, 성능 유지에 기하급수적으로 많은 데이터가 필요하다 |
| 노이즈 | 관련 없거나 중복된 특징이 학습을 방해한다 |
| 과적합 | 학습 데이터에만 맞춰져 새 데이터에 일반화되지 않는다 |
| 계산 비용 | 학습 시간과 메모리가 늘어난다 |
결론은 이렇다 — 많은 특징보다 정보량 많고 구별력 높은 소수의 특징이 낫다. 그래서 특징 공학과 특징 선택이 중요해진다. 동물 사진을 분류할 때 배경색은 대부분 무관하다.
일반화와 제약
일반화(Generalization) — 학습 데이터로 학습한 모델이 처음 보는 데이터에 대해서도 좋은 성능을 보이는 능력이다. 머신러닝의 궁극적 목표다.
여기서 강의의 반직관적인 주장이 나온다. 문제를 상세하게 만들수록, 즉 제약을 부과할수록 해결하기 쉬워진다. 일반화된 특징 추출이 쉬워지기 때문이다.
| 제약 방법 | 예 |
|---|---|
| 데이터·환경 제약 | 얼굴 인식에 증명사진만 쓰기, 조용한 환경에서 음성 녹음. 데이터의 변동성을 줄인다 |
| 모델 제약 | 정규분포 가정, 이미지에 CNN 사용, 파라미터 수 줄이기. 과적합 방지 |
| 작업 제약 | 다중 분류 대신 이진 분류, 특정 숫자만 인식. 문제의 범위를 좁힌다 |
시스템 프레임워크는 학습과 추론 두 과정이다. 학습 알고리즘이 Seen Data 로 모델을 만들고, 그 모델이 Unseen Data 를 받아 결과를 낸다.
응용 분야와 핵심 기술은 이렇게 정리된다.
| 분야 | 핵심 기술 |
|---|---|
| 영상 인식 | CNN, ViT |
| 음성 인식 | HMM, 딥러닝 음향 모델 |
| 신호 처리 | FFT, 웨이블릿, 시계열 딥러닝 |
| 자연어 처리 | RNN, Transformer (BERT/GPT) |
신경망 기초
인간 두뇌의 신경망 구조를 수학적으로 모델링한 것이다.
| 인공 신경망 | 생물학적 대응 |
|---|---|
| 인공 뉴런(노드) | 생물학적 뉴런 |
| 연결 가중치 | 시냅스 |
| 활성화 함수 | 뉴런의 발화 임계값 |
기능은 입력에서 출력으로 매핑하는 복잡한 함수 를 학습하는 것이다. 일종의 함수 근사기(Function Approximator)다.
왜 딥러닝인가
- 데이터 확장성 — 전통 알고리즘보다 데이터가 많을 때 성능 향상 폭이 크다. 특히 이미지·음성·텍스트 같은 비정형 데이터에서
- 성장 동력 — 빅데이터 + 알고리즘 발전(역전파, 개선된 활성화 함수) + 하드웨어(GPU)
단일 뉴런의 세 얼굴
| 활성화 함수 | 출력 | |
|---|---|---|
| 퍼셉트론 (1957) | 계단 함수 | 이진 분류. |
| 선형 회귀 | 없음(항등) | 연속값. |
| 로지스틱 회귀 | 시그모이드 | 확률. , |
같은 뉴런 하나인데 활성화 함수만 바꾸면 셋이 된다. 이 관점이 신경망을 이해하는 데 가장 도움이 됐다.
활성화 함수는 비선형성을 도입하기 위해 있다. 없으면 여러 층을 쌓아도 결국 선형 변환 하나와 같아진다. 층을 깊게 하는 것 자체가 무의미해진다는 뜻이다.
- MLP — 입력층·은닉층·출력층으로 구성된 피드포워드 신경망
- DNN — 은닉층이 여러 개인 MLP. 깊어질수록 추상적인 특징을 학습한다 (엣지 → 부분 → 객체)
학습
목표는 예측값과 실제값의 오차를 최소화하는 파라미터 를 찾는 것이다.
경사 하강법으로 최적화한다.
| 종류 | 쓰는 데이터 |
|---|---|
| 배치 GD | 전체 |
| 확률적 GD (SGD) | 1개 |
| 미니배치 GD | 일부. 가장 널리 쓰인다 |
역전파는 출력층에서 입력층 방향으로 오차를 전파하며 각 파라미터에 대한 기울기를 효율적으로 계산하는 알고리즘이다. 연쇄 법칙을 쓴다.
1. 순전파 입력으로 예측값 계산
2. 손실 계산 예측값과 실제값으로 손실 계산
3. 역전파 출력층부터 거꾸로 기울기 계산
4. 업데이트 경사 하강법으로 파라미터 갱신
평가
데이터를 셋으로 나눈다.
| 쓰임 | |
|---|---|
| 학습 Training | 모델 파라미터 학습 |
| 검증 Validation | 학습 중 성능 평가, 하이퍼파라미터 튜닝, 과적합 확인 |
| 테스트 Test | 최종 일반화 성능 평가. 학습·튜닝에 관여하지 않는다 |
학습 손실은 계속 줄어드는데 검증 손실이 올라가기 시작하면 과적합이다. 이 한 문장이 학습 곡선을 읽는 법의 전부다.
지도학습
레이블이 있는 데이터로 학습한다. 입력 와 출력 의 쌍으로 이루어진 데이터셋을 쓰고, 인 를 찾는 것이 목표다.
Logits 은 신경망 마지막 선형 계층의 출력값, 즉 활성화 함수 적용 전의 원시 점수다.
문제 유형별 설계
| 문제 | 출력 차원 | 출력 활성화 | 손실 함수 |
|---|---|---|---|
| 회귀 | 1 | 없음(항등) | MSE / MAE / Huber |
| 이진 분류 | 1 | Sigmoid | BCE |
| 다중 클래스 분류 | Softmax | Categorical CE | |
| 다중 레이블 분류 | Sigmoid | BCE (클래스별 평균) |
다중 클래스와 다중 레이블의 차이가 여기서 갈린다. 하나만 정답이면 Softmax(합이 1), 여러 개가 동시에 정답일 수 있으면 클래스마다 독립적인 Sigmoid 다. 영화 장르가 액션이면서 코미디일 수 있으니 후자다.
회귀의 손실 함수 셋은 성격이 뚜렷하게 다르다.
| 성질 | |
|---|---|
| MAE (L1) | 이상치에 덜 민감(강건). 모든 구간에서 기울기가 같아 최적점 근처에서 수렴이 어렵다 |
| MSE (L2) | 오차가 클수록 기울기가 커져 수렴에 유리. 이상치에 매우 민감 |
| Huber | 오차가 작을 땐 MSE, 클 땐 MAE 처럼. 이상치에 강건하면서 수렴도 쉽다. 임계값 필요 |
주요 공식들.
Categorical CE 는 BCE 의 일반화된 형태다.
어려운 문제 넷과 그 해법
| 문제 | 무엇인가 |
|---|---|
| 기울기 소실 | 깊은 망에서 역전파 시 입력층으로 갈수록 기울기가 사라져 앞쪽 레이어가 학습되지 않는다. Sigmoid·Tanh 가 양 극단에서 기울기 0 에 가까워 유발한다 |
| 과적합 | 학습 데이터에 과하게 맞춰진다. 데이터 부족·편향, 또는 모델 복잡도가 과함 |
| 클래스 불균형 | 클래스별 샘플 수 차이가 크다. 다수 클래스로 편향된다 (이상 탐지, 사기 탐지) |
| 데이터 부족 | 레이블된 데이터가 부족하다. 항공우주·재난·희귀 질병처럼 드문 이벤트 |
기울기 소실 해결
- 활성화 함수 변경 — ReLU 및 변형. ReLU 는 양수 입력에서 기울기가 1 로 유지된다. Leaky ReLU 는 음수에도 작은 기울기를 줘 뉴런이 완전히 죽는 것을 막는다
- 잔차 연결 — ResNet 의 핵심. Skip connection 으로 기울기가 이전 레이어로 잘 흐르게 한다
과적합 해결
- 조기 종료 — 검증 손실이 더 이상 줄지 않으면 학습을 멈춘다
- 규제 — 손실에 가중치 크기 페널티를 더한다
- 드롭아웃 — 학습 중 무작위로 뉴런을 끈다. 특정 특징에 과도하게 의존하는 것을 막고 앙상블 효과를 준다
클래스 불균형 해결 — 데이터 증강(회전·반전·노이즈), 클래스 가중치(소수 클래스 오차에 더 큰 가중치).
데이터 부족 해결 — 데이터 확장(증강, 합성 데이터, 능동 학습), 지식 전이(전이 학습, 도메인 적응). 대규모 데이터로 사전학습된 모델을 가져와 미세 조정한다.
그 밖에 약한 지도 학습(준지도·자기지도)과 메타 학습(Few-Shot/One-Shot, Metric Learning)이 있다. 메타 학습은 적은 데이터로 빠르게 학습하는 방법 자체를 학습하는 것이다.
비지도학습
레이블 없이 데이터 자체의 내재적 특성을 파악한다. 목표는 숨겨진 구조 발견, 군집화, 차원 축소, 밀도 추정, 데이터 생성이다.
오토인코더
인코더가 입력을 저차원 잠재 공간으로 압축하고, 디코더가 그로부터 원본을 복원한다. 가장 압축된 가운데 부분이 병목(Bottleneck) 이다.
학습 목표는 재구성 오차 최소화다. .
| 변형 | |
|---|---|
| Denoising AE | 입력에 일부러 잡음을 넣고 깨끗한 원본을 복원하도록 학습. 주요 특징을 배우고 잡음에 강건해진다 |
| 이상 탐지 | 정상 데이터만으로 학습한다. 정상은 잘 복원하지만 이상은 복원을 못 하므로, 재구성 오차가 큰 데이터를 이상으로 판정한다 |
이상 탐지용 오토인코더의 발상이 좋다. 이상 데이터가 거의 없어서 지도학습이 불가능한 상황을 “정상만 배우고 낯선 것을 걸러 낸다”로 뒤집는다.
생성 모델
| 모델 | 원리 |
|---|---|
| VAE | 잠재 벡터를 직접 내는 대신 잠재 공간의 확률 분포(, )를 학습. 를 샘플링해 생성. AE 보다 연속적이고 의미 있는 잠재 공간 |
| GAN | 생성자와 판별자가 경쟁하며 학습. 생성자는 판별자를 속이는 방향으로, 판별자는 진짜와 가짜를 더 잘 구별하는 방향으로 |
| Diffusion | 순방향으로 원본에 가우시안 노이즈를 점진적으로 더해 완전한 노이즈로 만들고, 역방향으로 노이즈에서 점진적으로 제거하며 복원(생성) |
Diffusion 이 최근 고품질 이미지 생성에서 뛰어난 성능을 보이고 있다.
CNN
왜 CNN 인가
이미지 데이터의 세 가지 성질 때문이다.
| 성질 | |
|---|---|
| 지역 상관성 | 인접 픽셀들은 유사한 값을 가진다 |
| 지역적 균질성 | 이미지 전체는 비균질하지만 작은 영역은 균질하다 |
| 구성적·계층적 구조 | 엣지 → 눈·코 → 얼굴로 이어진다 |
MLP 의 한계는 둘이다.
- 파라미터 폭발 — 224×224×3 이미지에 뉴런 100개면 1500만 개 파라미터다
- 공간 구조 무시 — Flatten 하면 픽셀 간 공간 관계가 사라진다
전통적 컴퓨터 비전에서는 Sobel 같은 필터를 수동으로 설계했다. CNN 은 그 필터의 가중치를 데이터로부터 학습한다. 이 한 줄이 차이의 전부다.
네 가지 핵심 아이디어
| 지역적 연결성 | 뉴런이 입력 전체가 아닌 일부 지역에만 연결된다 |
| 가중치 공유 | 하나의 필터를 이미지 전체에 동일하게 적용. 파라미터를 획기적으로 줄이고, 위치와 무관하게 같은 특징을 감지한다(이동 등가성) |
| 풀링 | 특징 맵 크기를 줄여 계산량을 감소시키고, 약간의 위치 변화에 둔감하게 만든다 |
| 계층적 특징 학습 | 저수준(엣지·코너)부터 고수준(객체)까지 쌓아 올린다 |
Convolutional Layer
| 하이퍼파라미터 | |
|---|---|
| 커널 크기 | 특징을 탐지할 영역 (3×3, 5×5) |
| 필터 개수 | 출력 특징 맵의 채널 수. 각 필터가 다른 특징을 학습 |
| 스트라이드 | 필터 이동 간격. 크면 출력이 작아지고 수용 영역이 커진다 |
| 패딩 | valid(패딩 없음, 출력 감소) / same(출력 크기 유지, 가장자리 정보 손실 방지) |
| 딜레이션 | 커널 요소 사이에 간격을 둬 파라미터 증가 없이 수용 영역을 넓힌다. WaveNet |
출력 크기는 이 식으로 나온다.
수용 영역(Receptive Field) 은 출력 특징 맵의 한 요소에 영향을 미치는 입력 영역의 크기다. 층이 깊어질수록, 스트라이드·딜레이션이 클수록 커진다. 넓은 문맥을 보려면 필요하다.
다중 채널 입력에서는 각 필터도 입력 채널 수와 같은 깊이를 갖는다(). 채널별 결과를 합산하고 편향을 더해 출력 채널 하나를 만든다. 필터가 개면 출력이 다.
Pooling 과 FC
| 풀링 | |
|---|---|
| Max Pooling | 영역 내 최댓값. 가장 강한 활성화를 보존 |
| Average Pooling | 영역 내 평균. 전반적 정보를 요약하지만 특징이 흐려진다 |
FC Layer 는 MLP 와 같다. 다만 공간 정보를 잃는다. 최근에는 FC 대신 Global Average Pooling(GAP) 을 써서 파라미터를 줄이고 과적합을 막는 추세다. 각 특징 맵의 모든 값을 평균해 하나의 값으로 만든다.
CNN 이 효과적인 이유
- 적은 파라미터 — 가중치 공유 덕분
- 데이터 효율과 일반화 — 공간 구조와 지역성이라는 가정(Inductive Bias)을 구조에 반영
- 연산 효율 — 병렬 처리가 쉬워 GPU 가속 효과가 크다
모델 발전사
| 모델 | |
|---|---|
| LeNet-5 (1998) | 초기 CNN. Conv-Pool 반복 후 FC. MNIST. 약 6만 파라미터 |
| AlexNet (2012) | ILSVRC 우승. 8층, ReLU, Dropout, GPU 병렬. 약 6천만 파라미터 |
| VGGNet (2014) | 16/19층. 3×3 작은 커널만 반복해 구조 단순화. 약 1.38억 파라미터 |
| GoogLeNet (2014) | Inception Module(1×1·3×3·5×5 병렬), 1×1 Conv 로 채널 축소, GAP |
| ResNet (2015) | Residual Block. 의 Skip Connection 으로 기울기 소실을 완화해 100층 이상 학습 가능 |
VGG 가 3×3 만 쓴 이유가 흥미롭다. 5×5 하나보다 3×3 두 개가 파라미터는 적으면서 같은 수용 영역을 얻고, 비선형성은 한 번 더 들어간다.
시퀀스 모델
순서가 중요한 의미를 갖는 데이터를 다룬다. 문장, 음성, 주가, 센서 로그.
| 특징 | |
|---|---|
| 가변 길이 | 데이터 길이가 일정하지 않다 |
| 시점 간 의존성 | 이전 시점이 이후에 영향을 준다 |
| 순서 중요성 | 순서가 바뀌면 의미가 달라진다 |
MLP 는 입출력 크기가 고정이라 가변 길이를 다루기 어렵고(최대 길이로 패딩하면 비효율적이며 정보가 왜곡된다), 벡터로 펼치면 순서 정보가 사라진다.
RNN
내부에 순환 구조를 둬 이전 시점의 hidden state 를 현재 계산에 반영한다. 시간축으로 펼치면 각 시점에서 동일한 가중치를 공유하는 구조다.
가변 길이는 한 스텝씩 순차 처리하므로 제약이 없고, 순서 정보는 를 통해 반영된다. 단점은 기울기 소실·폭주, 장기 의존성 학습의 어려움, 그리고 순차 처리라 병렬화가 어렵다는 것이다.
| 유형 | 예 |
|---|---|
| one-to-one | 비순환 기본 NN |
| one-to-many | 이미지 캡셔닝 |
| many-to-one | 문장 감성 분석 |
| many-to-many (동기) | 비디오 프레임 분류 |
| many-to-many (비동기) | 기계 번역 (Seq2Seq) |
학습은 BPTT(Backpropagation Through Time) — 시간축으로 펼친 구조에 역전파를 수행한다. 긴 시퀀스에서 기울기 소실·폭주가 발생하고, 초반 정보가 뒤로 전달되지 않는다.
LSTM
셀 상태와 게이트로 장기 의존성 문제를 푼다.
| 구성 요소 | 역할 |
|---|---|
| Cell State | 정보가 큰 변화 없이 장기간 전달되는 통로. 컨베이어 벨트 |
| Forget Gate | 이전 셀 상태에서 무엇을 버릴지 결정 |
| Input Gate | 어떤 새 정보를 셀 상태에 저장할지 결정 |
| Output Gate | 셀 상태를 바탕으로 무엇을 hidden state 로 낼지 결정 |
셀 상태가 게이트를 거치되 곱셈이 아닌 덧셈으로 갱신되는 경로를 갖기 때문에 기울기가 멀리까지 흐른다. 컨베이어 벨트라는 비유가 정확하다.
GRU
LSTM 을 단순화했다. 셀 상태와 hidden state 를 통합하고 게이트 수를 줄였다.
| 게이트 | |
|---|---|
| Update Gate | 이전 hidden state 를 얼마나 유지하고 새 후보를 얼마나 반영할지 (Forget + Input 통합) |
| Reset Gate | 이전 hidden state 를 얼마나 무시하고 현재 입력을 반영할지 |
LSTM 과 비슷한 성능을 내면서 파라미터가 적어 계산 효율이 높다.
남은 문제
- 순차적 계산 — 여전히 순서대로 처리해야 해 긴 시퀀스에서 느리고 병렬화가 어렵다
- 매우 긴 의존성 — 이론적으로는 되지만 실제로는 어렵다
- Seq2Seq 의 고정 크기 문맥 벡터 — 인코더 마지막 hidden state 하나에 모든 입력을 압축해야 하는 병목
어텐션
사람은 문장이나 이미지를 볼 때 중요한 부분에 집중한다. 그 발상을 가져온 것이다.
디코더가 각 타임 스텝에서 출력을 예측할 때, 인코더의 모든 hidden state 를 참조하되 현재 예측과 관련성이 높은 것에 더 큰 가중치를 준다.
1. 점수 계산 디코더의 현재 상태와 인코더 각 상태의 관련성 점수
2. 가중치 계산 점수에 Softmax → 합이 1 인 Attention Weight
3. 문맥 벡터 인코더 상태들을 가중합
4. 예측 문맥 벡터와 디코더 상태로 최종 출력
Query·Key·Value 비유가 이해에 결정적이었다.
| Query (Q) | 현재 디코더 상태. 정보를 요청하는 주체 |
| Key (K) | 인코더의 각 hidden state. 정보를 가지고 있는 대상들 |
| Value (V) | 실제 정보 값. 보통 Key 와 동일 |
Query 와 모든 Key 의 유사도를 재고, Softmax 로 정규화한 가중치를 Value 에 곱해 합산한다.
로 나누는 이유는 차원이 커지면 내적 값이 커져 Softmax 가 극단으로 쏠리기 때문이다. 그러면 기울기가 죽는다.
Seq2Seq 의 병목을 없앤 것이 어텐션의 출발점이었고, 여기서 순환 구조를 완전히 걷어내면 Transformer 가 된다.