내적(Dot product) vs 요소별 곱(Hadamard product)

HanJu Han·2024년 12월 1일
0

추천 시스템

목록 보기
22/49

Hadamard product는 단순히 두 벡터의 대응되는 요소들을 곱한 결과 벡터를 만드는 연산입니다:

p_u = [0.8, 0.3, 0.6]  # 사용자 벡터
q_i = [0.7, 0.4, 0.5]  # 영화 벡터

p_u ⊙ q_i = [0.8×0.7, 0.3×0.4, 0.6×0.5]
          = [0.56, 0.12, 0.30]

이는 각 차원에서의 "상호작용(interaction)"을 표현합니다.

  • 0.56: 첫 번째 차원에서의 사용자-아이템 상호작용 강도
  • 0.12: 두 번째 차원에서의 상호작용 강도
  • 0.30: 세 번째 차원에서의 상호작용 강도

반면 내적은 실제로 두 벡터 간의 유사도를 측정하는 것입니다:

p_u · q_i = 0.8×0.7 + 0.3×0.4 + 0.6×0.5 = 0.98

이 0.98이라는 값은 두 벡터가 얼마나 유사한지를 나타냅니다.

즉:

  • 내적: 두 벡터의 유사도를 하나의 스칼라 값으로 표현
  • Hadamard: 각 차원에서의 상호작용 강도를 벡터로 표현

상호작용 강도란

잠재 벡터의 각 차원이 이렇게 영화의 특성을 나타낸다고 가정해봅시다:

사용자 벡터 p_u = [0.8, 0.3]
- 0.8: SF 영화를 좋아하는 정도
- 0.3: 로맨스 영화를 좋아하는 정도

영화 벡터 q_i = [0.7, 0.4]
- 0.7: 영화에 SF 요소가 있는 정도
- 0.4: 영화에 로맨스 요소가 있는 정도

p_u ⊙ q_i = [0.8×0.7, 0.3×0.4] = [0.56, 0.12]

여기서 상호작용 강도의 의미:

  • 0.56: "사용자의 SF 선호도"와 "영화의 SF 요소"가 만나서 생기는 효과
  • 0.12: "사용자의 로맨스 선호도"와 "영화의 로맨스 요소"가 만나서 생기는 효과

즉, 상호작용 강도는 "사용자의 특정 취향"과 "영화의 특정 특성"이 만나서 발생하는 영향력의 크기를 의미합니다.

이것이 단순히 유사도와 다른 이유는:
1. 유사도: 두 벡터가 얼마나 비슷한지
2. 상호작용 강도: 두 특성이 만나서 만들어내는 영향력이 얼마나 큰지

profile
시리즈를 기반으로 작성하였습니다.

0개의 댓글