๋ฐ์ํ
๐ฆ ๋ฉํฐ๋ชจ๋ฌ ์ถ์ฒ ์์คํ ์ด๋?
ํด๋ฆญ๋ฅ ์ ๋์ด์ ์ง์ง ์ทจํฅ ์์ธก, AI๊ฐ “๋์น”๊น์ง ๋ณด๋ ์๋
๐ง ์ถ์ฒ ์์คํ , ์ ๋ฉํฐ๋ชจ๋ฌ์ด ํ์ํ ๊น?
๊ธฐ์กด์ ์ถ์ฒ ์์คํ
์ ๋ณดํต ์ฌ์ฉ์์ ํด๋ฆญ ์ด๋ ฅ์ด๋ ๊ตฌ๋งค ๋ก๊ทธ๋ง์ ๊ธฐ๋ฐ์ผ๋ก ์์ธกํฉ๋๋ค.
ํ์ง๋ง ์ฌ์ฉ์๊ฐ ์ด๋ค ์ ํ์ ์ ํด๋ฆญํ๋์ง๋ ๋ก๊ทธ๋ง์ผ๋ก ์๊ธฐ ์ด๋ ต์ต๋๋ค.
- ์ํ์ ์ธ๋ค์ผ ์ด๋ฏธ์ง ๋๋ฌธ์ผ๊น์?
- ์๋๋ฉด ๋ฆฌ๋ทฐ ํ ์คํธ, ํ ์ธ ๋ฐฐ๋, ๋ธ๋๋๋ช ๋๋ฌธ์ผ๊น์?
์ด์ฒ๋ผ ์ถ์ฒ ์ ํ๋๋ฅผ ๋์ด๊ธฐ ์ํด์๋ **์ฌ๋ฌ ์ข
๋ฅ์ ๋ฐ์ดํฐ(=๋ชจ๋ฌ)**๋ฅผ ํจ๊ป ๊ณ ๋ คํด์ผ ํฉ๋๋ค.
์ด๋ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ฐ๋ก **๋ฉํฐ๋ชจ๋ฌ ์ถ์ฒ ์์คํ
(Multimodal Recommendation System)**์
๋๋ค.
๐ ๋ฉํฐ๋ชจ๋ฌ ์ถ์ฒ ์์คํ ์ํคํ ์ฒ ์ดํดํ๊ธฐ
๋ฉํฐ๋ชจ๋ฌ ์ถ์ฒ ์์คํ ์ ์๋ ๊ทธ๋ฆผ์ฒ๋ผ ๋ค์ํ ์ ๋ ฅ ์ ๋ณด๋ฅผ ๊ฐ๊ฐ ์ธ์ฝ๋ฉ → ์ตํฉ → ์์ธกํ๋ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋๋ค.
[User Info] [Text Info] [Image Info] [Behavior]
↓ ↓ ↓ ↓
User Embedding Text Embedding Image Embedding History Embedding
โ โ โ โ
โถ Fusion Layer (๋ฉํฐ๋ชจ๋ฌ ์ตํฉ)
↓
Scoring Layer (์์ธก)
๐ ๋ฉํฐ๋ชจ๋ฌ ์ถ์ฒ ์์คํ ์ํคํ ์ฒ
โ ์ ์ฒด ํ๋ฆ ์์ฝ
[User Modality] [Item Modality]
(๋์ด, ์ฑ๋ณ, ์์น) (์ด๋ฏธ์ง, ํ
์คํธ, ํ๊ทธ ๋ฑ)
โ โ
User Embedding Item Embedding
โโโโโโฌโโโโโโโโโโโโโฌโโโโโ
โ Fusion (๋ฉํฐ๋ชจ๋ฌ ์ตํฉ)
โโโโโโโโโโโโโโถ
Scoring Layer (์์ธก)
๐ง ๊ตฌ์ฑ ์์๋ณ ์ค๋ช
1. Input Modalities (์ ๋ ฅ ๋ชจ๋ฌ๋ค)
์ ๋ ฅ ์ข ๋ฅ | ์์ | ์ฒ๋ฆฌ ๊ธฐ์ |
---|---|---|
ํ ์คํธ | ์ํ ์ค๋ช , ๋ฆฌ๋ทฐ, ํค์๋ | BERT, FastText, LSTM |
์ด๋ฏธ์ง | ์ธ๋ค์ผ, ์ ํ ์ฌ์ง | CNN (ResNet, ViT) |
์ค๋์ค | ์์ฑ, ์์ | Spectrogram → CNN |
๋์์ | ์ผ์ธ , ํด๋ฆฝ | 3D CNN, ViViT |
์ฌ์ฉ์ ํ๋กํ | ๋์ด, ์ฑ๋ณ, ์์น | Embedding ๋๋ One-hot |
ํ๋ ๋ก๊ทธ | ํด๋ฆญ, ๊ตฌ๋งค, ์คํฌ๋กค ๋ฑ | Collaborative Filtering ๊ธฐ๋ฐ ์ธ์ฝ๋ฉ |
2. Embedding Layer (๋ชจ๋ฌ๋ณ ์ธ์ฝ๋ฉ)
- ๊ฐ modality๋ณ๋ก ๊ณ ์ ๋ ํฌ๊ธฐ์ ๋ฒกํฐ๋ก ์๋ฒ ๋ฉ
- ์:
- ํ ์คํธ → 768์ฐจ์ (BERT)
- ์ด๋ฏธ์ง → 512์ฐจ์ (ResNet50)
- ์์น → 2์ฐจ์ or geohash ์๋ฒ ๋ฉ
3. Fusion Layer (๋ฉํฐ๋ชจ๋ฌ ์ตํฉ ๋ฐฉ์)
๋ฐฉ์ | ์ค๋ช |
---|---|
Concat | ๋ชจ๋ modality๋ฅผ ๊ทธ๋ฅ ์ด์ด๋ถ์ |
Attention | ๊ฐ modality์ ์ค์๋๋ฅผ ํ์ตํ์ฌ ๊ฐ์คํฉ |
Gated Mechanism | modality๋ง๋ค gate๋ฅผ ๋์ด ์ค์ํ ๊ฒ๋ง ํต๊ณผ |
Cross-modal Transformer | modality ๊ฐ ์ํธ์์ฉ๊น์ง ํ์ต (ex. CLIP, MMRec) |
4. Scoring/Prediction Layer
- ์ฌ์ฉ์ ๋ฒกํฐ์ ์์ดํ ๋ฒกํฐ ์ฌ์ด์ ๊ด๊ณ๋ฅผ ํ๊ฐ
- ์์ธก ๋์: ๊ตฌ๋งค ํ๋ฅ , ํด๋ฆญ๋ฅ , ์ข์์ ํ๋ฅ ๋ฑ
score = Dot(User_Embedding, Item_Embedding)
# ๋๋ FFN(User || Item)
๐ง ์ฌ์ฉ๋๋ ์ฃผ์ ๊ธฐ์
๊ธฐ์ | ์ค๋ช | ์ค๋ฌด ํ์ฉ |
---|---|---|
CLIP (OpenAI) | ์ด๋ฏธ์ง + ํ ์คํธ ์๋ฒ ๋ฉ ๊ณต๋ ํ์ต | ์๊ฐ ์ ๋ณด ๊ธฐ๋ฐ ์ถ์ฒ |
BERT4Rec | ํ ์คํธ + ์ํ์ค ํ๋ ๋ชจ๋ธ๋ง | ๋ฆฌ๋ทฐ/์ค๋ช + ํ๋ ์์ธก |
MMRec | ๋ฉํฐ๋ชจ๋ฌ ์ถ์ฒ ํนํ ๊ตฌ์กฐ | ๋ค์ด๋ฒ, ์ผํผ, ์๋ง์กด ๋ฑ ์ฌ์ฉ |
Cross-modal Attention | ๋ค์ํ ๋ชจ๋ฌ๋ฆฌํฐ์ ์ฐ๊ด๋ ํ์ต | ์ด๋ฏธ์ง ๋ณด๊ณ ์ํ ์ถ์ฒ ๋ฑ |
Knowledge Distillation | Modal ๊ฐ ์ง์ ์ด์ | ํ ์คํธ→์ด๋ฏธ์ง ์ฑ๋ฅ ์ ์ด ๋ฑ |
๐ข ์ค์ ์ ์ฉ ์ฌ๋ก
๊ธฐ์ | ์ ์ฉ ์ |
---|---|
์ฟ ํก | ์ธ๋ค์ผ ์ด๋ฏธ์ง + ์ํ๋ช + ํ๋๋ก๊ทธ ๊ธฐ๋ฐ ์ถ์ฒ |
๋ทํ๋ฆญ์ค | ์๊ณ ํธ(๋น๋์ค), ์๋์์ค, ์์ฒญ ์ด๋ ฅ ํตํฉ ์ถ์ฒ |
ํฑํก | ์์ + ํด์ํ๊ทธ + ์ฌ์ฉ์ ํ๋ ๋์ ๋ถ์ |
์๋ง์กด | ๋ฆฌ๋ทฐ ํ ์คํธ + ์ด๋ฏธ์ง ๊ธฐ๋ฐ ํ์ด๋ธ๋ฆฌ๋ ์ถ์ฒ |
๐งฉ ๋ฉํฐ๋ชจ๋ฌ์ด ์ถ์ฒ ์ ํ๋์ ๊ธฐ์ฌํ๋ ๋ฐฉ์
- Cold Start ๋ฌธ์ ํด๊ฒฐ
- ์ ๊ท ์์ดํ ๋ ์ค๋ช , ์ด๋ฏธ์ง๋ง์ผ๋ก ์ถ์ฒ ๊ฐ๋ฅ
- ์ํฉ ์ดํด๋ ฅ ํฅ์
- "๋น ์ค๋ ๋ ", "์์์ด ๋ฐ์ ํค" ๋ฑ ๋งฅ๋ฝ ๋ฐ์ ๊ฐ๋ฅ
- ์ ํ๋ + ๋ค์์ฑ ๊ท ํ
- ๋จ์ ์ ์ฌ๋ ๋์ ๋ค์ํ ๊ธฐ์ค์์ ์ ์๋ฏธํ ์ถ์ฒ ๊ฐ๋ฅ
๋ฐ์ํ