Обнаружение подачи с помощью [закрытых] нейронных сетей

Я пытаюсь использовать ANN для обнаружения подачи музыкальных нот. Сеть является простым MLP с двумя слоями, исходные данные которого являются в основном DFT (усредненный и логарифмически распределенный), и 12 выводов соответствуют 12 примечаниям конкретной октавы.

Сеть обучена с несколькими образцами тех 12 примечаний, играемых некоторым инструментом (одно примечание за один раз) и несколькими образцами "тишины".

Результаты на самом деле хороши. Сеть в состоянии обнаружить те примечания, играемые различными инструментами preety точно, это относительно amune к шуму и даже не освобождает, это - исправность полностью, будучи играемым песня.

Цель, однако, состоит в том, чтобы быть в состоянии обнаружить полифонический звук. Так, чтобы, когда два или больше примечания будут играться вместе, два соответствующих нейрона стреляли. Удивительная вещь состоит в том, что сеть на самом деле уже делает это в некоторой степени (обучаемый только по монофоническим образцам), однако менее последовательно и менее точно, чем для монофонических примечаний. Мой вопрос состоит в том, как я могу улучшить, это - способность распознать звук polyphnic?

Проблема, я истинно не понимаю, почему она на самом деле уже работает. Различные примечания (или их DFTs) являются в основном различными точками в пространстве, которому обучена сеть. Таким образом, я вижу, почему это действительно распознает подобные звуки (соседние точки), но не, как это "завершает" вывод для комбинации примечаний (которые формируют удаленную точку из каждого из учебных примеров). Тот же путь И сеть, которая обучена более чем (0,0) (0,1) (1,0) = (0), как ожидают, не "завершит" это (1,1) = (1).

Грубая сила aprroach к этому должна обучить сеть с как можно большим количеством полифонических образцов. Однако начиная с сети кажутся так или иначе неопределенно схватыванию идея от монофонических образцов, существует, вероятно, что-то больше fundemential здесь.

Какие-либо указатели? (жаль о длине, btw:).

9
задан sold 29 January 2010 в 16:16
поделиться

1 ответ

Причина, по которой она работает, это, вероятно, совсем просто, что вы не тренировали его, чтобы выбрать один и только один вывод (по крайней мере, я предполагаю, что вы не делаете). В простом случае, когда выход - это просто точечный продукт ввода и веса, веса станут сопоставленными фильтрами для соответствующего шага. Поскольку все это линейно, несколько выходов одновременно будут активированы, если несколько совпадающих фильтров одновременно увидели хорошие совпадения (как это имеет место для полифонических нот). Поскольку ваша сеть, вероятно, включает в себя нелинейности, картина немного сложнее, но идея, вероятно, такая же.

Что касается способов улучшения его, обучение с полифоническими образцами, безусловно, одна вероятность. Другая возможность - переключиться на линейный фильтр. DFT в полифоническом звуке в основном является суммой DFTS каждого отдельного звука. Вы хотите линейную комбинацию входов, чтобы стать соответствующей линейной комбинацией выходов, поэтому подходящий линейный фильтр.

Кстати, почему вы используете нейронную сеть для этого в первую очередь? Похоже, что просто глядя на DFT и, скажем, принимая максимальную частоту, даст вам лучшие результаты легче.

6
ответ дан 4 December 2019 в 15:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: