Спроектируйте рекуррентные нейронные сети слоя

Следующая динамическая сеть, которая будет введена, является Текущей слоем сетью (LRN). Более ранняя упрощенная версия этой сети была введена Элменом [Elma90]. В LRN существует обратная связь, с одной задержкой, вокруг каждого слоя сети за исключением последнего слоя. Исходная сеть Элмена имела только два слоя и использовала tansig передаточная функция для скрытого слоя и purelin передаточная функция для выходного слоя. Исходная сеть Элмена была обучена с помощью приближения для алгоритма обратного распространения. layrecnet команда обобщает сеть Элмена, чтобы иметь произвольное число слоев и иметь произвольные передаточные функции в каждом слое. Тулбокс обучает LRN использование точных версий основанных на градиенте алгоритмов, обсужденных в Многоуровневых Мелких Нейронных сетях и Обучении Обратной связи. Следующая фигура иллюстрирует 2D слой LRN.

Настройки LRN уже используются во многой фильтрации и моделировании приложений, обсужденных. Чтобы показать его операцию, этот пример использует проблему обнаружения “фонемы”, обсужденную в Ряду Времени проектирования Распределенные Нейронные сети Задержки. Вот код, чтобы загрузить данные и создать и обучить сеть:

load phoneme
p = con2seq(y);
t = con2seq(t);
lrn_net = layrecnet(1,8);
lrn_net.trainFcn = 'trainbr';
lrn_net.trainParam.show = 5;
lrn_net.trainParam.epochs = 50;
lrn_net = train(lrn_net,p,t);

После обучения можно построить ответ с помощью следующего кода:

y = lrn_net(p);
plot(cell2mat(y))

График показывает, что сеть смогла обнаружить “фонемы”. Ответ очень похож на тот, полученный с помощью TDNN.

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

Существует несколько других методов для того, чтобы улучшить начальные решения, если более высокая точность желаема. Для получения дополнительной информации смотрите, Улучшают Мелкое Обобщение Нейронной сети и Стараются не Сверхсоответствовать.