wiki:AGMFM - 5.1. Пристап и методологија

Version 5 (modified by Monika Rizova, 6 years ago) ( diff )

5.1. Пристап и методологија

Методологијата за креирање на систем за автоматско генерирање на македонска народна мелодија, која јас ја користев е опишана во следниве чекори:

  1. Увезување на податоците и нивно анализирање
  2. Креирање на модел за учење
  3. Тренирање на моделот врз увезените податоци
  4. Евалуирање на ефикасноста на моделот
  5. Предвидување врз основа на тренираниот модел, односно генерирање мелодија
  6. Извезување на генерираната мелодија во формат кој може да се слушне

Оваа методологија е најчесто користена во процесот на автоматско генерирање на музика со машинско учење.

Увезувањето на податоците е остварено со помош на циклус за повторување, кој ги парсира сите музички документи во папката со податочното множество како музички поток - Stream, и е имплементирано со помош на music21. Откако се исчитани музичките документи и претставени во формат кој може да се обработува се анализира секој дел од секој музички документ дали е нота или акорд и се зачувува во листа на македонски ноти, соодветно како објект нота или објект акорд, односно се креира вокабулар од ноти.

За да можеме да преминеме на следниот чекор, односно креирање на моделот, беше потребно да се дефинираат низи, влезна и излезна, за невронската мрежа. Најпрво беа конвертирани нотите во форма погодна за работење, односно речник од енумерирани висини на нотите, зачувани во цели броеви, а потоа со помош на модулот numpy, низата за влез во невронската м. беше преобликувана во соодветниот формат. Излезната низа е претставена во формат на категорични податоци.

Откако беа дефинирани низите за невронската мрежа беше дефиниран секвенционен модел на невронската мрежа, составен од 3 CuDNNLSTM слоја, 3 Dropout слоја, 2 Dense слоја и еден слој со активирачка функција. Моделот беше дефиниран со помош на програмскиот интерфејс Keras, кој функционира врз платформата Tensorflow.

Тренирањето на моделот е имплементирано со функцијата fit од Keras, и се повикува врз дефинираниот модел. Тренирав повеќе модели со разни вредности на хиперпараметрите на невронската мрежа.

При текот на тренирањето, со помош на множеството функции callbacks, достапни од Keras, поточно со помош на функцијата ModelCheckpoint, беа зачувувани потадоците за функцијата на загуба на податоци за секоја епоха, врз основа на која можеме да ја процениме ефикасноста на моделот.

Откако беа тренирани моделите, следниот чекор во генерирањето на мелодијата беше вчитување на минималните тежини од тренираните модели во компајлирањето на моделот, по што таквиот модел се користи во функција за генерирање македонски ноти. Функцијата генерира 500 ноти со случаен почеток од влезот на н.м. и на излез добиваме низа предвидени ноти.

Последниот чекор во генерирањето на мелодијата е преведување на нотите во формат кој што може да се слушне, односно во МИДИ формат, со што би требало да добиеме резултантна мелодија која ќе потсетува на Македонска народна мелодија.

Имплементацијата прикажана во рамките на овој труд е креирана врз основа на техниките опишани во тутотијалот за генерирање на класични музички дела достапен на https://github.com/Skuldur/Classical-Piano-Composer, додека мојот пристап за адаптирање на кодот од туторијалот во код за генерирање македонска народна мелодија е преку тестирање на разни параметри за моделот на невронската мрежа, менување на бројот на епохи за тренирање на моделот, менување на должината на низите кои ќе бидат користени за предвидување на следна нота во резултантната мелодија и користење на CuDNNLSTM слој во архитектурата на мрежата наместо LSTM слој.

Note: See TracWiki for help on using the wiki.