스킬캠퍼스

오늘 끝나면

Word Embeddings & BERT

  • Word Embeddings & BERT의 핵심 문제를 한 문장으로 설명한다
  • 오른쪽 실습에서 Word이 어떻게 움직이는지 관찰한다
  • 다음 강의와 이어지는 한계를 말할 수 있다

실습 미션

king−man+woman=queen — Word2Vec → BERT의 MLM 이 문장이 실제로 무슨 뜻인지 실습에서 한 번 손으로 확인한다.

성공 조건

  • 실습의 기본값을 먼저 관찰
  • 입력값이나 모드를 한 번 이상 바꿔 결과 비교
  • 왜 결과가 바뀌었는지 한 문장으로 설명

AI · Day 19 / 표현·멀티모달

의미를
숫자로

컴퓨터는 숫자만 다룬다. 그런데 "사랑"을 어떻게 숫자로 바꾸나. 이 질문에 답하는 데 60년이 걸렸다. 2013년 Word2Vec이 문을 열고, 2018년 BERT가 그 자리를 채웠다.

P.01AI · Day 19

단어를 숫자로, 50년의 투쟁

신경망은 실수 벡터위에서만 돈다. 그런데 단어는 이산적이다. "사과", "Apple", "りんご"는 같은 뜻인데 문자열로는 완전히 다르다.

첫 시도는 One-hot 인코딩이다. 사전이 5만 단어면 단어 하나가 5만 차원 벡터가 되고, 자기 칸만 1이고 나머지는 0이다.

그런데 치명적인 문제가 있다. king과 queen의 내적이 0이고, king과 apple의 내적도 0이다. 모든 단어 쌍이 똑같이 무관해진다. 의미가 아니라 그냥 "번호표"인 셈이다.

다음 시도인 TF-IDF는 문서를 단어 빈도로 표현하는 방식이다. 구글 초기 검색과 Elasticsearch의 BM25가 이 계열이고, 지금도 RAG 키워드 검색에 쓴다. 하지만 단어 순서를 모르고, "자동차"와 "승용차"를 다른 차원으로 본다. 의미는 끝까지 블랙박스였다.

ONE-HOT 의 재앙
king001000queen000010apple100000<king, queen> = 0<king, apple> = 0모든 단어 쌍이 똑같이 무관하다. 의미가 없다

자기 칸만 1, king이 queen에서 apple만큼 멀다. 이게 재앙이다

P.02AI · Day 19

king − man + woman = queen

2013년, 구글 브레인 Mikolov의 Word2Vec 논문에 세상을 뒤집은 표 하나가 있었다. 단어에 사칙연산이 된다.

비결은 1957년 언어학자 Firth의 한 문장이다. "단어는 함께 등장하는 이웃으로 의미가 결정된다." "나는 ___을 마셨다"의 빈칸에 들어갈 단어들, 즉 물과 커피와 맥주는 서로 비슷하다.

Word2Vec은 이 가설을 신경망으로 구현했다. Skip-gram은 중심 단어로 주변 단어를 맞추고, CBOW는 주변 단어로 중심 단어를 맞춘다.

학습이 끝나면 임베딩 공간에서 방향이 곧 의미 축이 된다. king − man은 "왕족 속성" 벡터이고, 여기에 woman을 더하면 queen이 나온다. 한국어도 같다. 서울 − 한국 + 일본 ≈ 도쿄가 성립한다.

Q. 단어장이 10만 개면 softmax 한 번에 10만 번 계산해야 하는데, 어떻게 학습하나요?Negative Sampling으로 바꾼다. "전체 분포 예측" 대신 "이 단어 쌍이 진짜 이웃인가(positive), 랜덤 쌍인가(negative)"라는 이진 분류로 단순화한다. negative를 5개에서 20개만 뽑으면 계산량이 10만에서 k+1로 줄고, 수천 배 빨라진다.
임베딩 산술 실험실
임베딩 산술, A − B + C 가 어떤 단어가 되는가
+=queen
의미 평면 · x = 성별, y = 지위(왕족)
여성 →↑ 왕족manwomankingqueenboygirlprinceprincess결과
파란 점선 = A−B(의미 축) · 같은 축을 C에서 출발시켜 결과를 만든다
예측 단어
queen
코사인 유사도
1.000
2등과 마진
0.024
"queen"에 가장 가깝지만 살짝 빗나감, 토이 좌표라 약간의 오차
king−man+woman을 골라 본다. 결과 벡터가 queen 위로 떨어진다. 단어가 좌표가 되면 의미에 사칙연산이 생긴다, Word2Vec이 세상을 뒤집은 그 표.
P.03AI · Day 19

문맥을 담은 BERT

Word2Vec엔 큰 구멍이 있다. "은행에서 돈을 찾았다"의 은행과 "강둑의 은행을 걸었다"의 은행에 같은 벡터를 준다. 다의어를 구분하지 못한다.

2018년 구글의 BERT가 이를 해결했다. Transformer Encoder만 쌓아 양방향으로 문맥을 본다.

그런데 양방향으로 다음 단어를 맞추게 하면 정답이 그냥 보인다. 컨닝이다. 그래서 Devlin은 발상을 뒤집었다. 단어 15%를 가리고(MASK) 그걸 맞추게 했다. 이것이 MLM이다.

진짜 혁신은 MLM이 아니다. "한 번 Pre-train 해두고 다들 Fine-tune해서 써라"는 사고방식이다. 예전엔 태스크마다 모델을 처음부터 짰다. 이제는 from_pretrained() 한 줄이면 된다. 오늘날 HuggingFace에 모델 50만 개가 올라온 이유다.

MLM, 가리고 맞추기
theman[MASK]tostorewent앞뒤 문맥을 다 보고 가린 단어 복원 → 진짜 양방향
파이썬 코드 보기
from transformers import BertForSequenceClassification
# Pre-train 한 번, Fine-tune 한 줄
model = BertForSequenceClassification.from_pretrained(
    "klue/bert-base", num_labels=2)
# 15% 단어를 [MASK] 처리:
#   80% [MASK] / 10% 랜덤 / 10% 원본 유지

다음 단어 예측이 아니라 빈칸 채우기, 양방향 컨닝 문제를 푼 발상이다

P.04AI · Day 19

검색은 키워드가 아니라 의미

그럼 BERT의 [CLS] 벡터를 문장 임베딩으로 쓰면 될까? 안 된다. 의미가 비슷한 두 문장인데 cosine 유사도가 거의 랜덤으로 나온다.

2019년 Sentence-BERT가 답을 냈다. Siamese 구조로 fine-tune해서 "의미가 가까운 문장은 코사인 유사도가 높도록" 학습시킨다. 1만 문장 검색이 65초에서 5초로 줄었다. 비로소 실시간 의미 검색이 가능해진다.

오른쪽 코드를 보자. "돈을 돌려받고 싶어요"라고 물으면 "환불"이란 글자가 한 번도 안 나왔는데 환불 FAQ를 찾아낸다. 키워드 매칭으로는 절대 못 하는 일이다. 이게 FAQ 챗봇과 RAG의 심장이다. Day 21에서 본격적으로 다룬다.

SENTENCE-BERT 의미 검색
파이썬 코드 보기
from sentence_transformers import SentenceTransformer, util
model = SentenceTransformer("jhgan/ko-sroberta-multitask")

docs = ["환불은 구매 후 7일 이내 가능합니다.",
        "배송은 평균 2~3일 소요됩니다.",
        "결제는 카드, 계좌이체를 지원합니다."]
doc_emb = model.encode(docs, convert_to_tensor=True)

q = model.encode("돈을 돌려받고 싶어요")
hit = util.cos_sim(q, doc_emb)[0].argmax()
print(docs[hit])   # -> 환불 FAQ (글자 매칭 0 회)
질문찾은 FAQ
돈 돌려받고싶어환불
언제 도착해요?배송
카드 되나요?결제

의미로 연결한다. 키워드 매칭은 못 하는 일이다

P.05AI · Day 19

기업은 임베딩으로 돈을 번다

한 문장으로 정리한다. GPT는 소설가, BERT는 편집자다. GPT(Decoder)는 다음 단어를 생성하고, BERT(Encoder)는 문장을 이해해 벡터로 만든다.

현장에서 임베딩은 곧 매출이다. 어떤 화장품 회사는 SBERT FAQ 챗봇으로 고객센터 문의의 35%를 자동 처리해 연 4억을 절감했다. 법무팀은 "을의 책임 면제 조항이 있나?" 같은 의미 검색으로 1명이 100건 보던 계약서를 300건까지 늘렸다. 권앤컴퍼니 AX 프로젝트의 60%가 이 임베딩 + 벡터DB + LLM 구조다.

기억해라. RAG에서 임베딩이 엉뚱한 문서를 끌어오면 LLM이 아무리 똑똑해도 헛소리를 한다. 검색 품질이 RAG 품질의 60%를 결정한다. "임베딩 없이 LLM 서비스 한다"는 말은 이제 웃음거리다.

Q. 민감한 법률·의료 문서 1만 건이면 OpenAI API와 로컬 SBERT 중 무엇을 써야 할까요?로컬 SBERT다. 1만 건 미만은 로컬 모델로 무료에 가깝게 처리된다. 무엇보다 데이터가 외부 API로 안 나가 보안에 안전하다. 10만 건 이상이고 다국어에 최고 품질까지 필요할 때만 OpenAI(text-embedding-3-large)나 Cohere로 넘어간다. 정답은 품질과 비용, 보안 사이의 트레이드오프다.
GPT vs BERT · 비즈니스
 GPTBERT
블록DecoderEncoder
방향단방향양방향
학습다음 단어MLM
쓰임생성이해
비유소설가편집자
문서 10만임베딩+벡터DBLLM 답변RAG = 임베딩이 60%를 결정한다

엔터프라이즈 AI 표준 구조, 가운데 부품이 오늘 배운 임베딩이다

3줄 요약

  1. 1king−man+woman=queen — Word2Vec → BERT의 MLM
  2. 2Word Embeddings & BERT은 준비운동 → 지도학습 → 시퀀스 → 생성모델 → 실무 적용 흐름 안의 한 칸이다.
  3. 3개념을 외우는 것보다 입력을 바꾸면 무엇이 달라지는지 보는 것이 우선이다.

완료 전 점검

복습 카드

Word

king−man+woman=queen — Word2Vec → BERT의 MLM

모델

입력을 받아 예측이나 출력을 만드는 계산 규칙

손실

예측이 정답에서 얼마나 빗나갔는지 재는 숫자