exponenta event banner

Общие сведения о неглубоких структурах сетевых данных

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

Существует два основных типа входных векторов: те, которые происходят одновременно (одновременно, или не в конкретной временной последовательности), и те, которые происходят последовательно во времени. Для параллельных векторов порядок не важен, и если бы было несколько сетей, работающих параллельно, можно было бы представить один входной вектор каждой из сетей. Для последовательных векторов важен порядок появления векторов.

Моделирование с параллельными входами в статической сети

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

Чтобы настроить эту линейную сеть прямой связи, используйте следующие команды:

net = linearlayer;
net.inputs{1}.size = 2;
net.layers{1}.dimensions = 1;

Для простоты назначьте весовую матрицу и смещение W = [1 2] и b = [0].

Команды для этих назначений:

net.IW{1,1} = [1 2];
net.b{1} = 0;

Предположим, что набор данных моделирования сети состоит из Q = 4 параллельных векторов:

p1 = [12], p2 = [21], p3 = [23], p4 = [31]

Параллельные векторы представлены сети в виде единой матрицы:

P = [1 2 2 3; 2 1 3 1];

Теперь можно смоделировать сетевой график:

A = net(P)
A =
     5     4     8     5

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

Моделирование с последовательными входами в динамической сети

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

Эту сеть создают следующие команды:

net = linearlayer([0 1]);
net.inputs{1}.size = 1;
net.layers{1}.dimensions = 1;
net.biasConnect = 0;

Назначьте весовую матрицу W = [1 2].

Команда:

net.IW{1,1} = [1 2];

Предположим, что входная последовательность:

p1 = [1], p2 = [2], p3 = [3], p4 = [4]

Последовательные входы представлены в сеть как элементы массива ячеек:

P = {1 2 3 4};

Теперь можно смоделировать сетевой график:

A = net(P)
A = 
    [1]    [4]    [7]    [10]

Вводится массив ячеек, содержащий последовательность входов, а сеть создает массив ячеек, содержащий последовательность выходов. Порядок входных данных важен, когда они представлены в виде последовательности. В этом случае выходной ток получается умножением входного тока на 1 и предыдущего входного сигнала на 2 и суммированием результата. При изменении порядка ввода номера, полученные на выходе, изменятся.

Моделирование с параллельными входами в динамической сети

Если применить те же входные данные, что и набор параллельных входных данных вместо последовательности входных данных, будет получен совершенно другой ответ. (Однако непонятно, зачем это делать с динамической сетью.) Было бы так, как если бы каждый вход подавался одновременно в отдельную параллельную сеть. В предыдущем примере «Моделирование с последовательными входами в динамической сети» (Simulation with Sequential Inputs in a Dynamic Network), если используется параллельный набор вводов

p1 = [1], p2 = [2], p3 = [3], p4 = [4]

который может быть создан со следующим кодом:

P = [1 2 3 4];

При моделировании с параллельными вводами получается

A = net(P)
A =
     1     2     3     4

Результат такой же, как если бы вы одновременно применяли каждый из входов к отдельной сети и вычисляли один выход. Обратите внимание, что, поскольку вы не назначили задержкам сети какие-либо начальные условия, они предполагались равными 0. В этом случае выходной сигнал просто в 1 раз превышает входной сигнал, поскольку вес, умножающий текущий входной сигнал, равен 1.

В некоторых особых случаях может потребоваться имитация ответа сети на несколько различных последовательностей одновременно. В этом случае необходимо представить сеть с параллельным набором последовательностей. Например, предположим, что необходимо представить сети две следующие последовательности:

p1 (1) = [1], p1 (2) = [2], p1 (3) = [3], p1 (4) = [4] p2 (1) = [4], p2 (2) = [3], p2 (3) = [2], p2 (4) = [1]

Вход P должен быть массивом ячеек, где каждый элемент массива содержит два элемента двух последовательностей, которые происходят одновременно:

P = {[1 4] [2 3] [3 2] [4 1]};

Теперь можно смоделировать сетевой график:

A = net(P);

Результирующий сетевой выход будет

A = {[1 4] [4 11] [7 8] [10 5]}

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

На следующей диаграмме показан общий формат сетевого входа P при наличии Q параллельных последовательностей временных шагов TS. Он охватывает все случаи, когда существует один входной вектор. Каждый элемент массива ячеек является матрицей параллельных векторов, которые соответствуют одному и тому же моменту времени для каждой последовательности. Если имеется несколько входных векторов, в массиве ячеек будет множество строк матриц.

В этом разделе рассматривается применение последовательных и параллельных входных данных к динамическим сетям. При моделировании с параллельными входами в статической сети к статическим сетям применяются параллельные входы. Также можно применять последовательные входы к статическим сетям. Он не изменяет смоделированный отклик сети, но может повлиять на способ обучения сети. Это станет ясно из Концепции обучения нейронной сети.

См. также Настройка неглубоких входов и выходов нейронной сети.