Нейронная сеть "Рояль в кустах"

Материал из Department of Theoretical and Applied Mechanics
Перейти к: навигация, поиск
Модель нейорнной сети

Иску́сственная нейро́нная се́ть (ИНС) — математическая модель, а также её программное или аппаратное воплощение, построенная по принципу организации и функционирования биологических нейронных сетей — сетей нервных клеток живого организма. Это понятие возникло при изучении процессов, протекающих в мозге, и при попытке смоделировать эти процессы. Первой такой попыткой были нейронные сети У. Маккалока и У. Питтса. После разработки алгоритмов обучения получаемые модели стали использовать в практических целях: в задачах прогнозирования, для распознавания образов, в задачах управления и др.

ИНС представляют собой систему соединённых и взаимодействующих между собой простых процессоров (искусственных нейронов). Такие процессоры обычно довольно просты (особенно в сравнении с процессорами, используемыми в персональных компьютерах). Каждый процессор подобной сети имеет дело только с сигналами, которые он периодически получает, и сигналами, которые он периодически посылает другим процессорам. И, тем не менее, будучи соединёнными в достаточно большую сеть с управляемым взаимодействием, такие по отдельности простые процессоры вместе способны выполнять довольно сложные задачи.

Введение

Как видно из названия, наша нейронная сеть создает музыку. Главной задачей мы ставили не столько создать шедевры мировой музыкальной индустрии, Мику Хацунэ 2.0, так сказать. Хотелось разобраться с двумя необычными сферами программирования: нейронные сети и работа с файлами-контейнерами формата WAV.

Нейронная сеть

За основу была выбрана сеть прямого распространения, как вытекает из названия это сеть с последовательным соединением нейронных слоев, в ней информация всегда идет только в одном направлении. Нейронная сеть состоит из нейронных слоев и соединяющих их синапсов, всего бывает 3 типа слоев: входной(на него подается какая-то информация, в нашем случае ноты: 1 - нота играет, 0 - не играет), скрытый(может быть 1 и более) и выходной. Каждый синапс имеет свой вес. Благодаря ему, входная информация изменяется, когда передается от одного нейрона к другому. Допустим, есть 3 нейрона, которые передают информацию следующему. Тогда у нас есть 3 веса, соответствующие каждому из этих нейронов. Из того нейрона, из которого будет выходит синапс с большим весом, будет передана более доминирующая информация в следующий нейрон. Благодаря совокупности весов нейронной сети, входная информация обрабатывается и превращается в результат. Изначально веса расставляются случайно, тем самым после первого прогона информации через нейронную сеть мы получим весьма плаченый результат, именно поэтому сеть нужно тренировать, то есть корректировать веса синапсов. Для тренировки нашей нейронной сети используется метод обратного распространения с использованием идеальных данных, то есть мы говорим сети, что есть хорошо, а что плохо. Визуализация метода обратного распространения: Картинка тут

WAV

Итак, рассмотрим самый обычный WAV файл (Windows PCM). Он представляет собой две, четко делящиеся, области. Одна из них – заголовок файла, другая – область данных. В заголовке файла хранится информация о:

Размере файла. Количестве каналов. Частоте дискретизации. Количестве бит в сэмпле (эту величину еще называют глубиной звучания). Но для большего понимания смысла величин в заголовке следует еще рассказать об области данных и оцифровке звука. Звук состоит из колебаний, которые при оцифровке приобретают ступенчатый вид. Этот вид обусловлен тем, что компьютер может воспроизводить в любой короткий промежуток времени звук определенной амплитуды (громкости) и этот короткий момент далеко не бесконечно короткий. Продолжительность этого промежутка и определяет частота дискретизации. Например, у нас файл с частотой дискретизации 44.1 kHz, это значит, что тот короткий промежуток времени равен 1/44100 секунды (следует из размерности величины Гц = 1/с). Современные звуковые карты поддерживают частоту дискретизации до 192 kHz. Так, со временем разобрались.

Теперь, что касается амплитуды (громкости звука в коротком промежутке времени). От нее, я бы сказал, зависит точность звука. Амплитуда выражается числом, занимаемым в памяти (файле) 8, 16, 24, 32 бит (теоретически можно и больше). Как известно, 8 бит = 1 байту, следовательно, какая-то одна амплитуда в какой-то короткий промежуток времени в памяти (файле) может занимать 1, 2, 3, 4 байта соответственно. Таким образом, чем больше число занимает места в памяти (файле), тем больше диапазон значений для этого числа, а значит и для амплитуды.

1 байт – 0..255 2 байта – 0..65 535 3 байта – 0..16 777 216 4 байта – 0..4 294 967 296 В моно варианте значения амплитуды расположены последовательно. В стерео же, например, сначала идет значение амплитуды для левого канала, затем для правого, затем снова для левого и так далее.

Совокупность амплитуды и короткого промежутка времени носит название сэмпл.

Теперь таблица, наглядно показывающая структуру WAV файла.

WAV.png

Итоги

Создана нейоронная сеть с возможностью замены метода тренировки и удобным классом загрузки музыки формата WAV.

Реализация на Java

Участники проекта

Текст курсовой

[[:File:Разработка и исследование музыкальной нейронной сети.pdf] Разработка и исследование музыкальной нейронной сети]

Дополнительные материалы

См. также

Кафедра "Теоретическая механика"