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

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

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

Симуляция с параллельными входами в статической сети

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

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

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 и суммирования результата. Если бы вы изменили порядок входов, номера, полученные в выходе, изменились бы.

Симуляция с параллельными входами в динамической сети

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

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 временных шагов. Он охватывает все случаи, когда существует один входной вектор. Каждый элемент массива ячеек является матрицей параллельных векторов, которые соответствуют одной и той же точке времени для каждой последовательности. Если существует несколько входных векторов, в массиве ячеек будет несколько строк матриц.

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

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