Эх ты - я нейросети в дипломаной работе использовал! А какую прогу юзаешь для построения сети?
python
В общем, опишу тут свои мысли по этому поводу, вдруг кому пригодится.
Если представить импульсник в виде нейросети, то он будет выглядеть как сеть из одного линейного нейрона, ко входам которой подведён исходный сигнал, задерживаемый каскадом делеев поочерёдно на один семпл. Общее количество задержек соответствует количеству семплов в импульсе (точнее на один меньше, ибо на первый вход сигнал поступает без задержки). На синапсах нейрона записаны значения семплов из импульсного отклика.
Звучат импульсники так паршиво видимо потому, что они не передают ни нелинейность, ни обратные связи. Рекуррентный персептрон этих недостатков лишён.
Прежде всего, надо заметить, что нейрон внешнего слоя должен иметь линейную функцию активации, иначе может получиться так, что мы потеряем и то подобие реалистичности, которое имели при использовании импульсов. В случае использования линейного нейрона сеть в самом худьшем случае будет не хуже импульса.
Среди нейронов скрытого слоя (или скрытых слоёв) должны быть как линейные нейроны, так и нелинейные. Линейные нужны для того, чтобы действовать по принципу импульсника. Можно заметить, что если подавать на спикер импульсы разной амплитуды, то отклики могут существенно отличаться. Поэтому лучше иметь несколько линейных нейронов, дабы сеть могла достоверно эмулировать отклик при разных уровнях входных сигналов. Нелинейные нейроны, очевидно, нужны для того, чтобы воспроизвести нелинейность динамика. Можно попробовать использовать сигмоиды, это проще всего. А можно использовать каким-нибудь образом добытые реальные функции нелинейности динамика, это, конечно же, будет лучше.
Возможно, имеет смысл сделать делеев больше, чем семплов в импульсном отклике, поскольку наверняка есть длительные корреляции, не попавшие в импульный отклик. Делать далее длины импульсного отклика задержки по семплу смысла, наверное, нет, использование более длинных задержек позволит учесть более длительные корреляции, пусть и с меньшей точностью. Что касается задержек обратной связи, не имею никаких идей по поводу того сколько их надо и каких.
По поводу количества слоёв: двух, мне кажется, может не хватить. Между импульсным откликом и чем-нибудь ещё могут быть нелинейные корреляции, и они не смогут быть явным образом отражены, так как на пути от выхода линейного нейрона до выхода сети не окажется ни одного нелинейного элемента. Корреляции эти, скорее всего, отразятся через фидбек, но это существенно затруднит обучение сети. Трёх слоёв в любом случае должно быть достаточно. Во втором слое так же, как и в первом, должны быть как линейные, так и нелинейные нейроны (линейные для того, чтобы не испортить импульсные отклики, нелинейные для того, чтобы в случае необходимости их испортить).
Теперь по поводу обучения. Обратное распространение ошибки скорее всего не прокатит, а даже если и прокатит, то гемороя не оберёшься. Лучше всего, наверное, подойдёт генетический метод обучения, так как он довольно универсален и очень хорошо распарралеливается.
Начальные значения синапсов можно взять случайными, но тогда мы умрём от старости прежде, чем обучение завершится. Разумнее начать обучение с уже достаточно хорошего результата, например, с импульсного отклика. Нужно снять несколько откликов с разными амплитудами и записать их на соответствующие синапсы линейных нейронов. Синапсы на пути од ного из линейных нейронов до выхода установить в 1, остальные обнулить. Возможно, добавить небольшую случайную составляющую. Вектора синапсов с разными активными откликами включить в исходную популяцию. Возможно, в исходную популяцию стоит включить какое-то количество случайных векторов.
Функцией здоровья будет функция, обратная суммарной ошибке по всем образцам. В качестве функции скрещивания можно взять полусумму, но при этом будет наблюдаться тенденция к обнулению векторов, что плохо. Можно попробовать в качестве функции скрещивания полусумму модулей. Если знак совпадает, то использовать его, если нет, то определять либо случайно, либо брать от числа с большим модулем.
Вот, как-то так
Мешает всё это реализовать не столько лень, сколько неимение оборудования для экспериментов и снятия образцов.