Contrastive Learning – SimCSE Và NT-Xent Loss
Li = -log exp(sim(zi, zi+)/τ)∑j ≠ i exp(sim(zi, zj)/τ)
Tiến độ của tôi ở bài này
Điểm được lưu vào tài khoản sau khi chấm bài.
Đang tải điểm của bạn…
Kiến thức và chủ đề
Kiến thức tiên quyết: dense-embedding-cosine-similarity-search.
Nội dung đề bài
Mục tiêu kiến thức
NT-Xent (Normalized Temperature-scaled Cross Entropy) loss cho self-supervised learning: Li = -log exp(sim(zi, zi+)/τ)∑j ≠ i exp(sim(zi, zj)/τ)
Trong đó:
- zi: embedding của anchor
- zi+: embedding của positive (cùng nghĩa, ví dụ: cùng câu qua 2 dropout masks)
- τ: temperature
- Mẫu âm: tất cả embedding còn lại trong batch
Yêu cầu
def nt_xent_loss(
z1: torch.Tensor, # [N, d] embeddings batch 1
z2: torch.Tensor, # [N, d] embeddings batch 2 (positives)
temperature: float = 0.05
) -> torch.Tensor:
# Returns scalar loss
passInput
- Hàm
nt_xent_loss(z1,z2,temperature): Các tham số đầu vào chứa dữ liệu Tensor/mảng NumPy hoặc giá trị siêu tham số tương ứng.
Output
- Hàm
nt_xent_loss: Trả về kết quả kiểutorch.Tensortheo đúng đặc tả kỹ thuật và kích thước quy định.
Ràng buộc
- Thời gian chạy tối đa: 5000ms.
- Giới hạn bộ nhớ: 512MB.
- Dữ liệu đầu vào hợp lệ theo đúng kiểu dữ liệu và miền giá trị được mô tả.
Ví dụ 1
Input
z1 = torch.randn(4, 16)
z2 = torch.randn(4, 16)
loss = nt_xent_loss(z1, z2)Output
8.0087Giải thích
Hàm/lớp được gọi với các tham số mẫu trên và trả về kết quả số học / kích thước tensor tương ứng theo đúng thiết kế.
Ví dụ 2
Input
torch.manual_seed(42)
z = torch.randn(8, 16)
z1, z2 = (torch.randn(8, 16), torch.randn(8, 16))
loss_random = nt_xent_loss(z1, z2).item()Output
5.482282Giải thích
Hàm/lớp được gọi với các tham số mẫu trên và trả về kết quả số học / kích thước tensor tương ứng theo đúng thiết kế.
Gợi ý và lời giải chỉ mở sau khi bạn bấm Nộp bài. Giáo viên và quản trị viên mở được ngay.
Góp ý & báo lỗi bài tập
Đề bài chưa rõ, test có vấn đề hay bạn có ý tưởng giúp bài tốt hơn? Gửi cho đội ngũ AI Empire nhé — mỗi góp ý đều được đọc.
