เปียโนในการเล่น" style="max-width: 100%;">
pianola เป็นแอปพลิเคชั่นที่เล่นเพลงเปียโนที่สร้างโดย AI ผู้ใช้เริ่มต้น (เช่น "แจ้ง") โมเดล AI โดยการเล่นโน้ตบนคีย์บอร์ด หรือเลือกตัวอย่างจากผลงานคลาสสิก
ในการอ่านนี้ เราจะอธิบายวิธีการทำงานของ AI และลงรายละเอียดเกี่ยวกับสถาปัตยกรรมของโมเดล
เพลงสามารถนำเสนอได้หลายวิธี ตั้งแต่รูปคลื่นเสียงดิบไปจนถึงมาตรฐาน MIDI แบบกึ่งโครงสร้าง ใน pianola เราแบ่งจังหวะดนตรีออกเป็นช่วงสม่ำเสมอและสม่ำเสมอ (เช่น โน้ตที่ 16/เซมิควาเวอร์) โน้ตที่เล่นภายในช่วงเวลาหนึ่งจะถือว่าอยู่ในไทม์สเตปเดียวกัน และชุดของไทม์สเตปจะประกอบกันเป็นลำดับ เมื่อใช้ลำดับตามตารางเป็นอินพุต โมเดล AI จะคาดการณ์บันทึกย่อในลำดับเวลาถัดไป ซึ่งจะใช้เป็นอินพุตสำหรับคาดการณ์ลำดับเวลาถัดไปในลักษณะการถดถอยอัตโนมัติ
นอกจากโน้ตที่จะเล่นแล้ว แบบจำลองยังคาดการณ์ ระยะเวลา (ระยะเวลาที่โน้ตถูกกดค้างไว้) และ ความเร็ว (ความแรงในการกดคีย์) ของโน้ตแต่ละตัว
โมเดลประกอบด้วยสามโมดูล: ตัวฝัง หม้อแปลงไฟฟ้า และตัวถอดรหัส โมดูลเหล่านี้ยืมมาจากสถาปัตยกรรมที่มีชื่อเสียง เช่น เครือข่าย Inception, หม้อแปลง LLaMA และเครือข่ายตัวแยกประเภทหลายป้ายกำกับ แต่ได้รับการปรับให้ทำงานกับข้อมูลทางดนตรีและนำมารวมกันในแนวทางใหม่
ตัวฝังจะแปลงแต่ละลำดับเวลาอินพุตของรูปร่าง (num_notes, num_features)
ให้เป็นเวกเตอร์แบบฝังที่สามารถป้อนเข้าไปในหม้อแปลงไฟฟ้าได้ อย่างไรก็ตาม ไม่เหมือนกับการฝังข้อความที่แมปเวกเตอร์ยอดนิยมหนึ่งไปยังพื้นที่อีกมิติหนึ่ง เราจัดเตรียมอคติแบบอุปนัยโดยการใช้เลเยอร์แบบหมุนวนและการรวมเลเยอร์บนอินพุต เราทำเช่นนี้ด้วยเหตุผลหลายประการ:
2^num_notes
โดยที่ num_notes
คือ 64 หรือ 88 สำหรับเปียโนแบบสั้นถึงปกติ) ดังนั้นจึงไม่สามารถแสดงเป็นเวกเตอร์ที่ร้อนแรงเพียงตัวเดียวได้เพื่อให้ Embedder เรียนรู้ว่าระยะทางใดมีประโยชน์ เราใช้แรงบันดาลใจจากเครือข่าย Inception และสแต็ก Convolution ของขนาดเคอร์เนลที่แตกต่างกัน
โมดูลหม้อแปลงประกอบด้วยชั้นหม้อแปลง LLaMA ที่ใช้การเอาใจใส่ในตัวเองกับลำดับของเวกเตอร์ที่ฝังอินพุต
เช่นเดียวกับโมเดล AI ทั่วไปอื่นๆ โมดูลนี้ใช้เฉพาะส่วน "ตัวถอดรหัส" ของโมเดล Transformers ดั้งเดิมโดย Vaswani และคณะ (2017) เราใช้ป้ายกำกับ "หม้อแปลงไฟฟ้า" ที่นี่เพื่อแยกความแตกต่างโมดูลนี้จากโมดูลต่อไปนี้ ซึ่งทำการถอดรหัสจริงของสถานะที่สร้างโดยเลเยอร์การเอาใจใส่ตนเอง
เราเลือกสถาปัตยกรรม LLaMA เหนือหม้อแปลงประเภทอื่นๆ เป็นหลัก เนื่องจากใช้การฝังตำแหน่งแบบหมุน (RoPE) ซึ่งเข้ารหัสตำแหน่งสัมพัทธ์ด้วยการสลายตัวของระยะทางตามเวลา เนื่องจากเราแสดงข้อมูลดนตรีเป็นช่วงเวลาที่คงที่ ตำแหน่งสัมพัทธ์ตลอดจนระยะทางระหว่างการก้าวเวลาจึงเป็นข้อมูลที่สำคัญที่หม้อแปลงไฟฟ้าสามารถใช้เพื่อทำความเข้าใจและสร้างเพลงที่มีจังหวะสม่ำเสมอได้อย่างชัดเจน
ตัวถอดรหัสจะเข้าสู่สถานะที่เข้าร่วมและคาดการณ์ว่าจะเล่นโน้ตพร้อมกับระยะเวลาและความเร็ว โมดูลนี้ประกอบด้วยองค์ประกอบย่อยหลายองค์ประกอบ ได้แก่ กลุ่มตัวแยกประเภทสำหรับการทำนายโน้ตและเพอร์เซปตรอนหลายชั้น (MLP) สำหรับการทำนายคุณลักษณะ
สายตัวแยกประเภทประกอบด้วยตัวแยกประเภทไบนารี num_notes
เช่น หนึ่งตัวสำหรับแต่ละคีย์บนเปียโน เพื่อสร้างตัวแยกประเภทแบบหลายป้ายกำกับ เพื่อใช้ประโยชน์จากความสัมพันธ์ระหว่างบันทึก ตัวแยกประเภทไบนารีจะถูกเชื่อมโยงเข้าด้วยกัน ดังนั้นผลลัพธ์ของบันทึกก่อนหน้าจะส่งผลต่อการคาดการณ์สำหรับบันทึกย่อต่อไปนี้ ตัวอย่างเช่น หากมีความสัมพันธ์เชิงบวกระหว่างโน้ตระดับแปดเสียง โน้ตตัวล่างที่ใช้งานอยู่ (เช่น C3
) จะส่งผลให้มีความเป็นไปได้สูงที่โน้ตตัวสูง (เช่น C4
) จะถูกทำนาย นอกจากนี้ยังเป็นประโยชน์ในกรณีที่มีความสัมพันธ์เชิงลบ โดยอาจเลือกระหว่างบันทึกย่อสองตัวที่อยู่ติดกันซึ่งส่งผลให้เกิดระดับหลักหรือรอง (เช่น CDE
กับ CD-Eb
) แต่ไม่ใช่ทั้งสองอย่าง
เพื่อประสิทธิภาพในการคำนวณ เราจำกัดความยาวของเชนไว้ที่ 12 ลิงก์ นั่นคือหนึ่งอ็อกเทฟ ในที่สุด กลยุทธ์การถอดรหัสการสุ่มตัวอย่างจะใช้เพื่อเลือกบันทึกที่เกี่ยวข้องกับความน่าจะเป็นในการทำนาย
คุณลักษณะระยะเวลาและความเร็วถือเป็นปัญหาการถดถอยและคาดการณ์โดยใช้ MLP แบบวานิลลา แม้ว่าคุณสมบัติต่างๆ จะถูกคาดการณ์ไว้สำหรับโน้ตทุกตัว เราใช้ฟังก์ชันการสูญเสียแบบกำหนดเองในระหว่างการฝึกซึ่งจะรวมเฉพาะการสูญเสียคุณสมบัติจากบันทึกย่อที่ใช้งานอยู่ ซึ่งคล้ายกับฟังก์ชันการสูญเสียที่ใช้ในการจำแนกประเภทรูปภาพกับงานการแปลเป็นภาษาท้องถิ่น
ทางเลือกของเราในการแสดงข้อมูลดนตรีเป็นตารางมีทั้งข้อดีและข้อเสีย เราหารือประเด็นเหล่านี้โดยเปรียบเทียบกับคำศัพท์ตามเหตุการณ์ที่เสนอโดย Oore และคณะ (2018) ผลงานที่ได้รับการกล่าวถึงอย่างสูงในการสร้างดนตรี
ข้อดีหลักประการหนึ่งของแนวทางของเราคือการแยกความเข้าใจดนตรี ในระดับจุลภาค และ มหภาค ซึ่งนำไปสู่การแยกหน้าที่ระหว่างตัวฝังและหม้อแปลงอย่างชัดเจน บทบาทแรกคือการตีความปฏิสัมพันธ์ของโน้ตในระดับจุลภาค เช่น ระยะทางสัมพัทธ์ระหว่างโน้ตทำให้เกิดความสัมพันธ์ทางดนตรีเช่นคอร์ดได้อย่างไร และงานหลังคือการสังเคราะห์ข้อมูลนี้ในมิติของเวลาเพื่อทำความเข้าใจสไตล์ดนตรีในระดับมหภาค ระดับ.
ในทางตรงกันข้าม การแสดงตามเหตุการณ์จะวางภาระทั้งหมดบนแบบจำลองลำดับเพื่อตีความโทเค็นร้อนเดียว ซึ่งอาจแสดงถึงระดับเสียง เวลา หรือความเร็ว ซึ่งเป็นแนวคิดที่แตกต่างกันสามประการ หวงและคณะ (2018) พบว่ามีความจำเป็นต้องเพิ่มกลไกความสนใจสัมพัทธ์ให้กับโมเดล Transformer เพื่อสร้างความต่อเนื่องที่สอดคล้องกัน ซึ่งชี้ให้เห็นว่าโมเดลนั้นต้องการอคติแบบอุปนัยเพื่อให้ทำงานได้ดีกับการนำเสนอนี้
ในการนำเสนอตาราง การเลือกความยาวช่วงเวลาเป็นการแลกเปลี่ยนระหว่างความเที่ยงตรงของข้อมูลและความกระจัดกระจาย ช่วงเวลาที่นานขึ้นจะลดความละเอียดของการกำหนดเวลาโน้ต ลดการแสดงออกทางดนตรี และอาจบีบอัดองค์ประกอบด่วน เช่น เสียงทริลล์และโน้ตที่เล่นซ้ำ ในทางกลับกัน ช่วงเวลาที่สั้นกว่าจะเพิ่มความกระจัดกระจายแบบเอกซ์โปเนนเชียลโดยการแนะนำการประทับเวลาที่ว่างเปล่าจำนวนมาก ซึ่งเป็นปัญหาสำคัญสำหรับโมเดล Transformer เนื่องจากถูกจำกัดในความยาวของลำดับ
นอกจากนี้ ข้อมูลดนตรีสามารถแมปกับตารางได้ไม่ว่าจะผ่านกาลเวลา ( 1 timestep == X milliseconds
) หรือเขียนเป็นคะแนน ( 1 timestep == 1 sixteenth note/semiquaver
) แต่ละรายการจะมีข้อดีข้อเสียของตัวเอง . การแสดงตามเหตุการณ์จะหลีกเลี่ยงปัญหาเหล่านี้โดยสิ้นเชิงโดยการระบุเวลาที่ผ่านไปเป็นเหตุการณ์
แม้จะมีข้อบกพร่อง แต่การแสดงตารางก็มีข้อได้เปรียบในทางปฏิบัติตรงที่ง่ายต่อการใช้งานในการพัฒนา pianola เอาต์พุตของโมเดลนั้นมนุษย์สามารถอ่านได้ และจำนวนครั้งจะสอดคล้องกับระยะเวลาที่กำหนด ทำให้การพัฒนาฟีเจอร์ใหม่ๆ เร็วขึ้นมาก
นอกจากนี้ การวิจัยเกี่ยวกับการขยายความยาวลำดับของโมเดล Transformer และการปรับปรุงฮาร์ดแวร์อย่างต่อเนื่องจะช่วยลดปัญหาที่เกิดจากความกระจัดกระจายของข้อมูลได้อย่างก้าวหน้า และในช่วงปลายปี 2023 เราจะได้เห็นโมเดลภาษาขนาดใหญ่ที่สามารถรองรับโทเค็นได้นับหมื่น เมื่อเทคนิคได้รับการปรับให้เหมาะสมและฮาร์ดแวร์ที่ทรงพลังเข้าถึงได้มากขึ้น เราเชื่อว่าความเที่ยงตรงจะดีขึ้นอย่างต่อเนื่อง เช่นเดียวกับที่ทำเพื่อการสร้างภาพ ซึ่งนำไปสู่การแสดงออกและความแตกต่างที่มากขึ้นในเพลงที่สร้างโดย AI
ซอร์สโค้ดสำหรับโครงการนี้ปรากฏต่อสาธารณะเพื่อวัตถุประสงค์ในการวิจัยทางวิชาการและการแบ่งปันความรู้ ผู้สร้างสงวนลิขสิทธิ์ทั้งหมดเว้นแต่จะได้รับอนุญาตอย่างชัดเจน
ไอคอนไซต์ถูกแก้ไขจาก Freepik - Flaticon
ติดต่อได้ที่ outlook.com ตามที่อยู่ bruce <dot> ckc