Следующей динамической сетью, которая будет введена, является Layer-Recurrent Network (LRN). Более ранняя упрощённая версия этой сети была представлена Elman [Elma90]. В LRN существует цикл обратной связи с одной задержкой вокруг каждого слоя сети, за исключением последнего слоя. Первоначальная сеть Эльмана имела только два слоя, и использовала tansig
передаточная функция для скрытого слоя и a purelin
передаточная функция для уровня выхода. Исходная сеть Эльмана была обучена с помощью приближения к алгоритму обратного распространения. layrecnet
команда обобщает сеть Эльмана, чтобы иметь произвольное количество слоев и иметь произвольные передаточные функции в каждом слое. Тулбокс обучает LRN, используя точные версии основанных на градиенте алгоритмов, обсуждаемых в Multilayer Shallow Neural Networks и Backpropagation Training. Следующий рисунок иллюстрирует двухуровневый LRN.
Строения LRN используются во многих уже обсуждаемых приложениях фильтрации и моделирования. Чтобы показать его операцию, этот пример использует задачу обнаружения «фонемы», обсуждаемую в Design Time Series Distributed Delay Neural Networks. Вот код для загрузки данных и создания и обучения сети:
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.
Каждый раз, когда нейронная сеть обучается, может привести к другому решению из-за различных начальных значений веса и смещения и различных делений данных в наборы для обучения, валидации и тестирования. В результате различные нейронные сети, обученные одной и той же задаче, могут выдавать различные выходы для одного и того же входа. Чтобы убедиться, что нейронная сеть с хорошей точностью была найдена, переобучите несколько раз.
Существует несколько других методов улучшения начальных решений, если желательна более высокая точность. Для получения дополнительной информации см. «Улучшение обобщения неглубокой нейронной сети» и «Избегайте избыточного оснащения».