Membuat musik: ketika solusi sederhana mengungguli pembelajaran yang mendalam

Saya mempersembahkan kepada Anda terjemahan artikel "Kami menciptakan musik: ketika solusi sederhana mengungguli pembelajaran mendalam dalam keefektifan" tentang bagaimana kecerdasan buatan digunakan untuk membuat musik. Penulis tidak menggunakan jaringan saraf untuk menghasilkan musik, tetapi mendekati tugas berdasarkan pengetahuan tentang teori musik, berdasarkan melodi dan harmoni. Fitur lain dari artikel ini adalah metode membandingkan karya musik berdasarkan matriks kemiripan diri. Pendekatan ini, tentu saja, tidak lengkap, tetapi berguna sebagai langkah menengah untuk menghasilkan musik berkualitas tinggi menggunakan metode pembelajaran mesin.


Penggunaan kecerdasan buatan dalam kreativitas saat ini telah menjadi semakin umum untuk tujuan hiburan dan komersial, dan telah berhenti memukau masyarakat. Di satu sisi, ini adalah alat untuk mengubah gaya gambar seperti Prizma. Di sisi lain, jaringan saraf, produk yang dijual sebagai gambar di lelang Christie untuk 432,5 ribu dolar. Kita tidak bisa tidak mengingat spesialis domestik kita dalam generasi musik melalui pembelajaran mesin, Ivan Yamshchikov, yang beberapa tahun lalu memperkenalkan proyek Pertahanan Saraf Tiruan (lebih detail dapat ditemukan di sini , dan ini adalah wawancara dengan Ivan on Khabr ). Contoh lain yang baik dari menggunakan jaringan saraf untuk menghasilkan musik adalah artikel "Do Androids Dream of Electric Punk?" Bagaimana saya mengajar jaringan saraf untuk menulis musik ”oleh Artezio .

Selain memahami teori pembelajaran mesin, penggunaan kecerdasan buatan untuk memecahkan masalah kreatif juga membutuhkan keahlian dalam bidang seni. Hal ini membuat proyek di persimpangan dua bidang sangat beragam dan menarik, tetapi juga rentan terhadap kritik dari dua sisi, karena proyek ini dapat terperangkap dalam komentar yang saling bertentangan baik dari sejarawan seni dan ilmuwan data.

Memperluas wawasan saya sebagai bagian dari topik menggunakan kecerdasan buatan dalam musik, saya menemukan sebuah artikel "Kami menciptakan musik: ketika solusi sederhana mengungguli pembelajaran mendalam dalam hal efisiensi" , sebuah terjemahan yang ingin saya perkenalkan kepada komunitas Habr. Salah satu keuntungan dari artikel ini bagi saya adalah bahwa penulis tidak menggunakan jaringan saraf sebagai kotak hitam, tetapi mendekati tugas menghasilkan musik berdasarkan pengetahuan teori musik, berdasarkan melodi dan harmoni. Dalam artikel ini, tidak ada jaringan saraf berulang (RNN, LSTM) atau jaringan permusuhan generatif (GAN) yang digunakan - semua metode ini memberikan hasil yang luar biasa (misalnya, dalam artikel "Apakah Android Mimpi Pank Elektrik? Bagaimana saya mengajar jaringan saraf untuk menulis musik") ), dan kami secara aktif menggunakannya untuk menyelesaikan masalah kami di CleverData . Penulis menekankan model berdasarkan rantai Markov yang memungkinkan untuk bekerja dengan probabilitas transisi dari keadaan saat ini dari karya musik ke yang berikutnya. Metode yang digunakan oleh penulis memiliki keunggulan tambahan: penulis tidak harus mengorbankan interpretasi hasil demi menggunakan algoritma yang populer dan modis.

Fitur lain dari artikel yang menarik perhatian saya adalah metode yang menarik untuk membandingkan karya-karya musik berdasarkan matriks kemiripan diri. Jika struktur lagu dapat direpresentasikan sebagai matriks kemiripan diri, ukuran kuantitatif lain untuk membandingkan lagu muncul.


* * *


Ringkasan : bagaimana saya menemukan masalah, menggunakan pembelajaran mendalam untuk membuat musik, dan bagaimana saya memecahkannya dengan membuat solusi sendiri.

Rencanakan


Tantangan : bagaimana saya mengalami masalah ketika menggunakan teknik pembelajaran mendalam untuk membuat musik pop.
Solusi : bagaimana saya menciptakan mesin pembuat musik saya sendiri yang dapat bersaing dengan pembelajaran yang mendalam, tetapi berdasarkan solusi yang lebih sederhana.
Evaluasi : bagaimana saya membuat metrik evaluasi yang secara matematis dapat membuktikan bahwa musik saya "lebih seperti pop" daripada yang diciptakan melalui pembelajaran yang mendalam.
Generalisasi : bagaimana saya menemukan cara untuk menerapkan solusi saya untuk masalah yang tidak terkait dengan pembuatan musik.


Cherry pada kue


Saya menciptakan model probabilistik sederhana yang menghasilkan musik pop. Juga, dengan menggunakan metrik objektif, saya dapat dengan yakin mengatakan bahwa musik yang dibuat oleh model saya lebih seperti musik pop daripada yang dibuat menggunakan teknik pembelajaran yang mendalam. Bagaimana saya melakukan ini? Sebagian, saya mencapai ini dengan berfokus pada apa esensi musik pop bagi saya: pada hubungan statistik antara harmoni dan melodi.

Melodi adalah vokal, motif. Harmoni adalah akord, urutan akord. Pada piano, melodi dimainkan dengan tangan kanan, dan harmoni dimainkan dengan tangan kiri.

Tantangan


Sebelum mempelajari hubungan mereka, izinkan saya terlebih dahulu menjabarkan masalahnya. Proyek ini dimulai dengan keinginan saya untuk mencoba menciptakan musik melalui pembelajaran yang mendalam - AI, demikian orang awam menyebutnya. Cukup cepat saya datang ke LSTM (memori jangka pendek panjang), salah satu versi dari jaringan saraf berulang (RNN), yang sangat populer untuk menghasilkan teks dan membuat musik.

Tapi semakin saya membaca subjek, semakin saya mulai meragukan logika menggunakan RNN dan variasi mereka untuk membuat musik pop. Logika ini tampaknya didasarkan pada beberapa asumsi tentang struktur internal musik (pop), yang tidak dapat saya setujui sepenuhnya.

Satu asumsi spesifik adalah hubungan independen antara harmoni dan melodi (untuk definisi keduanya, lihat di atas).

Sebagai contoh, perhatikan publikasi 2017 University of Toronto Song dari Pi: A Musically Plausible Network for Pop Music Generation (Han Chu et al.). Pada artikel ini, penulis jelas "menyarankan ... akord tidak tergantung pada melodi" (huruf miring milik saya). Berdasarkan asumsi ini, penulis membangun model RNN multilayer yang kompleks. Lapisan terpisah dipilih untuk melodi, di mana catatan dibuat (lapisan kunci, lapisan pers), terlepas dari lapisan akor (Lapisan Akor). Selain independensi, model khusus ini mengasumsikan bahwa harmoni didasarkan pada melodi. Dengan kata lain, harmoni tergantung pada melodi saat membuat not.

Model RNN diusulkan oleh Han Chu. Setiap lapisan bertanggung jawab atas aspek terpisah dari musik.

Pemodelan seperti ini terasa sangat aneh bagi saya, karena sangat berbeda dari cara orang mendekati menulis musik pop. Sebagai seorang pianis dari sebuah sekolah klasik, saya tidak pernah mempertimbangkan untuk membuat melodi tanpa terlebih dahulu menunjukkan harmoni. Harmoni mendefinisikan dan memotong melodi. Axis of Awesome dalam video yang dulunya viral telah lama menunjukkan kebenaran ide ini.


Video ini menunjukkan fitur utama musik pop Barat: harmoni ini, keempat akord ini sangat mempengaruhi apa yang akan menjadi melodi pada akhirnya. Dalam bahasa Ilmu Data, probabilitas bersyarat mengontrol dan menentukan hubungan statistik antara harmoni dan melodi. Ini terjadi karena nada melodi secara alami bergantung pada nada harmoni. Dengan demikian, dapat diperdebatkan bahwa nada harmoni secara inheren menunjukkan nada melodi mana yang dapat dipilih dalam lagu tertentu.

Solusi


Saya suka mencari solusi orisinal untuk masalah kompleks. Oleh karena itu, saya memutuskan untuk membangun model saya sendiri, yang dengan caranya sendiri dapat mencerminkan struktur data musik yang kaya. Saya mulai dengan berfokus pada kekuatan probabilistik yang telah ditentukan yang mengatur hubungan antara berbagai jenis not musik. Sebagai contoh, saya sebutkan di atas hubungan "vertikal" antara harmoni dan melodi.

(Memproses) data


Sebagai data saya menggunakan 20 lagu pop barat yang berbeda dalam format midi (daftar lengkap lagu dapat ditemukan di sini ).

Menggunakan library python music21, saya menganalisis file midi menggunakan rantai Markov. Ini memungkinkan saya untuk menyoroti hubungan statistik antara berbagai jenis catatan dalam input saya. Secara khusus, saya menghitung probabilitas transisi dari catatan musik saya. Intinya, ini berarti bahwa dengan mengamati transisi catatan dari satu ke yang lain, kita dapat menghitung probabilitas bahwa transisi ini akan terjadi. (Penjelasan lebih rinci di bawah)

Midi: versi digital dari lagu tersebut

Pertama, saya mengekstrak probabilitas "vertikal" dari transisi antara nada harmoni dan nada melodi. Saya juga menghitung semua probabilitas transisi "horisontal" antara not-not melodi sesuai dengan set data. Saya melakukan prosedur ini untuk nada harmoni. Tabel di bawah ini menunjukkan contoh tiga matriks transisi yang berbeda antara berbagai jenis catatan dalam data musik.

Opsi transisi, opsi. Atas - di antara nada harmoni dan melodi. Tengah - antara not melodi. Lebih rendah - di antara nada harmoni.

Model


Berdasarkan tiga model probabilitas ini, model saya akan bertindak sebagai berikut:

  1. Memilih catatan harmoni yang sewenang-wenang yang tersedia;
  2. Memilih nada melodi berdasarkan nada harmoni menggunakan matriks probabilistik pertama;
  3. Memilih nada melodi berdasarkan nada melodi sebelumnya, sesuai dengan matriks probabilitas kedua;
  4. Ulangi langkah 3 hingga mencapai akhir tertentu;
  5. Memilih nada harmoni baru, mengandalkan nada harmoni sebelumnya, menggunakan matriks probabilitas ketiga;
  6. Ulangi langkah 1-4 hingga selesai.



Contoh spesifik penerapan algoritma:

  1. Program memilih nada harmonik (F).
  2. Catatan ini memiliki 4 variasi nada melodi. Menggunakan matriks transisi pertama, sistem memilih note (C), mengingat probabilitas penggunaannya yang tinggi (24,5%).
  3. Catatan ini (C) pergi ke matriks transisi kedua, menghentikan seleksi pada catatan melodi (A), berdasarkan frekuensinya (88%).
  4. Langkah 3 akan diulang sampai proses mencapai titik akhir yang telah ditentukan;
  5. Catatan harmoni (F), mengacu pada matriks probabilistik ketiga, memilih nada harmonik berikutnya. Itu akan menjadi (F) atau (C), mengingat kesamaan mereka.
  6. Langkah 1-4 akan diulangi sampai proses selesai.

Di sini Anda dapat mendengarkan contoh musik pop yang dibuat dengan cara ini:



Peringkat


Di sinilah bagian yang sulit dimulai - bagaimana mengevaluasi model yang berbeda. Pada akhirnya, artikel saya menunjukkan bahwa probabilitas sederhana bisa lebih bermanfaat daripada jaringan saraf. Tetapi bagaimana kita mengevaluasi perbedaan antara model saya dan model yang dibangun oleh jaringan saraf? Bagaimana kita bisa mengatakan secara objektif bahwa musik saya lebih seperti pop daripada musik yang ditulis oleh AI?

Untuk menjawab pertanyaan ini, pertama-tama kita harus menentukan apa itu musik pop. Saya sudah menyuarakan definisi pertama saya: hubungan statistik antara harmoni dan melodi. Tetapi ada faktor penentu lain dalam musik pop - itu ditandai dengan jelas bagian awal, tengah, akhir lagu (intro, bait, jembatan, paduan suara, penyelesaian, dll.), Diulangi sepanjang lagu.

Misalnya, baris "Biarkan saja, biarkan saja, tidak bisa menahannya lagi ..." lebih mungkin ditemukan di bagian tengah daripada di akhir atau di awal. Dan itu akan diulang tiga kali selama lagu.

Dengan mengingat hal ini, kita dapat menggunakan apa yang disebut matriks kemiripan diri. Sederhananya, matriks kemiripan diri secara matematis mengekspresikan awal, tengah, akhir lagu. Di bawah ini adalah matriks untuk lagu Falling Slowly from the movie Once.


Setiap segmen kecil mewakili catatan. Setiap blok besar pada 45 derajat mewakili beberapa bagian dari lagu.

Cluster gelap pertama mewakili awal lagu, yang kuning berikutnya mewakili segmen lagu berikutnya. Cluster pertama dan ketiga memiliki warna yang sama, karena mereka mirip satu sama lain, serta yang kedua dan keempat.

Saya memeriksa dua puluh lagu pop dengan cara ini dan kemudian membuat salinan mesin (sejauh mungkin) dari struktur mereka.

Hasil


Hasilnya berbicara sendiri. Sebelum menggunakan matriks kemiripan diri, program saya menghasilkan suara tanpa struktur internal yang berulang. Namun, setelah menyalin struktur data sumber, musik saya mulai terlihat seperti ini:

Sebelum dan sesudah menerapkan matriks kemiripan diri

Bandingkan dengan matriks kemiripan diri musik yang dibuat oleh jaringan saraf di University of Toronto:


Ini adalah bagaimana model yang berbeda dapat dibandingkan dan dievaluasi - berdasarkan matriks kemiripan diri mereka!


Generalisasi


Bagian terakhir dari tugas yang saya tetapkan untuk diri saya sendiri adalah generalisasi. Maksud saya kata ini: bagaimana kita bisa membuat model saya universal, berdasarkan input data, sehingga dapat diterapkan pada situasi lain yang tidak terkait dengan generasi musik pop? Dengan kata lain, apakah ada hal lain yang secara struktural mirip dengan pembuat pop saya?

Setelah berpikir panjang, saya menyadari bahwa ada penemuan manusia lain, struktur yang serupa - lirik lagu-lagu pop!

Sebagai contoh, berikut adalah kutipan dari I'll Be Edward McCain:

Aku akan menjadi tangisanmu
Saya akan suka bunuh diri
Saya akan lebih baik ketika saya lebih tua
Saya akan menjadi penggemar terbesar dalam hidup Anda

Kami akan menganalisis tulang menggunakan teknik pembelajaran mesin yang sama. Kita dapat menghitung 'Aku akan' sebagai kata sumber pertama dalam model bahasa. Ini akan digunakan untuk menghasilkan 'Anda', dari mana keluar 'menangis', dari tempat 'bahu' sudah muncul.


Kemudian muncul pertanyaan yang sangat penting: apakah kata pertama dari kalimat berikutnya bergantung pada kata terakhir dari kalimat sebelumnya? Dengan kata lain, apakah ada hubungan antara kata terakhir dari satu kalimat dan yang pertama dari yang berikutnya?

Saya percaya jawabannya tidak. Kalimat itu berakhir dengan 'bahu', yang berikutnya dimulai dengan pengulangan yang pertama - 'Aku akan'. Ini disebabkan oleh fakta bahwa kata-kata pertama dari setiap kalimat sengaja diulang, yang berarti bahwa antara kata-kata pertama dari setiap kalimat ada hubungan kondisional yang serupa. Kata-kata pertama ini menjadi titik pemicu untuk urutan kata-kata berikut.



Saya pikir ini adalah penemuan yang luar biasa. Tampaknya baik musik pop dan lirik memiliki struktur internal yang bergantung pada konten. Benar-benar hebat

Tonton proyeknya di github

* * *


Tentu saja, pendekatan yang diusulkan dalam artikel tidak dapat dianggap lengkap. Secara terpisah, perlu dicatat bahwa metode bekerja dengan teks sekarang mengalami peningkatan dan aktif berkembang, sehingga penulis melihat lirik tidak akan mengejutkan spesialis NLP (Natural Language Processing). Namun demikian, artikel asli penulis terlihat seperti langkah perantara yang berguna untuk menghasilkan musik berkualitas tinggi menggunakan metode pembelajaran mesin.

Baru-baru ini, sejumlah aplikasi berbasis jaringan saraf yang menghasilkan musik telah ditawarkan kepada masyarakat umum. Misalnya, dimungkinkan untuk menghasilkan musik techno di situs: eternal-flow.ru . Penulis solusinya juga menawarkan aplikasi seluler untuk menghasilkan musik. Ada aplikasi lain untuk menghasilkan musik di perangkat seluler: mubert.com . Solusi yang menarik dikhususkan untuk genre death metal yang lebih dinamis. Pembuatnya, DadaBots, streaming di YouTube aliran musik berkelanjutan yang dihasilkan oleh jaringan saraf . Pada saat yang sama, DadaBots tidak berhenti di situ dan terbuka untuk musik buatan publik dalam gaya punk dan progressive rock . Dan tentu saja, orang tidak dapat mengabaikan hasil dari OpenAI, yang menawarkan semua orang yang ingin bereksperimen dengan musik dalam kerangka genre yang luas dari Mozart hingga The Beatles. Di openai.com, Anda dapat mendengarkan bagaimana tema Harry Potter akan terlihat dalam gaya Frank Sinatra atau Pyotr Ilyich Tchaikovsky.

Keberhasilan jaringan saraf modern dalam generasi musik memberi harapan bahwa dalam waktu dekat, kecerdasan buatan akan mampu bersaing dengan persyaratan yang sama dengan manusia di bidang lain selain Go dan Dota2. Mungkin kita beruntung untuk hidup sampai saat ketika seorang kandidat dari jaringan saraf dapat berbicara di Eurovision dan bersaing dengan peserta kulit untuk kemenangan.

Pekerjaan Grup Perusahaan LANIT dapat ditemukan di sini.

Source: https://habr.com/ru/post/id455742/


All Articles