Problem Solving with Algorithms

728x90
반응형

전체 강의 보기

[AI 인공지능 머신러닝 딥러닝] - 꽂히는 딥러닝 | 전체 강의 소개

 

꽂히는 딥러닝 | 전체 강의 소개

꽂히는 딥러닝 플레이리스트는 “수학·이론·직관”을 한 번에 잡으면서도, 처음부터 끝까지 흐름 있게 딥러닝을 배우고 싶은 사람에게 잘 맞는 입문·기본 강의 묶음입니다. 혁펜하임 특유의

inner-game.tistory.com

 

 

 

 

 

11강은 워드 임베딩의 대표 모델인 CBOW와 Skip-Gram을, “행뽑기”와 원-핫 인코딩 관점에서 아주 구체적으로 풀어 주는 강의입니다. 마지막에는 왜 Negative Sampling이 필요한지까지 이어서 설명해 주기 때문에, Word2Vec 구조를 한 번에 이해하기 좋은 영상입니다.

 

 

 

 

CBOW: 주변 단어로 중심 단어를 맞춥니다

CBOW는 “주변 단어들로부터 중심 단어를 예측”하는 방식으로, 주변 단어들의 임베딩 벡터를 학습하는 모델입니다. 예를 들어 문장 “나는 오늘 김밥을 먹었다”에서 중심 단어가 “김밥”이라면, “나는/오늘/을/먹었다”를 입력으로 넣어 “김밥”이 나오도록 학습시키는 구조입니다.

입력 단어들은 원-핫 인코딩 벡터(예: 01000, 00100 등)로 표현되고, 이 벡터에 가중치 행렬 $W$를 곱하면 해당 단어의 임베딩 벡터가 “행뽑기”처럼 뽑혀 나옵니다. 주변 단어 여러 개에 대해 같은 $W$를 곱해 임베딩을 얻은 뒤, 이들을 더하거나 평균 내어 hidden 벡터 하나로 만든 후, 또 다른 가중치 $W'$와 소프트맥스를 통과시켜 중심 단어(one-hot)를 맞추도록 크로스 엔트로피 손실로 학습시킵니다.

이렇게 학습이 끝나면 실제로 사용하는 것은 $W'$가 아니라 $W$입니다. $W$의 각 행이 곧 단어 하나의 워드 임베딩 벡터이고, 예를 들어 “나는”이라는 단어의 임베딩은 $W$의 두 번째 행, “김밥”의 임베딩은 네 번째 행처럼 매핑된다는 점을 강조합니다. CBOW는 주변 단어를 잘 활용해 “그 주변에 자주 같이 나오는 단어들의 의미”를 임베딩에 담는 방식이라고 이해할 수 있습니다.

 

 

 

 

Skip-Gram: 중심 단어로 주변 단어를 맞춥니다

Skip-Gram은 방향이 반대입니다. 같은 문장에서 이번에는 중심 단어 “김밥” 하나를 입력으로 넣고, “나는/오늘/을/먹었다” 네 개의 주변 단어를 동시에 예측하도록 학습합니다. 중심 단어의 원-핫 벡터를 $W$에 곱해 임베딩을 얻은 뒤, 이 임베딩을 $W'$에 여러 번 곱해(똑같은 $W'$를 4번 사용) 각각의 주변 단어가 소프트맥스에서 튀어나오도록 만드는 구조입니다.

여기서도 학습이 끝난 후 실제로 쓰는 것은 $W'$가 아니라 $W$이며, $W$의 각 행이 중심 단어들의 의미를 잘 담은 임베딩 벡터가 됩니다. 중심 단어 하나에서 여러 주변을 예측하기 때문에, 중심 단어의 의미가 “어떤 단어들과 자주 같이 등장하는지”를 통해 잘 드러나게 되고, 실무에서는 CBOW보다 Skip-Gram이 더 자주 쓰인다는 언급도 함께 나옵니다.

 

 

 

 

CBOW vs Skip-Gram 직관입니다

혁펜하임은 CBOW를 “한 번에 여러 주변 단어 임베딩(여러 행)을 학습시키려는 구조”, Skip-Gram을 “중심 단어 하나의 임베딩(한 행)에 집중하는 구조”로 비교합니다. CBOW는 한 번에 여러 주변 단어를 예측해서 한 스텝에 많은 정보를 활용하지만, 주변 단어가 많아지면 각 단어별 예측이 조금 희석될 수 있다는 점을 지적합니다.

반대로 Skip-Gram은 중심 단어 하나와 주변 단어들을 개별적으로 연결해 학습시키기 때문에, 중심 단어 임베딩을 더 또렷하게 학습시키기 유리하다는 직관을 제시합니다. 실제로 Word2Vec 구현에서도 Skip-Gram + Negative Sampling 조합이 많이 쓰인다고 덧붙입니다.

 

 

 

 

Negative Sampling: 거대한 소프트맥스를 이진 분류로 바꿉니다

마지막으로 Negative Sampling이 등장하는 이유를 설명합니다. 실제 단어 사전은 수만~수십만 개에 이르기 때문에, 이 모든 차원에 대해 소프트맥스를 계산하고 그라디언트를 구하는 것은 너무 무거운 연산이 됩니다.

Negative Sampling은 이 다중분류 문제를 “여러 개의 이진 분류 문제”로 바꾸는 아이디어입니다. 중심 단어와 진짜 주변 단어 쌍에 대해서는 임베딩 벡터를 내적한 뒤 시그모이드를 통과시켜 1이 나오도록 학습시키고, 사전에서 랜덤으로 뽑은 관계없는 단어(negative sample)들과의 쌍에 대해서는 0이 나오도록 학습시킵니다.

이렇게 하면 매번 전체 단어에 대해 소프트맥스를 돌릴 필요 없이, 소수의 positive·negative 쌍만 고려하면 되기 때문에 연산량이 크게 줄어듭니다. 동시에 “어떤 단어 쌍은 서로 강하게 연관, 어떤 쌍은 거의 무관”하다는 관계도가 임베딩 내적값에 자연스럽게 녹아들어, 의미 구조를 잘 반영하는 워드 임베딩을 얻을 수 있습니다.

 

 

다음 글

[AI 인공지능 머신러닝 딥러닝] - 꽂히는 딥러닝 | 12강 Adam과 AdamW의 차이

 

꽂히는 딥러닝 | 12강 Adam과 AdamW의 차이

12강은 “요즘은 Adam보다 AdamW를 더 쓴다”는 말을 왜 믿어도 되는지, Adam과 AdamW의 차이를 수식 한 줄로 짚어 주는 강의입니다. 핵심은 L2 정규화를 그라디언트에서 떼어내(weight decay를 디커플링)

inner-game.tistory.com

 

 

이 블로그의 관련 글

[AI 인공지능 머신러닝 딥러닝] - 이지 딥러닝 - 혁펜하임 | Easy! 딥러닝 - 무료 강의 및 책 소개

 

이지 딥러닝 - 혁펜하임 | Easy! 딥러닝 - 무료 강의 및 책 소개

한국어로 딥러닝 공부해봤다는 사람중에 안들어 본 사람이 없을것 같은 이지 딥러닝 시리즈 입니다. 이 강의는 유투브로 제공되며 책도 있습니다. 이지 딥러닝 유투브 강의이지 딥러닝 유투브

inner-game.tistory.com

 

 

[AI 인공지능 머신러닝 딥러닝/Python | PyTorch] - 인스톨! 파이토치 강의 소개 | 전체 강의 소개 및 0강 오레인테이션

 

인스톨! 파이토치 강의 소개 | 전체 강의 소개 및 0강 오레인테이션

혁펜하임 PyTorch 강의 오리엔테이션 요약혁펜하임 채널의 '[PyTorch] 0강. 오리엔테이션' 영상은 채널 5주년 기념으로 '인스톨! 파이토치' 강의를 소개하는 내용입니다. 강의자는 최근 출간한 '이지

inner-game.tistory.com

 

728x90
반응형
반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band
250x250