본문 바로가기

전체 글

(81)
BERT — 양방향 트랜스포머 인코더 Word2Vec은 단어 하나에 벡터 하나다. "배"는 과일이든 신체 부위든 교통수단이든 항상 같은 벡터다. 문맥이 없다.2018년 Google의 Devlin 등이 발표한 BERT(Bidirectional Encoder Representations from Transformers)는 이 한계를 해결했다. 같은 단어라도 문맥에 따라 다른 벡터를 생성한다. "배가 고프다"의 배와 "배를 타다"의 배가 다른 임베딩을 갖는다.핵심 아이디어: 양방향성GPT(2018)도 트랜스포머 기반이었지만 왼쪽에서 오른쪽으로만 읽는 단방향(left-to-right) 모델이었다. "나는 [MASK]를 먹었다"에서 [MASK]를 예측할 때 "먹었다"를 보지 못한다.BERT는 양방향으로 문맥을 본다. [MASK] 앞뒤 모든 단어를 참..
토크나이저 — BPE, WordPiece, SentencePiece 모델은 텍스트를 직접 읽지 못한다. 숫자 시퀀스로 변환해야 한다. 토크나이저(tokenizer)는 텍스트를 토큰으로 쪼개고, 각 토큰에 정수 ID를 부여한다.어떻게 쪼개느냐가 모델 성능에 직접 영향을 준다.단어 단위 토크나이징의 문제공백 기준으로 단어를 나누는 가장 단순한 방법이다."나는 사과를 먹었다" → ["나는", "사과를", "먹었다"]두 가지 문제가 있다.어휘 크기 폭발: 영어만 해도 단어 변형이 수십만 가지다. "run", "runs", "running", "ran"이 모두 다른 토큰이 된다. 어휘 크기가 커질수록 임베딩 테이블이 커지고 메모리가 늘어난다.미등록 단어(OOV): 학습 데이터에 없는 단어가 추론 시 등장하면 [UNK] 토큰으로 처리한다. 고유명사, 신조어, 오타가 모두 같은 토큰..
Word2Vec / GloVe — 단어 임베딩의 시작 BERT와 Sentence Transformers 이전, 텍스트를 벡터로 바꾸는 방법은 단순했다. 단어 하나에 정수 인덱스를 부여하거나, 전체 어휘 크기의 원-핫 벡터(one-hot vector)를 사용했다. 원-핫 벡터에서 "고양이"와 "강아지"는 완전히 직교하는 벡터다. 두 단어가 의미적으로 가깝다는 정보가 전혀 없다.분포 가설(Distributional Hypothesis)은 다르게 말한다. "같은 맥락에서 등장하는 단어는 비슷한 의미를 갖는다." "나는 오늘 사과를 먹었다"와 "나는 오늘 배를 먹었다"에서 사과와 배는 같은 위치에 등장한다. 이 맥락 정보를 학습하면 두 단어가 비슷한 벡터를 갖게 된다.Word2Vec (2013)Google의 Tomas Mikolov 등이 발표했다. 두 가지 학습 ..
YOLO 계보 — 실시간 객체 탐지의 발전 객체 탐지(Object Detection)는 이미지에서 물체의 위치(bounding box)와 종류(class)를 동시에 찾는 태스크다. 분류(Classification)가 "이 이미지는 고양이다"라면, 탐지는 "이 이미지의 이 위치에 고양이가 있고, 저 위치에 개가 있다"다.YOLO 이전: 2단계 탐지기YOLO 이전의 주류는 R-CNN 계열이었다. 두 단계로 나뉜다.Region Proposal: 객체가 있을 것 같은 후보 영역을 수백~수천 개 추출한다Classification: 각 후보 영역을 CNN에 통과시켜 분류한다Faster R-CNN은 당시 최고 성능이었지만 초당 7프레임(fps) 수준이었다. 실시간 처리(30fps 이상)에는 쓸 수 없었다.YOLO v1 (2015)Joseph Redmon, S..
AlexNet → ResNet — CNN과 딥러닝 르네상스 2012년 이전 컴퓨터 비전은 사람이 설계한 특징(feature)을 사용했다. SIFT, HOG 같은 알고리즘이 픽셀에서 엣지, 방향, 텍스처를 추출하고, SVM 같은 분류기가 그 특징으로 판단했다. ImageNet 같은 대규모 분류 대회에서 오류율은 25% 수준에서 수년째 답보 상태였다.2012년 AlexNet이 오류율을 15.3%로 낮추며 2위(26.2%)를 압도했다. 단순히 1등이 아니라 격차가 기존 기술의 한계를 넘어선 것이었다.CNN의 기본 원리합성곱 신경망(Convolutional Neural Network, CNN)은 이미지의 공간적 구조를 활용한다.합성곱 레이어 (Convolutional Layer)작은 필터(커널)를 이미지 전체에 슬라이딩하며 적용한다. 3×3 필터는 입력의 3×3 영역을..
Sentence Transformers — 문장 임베딩과 의미 검색 BERT가 등장한 후 자연어 이해 성능이 크게 향상됐다. 그런데 "이 두 문장이 얼마나 비슷한가"를 BERT로 계산하려면 두 문장을 쌍으로 묶어 함께 입력해야 한다. 10,000개 문장 데이터베이스에서 가장 유사한 문장을 찾으려면 쿼리와 10,000개 문장의 조합 50,000,000쌍을 전부 BERT에 통과시켜야 한다. 현실적으로 불가능한 방식이다.2019년 Reimers와 Gurevych의 "Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks"가 이 문제를 해결했다.핵심 아이디어문장을 미리 고정 크기 벡터(임베딩)로 변환해 저장해 둔다. 유사도 계산은 벡터 간 코사인 유사도로 끝낸다.문장 A → SBERT → 벡터 A (768차원)문장 B →..
Attention Is All You Need — 트랜스포머 논문 핵심 정리 2017년 이전 자연어 처리의 주류는 RNN(순환 신경망)과 LSTM이었다. 이 구조는 시퀀스를 왼쪽에서 오른쪽으로 순서대로 처리한다. "나는 어제 서울에서 맛있는 밥을 먹었다"라는 문장을 처리할 때 "먹었다"에 도달하는 시점에는 "나는"의 정보가 여러 스텝을 거쳐 희석된다. 이것이 장거리 의존성 문제다. 또한 순서대로 처리해야 하므로 병렬화가 불가능해 학습이 느렸다.Vaswani 등의 "Attention Is All You Need"는 순환 구조를 완전히 제거하고 어텐션 메커니즘만으로 시퀀스를 처리하는 트랜스포머(Transformer)를 제안했다.핵심 아이디어: Self-Attention어텐션(attention)은 문장 내 각 단어가 다른 단어들과 얼마나 관련 있는지를 가중치로 표현하는 메커니즘이다. ..
Stable Diffusion — 확산 모델의 원리부터 파인튜닝까지 Stable Diffusion을 이해하려면 "노이즈를 지우는 법을 배운다"는 직관에서 시작하는 것이 빠르다. 깨끗한 이미지에 노이즈를 단계적으로 추가하는 과정은 간단하다. Stable Diffusion은 그 반대 방향, 즉 완전한 노이즈에서 깨끗한 이미지로 복원하는 과정을 신경망으로 학습한다.확산 모델의 원리순방향 확산 (Forward Diffusion)학습 데이터(깨끗한 이미지)에 가우시안 노이즈를 T 스텝에 걸쳐 조금씩 추가한다. T = 1000이면 1000번에 걸쳐 점점 더 많은 노이즈를 입힌다. 마지막 스텝에서는 원본 이미지 정보가 완전히 사라지고 순수한 노이즈만 남는다.x₀ (깨끗한 이미지) → x₁ → x₂ → ... → xₜ (순수 노이즈)각 스텝의 노이즈 강도는 β 스케줄(noise sch..