ฉันควรใช้ฟังก์ชันการสูญเสียใดเพื่อให้คะแนนโมเดล seq2seq RNN
ฉันกำลังทำงานผ่านกระดาษCho 2014ซึ่งนำเสนอสถาปัตยกรรมตัวเข้ารหัส - ถอดรหัสสำหรับการสร้างแบบจำลอง seq2seq ในกระดาษพวกเขาดูเหมือนจะใช้ความน่าจะเป็นของผลลัพธ์ที่ได้รับอินพุต (หรือเป็นลบบันทึกการเกิดโอกาส) เป็นฟังก์ชั่นการสูญเสียสำหรับอินพุตของความยาวMและเอาท์พุทyของความยาวN :xxxMMMyyyNNN P(y1,…,yN|x1,…,xM)=P(y1|x1,…,xm)P(y2|y1,x1,…,xm)…P(yN|y1,…,yN−1,x1,…,xm)P(y1,…,yN|x1,…,xM)=P(y1|x1,…,xm)P(y2|y1,x1,…,xm)…P(yN|y1,…,yN−1,x1,…,xm)P(y_1, …, y_N | x_1, …, x_M) = P(y_1 | x_1, …, x_m) P(y_2 | y_1, x_1, …, x_m) \dots P(y_N | y_1, …, y_N-1, x_1, …, x_m) อย่างไรก็ตามฉันคิดว่าฉันพบปัญหาหลายประการกับการใช้ฟังก์ชันนี้เป็นฟังก์ชันการสูญเสีย: ดูเหมือนว่าจะถือว่าครูบังคับให้ใช้ในระหว่างการฝึกอบรม (เช่นแทนที่จะใช้ตัวถอดรหัสสำหรับตำแหน่งในการป้อนข้อมูลในการทำซ้ำครั้งถัดไปจะใช้โทเค็นที่รู้จัก มันจะไม่ลงโทษลำดับยาว ๆ เนื่องจากความน่าจะเป็นคือจากถึงNของเอาต์พุตหากตัวถอดรหัสสร้างลำดับที่ยาวกว่าทุกอย่างหลังจากNแรกจะไม่รวมการสูญเสีย111NNNNNN หากโมเดลทำนายโทเค็น End-of-String ก่อนหน้านี้ฟังก์ชั่นการสูญเสียยังต้องการขั้นตอน - ซึ่งหมายความว่าเรากำลังสร้างเอาต์พุตตาม "นานา" ที่ไม่ได้รับการฝึกฝนของโมเดล …