ການສ້າງລະບົບແນະນຳສິນຄ້າ (Recommendation System) ສຳລັບ E-commerce ໃນລາວ
ການສ້າງລະບົບແນະນຳສິນຄ້າ (Recommendation System) ສຳລັບ E-commerce ໃນລາວ ດ້ວຍ Collaborative Filtering
ຕະຫຼາດການຄ້າອອນລາຍ (E-commerce) ໃນປະເທດລາວພວມເຕີບໂຕຢ່າງກ້າວກະໂດດ. ຈາກການຂາຍເຄື່ອງຜ່ານ Facebook Live ຂອງບັນດາ SME ໄປຈົນເຖິງແພລດຟອມແອັບພລິເຄຊັນທ້ອງຖິ່ນທີ່ນັບມື້ນັບຫຼາຍຂຶ້ນ. ເມື່ອລາຍການສິນຄ້າມີຈຳນວນຫຼັກໝື່ນ ໄປຈົນເຖິງຫຼັກແສນລາຍການ (ເຊັ່ນ: ກາເຟປາກຊ່ອງ, ສິ້ນໄໝ, ເຄື່ອງຫັດຖະກຳ, ຈົນຮອດເຄື່ອງໃຊ້ໄຟຟ້າ), ສິ່ງທ້າທາຍໜຶ່ງທີ່ແພລດຟອມເຫຼົ່ານີ້ຕ້ອງປະເຊີນຄື: “ເຮັດແນວໃດເພື່ອສະແດງສິນຄ້າທີ່ກົງກັບໃຈຜູ້ຊື້ຫຼາຍທີ່ສຸດ?”
ການໃຊ້ລະບົບແນະນຳ (Recommendation System) ທີ່ມີປະສິດທິພາບ ບໍ່ພຽງແຕ່ເພີ່ມຍອດຂາຍ (Conversion Rate) ແຕ່ຍັງສ້າງປະສົບການທີ່ດີໃຫ້ກັບລູກຄ້າ. ໃນບົດຄວາມນີ້, ເຮົາຈະມາເຈາະລິກເຖິງວິທີການສ້າງລະບົບແນະນຳສິນຄ້າດ້ວຍເຕັກນິກ Neural Collaborative Filtering (NCF) ແລະ ວິທີແກ້ໄຂບັນຫາທີ່ພົບເລື້ອຍໃນບໍລິບົດຂອງຂໍ້ມູນນິໄສການຊື້ຂອງຄົນລາວ ໂດຍເນັ້ນໄປທີ່ການປະມວນຜົນດ້ວຍ PyTorch.
ຄວາມເຂົ້າໃຈກ່ຽວກັບ Collaborative Filtering ແລະ ຂໍ້ຈຳກັດຂອງ Matrix Factorization
ຮູບແບບດັ້ງເດີມຂອງ Collaborative Filtering (CF) ມັກຈະອ້າງອີງໃສ່ Matrix Factorization (MF) ເຊິ່ງເປັນການແຍກຕາຕະລາງມາຕຣິກ (Matrix) ຂອງຜູ້ໃຊ້ (Users) ແລະ ໄອເທັມ (Items) ອອກເປັນອົງປະກອບຍ່ອຍ (Latent vectors). ແນວໃດກໍຕາມ, MF ອາໄສພຽງແຕ່ການຄູນແບບ Dot Product ເຊິ່ງອາດບໍ່ສາມາດຈັບຮູບແບບຄວາມສຳພັນທີ່ຊັບຊ້ອນ (Non-linear relationships) ໄດ້ດີ.
ໃນບໍລິບົດຂອງ E-commerce ລາວ, ລູກຄ້າສ່ວນໃຫຍ່ມັກຈະບໍ່ໃຫ້ຄະແນນ (Rating 1-5 ດາວ) ຢ່າງຊັດເຈນ. ພວກເຂົາມັກຈະສ້າງ Implicit Feedback ເຊັ່ນ: ການກົດເບິ່ງສິນຄ້າ (Click), ການເພີ່ມລົງກະຕ່າ (Add to cart), ຫຼື ການສັ່ງຊື້ (Purchase). ຕົວຢ່າງ: ຜູ້ໃຊ້ A ແລະ B ມັກຊື້ “ກາເຟປາກຊ່ອງ” ຕະຫຼອດແຕ່ບໍ່ເຄີຍໃຫ້ຄະແນນດາວ. ດັ່ງນັ້ນ, ການນຳໃຊ້ Deep Learning ເຂົ້າມາຊ່ວຍໃນນາມຂອງ Neural Collaborative Filtering (NCF) ຈະຊ່ວຍໃຫ້ໂມເດລຮຽນຮູ້ການໂຕ້ຕອບເຫຼົ່ານີ້ໄດ້ເລິກເຊິ່ງກວ່າ.
ສະຖາປັດຕະຍະກຳຂອງ Neural Collaborative Filtering (NCF)
NCF ທົດແທນການໃຊ້ Dot Product ທຳມະດາ ດ້ວຍກຸ່ມຂອງ Neural Networks (Multi-Layer Perceptron ຫຼື MLP) ເພື່ອຮຽນຮູ້ການປະຕິສຳພັນລະຫວ່າງ User Embeddings ແລະ Item Embeddings.
ການສ້າງໂມເດລຮູບແບບພື້ນຖານດ້ວຍ PyTorch
ລຸ່ມນີ້ແມ່ນໂຄດຕົວຢ່າງສຳລັບການສ້າງສະຖາປັດຕະຍະກຳ NCF ໂດຍໃຊ້ PyTorch. ໃນນີ້ເຮົາຈະສ້າງ Embedding layers ສຳລັບຜູ້ໃຊ້ ແລະ ສິນຄ້າ ກ່ອນຈະປ້ອນເຂົ້າສູ່ຊັ້ນ MLP.
import torch
import torch.nn as nn
class NCFModel(nn.Module):
def __init__(self, num_users, num_items, embedding_dim=64):
super(NCFModel, self).__init__()
# User & Item Embeddings
self.user_embedding = nn.Embedding(num_users, embedding_dim)
self.item_embedding = nn.Embedding(num_items, embedding_dim)
# Multi-Layer Perceptron (MLP)
self.mlp_layers = nn.Sequential(
nn.Linear(embedding_dim * 2, 128),
nn.ReLU(),
nn.Dropout(0.2), # ປ້ອງກັນ Overfitting
nn.Linear(128, 64),
nn.ReLU(),
nn.Linear(64, 32),
nn.ReLU(),
nn.Linear(32, 1)
)
# Output layer for probability score (0 ເຖິງ 1)
self.sigmoid = nn.Sigmoid()
def forward(self, user_indices, item_indices):
user_emb = self.user_embedding(user_indices)
item_emb = self.item_embedding(item_indices)
# ເຊື່ອມຕໍ່ (Concatenate) Latent vectors
vector_concat = torch.cat([user_emb, item_emb], dim=-1)
# ຜ່ານ MLP
x = self.mlp_layers(vector_concat)
prediction = self.sigmoid(x)
return prediction.squeeze()
ການປັບຈູນໂມເດລດ້ວຍ Bayesian Personalized Ranking (BPR)
ດັ່ງທີ່ກ່າວໄປ, ຂໍ້ມູນຂອງ E-commerce ສ່ວນໃຫຍ່ແມ່ນ Implicit. ຖ້າເຮົາໃຊ້ Loss Function ທົ່ວໄປເຊັ່ນ MSE (Mean Squared Error), ມັນຈະບໍ່ເໝາະສົມເທົ່າທີ່ຄວນ. ສຳລັບ Implicit Feedback, ເຮົາຢາກໃຫ້ໂມເດລ “ຈັດອັນດັບ” (Rank) ສິນຄ້າທີ່ຜູ້ໃຊ້ນ່າຈະສົນໃຈ ໃຫ້ຢູ່ສູງກວ່າສິນຄ້າທີ່ພວກເຂົາບໍ່ສົນໃຈ.
ເຮົາສາມາດນຳໃຊ້ BPR Loss (Bayesian Personalized Ranking Loss) ມາແກ້ໄຂບັນຫານີ້ໄດ້. ສົມຜົນທາງຄະນິດສາດຂອງ BPR ແມ່ນອີງໃສ່ຄວາມໜ້າຈະເປັນທີ່ຜູ້ໃຊ້ ຈະມັກໄອເທັມ (ເຊິ່ງກົດເບິ່ງແລ້ວ) ຫຼາຍກວ່າໄອເທັມ (ເຊິ່ງຍັງບໍ່ເຄີຍເບິ່ງ):
ການຂຽນ Loss Function ສຳລັບ BPR ໃນ PyTorch:
import torch.nn.functional as F
def bpr_loss(pos_preds, neg_preds):
"""
pos_preds: ການຄາດເດົາສຳລັບສິນຄ້າທີ່ຜູ້ໃຊ້ກົດຊື້ ຫຼື ເບິ່ງ (Positive interactions)
neg_preds: ການຄາດເດົາສຳລັບສິນຄ້າທີ່ສຸ່ມຂຶ້ນມາ (Negative interactions)
"""
# ໄລ່ຄວາມແຕກຕ່າງລະຫວ່າງຄວາມມັກສິນຄ້າ Positive ກັບ Negative
distance = pos_preds - neg_preds
# ໃຊ້ Log Sigmoid ເພື່ອຮັກສາຄ່າໃນຮູບແບບຂອງ Log likelihood
loss = -F.logsigmoid(distance).mean()
return loss
ການຈັດການກັບບັນຫາ Cold Start ໃນພື້ນທີ່ທຸລະກິດລາວ
ຖ້າເວທີ E-commerce ຂອງທ່ານຫາກໍເປີດໂຕໃໝ່ (ເຊັ່ນ App ຂອງ SME ໃນນະຄອນຫຼວງວຽງຈັນ ຫຼື ຮ້ານຂາຍເຄື່ອງຫັດຖະກຳທີ່ຫຼວງພະບາງ) ບັນຫາ Cold Start Problem ຈະເກີດຂຶ້ນແນ່ນອນ ເພາະຜູ້ໃຊ້ໃໝ່ຍັງບໍ່ມີປະຫວັດການຊື້ໃຫ້ເກັບກຳ. ເພື່ອແກ້ໄຂບັນຫານີ້, ທ່ານຄວນ:
- Hybrid Recommendation Approaches: ນຳເອົາ Content-based filtering ເຂົ້າມາປະສົມປະສານ. ຖອດລະຫັດ (Extract features) ຈາກລາຍລະອຽດສິນຄ້າທີ່ເປັນພາສາລາວ ໂດຍໃຊ້ NLP Model (ເຊັ່ນ: LaoBERT ຫຼື LLMs ທີ່ມີຄວາມສາມາດໃນການເຂົ້າໃຈພາສາລາວ) ມາເຮັດ Item Embeddings ກ່ອນ.
- Contextual Bandits: ໃຊ້ Algorithm ເຊັ່ນ Epsilon-Greedy ເພື່ອສຸ່ມສະແດງສິນຄ້າໃໝ່ (Exploration) ໃນຂະນະດຽວກັນກໍສະແດງສິນຄ້າຂາຍດີ (Exploitation) ໄປພ້ອມໆກັນ.
ສິ່ງສຳຄັນທີ່ຄວນຈື່ (Key Takeaways)
- Implicit vs Explicit: ໃຫ້ຄວາມສຳຄັນກັບຂໍ້ມູນການຄຼິກ (Click) ແລະ ສັ່ງຊື້ ຫຼາຍກວ່າການເພິ່ງພາຄະແນນການຣີວິວ ເຊິ່ງເກີດຂຶ້ນຍາກໃນພຶດຕິກຳຂອງຜູ້ຊື້ເຄື່ອງອອນລາຍໃນລາວ.
- Neural Collaborative Filtering: ສະລັດຂໍ້ຈຳກັດຂອງ Matrix Factorization ແບບເກົ່າ ໂດຍການໃຊ້ Deep Learning ເພື່ອຮຽນຮູ້ຄວາມສຳພັນແບບ Non-linear ທີ່ເລິກເຊິ່ງກວ່າໝູ່.
- BPR Loss Function: ເປັນເຕັກນິກ Loss function ຂັ້ນສູງທີ່ຖືກອອກແບບມາສະເພາະສຳລັບຊຸດຂໍ້ມູນແບບ Implicit Feedback, ຊ່ວຍເພີ່ມຄວາມແມ່ນຍຳໃນການ “ຈັດອັນດັບ” ສິນຄ້າໄດ້ດີຢ່າງບໍ່ໜ້າເຊື່ອ.
- Architecture ທີ່ຮອງຮັບການເຕີບໂຕ: ການໃຊ້ PyTorch ສ້າງ Architecture ຂຶ້ນມາເອງ ຈະຊ່ວຍໃຫ້ພັດທະນາກ້າວໄປສູ່ການລວມເອົາຂໍ້ມູນຮູບພາບສິນຄ້າ (CNN) ແລະ ຂໍ້ມູນຄຳບັນຍາຍ (NLP/LLMs) ເຂົ້າເປັນ Hybrid System ໃນອະນາຄົດໄດ້ຢ່າງງ່າຍດາຍ.
ການສ້າງ Recommendation System ທີ່ດີຈຳເປັນຕ້ອງມີການທົດລອງ ແລະ ການປັບປ່ຽນ (Fine-Tuning) ຢູ່ສະເໝີ. ເຖິງແມ່ນວ່າເຕັກນິກຕ່າງໆເຊັ່ນ NCF ແລະ BPR Loss ຈະມີຄວາມຊັບຊ້ອນທາງຄະນິດສາດ ແລະ ຕ້ອງການຄວາມເຂົ້າໃຈໃນການພັດທະນາລະບົບດ້ວຍ Deep Learning Framework, ແຕ່ຜົນໄດ້ຮັບທີ່ມັນນຳມາສູ່ພາກທຸລະກິດ E-commerce ແມ່ນຄຸ້ມຄ່າຢ່າງມີໄນຍະສຳຄັນ. ການນຳເອົາເຕັກໂນໂລຊີ AI ລະດັບໂລກມາປັບໃຊ້ໃຫ້ເຂົ້າກັບບໍລິບົດ ແລະ ພຶດຕິກຳຜູ້ບໍລິໂພກໃນປະເທດລາວຢ່າງຖືກຕ້ອງ ຈະເປັນກຸນແຈສຳຄັນໃນການສ້າງຂໍ້ໄດ້ປຽບທາງການແຂ່ງຂັນສຳລັບທຸລະກິດຍຸກດິຈິຕອລນີ້.