Нейрокомпьютерные системы

Рекуррентные сети на базе персептрона

Разбить на страницы
Показывать лекцию целиком

Введение

Многослойные рекуррентные сети представляют собой развитие однонаправленных сетей персептронного типа за счет добавления в них соответствующих обратных связей. Обратная связь может исходить либо из выходного, либо из скрытого слоя нейронов. В каждом контуре такой связи присутствует элемент единичной задержки, благодаря которому поток сигналов может считаться однонаправленным (выходной сигнал предыдущего временного цикла рассматривается как априори заданный, который просто увеличивает размерность входного вектора сети). Представленная подобным образом рекуррентная сеть, с учетом способа формирования выходного сигнала, функционирует как однонаправленная персептронная сеть. Тем не менее, алгоритм обучения такой сети, адаптирующий значения синаптических весов, является более сложным из-за зависимости сигналов в момент времени $$t$$ от их значений в предыдущие моменты и соответственно из-за более громоздкой формулы для расчета вектора градиента.

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

Персептронная сеть с обратной связью

Один из простейших способов построения рекуррентной сети на базе однонаправленной HC состоит во введении в персептронную сеть обратной связи. В дальнейшем мы будем сокращенно называть такую сеть RMLP (англ.: Recurrent MultiLayer Perceptron - рекуррентный многослойный персептрон). Ее обобщенная структура представлена на рис. 1 ( $$z$$ - единичные элементы запаздывания).

(рис 1) Структура сети RMLP

Это динамическая сеть, которая характеризуется запаздыванием входных и выходных сигналов, объединяемых во входной вектор сети. Рассуждения будут касаться только одного входного узла $$x(k)$$ и одного выходного нейрона, а также одного скрытого слоя. Такая система реализует отображение:

$$\begin{equation} y(k+1) = f(x(k), x(k-1), \ldots, x(k-(N-1)), y(k-1), \ldots, y(k-P)) \end{equation}$$

где $$N-1$$ - количество задержек входного сигнала, а $$P$$ - количество задержек выходного сигнала. Обозначим $$K$$ количество нейронов в скрытом слое. В этом случае сеть RMLP можно характеризовать тройкой чисел $$(N,P,K)$$. Подаваемый на вход сети вектор $$x$$ имеет вид:

$$\begin{align*} x(k) = [1,x(k),x(k-1), \ldots, x(k-(N-1)),\\ y(k-P),y(k-P+1), \ldots, y(k-1)]^T. \end{align*} $$

Допустим, что все нейроны имеют сигмоидальную функцию активации. Обозначим $$u_i$$ взвешенную сумму сигналов $$i$$ -го нейрона скрытого слоя, a $$g$$ - взвешенную сумму сигналов выходного нейрона. При введенных обозначениях выходные сигналы конкретных нейронов описываются зависимостями

$$\begin{align*} u_i= \sum_{j=0}^{N+P} w_{ij}^{(1)}x_j\\ v_i=f(u_i)\\ g = \sum_{i=0}^K w_i^{(2)} v_i\\ y = f(g) \end{align*} $$

Сеть RMLP повсеместно применяется для моделирования динамических процессов в режиме "онлайн". Типичным примером ее приложения может служить имитация нелинейных динамических объектов, для которых сеть RMLP выступает в роли модели, а алгоритм уточнения весов - в роли процедуры идентификации параметров этой модели (рис. 2). Идентифицированная модель может в последующем использоваться для управления данным объектом. Именно по этой причине сети RMLP наиболее популярны для имитации систем управления машинами, устройствами и динамическими процессами.

В результате сравнения выходного сигнала модели $$y(k)$$ с выходным сигналом динамического объекта $$d(k)$$ рассчитывается значение погрешности $$e(k) = y(k) - d(k)$$, управляющей процессом уточнения параметров нейронной сети. Символом $$M$$ на рис. 2 обозначен коэффициент усиления модуля, масштабирующего выходной сигнал сети $$y(k)$$ таким образом, чтобы его динамический уровень лежал в том же диапазоне, что и уровень выходного сигнала динамического объекта $$d(k)$$.

(рис 2) Схема включения сети RMLP при решении задачи идентификации

Рекуррентная сеть Эльмана

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

Каждый скрытый нейрон имеет свой аналог в контекстном слое, образующем совместно с внешними входами сети входной слой. Выходной слой состоит из нейронов, однонаправленно связанных только с нейронами скрытого слоя, подобно сети RMLP. Обозначим внутренний вектор возбуждения сети $$x$$ (в его состав входит также единичный сигнал поляризации), состояния скрытых нейронов - $$v \in R^K$$, а выходные сигналы сети - $$y \in R^M$$. При таких обозначениях входной вектор сети в момент $$t$$ имеет форму

$$\begin{align*} X(k) = [x_0(k), x_1(k), \ldots, x_N(k), v_1(k-1), v_2(k-1), \ldots, v_K(k-1)]. \end{align*} $$

Веса синаптических связей первого (скрытого) слоя сети обозначим $$w_{ij}^{(1)}$$, a второго (выходного) слоя - $$w_{ij}^{(2)}$$. Если взвешенную сумму $$i$$ -го нейрона скрытого слоя обозначить $$u_i$$, а его выходной сигнал - $$v_i$$, то

$$\begin{align*} u_i(k) = \sum_{j=0}^{N+K} w_{ij}^{(1)}x_j(k),\\ v_i(k) = f_1(u_i(k)). \end{align*} $$(рис 3) Структура сети Эльмана

Веса $$w_{ij}^{(1)}$$ образуют матрицу $$W^{(1)}$$ синаптических связей скрытого слоя, а $$f_1(u_i)$$ - функция активации $$i$$ -го нейрона этого слоя. Аналогично можно обозначить взвешенную сумму $$i$$ -го нейрона выходного слоя $$g_i$$, а соответствующий ему выходной сигнал сети - $$y_i$$. Эти сигналы описываются формулами

$$\begin{align*} g_i(k) = \sum_{i=0}^K w_{ij}^{(2)}v_j(k),\\ y_i(k) = f_2(g_i(k)). \end{align*} $$

В свою очередь, веса $$w_{ij}^{(2)}$$ образуют матрицу $$W^{(2)}$$, описывающую синаптические связи нейронов выходного слоя; $$f_2(g_i)$$ - функция активации $$i$$ -го нейрона выходного слоя.

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

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

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

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

  • задана реализация временного ряда $$x_j = (x_{j1}, x_{j2}, \ldots, x_{jM})$$, $$j = 1, 2, \ldots, T$$, на интервале времени $$[\Delta, T \Delta ]$$ с постоянным интервалом дискретности $$\Delta$$ ;
  • требуется построить оценку значения временного ряда (обычно одной его координаты) в момент времени $$(T + t_{pr})\Delta$$, где $$t_{pr}\Delta$$ - заданное время прогноза.
  • Из логических соображений или путем статистического анализа имеющейся реализации можно установить, сколько предшествующих значений относительно произвольного текущего момента времени $$j\Delta$$ определяюще связаны с прогнозируемым значением. Это означает, что если представить прогнозируемое значение $$y_j = x_{j+t,m}$$ $$m$$ -ой координаты вектора $$x$$ как функцию его предшествующих измерений:

    $$\begin{align*} y_j = \Phi(x_j,x_{j-1}, \ldots, x_{j-q+1}), \end{align*} $$

    то выбор значения $$q$$ устанавливает "память" экстраполятора. Значение $$q$$ определяет также входной вектор для нейронной сети, которая строится для решения задачи прогноза. Размерность этого вектора равна $$M * q$$.

    Таким образом, задача прогноза данных на нейронной сети сведена к задаче воспроизведения функции многих переменных $$\Phi(x_j,x_{j-1},\ldots$$, $$x_{j-q+1})$$ по данным обучающей выборки.

    Сеть RTRN

    Среди рекуррентных сетей особого внимания заслуживает сеть типа RTRN (англ.: Real Time Recurrent Network), предложенная Р.Вильямсом и Д.Зипсером и предназначенная для обработки сигналов в реальном времени. Сеть RTRN - частный случай сети Эльмана.

    (рис 4) Структура сети RTRN

    Обобщенная структура сети представлена на рис. 4. Сеть содержит $$N$$ входных узлов, $$K$$ скрытых нейронов и $$K$$ соответствующих им узлов контекстного слоя. Из $$K$$ скрытых нейронов только $$M$$ составляют выход сети. Обозначим взвешенную сумму $$i$$ -го нейрона скрытого слоя $$u_i$$, а выход этого нейрона - $$y_i$$. Вектор $$x(k)$$ и смещенный (задержанный) на один цикл вектор $$y(k-1)$$ образуют расширенный вектор активации $$x(k)$$, возбуждающий нейроны сети:

    $$x(k) = [1,x_1(k),x_2(k), \ldots, x_N(k), y_1(k-1), \ldots, y_K(k-1)]^T.$$

    После описания входного вектора сети в момент $$t$$ можно определить состояние всех нейронов согласно зависимостям:

    $$u_i(k) = \sum_{j=0}^{N+K} w_{ij}x_j(k),$$ $$y_i(k) = f(u_i(k)).$$

    причем $$f( )$$ обозначает непрерывную функцию активации нейрона (как правило, сигмоидальную). На рис. 4 видно, что сеть RTRN представляет собой частный случай сети Эльмана, в которой веса выходного слоя постоянны и равны дельте Кронекера, т.е. $$w_{ij} = \delta_{ij} = 1$$ для $$i = j$$ или $$0$$ для $$i \neq j$$. В этом случае можно применять алгоритм обучения Вильяма-Зипсера.

    1. Выбрать случайные начальные значения весов сети, составляющих матрицу $$W$$ и равномерно распределенных в заданном интервале (обычно в диапазоне от $$-1$$ до $$1$$ ).

    2. Рассчитать состояние всех K нейронов для очередного момента $$t = 0,1,2,\ldots$$ с использованием формул (1) и (2). На этой основе можно определить входной вектор $$x(k)$$, возбуждающий нейроны в момент $$t$$.

    3. Рассчитать значения

    $$\begin{align*} dy_i(k)/dw_{ab} = (df_1(u_i)/du_i)[\delta_{ja}x_b + \sum_{k=1}^K(dy_i(k-1)/dw_{ab})w_{i,k+N}] \end{align*} $$

    4. Уточнить значения весов по алгоритму наискорейшего спуска согласно формуле

    $$\begin{align*} w_{ab}(k+1) = w_{ab}(k) -\alpha \sum_{i=1}^K [y_i(k)- d_i(k)]( dy_i(k)/dw_{ab}) \end{align*} $$

    для $$a = 1,2, \ldots, K$$ и $$b = 0,1,2, \ldots, N+K$$.

    Шаги (2-4) повторять вплоть до стабилизации значений всех весов сети.

    Страницы:

    Введение

    Многослойные рекуррентные сети представляют собой развитие однонаправленных сетей персептронного типа за счет добавления в них соответствующих обратных связей. Обратная связь может исходить либо из выходного, либо из скрытого слоя нейронов. В каждом контуре такой связи присутствует элемент единичной задержки, благодаря которому поток сигналов может считаться однонаправленным (выходной сигнал предыдущего временного цикла рассматривается как априори заданный, который просто увеличивает размерность входного вектора сети). Представленная подобным образом рекуррентная сеть, с учетом способа формирования выходного сигнала, функционирует как однонаправленная персептронная сеть. Тем не менее, алгоритм обучения такой сети, адаптирующий значения синаптических весов, является более сложным из-за зависимости сигналов в момент времени $$t$$ от их значений в предыдущие моменты и соответственно из-за более громоздкой формулы для расчета вектора градиента.

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

    Персептронная сеть с обратной связью

    Один из простейших способов построения рекуррентной сети на базе однонаправленной HC состоит во введении в персептронную сеть обратной связи. В дальнейшем мы будем сокращенно называть такую сеть RMLP (англ.: Recurrent MultiLayer Perceptron - рекуррентный многослойный персептрон). Ее обобщенная структура представлена на рис. 1 ( $$z$$ - единичные элементы запаздывания).

    (рис 1) Структура сети RMLP

    Это динамическая сеть, которая характеризуется запаздыванием входных и выходных сигналов, объединяемых во входной вектор сети. Рассуждения будут касаться только одного входного узла $$x(k)$$ и одного выходного нейрона, а также одного скрытого слоя. Такая система реализует отображение:

    $$\begin{equation} y(k+1) = f(x(k), x(k-1), \ldots, x(k-(N-1)), y(k-1), \ldots, y(k-P)) \end{equation}$$

    где $$N-1$$ - количество задержек входного сигнала, а $$P$$ - количество задержек выходного сигнала. Обозначим $$K$$ количество нейронов в скрытом слое. В этом случае сеть RMLP можно характеризовать тройкой чисел $$(N,P,K)$$. Подаваемый на вход сети вектор $$x$$ имеет вид:

    $$\begin{align*} x(k) = [1,x(k),x(k-1), \ldots, x(k-(N-1)),\\ y(k-P),y(k-P+1), \ldots, y(k-1)]^T. \end{align*} $$

    Допустим, что все нейроны имеют сигмоидальную функцию активации. Обозначим $$u_i$$ взвешенную сумму сигналов $$i$$ -го нейрона скрытого слоя, a $$g$$ - взвешенную сумму сигналов выходного нейрона. При введенных обозначениях выходные сигналы конкретных нейронов описываются зависимостями

    $$\begin{align*} u_i= \sum_{j=0}^{N+P} w_{ij}^{(1)}x_j\\ v_i=f(u_i)\\ g = \sum_{i=0}^K w_i^{(2)} v_i\\ y = f(g) \end{align*} $$

    Сеть RMLP повсеместно применяется для моделирования динамических процессов в режиме "онлайн". Типичным примером ее приложения может служить имитация нелинейных динамических объектов, для которых сеть RMLP выступает в роли модели, а алгоритм уточнения весов - в роли процедуры идентификации параметров этой модели (рис. 2). Идентифицированная модель может в последующем использоваться для управления данным объектом. Именно по этой причине сети RMLP наиболее популярны для имитации систем управления машинами, устройствами и динамическими процессами.

    В результате сравнения выходного сигнала модели $$y(k)$$ с выходным сигналом динамического объекта $$d(k)$$ рассчитывается значение погрешности $$e(k) = y(k) - d(k)$$, управляющей процессом уточнения параметров нейронной сети. Символом $$M$$ на рис. 2 обозначен коэффициент усиления модуля, масштабирующего выходной сигнал сети $$y(k)$$ таким образом, чтобы его динамический уровень лежал в том же диапазоне, что и уровень выходного сигнала динамического объекта $$d(k)$$.

    (рис 2) Схема включения сети RMLP при решении задачи идентификации

    Рекуррентная сеть Эльмана

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

    Каждый скрытый нейрон имеет свой аналог в контекстном слое, образующем совместно с внешними входами сети входной слой. Выходной слой состоит из нейронов, однонаправленно связанных только с нейронами скрытого слоя, подобно сети RMLP. Обозначим внутренний вектор возбуждения сети $$x$$ (в его состав входит также единичный сигнал поляризации), состояния скрытых нейронов - $$v \in R^K$$, а выходные сигналы сети - $$y \in R^M$$. При таких обозначениях входной вектор сети в момент $$t$$ имеет форму

    $$\begin{align*} X(k) = [x_0(k), x_1(k), \ldots, x_N(k), v_1(k-1), v_2(k-1), \ldots, v_K(k-1)]. \end{align*} $$

    Веса синаптических связей первого (скрытого) слоя сети обозначим $$w_{ij}^{(1)}$$, a второго (выходного) слоя - $$w_{ij}^{(2)}$$. Если взвешенную сумму $$i$$ -го нейрона скрытого слоя обозначить $$u_i$$, а его выходной сигнал - $$v_i$$, то

    $$\begin{align*} u_i(k) = \sum_{j=0}^{N+K} w_{ij}^{(1)}x_j(k),\\ v_i(k) = f_1(u_i(k)). \end{align*} $$(рис 3) Структура сети Эльмана

    Веса $$w_{ij}^{(1)}$$ образуют матрицу $$W^{(1)}$$ синаптических связей скрытого слоя, а $$f_1(u_i)$$ - функция активации $$i$$ -го нейрона этого слоя. Аналогично можно обозначить взвешенную сумму $$i$$ -го нейрона выходного слоя $$g_i$$, а соответствующий ему выходной сигнал сети - $$y_i$$. Эти сигналы описываются формулами

    $$\begin{align*} g_i(k) = \sum_{i=0}^K w_{ij}^{(2)}v_j(k),\\ y_i(k) = f_2(g_i(k)). \end{align*} $$

    В свою очередь, веса $$w_{ij}^{(2)}$$ образуют матрицу $$W^{(2)}$$, описывающую синаптические связи нейронов выходного слоя; $$f_2(g_i)$$ - функция активации $$i$$ -го нейрона выходного слоя.

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

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

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

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

  • задана реализация временного ряда $$x_j = (x_{j1}, x_{j2}, \ldots, x_{jM})$$, $$j = 1, 2, \ldots, T$$, на интервале времени $$[\Delta, T \Delta ]$$ с постоянным интервалом дискретности $$\Delta$$ ;
  • требуется построить оценку значения временного ряда (обычно одной его координаты) в момент времени $$(T + t_{pr})\Delta$$, где $$t_{pr}\Delta$$ - заданное время прогноза.
  • Из логических соображений или путем статистического анализа имеющейся реализации можно установить, сколько предшествующих значений относительно произвольного текущего момента времени $$j\Delta$$ определяюще связаны с прогнозируемым значением. Это означает, что если представить прогнозируемое значение $$y_j = x_{j+t,m}$$ $$m$$ -ой координаты вектора $$x$$ как функцию его предшествующих измерений:

    $$\begin{align*} y_j = \Phi(x_j,x_{j-1}, \ldots, x_{j-q+1}), \end{align*} $$

    то выбор значения $$q$$ устанавливает "память" экстраполятора. Значение $$q$$ определяет также входной вектор для нейронной сети, которая строится для решения задачи прогноза. Размерность этого вектора равна $$M * q$$.

    Таким образом, задача прогноза данных на нейронной сети сведена к задаче воспроизведения функции многих переменных $$\Phi(x_j,x_{j-1},\ldots$$, $$x_{j-q+1})$$ по данным обучающей выборки.

    Сеть RTRN

    Среди рекуррентных сетей особого внимания заслуживает сеть типа RTRN (англ.: Real Time Recurrent Network), предложенная Р.Вильямсом и Д.Зипсером и предназначенная для обработки сигналов в реальном времени. Сеть RTRN - частный случай сети Эльмана.

    (рис 4) Структура сети RTRN

    Обобщенная структура сети представлена на рис. 4. Сеть содержит $$N$$ входных узлов, $$K$$ скрытых нейронов и $$K$$ соответствующих им узлов контекстного слоя. Из $$K$$ скрытых нейронов только $$M$$ составляют выход сети. Обозначим взвешенную сумму $$i$$ -го нейрона скрытого слоя $$u_i$$, а выход этого нейрона - $$y_i$$. Вектор $$x(k)$$ и смещенный (задержанный) на один цикл вектор $$y(k-1)$$ образуют расширенный вектор активации $$x(k)$$, возбуждающий нейроны сети:

    $$x(k) = [1,x_1(k),x_2(k), \ldots, x_N(k), y_1(k-1), \ldots, y_K(k-1)]^T.$$

    После описания входного вектора сети в момент $$t$$ можно определить состояние всех нейронов согласно зависимостям:

    $$u_i(k) = \sum_{j=0}^{N+K} w_{ij}x_j(k),$$ $$y_i(k) = f(u_i(k)).$$

    причем $$f( )$$ обозначает непрерывную функцию активации нейрона (как правило, сигмоидальную). На рис. 4 видно, что сеть RTRN представляет собой частный случай сети Эльмана, в которой веса выходного слоя постоянны и равны дельте Кронекера, т.е. $$w_{ij} = \delta_{ij} = 1$$ для $$i = j$$ или $$0$$ для $$i \neq j$$. В этом случае можно применять алгоритм обучения Вильяма-Зипсера.

    1. Выбрать случайные начальные значения весов сети, составляющих матрицу $$W$$ и равномерно распределенных в заданном интервале (обычно в диапазоне от $$-1$$ до $$1$$ ).

    2. Рассчитать состояние всех K нейронов для очередного момента $$t = 0,1,2,\ldots$$ с использованием формул (1) и (2). На этой основе можно определить входной вектор $$x(k)$$, возбуждающий нейроны в момент $$t$$.

    3. Рассчитать значения

    $$\begin{align*} dy_i(k)/dw_{ab} = (df_1(u_i)/du_i)[\delta_{ja}x_b + \sum_{k=1}^K(dy_i(k-1)/dw_{ab})w_{i,k+N}] \end{align*} $$

    4. Уточнить значения весов по алгоритму наискорейшего спуска согласно формуле

    $$\begin{align*} w_{ab}(k+1) = w_{ab}(k) -\alpha \sum_{i=1}^K [y_i(k)- d_i(k)]( dy_i(k)/dw_{ab}) \end{align*} $$

    для $$a = 1,2, \ldots, K$$ и $$b = 0,1,2, \ldots, N+K$$.

    Шаги (2-4) повторять вплоть до стабилизации значений всех весов сети.

    Вернуться к учебному плану