Проектирование временных рядов распределенной задержки нейронных сетей

FTDNN имел выделенную память линии задержки только на входе в первый слой статической сети прямого распространения. Можно также распределить линии задержки по сети. Распределенный TDNN был впервые введен в [WaHa89] для распознавания фонемы. Оригинальная архитектура была очень специализирована для этой конкретной задачи. Следующий рисунок показывает общий двухуровневый распределенный TDNN.

Эта сеть может использоваться для упрощенной задачи, которая подобна распознаванию фонемы. Сеть попытается распознать частотное содержимое входного сигнала. Следующий рисунок показывает сигнал, в котором одна из двух частот присутствует в любое заданное время.

Следующий код создает этот сигнал и выход целевой сети. Целевой выход равен 1, когда вход на низкой частоте и -1, когда вход на высокой частоте.

time = 0:99;
y1 = sin(2*pi*time/10);
y2 = sin(2*pi*time/5);
y = [y1 y2 y1 y2];
t1 = ones(1,100);
t2 = -ones(1,100);
t = [t1 t2 t1 t2];

Теперь создайте распределенную сеть TDNN с distdelaynet функция. Единственное различие между distdelaynet функции и timedelaynet функция заключается в том, что первый входной параметр является массивом ячеек, который содержит отсроченные задержки, используемые в каждом слое. В следующем примере задержки от нуля до четырех используются в слое 1, и от нуля до трех используются в слое 2. (Чтобы добавить некоторое разнообразие, функция обучения trainbr используется в этом примере вместо значения по умолчанию, которое является trainlm. Можно использовать любую функцию обучения, обсуждаемую в Multilayer Shallow Neural Networks and Backpropagation Training.)

d1 = 0:4;
d2 = 0:3;
p = con2seq(y);
t = con2seq(t);
dtdnn_net = distdelaynet({d1,d2},5);
dtdnn_net.trainFcn = 'trainbr';
dtdnn_net.divideFcn = '';
dtdnn_net.trainParam.epochs = 100;
dtdnn_net = train(dtdnn_net,p,t);
yp = sim(dtdnn_net,p);
plotresponse(t,yp)

Figure Time-Series Response (plotresponse) contains 2 axes. Axes 1 with title Response of Output Element 1 for Time-Series 1 contains 4 objects of type line. These objects represent Errors, Response, Targets, Outputs. Axes 2 contains 3 objects of type line. This object represents Targets - Outputs.

Сеть способна точно различать две «фонемы».

Вы заметите, что обучение, как правило, медленнее для распределенной сети TDNN, чем для FTDNN. Это связано с тем, что распределенный TDNN должен использовать динамическое обратное распространение.

Для просмотра документации необходимо авторизоваться на сайте