จะแสดงข้อมูลสำหรับ LSTM ได้อย่างไร

ฉันมีข้อมูลลำดับที่บอกฉันว่าสีใดที่สังเกตได้จากวัตถุหลายตัวในช่วงเวลาที่ต่างกัน ตัวอย่างเช่น:

ID Time Color
A 1 Blue
A 2 Red
A 5 Red
B 3 Blue
B 6 Green
C 1 Red
C 3 Orange

ฉันต้องการรับการคาดการณ์สำหรับสีที่น่าจะเป็นไปได้มากที่สุดใน 3 ขั้นตอนถัดไป รวมถึงความน่าจะเป็นที่สีนั้นจะปรากฏ ตัวอย่างเช่น สำหรับ ID A ฉันต้องการทราบ 3 รายการถัดไป (เวลา สี) ในลำดับ รวมถึงความน่าจะเป็นที่สีจะปรากฏ

ฉันเข้าใจว่า LSTM มักจะใช้เพื่อทำนายข้อมูลตามลำดับประเภทนี้ และฉันจะป้อนในอาร์เรย์ 3 มิติเช่น

input =[ 
[[1,1], [2,2], [5,2]], #blue at t=1, red at t=2, red at t=5 for ID A
[[0,0], [3,1], [6,3]], #nothing for first entry, blue at t=3, green at t=6 for ID B
[[0,0], [1,2], [3,4]]
]
  

หลังจากจับคู่สีกับตัวเลขแล้ว (น้ำเงิน-> 1, แดง->2, เขียว-> 3, สีส้ม -> 4 ฯลฯ) ความเข้าใจของฉันคือ ตามค่าเริ่มต้น LSTM จะคาดการณ์รายการถัดไปในแต่ละลำดับ เป็นต้น

output = [
[[7, 2]], #next item is most likely red at t=7
[[9, 3]], # next item is most likely red at t=9
[[6, 2]] 
]

เป็นไปได้หรือไม่ที่จะแก้ไขเอาท์พุตของ LSTM ของฉันเพื่อที่แทนที่จะแค่ทำนายเวลาและสีที่จะเกิดขึ้นครั้งถัดไป ฉันจะได้รับสี และความน่าจะเป็นของสีที่ปรากฏ 3 ครั้งถัดไป ตัวอย่างเช่นผลลัพธ์เช่น

output = [
[[7, 2, 0.93], [8,2, 0.79], [10,4, 0.67]], 
[[9, 2, 0.88], [11,3, 0.70], [14,3, 0.43]], 
...
]

ฉันได้ลองค้นหาในเอกสาร Sequential สำหรับ Keras แล้ว แต่ฉันไม่แน่ใจว่าพบสิ่งใดหรือไม่

นอกจากนี้ ฉันเห็นว่ามี TrainX และ TrainY ที่ปกติใช้สำหรับ model.fit() แต่ฉันไม่แน่ใจว่า TrainY ของฉันจะเป็นอย่างไรที่นี่


person lvnwrth    schedule 24.02.2021    source แหล่งที่มา
comment
Sequential ไม่เกี่ยวข้องกับลำดับ มันเป็นเพียงอินเทอร์เฟซสำหรับสแต็กเลเยอร์ (ชื่อที่ดีกว่าน่าจะเป็น Model)   -  person runDOSrun    schedule 26.02.2021


คำตอบ (1)


LSTM เพียงทำนายรายการถัดไปในแต่ละลำดับ...

ไม่จริง LSTM เป็นเพียงเลเยอร์ที่ช่วยเข้ารหัสข้อมูลตามลำดับ เป็นงานดาวน์สตรีม (เลเยอร์หนาแน่นและเลเยอร์เอาท์พุต) ที่กำหนดว่าแบบจำลองจะทำนายอะไร

แม้ว่าคุณจะสามารถฝึกโมเดลที่ใช้ LSTM เพื่อทำนายค่าถัดไปในลำดับได้ (โดยการเก็บการประทับเวลาล่าสุดเป็นเป้าหมายการถดถอยของคุณอย่างชาญฉลาด y) คุณคงอยากจะใช้สถาปัตยกรรมตัวเข้ารหัส-ตัวถอดรหัสที่ใช้ LSTM เพื่อสร้างลำดับจากอินพุตอย่างเหมาะสม ลำดับ

ป้อนคำอธิบายรูปภาพที่นี่

นี่เป็นสถาปัตยกรรมเดียวกับที่ใช้สำหรับโมเดลภาษาเพื่อสร้างข้อความหรือโมเดลการแปลด้วยเครื่องเพื่อแปลภาษาอังกฤษเป็นภาษาฝรั่งเศส

คุณสามารถดูบทช่วยสอนที่ดีเกี่ยวกับการใช้งาน ที่นี่ ข้อดีของโมเดลนี้คือ ขณะนี้คุณสามารถเลือกถอดรหัสขั้นตอนเวลาได้มากเท่าที่คุณต้องการ ดังนั้นสำหรับกรณีของคุณ คุณสามารถป้อนลำดับสีที่มีความยาวคงที่และบุนวมลงในตัวเข้ารหัส และถอดรหัสขั้นตอน 3 ครั้งได้

จากมุมมองการเตรียมข้อมูล คุณจะต้องใช้แต่ละลำดับของสี ลบ 3 สีสุดท้ายเป็น y ของคุณ และแพดส่วนที่เหลือให้มีความยาวคงที่

sample = [R, G, B, B, R, G, R, R, B]
X = [<start>, 0, 0, 0, 0, 0, R, G, B, B, R, G, <end>]  #Padded input sequence
y = [<start>, R, R, B, <end>]                          #Y sequence

คุณจะพบขั้นตอนการประมวลผลล่วงหน้า การฝึกอบรม และการอนุมานที่จำเป็นในลิงก์ด้านบน

person Akshay Sehgal    schedule 25.02.2021
comment
ฉันเข้าใจแล้ว ถ้าฉันต้องการได้สี 3 สีถัดไปในแต่ละลำดับ ฉันจะลบสามสีสุดท้ายที่สังเกตได้ในแต่ละลำดับเพื่อตั้งค่าเป็น y ของฉัน เมื่อเราแพด ไม่สำคัญว่าเราจะแพดที่จุดเริ่มต้นหรือจุดสิ้นสุด? ลำดับของฉันมีความยาวต่างกัน ดังนั้นบางรายการจึงต้องมีช่องว่างภายในมากกว่าชุดอื่นๆ เช่น. ฉันอาจมี 8 รายการในลำดับ A และ 6 รายการในลำดับ B - person lvnwrth; 25.02.2021
comment
ควรทำ pre-padding ดีกว่า post-padding เหตุผลก็คือสถานะที่ซ่อนอยู่จะถูกล้างออกด้วยการเติมโพสต์ ในการเตรียมการ 0 จะตามด้วยลำดับจริงดังนั้นจึงรักษาการเป็นตัวแทนของลำดับได้ดีขึ้นมาก ฉันได้อัปเดตคำตอบของฉันเพื่อให้สะท้อนถึงสิ่งเดียวกัน อ่าน สิ่งนี้ เพื่อดูรายละเอียดเพิ่มเติม - person Akshay Sehgal; 26.02.2021
comment
นอกจากนี้คุณยังสามารถแพดและตัดทอนลำดับของคุณได้ทั้งสองอย่าง ดังนั้นหากลำดับมีขนาดเล็กกว่าค่าเฉลี่ย ให้แพดไว้ แต่สำหรับลำดับที่ยาวมาก คุณอาจต้องการตัดทอน - person Akshay Sehgal; 26.02.2021
comment
@AkshaySehgal Post-padding ได้รับความนิยมมากกว่า pre-padding อย่างมาก (แม้แต่บทช่วยสอนที่คุณเชื่อมโยงโพสต์ที่ใช้แล้ว) แม้ว่าสิ่งนี้อาจผิดประเพณีมากกว่าหลักฐาน แต่รายงานที่คุณเชื่อมโยงนั้นจำกัดเกินกว่าจะอ้างว่าโดยทั่วไปแล้วการศึกษาหนึ่งดีกว่าอีกการศึกษาหนึ่งในแง่ของความแม่นยำของแบบจำลอง (หากคุณมีการศึกษาวิจัยคุณภาพดีที่ผ่านการตรวจสอบโดยผู้ทรงคุณวุฒิอื่น ๆ ฉันจะ สนใจ) นอกจากนี้ การฟลัชออกอาจส่งผลที่ เริ่มต้น ของลำดับด้วย แต่ในทางปฏิบัติแล้วไม่เป็นปัญหาเนื่องจากเราทำการมาสก์ - person runDOSrun; 26.02.2021
comment
เพื่อสนับสนุนการอ้างสิทธิ์ของฉันว่าการโพสต์แพดดิ้งเป็นที่นิยมมากกว่า: TF, Keras มีโพสต์เป็นค่าเริ่มต้นและ แนะนำ CUDNN ทำการโพสต์ภายหลัง และ Huggingface Transformers เท่านั้น สนับสนุน postpadding ดังนั้นผมขอท้าทายจริงๆ ว่าการ prepadding นั้นเป็นที่นิยมมากกว่า PyTorch ยังไม่รองรับการเติมล่วงหน้าในขณะนี้ - person runDOSrun; 26.02.2021
comment
@runDOSrun ฉันคิดว่าคุณเข้าใจผิด โปรดอ่านบทความที่ฉันเชื่อมโยงอีกครั้ง บทความนั้นและบทความอื่นๆ แนะนำว่าการเติมรองพื้นล่วงหน้าคือหนทางที่จะไป ไม่ใช่การเติมโพสต์สำหรับ LSTM ฉันสามารถสร้างลิงก์หลายรายการได้เหมือนกัน ลิงก์ 1, ลิงก์ 2, ลิงก์ 3 - person Akshay Sehgal; 26.02.2021
comment
เกี่ยวกับการอ้างสิทธิ์ของคุณเกี่ยวกับ Transformers นั้น Masks เป็นวิธีที่มีประสิทธิภาพในการแยกแยะระหว่างส่วนที่มีเบาะและไม่บุนวมของลำดับ - person Akshay Sehgal; 26.02.2021
comment
และลิงก์ที่คุณแสดงเกี่ยวกับ TF ที่แนะนำนั้นเกิดจากการที่อนุญาตให้คุณใช้งาน CuDNN เท่านั้น (ตามที่กล่าวไว้อย่างชัดเจนหลังประโยคที่อ้างถึง) - person Akshay Sehgal; 26.02.2021
comment
Plus pre-padding ได้รับการพิสูจน์แล้ว (ดังในบทความที่ฉันลิงก์ด้านบน) เพื่อให้ทำงานได้ดีขึ้นกับ RNN และ LSTM แต่ไม่มีผลกระทบใด ๆ ต่อสถาปัตยกรรมที่ใช้ CNN (โปรดอ่านบทสรุปสุดท้ายของบทความ) - person Akshay Sehgal; 26.02.2021
comment
@AkshaySehgal ขอบคุณ แต่แหล่งที่มาของคุณให้การเรียกร้องโดยไม่มีหลักฐานใด ๆ (SO ยังส่งกลับไปในความคิดเห็น) โดยเฉพาะอย่างยิ่งรายงานที่อ้างถึง ดูเหมือนจะไม่ได้รับการตรวจสอบโดยผู้ทรงคุณวุฒิ และจัดให้มีการทดลองขนาดเล็กมากกับแบบจำลองเดียวบนชุดข้อมูลเดียว ฉันขอโทษหากสิ่งนี้อาจดูอวดรู้ แต่ในทางวิทยาศาสตร์จำเป็นต้องทำซ้ำในการศึกษาเพิ่มเติมจึงจะถือเป็นหลักฐานที่ชัดเจน หากเราสามารถตกลงที่จะไม่เห็นด้วยได้ ฉันก็เสนอประเด็น: มันไม่ชัดเจนอย่างแน่นอนว่าอะไรดีกว่ากัน เนื่องจากมีความคิดเห็นที่แตกต่างกันลอยไปมา - person runDOSrun; 26.02.2021
comment
ดังที่คุณชี้ให้เห็น อาจเป็นไปได้ว่าผลลัพธ์อาจแตกต่างกันไปตามสถานการณ์เฉพาะ ดังนั้นฉันจึงเข้าใจว่าคุณมาจากไหน เพื่อความเข้าใจของฉัน จะช่วยได้เช่นกัน หากคุณมีแหล่งข้อมูลใด ๆ ที่แสดงให้เห็นเหตุผลว่าทำไมการโพสต์แพดจึงดีกว่า - person Akshay Sehgal; 26.02.2021