신경망·연습 문제

임베딩 조회

문제 설명PROBLEM

preview

임베딩 조회 (Embedding Lookup)

정수 인덱스 (단어 ID, 사용자 ID 등) 를 밀집 벡터 로 변환. NLP·추천시스템의 기본 연산:

embedding(idx)i=Eidxi\text{embedding}(\mathbf{idx})_i = E_{idx_i}

(N,) 정수 배열 → (N, D) 임베딩 행렬의 해당 행 모음.

왜 중요한가

  • One-hot + 선형층 과 수학적으로 동일하지만 훨씬 효율적 (희소 곱셈 피함).
  • 단어 의미, 사용자 취향 등을 연속 공간에 학습 — 유사한 인덱스는 유사한 벡터.
  • Transformer 의 token embedding, recommender 의 user/item embedding 모두 이 연산.

과제

함수 embedding_lookup(E, idx) 를 완성하세요.

  • E shape (V, D) — 어휘 크기 V, 임베딩 차원 D.
  • idx shape (N,) 정수 — 0 ≤ idx < V.
  • 반환: shape (N, D).
  • 한 줄이면 끝: E[idx].

테스트 케이스

#이름검증
1shape (N, D)
2값 정확out[i] == E[idx[i]]
3중복 idx같은 인덱스 여러 번 호출시 같은 벡터
42D idx(B, L) 정수 → (B, L, D)
5빈 idx() 크기 처리
개념 노트와 실수 포인트

신경망

  • 순전파 → 손실 → 역전파(연쇄법칙) → 갱신.
  • ⚠️ 행렬곱 차원: A(m×n) @ B(n×p) — 안쪽 차원이 같아야 함.
  • 비선형 활성화가 없으면 층을 쌓아도 선형. 가중치 초기화 중요.