배경
6~8차시는 각각 Mission 3(텍스트 증상 분류), Mission 1·2(오디오 분류)와 바로 연결되는 내용이라 이어서 정리한다.
6차시 — 텍스트를 숫자로
AI는 문장을 못 읽는다. 그래서 문장 → 토큰화 → Vocabulary/Token ID → 벡터화(TF-IDF 또는 임베딩) 순서로 숫자로 바꾼다.
TF-IDF는 단어가 문서에서 얼마나 중요한지를 통계로 계산한다. 문제는 의미적 유사성을 전혀 모른다는 것 — "fire"와 "wildfire"가 비슷한 단어라는 걸 잡아내지 못한다.
임베딩은 단어를 의미 공간의 좌표(벡터)로 표현한다. 다만 일반적인 정적 임베딩(Word2Vec류)은 단어 하나에 벡터 하나만 부여하기 때문에, 같은 단어라도 문맥에 따라 뜻이 달라지는 경우(예: "이 노래 완전 불타오른다" vs "산불이 확산되고 있다")는 구분하지 못한다.
이걸 구분하려면 문맥을 반영하는 모델이 필요하다:
- -RNN: 순서대로 하나씩 읽으며 누적 저장 → 문장이 길어지면 앞부분을 잊어버림
- -LSTM: Gate로 기억/삭제를 선택적으로 조절 → RNN의 장기기억 문제 완화
- -Transformer: Self-Attention으로 문장 전체를 한 번에 보며 병렬 처리
- -BERT: Transformer Encoder로 방대한 텍스트를 사전학습해두고, 우리 문제에 맞게 Fine-tuning
같은 단어도 문장마다 다른 벡터를 만드는 BERT의 문맥적 임베딩 덕분에 위 예시 같은 동음이의어 구분이 가능해진다. Mission 3에 KoBERT가 후보로 제시된 이유다.
7차시 — 소리를 숫자로
소리는 공기압이 시간에 따라 변하는 연속적인 파동이다. Sampling(시간축을 일정 간격으로 측정)과 Quantization(진폭을 일정 단계로 반올림)을 거쳐 Waveform이 된다.
오디오마다 길이가 다르면 하나의 Batch Tensor로 묶기 어렵다. Padding(짧은 것은 늘리고), Crop(긴 것은 잘라내고, 중요한 소리가 잘릴 위험 있음), Sliding window(긴 오디오를 구간별로 나눠 전체를 보존)로 맞춘다.
Waveform만으로는 어떤 주파수가 섞여 있는지 알기 어려워 STFT(Short-Time Fourier Transform)로 짧은 Frame 단위로 나눠 변환한다. Window가 짧으면 시간 해상도가 높아지고, 길면 주파수 해상도가 높아지는 트레이드오프가 있다.
Mel-spectrogram은 사람의 청각 특성(저주파는 민감, 고주파는 둔감)을 반영해 주파수 축을 비선형으로 조정한 것이고, MFCC는 여기에 DCT를 한 번 더 적용해 압축한 것이다. 이 2D 표현이 바로 CNN에 이미지처럼 넣을 수 있는 형태다.
8차시 — 오디오를 딥러닝에 적용
Log-Mel spectrogram을 CNN에 넣을 때, 오디오 전체에 라벨 하나(Audio classification, Mission 1 유형)인지 소리의 시작·끝까지 예측(Sound event detection)해야 하는지에 따라 출력층이 달라진다.
조용한 환경에서만 학습하면 실제 잡음 섞인 환경에서 성능이 떨어지기 때문에 Audio augmentation을 쓴다: 배경 Noise를 섞거나(Waveform-level), Spectrogram 위에서 Time masking·Frequency masking을 적용한다(Feature-level). 단, 이런 증강은 Training 데이터에만 적용하고 Validation/Test는 고정된 전처리를 유지해야 일관된 평가가 가능하다.
| 모델 | 입력 | 학습 방식 |
|---|---|---|
| Wav2Vec2 | Raw waveform | 일부 구간 masking 후 문맥으로 복원하도록 사전학습 |
| AST | Log-Mel spectrogram | Patch로 나눠 Transformer에 입력 (CNN 없이 Attention만) |
마지막으로 멀티모달(Multimodal) 개념도 다뤘다. 서로 다른 데이터(이미지, 텍스트, 오디오)를 합치는 방식은 Early Fusion(입력단에서 합침), Late Fusion(각자 모델 통과 후 결과만 합침), Joint Fusion(중간 레이어에서 특징을 합침, 실무에서 가장 흔함)으로 나뉜다. Gemini, GPT-4V 같은 LMM(Large Multimodal Model)이 최근 트렌드다.
다음 계획
1차시부터 코드 레벨로 다시 훑는다. fit()/transform()이 실제로 데이터를 어떻게 다루는지, DCC의 "inference.py 단일 명령 고정 포맷 CSV" 제출 규칙에 맞춰 전처리 객체를 어떻게 저장·재사용하는지부터 시작.