CuongNN218 / zalo_ltr_2021

Source code for Zalo AI 2021 submission
137 stars 47 forks source link

Reason to choose Contrastive Loss #3

Open duongkstn opened 2 years ago

duongkstn commented 2 years ago

em chào các anh ạ, em có đọc code của các anh về bài toán retrieval Văn bản pháp luật của zalo 2021, em thấy các anh sử dụng Contrastive Loss ạ. Em có một số câu hỏi mong được chỉ giáo về kinh nghiệm làm bài toán retrieval ạ:

Em cảm ơn và mong được hồi đáp ạ

dzunglt24 commented 2 years ago

Hi @duongkstn. Trước khi tham gia cuộc thi, team anh chưa có ai làm về bài toán Retrieval và hiện tại cũng vậy. Anh có thể đưa ra vài nhận xét của anh nhưng có thể không hoàn toàn đúng hoặc làm thoả mãn các thắc mắc của em.

Vì sao lại chọn Contrastive Loss mà không phải các loss khác ạ ? Vì sao các anh không training theo kiểu DPR (Dense Passage Retrieval), sự khác nhau và khi nào nên dùng DPR và khi nào nên dùng Contrastive Learning ạ ?

Vì chỉ có 1 tháng nên team anh chưa có cơ hội thử DPR. Team anh đã thử một số các loss khác mà sentence-bert cung cấp nhưng không cho kết quả tốt bằng Contrastive Loss. Anh thấy MultipleNegativesRankingLoss idea khá giống với loss trong DPR paper.

Phương pháp này có phụ thuộc vào số negative samples không ạ (k đang có giá trị 20), nếu k=100 hoặc cao hơn có thể training như cũ được không ?

A nghĩ là có. Team anh bắt đầu với giá trị k=20, sau đó thử với k=50 nhưng không thấy kết quả cải thiện. Nếu có thời gian em có thể thử với giá trị k tăng dần (i.e 5, 10, 15, ...) để tìm đc best value cho k.

Nếu k càng lớn:

duongkstn commented 2 years ago

Còn một câu hỏi nữa em muốn hỏi là vì sao các anh lại tính score cuối cùng bằng cách nhân score model và score bm25 lại ạ ? https://github.com/CuongNN218/zalo_ltr_2021/blob/main/predict.py#L132 . theo em đọc paper nhiều chỗ thì người ta hay lọc bm25 trước rồi dùng score model để đánh giá cuối cùng, hoặc là Alpha * score bm25 + Beta * score model (Linear).