\documentclass[a4paper,fontsize=14bp]{article}

\input{../common-preamble}
\input{../bmstu-preamble}
\author{Боровик Ирина Геннадьевна}
\title{Нейронные сети}
\date{2021-09-07}

\begin{document}
\maketitle
\newpage
\tableofcontents
\newpage
\section{Оргвопросы (в целом, по магистратуре)}

\begin{enumerate}
    \item до 01.10 найти научрука: профессор, доцент, со степенью, исключения: лычков ведьманов. неизвестны с бакалавриата: гребенюк, алфимцев. если нашли препода с тематикой (кадырбаева, германчук)- они ведут, но официально на ВКР договариваются
    \item сразу обговорить тему магистерской работы. на основе этой работы будет вестись вся практическая работа
    \begin{enumerate}
        \item НИР тематика, курсовая (формально проектирование итс), педпрактика, официально с 1.09, всё у научрука (задания на нир, кр, пп) бланки у старосты
        \item дисциплины по выбору начнутся на втором курсе.
        \item опубликовать минимум 1 статья, норма 2 статьи (участие в студенческой весне)
оформление работы до 01.10
    \end{enumerate}
    \item до 15.10 тему МР скинуть старосте
    \item заполнить задания и отчёты в том числе по педагогической практике, курсовые, итд. 
\end{enumerate}
\section{Оргвопросы курс}
\begin{enumerate}
    \item 1й модуль - посещение
    \item 2й модуль - 3 лабы, 1 дз.
    \item ЛР по сб с 4 недели. дома, методички скинут. отчёты на почту big@bmstu.ru
    \item ДЗ на 6й неделе - распознавание рукописных букв
\end{enumerate}
\section{Введение в нейронные сети}
НС - это математический инструмент для обработки данных. Многофакторный регрессионный анализ задача найти по коэффициентам как работает инструмент.

\[ax1+bx2+сx3...nxn=y\]
Коэффициенты - это та функция по которой работает чёрный ящик. В нс коэффициенты гибкие и изменяются в процессе обучения сети.
\begin{figure}[H]
  \centering
  \def\svgwidth{60mm}
  \input{pics/01-nn-00-oa1.pdf_tex}
  \caption{Эталонные изображения для распознавания}
\end{figure}
Нс часть используют для распознавания образов. Для распознавания таких образов можно сделать простой конъюнктивный автомат, где первая цифра это строка, вторая - столбец.

\[(1,2)\wedge(2,1)\wedge(2,3)\wedge(3,1)\wedge(3,3)\wedge(4,2) = O\]

\[(1,2)\wedge(2,1)\wedge(2,3)\wedge(3,1)\wedge(3,2)\wedge(3,3)\wedge(4,1)\wedge(4,3) = A\]

\begin{figure}[H]
  \centering
  \def\svgwidth{60mm}
  \input{pics/01-nn-00-oa2.pdf_tex}
  \caption{Не эталонное изображения для распознавания}
\end{figure}

Когда встречаемся с не эталонными изображениями возникает проблема: логические системы не срабатывают. Можно добавить вероятности, каждый сигнал умножать на вероятности и складывать уже не сигналы, а вероятности.
Если сложить все вероятности: А по сумме 3,9, О по сумме 3,8. человеческий глаз может на опыте определить, логическая система не может, надо как-то обучать и приходим к нейронной сети.

\begin{figure}[H]
  \centering
  \def\svgwidth{60mm}
  \input{pics/01-nn-00-neuron3.pdf_tex}
    \caption{Устройство нейрона мозга}
\end{figure}

Построен по принципу биологического нейрона. В центре тело клетки, входные отростки дендриты по ним передаются сигналы. Выходной отросток (аксон) один, но разветвляется. Дендриты стыкуются с аксонами, и аксоны связаны с дендритами других нейронов. На месте их соединения находится синапс. Тело клетки окружено мембраной, там находятся ионы калия и ионы натрия. Клетка непроницаема, поэтому много нейронов калия внутри(1) и натрия снаружи (2). К потенциал (1) -65мВ. поступает электрический сигнал и стенка становится проницаемой, ок 2  миллисек выброс калия наружу и натрий внутрь, меняется полярность, разница потенциалов достигает +45милливольт, сигнал пробивается меняет синапс, передаётся следующей клетке. После ухода сигнала разница потенциалов приходит в норму, мембрана становится непроницаемой. итог: есть входы по которым идёт сигнал по дендритам $X_1$, $X_2$, $X_n$, сигналы могут идти по нескольким входам. Интоксикация влияет на проницаемость синапса. Прослойку назовём омега. Аксон назовём промежуточный Y (если не промежуточный назовём его V). Импульс нейрона зависит от силы входного сигнала, то есть если слабые - не запустят хим процесс проницаемости мембраны. Порог обозначим h.

\[V_{\text{вых}} = f(\sum_{i=1}^n(\omega X)-h)\]

\begin{figure}[H]
  \centering
  \def\svgwidth{60mm}
  \input{pics/01-nn-00-neuron313.pdf_tex}
  \caption{Устройство нейрона мозга}
\end{figure}

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

\begin{figure}[H]
    \centering
  \def\svgwidth{60mm}
  \input{pics/01-nn-00-neuron314.pdf_tex}

  \begin{equation*}
    \begin{gathered}
\{X_1X_2X_5\}\to Y_1\\
\{X_3X_4X_6\}\to Y_2\\
\{X_1X_2X_6\}\to Y_3
    \end{gathered}
  \end{equation*}
  \caption{Схема устройства нейрона мозга (возможные отношения)}
\end{figure}

\begin{figure}[H]
  \centering
  \def\svgwidth{70mm}
  \input{pics/01-nn-00-neurnet315.pdf_tex}
  \caption{Модель нейрона мозга}
  \label{ris:3.15}
\end{figure}

Для примера возьмём систему с несколькими входами и выходами наблюдали что при сигналах на входе образуется сигнал на выходе. Моделируем: 6 входов и три выхода (см. Рис.~\ref{ris:3.15}) вход как правило датчики, выход как правило сумматор. В середине располагается слой нейронов. В зависимости от количества слоёв обучается лучше или хуже. Если слоёв вообще нет - просто замыкаем и получаем однослойную сеть, конечный автомат. Плохо потому что при изменении условия надо переобучать. В условиях есть закономерности, их нужно замечать и объединять. Сколько брать слоёв - зависит от факторов: каждый слой на 1 меньше предыдущего, в рисунке идеально было бы два (и на всякий случай можно добавить), но для примера сделаем один. количество нейронов промежуточного слоя это среднее между количеством на входе и на выходе. три промежуточных слоя - слишком много.

\section{Трассировка сети (ручное обучение)}

\begin{figure}[H]
  \centering
  \def\svgwidth{120mm}
  \input{pics/01-nn-00-neuron316.pdf_tex}
  \caption{Пример трассировки сети}
\end{figure}

Для трассировки строят матрицу следования - это диагональная матрица, где располагаются все нейроны. Принцип соединения нейронов в сети - все со всеми. Обозначаем, что сигнал от $x_1$ передаётся на 1,2,3,4, вход на 1,2,3,4 выход на $y_1$, $y_2$, $y_3$. Коэффициенты внутри матрицы это $\omega$. Для обучения можно выбирать любые, поэтому можно списать нулевые, чтобы ничего не пропускали. Далее сеть начинает обучаться по эталонам: идёт предварительный анализ всех эталонов (подстраивают сеть под удобные варианты) - ищем закономерность, в нашем примере это $x_1$ всегда идёт с $x_2$.

\begin{enumerate}
    \item закономерность $x_1x_2$
    \item берём первый эталон (идеальный пример для обучения) соответствие входа и выхода. ($x_1,x_2,x_5=y_1$)
    \item отмечаем закономерность в матрице и закрепляем нейрон.
    \item выставляем коэффициент 2 по количеству вхождений в эталоны
    \item меняем в нейроне синапсические коэффициенты с нуля до единицы
    \item остался х5 закрепляем за ним следующий промежуточный нейрон (2) с коэффициентом 1
    \item закрепляем промежуточный 1,2 на $y_1$ меняем синапсис на 1
    \item $x_3x_4$ = 1 на 3й нейрон м=2
    \item $x_6$ = 1 на 4й м=1
    \item 3,4 на $y_2$
    \item $x_1x_2$ на 1 промежуточный, $x_6$ на 4й
    \item 1,4 на $y_3$
\end{enumerate}

Обычно в процессе работы синапсис увеличивается не на единицу. Первоначально надо распределять от 0 до 0,5 а при обучении задавать коэфф 0,75, а не 1 для гибкости.

Формально по шагам путь прохождения трассировки:
\begin{enumerate}
    \item рисуем матрицу следования, по вер и гор отмечаем все нейроны, внутри матрицы отмечаем связи
    \item исследуем входные эталоны на закономерности (может быть и в середине обучения)
    \item для каждого эталона строим схему прохождения сигнала путём изменения синапсических весов
    \item параллельно отмечаем на схеме путь прохождения возбуждения
\end{enumerate}

\section{Способы предварительной обработки изображения для передачи в нейронную сеть}
\begin{enumerate}
    \item построковое сканирование (сканируем каждый пиксель и передаём его характеристику)
    \item блоковое сканирование (по областям, передаём характеристику сразу целой области (как размытие изображения))
    \item захват области (игнорирование статических и ненужных частей изображение, передаются только характеристики найденного объекта) используется в основном в играх и для движущихся объектов. не объект передаётся через раз или даже реже
    \item оптимизация (другая нейронная сеть, свёрточная) передают определённые признаки областей - однородные и статические области не передаются или передаются как области, а не попиксельно
\end{enumerate}

\section{Нейронные сети}
Классификация официально делятся по архитектуре (структуре) на:
\begin{enumerate}
    \item иерархические
    \begin{enumerate}
        \item конвергентные
        \item дивергентные
    \end{enumerate}
    \item сеть с одним входом (или выходом), звёзды гросберга
    \item локальные, не используются сами по себе, а используются внутри других сетей нужны для тормозящей или возбуждающей функции
\end{enumerate}
По методу обучения:
\begin{enumerate}
    \item обучение с учителем (когда есть обучающая эталонная выборка характеризующая соответствие входа и выхода)
    \item самообучающиеся (ассоциативная память) в основном используют для классификации.
\end{enumerate}
По организации бывают обычные или рекуррентные (с обратной связью).

Систематическое изучение искусственных нейронных сетей начато в 1943м Маккалох и Питтс. Для распознавания изображений по модели учитель-ученик. в 1960м Розенблатт построил первую электронную машину на основе нейронной сети марк1.

\section{Персептрон}
\begin{figure}[H]
  \centering
  \def\svgwidth{80mm}
  \input{pics/01-nn-00-neuron317.pdf_tex}
    \caption{Пример применения нейросети}
    \label{ris:3.17}
\end{figure}

\begin{figure}[H]
    \centering
  \def\svgwidth{100mm}
  \input{pics/01-nn-00-neuron318.pdf_tex}
    \caption{Нейросеть и функция активации}
    \label{ris:3.18}
\end{figure}
Первый персептрон называется персептрон Розенблатта. Розенблатт смоделировал работу нейрона мозга и построил машину. Она линейно разделяла два нелинейных множества (см. Рис. ~\ref{ris:3.17}). 

Персептрон состоит из трех элементов: первый элемент сенсорный, второй ассоциативный, третий реагирующий (см. Рис. ~\ref{ris:3.18}).
\begin{enumerate}
    \item задача сенсорного это просто вход, имеет пороговую функцию (1)
    \item ассоциативный вначале ф-ция зависела от (2) сначала была пороговой, потом сделали дифференцированной, изначально порог ставили около 0,6
    \item реагирующий это обычно чистый сумматор
\end{enumerate}
2021-10-12 доска: потерялось фото-в-телефоне
\section{Многослойный персептрон}

Тоже самое, но слоёв промежуточных нейронов много, принцип соединения все-со-всеми. Ввёл также Розенблатт, но столкнулся с проблемой - как их обучать, ведь когда слоёв больше одного - формулы для промежуточных не работают.
\begin{figure}[H]
    \centering
    \def\svgwidth{120mm}
    \input{pics/01-nn-00-multilayer.pdf_tex}
    \caption{Многослойный персептрон}
\end{figure}

V - это промежуточные нейроны, у - это конечный выход (сверху для однослойного, снизу для многослойных)
проблема обучения решаются дифференцированием функции, должно быть легко взять производную. Самая простая дифференцируемая функция, сигмоидальная, например, $f = \frac{1}{1+exp^{-\alpha x}}$, где $\alpha$ это коэффициент угла наклона.

Так многослойный персептрон характеризуется --числа большим количеством промежуточных слоёв нейрона, 
нелинейная, зачастую сигмаидальная функция активации, высокая связанность (все со всеми).

Обучается обычно также с учителем, на эталоне. Целевая функция энергия ошибки (формула Е с доски) где особенно важен коэффициент -1/2 обучение происходит по алгоритму обратного распространения ошибки: --числа. Вычисляем разность между д и у, $\frac{d(d-y)}{d\omega}$ подаём производные на вход и изменяем все синапсические связи.

Так и происходит уточнение весов. Функция активации - это разница между ожидаемым и полученным. В итоге получаем требуемую энергию ошибки.

\section{Персептрон с обратной связью (рекуррентные сети)}

Обратная связь может идти как от выхода так и от промежуточного слоя, так на вход и на промежуточные слои. Основная особенность: когда подаём на вход сигнал с выхода - сигналы от входа никуда не деваются, и подаём до получения устойчивого состояния. 

было: 
\[V = \sum \omega V\]

стало: 
\[V=\sum \omega x + \sum Ky + b\]

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

\[E = -\frac{1}{2} \sum_{j} \sum_{i!=j} \omega_{ij} y_{i} y_{j} + \sum_{i=1}^{N} \frac{1}{R_{i}} \int_{0}^{x} f_{i}^{-1} (y_{1}) dy_{i} + \sum_{i=1}^{N} b_{i} y_{i}\]

Это математический аппарат для исследования устойчивых динамических систем любого нелинейного вида и любой размерности. Устойчивое состояние достигается когда ляпунов -> min. То есть когда при передаче выходов на вход не поменяется состояние нейронов мы считаем, что обучение завершено. Аттракторы - это нейроны в рекуррентной сети с достигнутым энергетическим минимумом. Благодаря им рекуррентные сети можно применять в качестве ассоциативной памяти. В зависимости от того, куда и откуда подаются сигналы меняется название сети: самый простой - рекуррентный многослойный (R multilayer P) персептрон, рекуррентная сеть реального времени (Realtime R Network) и частный случай - сеть Эльмана.

\section{RMLP}
\begin{figure}[H]
    \centering
    % \includegraphics[width=12cm]{RMLP.png}
    \caption{Устройство нейрона мозга}
\end{figure}
Сверху начальные входы-все-со-всеми промежуточные кружки идут в один круг выход откуда стрелка на выход и стрелка и входы внизу, то есть получается: 

\[{1, x_1, x_2, ..., x_n}, {y_1, y_2, ..., y_m}\]
где $y = f(x)$, и это только первый шаг, далее добавляется второй шаг, итд.
\[x(k) = [1, x{k, x{k-1}, x(k-(N-1))}, y(k-P), y(k-P-1), y(k-1)]\]

N - 1 количество задержек на входе
P - количество задержек выхода
k - количество нейронов
Средние нейроны также вычисляются по известной формуле фото-в-телефоне.
\begin{figure}[H]
    \centering
    % \includegraphics[height=6cm]{rmlt.png}
    \caption{Устройство нейрона мозга}
\end{figure}

Обучение происходит как и в обычном персептроне, просто учитываются обратные связи. Алгоритм вильяма-зипсера (слайд) --числа:
\begin{enumerate}
    \item выбрать случайные начальные значения весов сети (W)
    \item рассчитать состояние всех К нейронов для очередного момента (t)
    \item рассчитать значения по формуле (сложная)
    \item уточнить значения весов по алгоритму наискорейшего спуска (несколько формул, где альфа - это шаг обучения)
\end{enumerate}
\begin{figure}[H]
    \centering
    % \includegraphics[width=12cm]{vz.png}
    \caption{Устройство нейрона мозга}
\end{figure}

Разница в том, что просчитываем игреки, пока система не придёт в равновесие.

\section{RTRN}
\begin{figure}[H]
    \centering
    % \includegraphics[width=12cm]{RTRN.png}
    \caption{Устройство нейрона мозга}
    \label{ris:RTRN}
\end{figure}
\begin{figure}[H]
    \centering
    % \includegraphics[width=12cm]{for-rtrn.png}
    \caption{Устройство нейрона мозга}
    \label{ris:formulsRTRN}
\end{figure}

Отличие в том, что она однослойная, нет задержек (см. Рис. \ref{ris:RTRN}. в отличие от многослойного персептрона расчитывается на один цикл. То есть это частный случай рекуррентной сети. Формулы (см. Рис. \ref{ris:formulsRTRN}) не отличаются от формул для одного персептрона, не ждём равновесия.

\section{Рекуррентная сеть Эльмана}
\begin{figure}[H]
    \centering
    % \includegraphics[width=12cm]{elm.png}
    \caption{Устройство нейрона мозга}
    \label{ris:formulsRTRN}
\end{figure}
\begin{figure}[H]
    \centering
    % \includegraphics[width=12cm]{for-elm.png}
    \caption{Устройство нейрона мозга}
    \label{ris:formulsRTRN}
\end{figure}

Разница в новой связи ко второму слою. обратная связь идёт не с выходов, а с промежуточных элементов (называется частичная обратная связь). Формулы практически не отличаются от многослойного персептрона, единственное, что вторая связь не от выходов y, а от промежуточных ${u_1, u_2, u_k}$. Часто используются в задачах прогноза векторного временного ряда.

Самая большая проблема в новых нейронных сетях - придумывать новые формулы для расчёта нейронов.

\section{Cеть радиально-базисных функций (RBF)}

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

\begin{enumerate}
    \item плоский сплайн
    \item сплайн с натяжением
    \item полностью регуляризованный сплайн
    \item мультиквадратичная функция
    \item обратная мультиквадратичная функция
\end{enumerate}

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

\begin{figure}[H]
    \centering
    % \includegraphics[width=12cm]{rbf.png}
    \caption{Устройство нейрона мозга}
    \label{ris:formulsRTRN}
\end{figure}

Имеет двухслойную архитектуру. (10-б) первый слой как раз функция вычисления расстояния (РБФ), выход чаще всего простой линейный нейрон. 
РБФ показывает соответствие (вероятность) насколько похожи промежуточные на вход. Можно добавлять туда персептронских слоёв (после вероятностей) будет сложнее обучаться, но работает намного "интереснее".

Что нужно для обучения: обучается с учителем. Нужно написать функцию ошибки. Промежуточные слои обозначают G. Часто вводят масштабирующую матрицу (это матрица (матрица корелляции), которая выравнивает параметры и приводит их к общему диапазону, размерности) - это обычная транспонированная матрица. Вводим этот коэффициент для всех уравнений. Нужно найти центры и найти расстояния (можно задать самим, так обычно делают в начале обучения, решают задачу кластеризации) берут количество нейронов на входе и $\frac{x_\text{макс}-x_\text{мин}}{\text{кол-во}}$. Найти области перекрытия $\frac{max(c_i-c_j)}{\sqrt{2n}}$, где n - это количество нейронов скрытого слоя) ищем центры кластеризации, разбиваем вектор на определённое количество нейронов, если сеть работает некорректно - увеличиваем количество нейронов скрытого слоя.

Алгоритм не подразумевает уменьшения количества. считаем расстояния
 - евклидово
 - квадрат евклидова
 - городских кварталов
 - чербышева
 - степенное
Алгоритм не подразумевает уменьшения количества. Считаем расстояния
\begin{enumerate}
    \item евклидово
    \item квадрат евклидова
    \item городских кварталов
    \item чебышева
    \item степенное
\end{enumerate}

Есть и более простой способ (гибридный алгоритм обучения):
\begin{enumerate}
    \item выбирается начальное значение центров и параметров ширины, расчёт коэффициентов выходного слоя
    \item на основе этих весов происходит адаптация нелинейных параметров радиальных функций.
\end{enumerate}

Основная проблема - выбор количества радиально-базисных нейронов. Зависит от количества выборок, от объёма данных, структуры аппроксимирующей функции.

\section{Нейронные сети Кохонена}
\begin{enumerate}
    \item самообучающиеся сети. Классифицирующие, нет эталона. используется для сжатия информации, кластеризации.
    \item есть вектор входных параметров и надо разбить на классы. сеть определяет к какому классу отнести тот или иной входной параметр.
 Для обучения применяется механизм конкуренции. Возникает проблема мёртвых нейронов, а значит и погрешность увеличивается.
\end{enumerate}

\begin{figure}[H]
    \centering
    % \includegraphics[width=12cm]{kox1.png}
    \caption{Устройство нейрона мозга}
    \label{ris:formulsRTRN}
\end{figure}

\begin{figure}[H]
    \centering
    % \includegraphics[width=12cm]{kox2.png}
    \caption{Устройство нейрона мозга}
    \label{ris:formulsRTRN}
\end{figure}

\begin{figure}[H]
    \centering
    % \includegraphics[width=12cm]{kox3.png}
    \caption{Устройство нейрона мозга}
    \label{ris:formulsRTRN}
\end{figure}

\section{Звезда Гросберга}
Это фрагмент нейронной сети, который моделирует функции. входная звезда имеет большой входной вектор с единственным выходом. Выходная звезда наоборот при единичном входе выдаёт огромный выходной вектор. Сами по себе не используются, но можно построить сеть со смешанным обучением и использованием звёзд гросберга и сетей кохонена. Часто применяются в скоринговых системах.

\begin{figure}[H]
    \centering
    % \includegraphics[width=12cm]{kox4.png}
    \caption{Устройство нейрона мозга}
    \label{ris:formulsRTRN}
\end{figure}

\section{Ассоциативная память}
\subsection{Сеть Хопфилда}
Реализует восстановление по искажённому сигналу, по ассоциации, что ближе ко входному вектору. В честь хопфилда назвали базу, сейчас на этой модели есть много разных сетей, например, сеть Коско.

Это рекуррентная сеть (среднее между самообучением и обучением с учителем). состоит из трёх слоёв: входной (сенсорный элемент, даже не нейроны), слой нейронов (поэтому сеть называют однослойной) и выходной вектор (не нейроны, просто вектор). Выходы нейронов подключены ко всем входам кроме себя. Синапсический коэфф на входах == коэфф на выходах. Все сети с обратной связью - синапсические. Энергия сети считается по функции Ляпунова. Можно использовать как авто ассоциативную или как фильтр. Иногда используется для задач оптимизации. Всегда работает до достижения равновесия. Число нейронов сети это размерность входного вектора.

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

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

Сеть нельзя сделать бесконечно большой. Может запомнить 15\% образов от количества нейронов. То есть КПД == 15\%. от последовательности или параллельност качество обучения не меняется. на каждом шаге меняется энергия сети (и каждого нейрона). Предпочтительно всегда работать в асинхронном режиме.

\begin{figure}[H]
    \centering
    % \includegraphics[width=12cm]{hop1.png}
    \caption{Устройство нейрона мозга}
    \label{ris:formulsRTRN}
\end{figure}

\begin{figure}[H]
    \centering
% \includegraphics[width=12cm]{hop2.png}
    \caption{Устройство нейрона мозга}
    \label{ris:formulsRTRN}
\end{figure}

\subsection{Сеть Коско}
Двунаправленная ассоциативная память, базируется на ассоциативной памяти хопфилда. Можем по входам восстановить выходы, и по выходам входы. Это однослойная нейронная сеть. Благодаря двунаправленности называется гетероассоциативная память. т.к. основана на АПХопфилда, к ней подходит всё, что подходит для Х. может обобщать и вырабатывать правильную реакцию на искажённый вход. Может из зашумлённых сигналов выделять эталонные версии. Нельзя дообучить в процессе работы. Процесс обучения это вычисление перед началом работы матрицы коэффициентов. работает в основном с двоичными векторами. Векторная компонента может быть либо +1 либо -1 или +1 и 0.

Задача: есть сеть 3х3. входной вектор обозначим а, выходной б. б = омега а. омега = атранспонированное умножить на бштрих равно суппа атранспонированное итое умножить на бштрих итог.

\begin{verbatim}
    а1 100 - б1 001
    а2 010 - б2 010
    а3 001 = б3 100

    атранспонированное1 100
    атранспонированное2 010
    атранспонированное3 001
    бштрих1 011
    бштрих2 101
    бштрих3 011

    перемножаем матрицы
    ат1б1 ат2б2 ат3б3
    110   010   100
    001   101   100
    001   010   011
\end{verbatim}

Складываем омега матрица = 110,101,011. б = омегаштрих * атранспонированное
Обучили, работаем. В а приходит сигнал 100 омега матрица = 001 010 100, перемножили 001 101 011, сложили 001 получили б1.

Есть несколько разновидностей двунаправленных ассоциативных памятей:
\begin{enumerate}
    \item синхронная: два слоя между которыми есть двусторонние связи, соединены все-со всеми. Если квадратная и симметричная, то она превращается в сеть хопфилда. Передача будет происходить до того момента, как будет подобран наиболее близкий к эталонному сигнал.
    \item непрерывная асинхронная ДАП: все нейроны меняют своё состояние независимо от других нейронов. Состояния нейронов зависят следующий от предыдущего. можно использовать функцию активации "простой порог". Работает по сигмаидальной функции, благодаря которой достигается непрерывность. по достижении порога сигмаидальная функция разрывается
    \item адаптивная ДАП: меняет матрицу весовых коэффициентов в процессе функционирования. Обучается по типу персептрона, постепенно каждому эталону. На вход подаётся входной вектор, а на выход - эталон. Сеть сама подстраивает веса в соответствие входов выходам. в результате такого обучения кратковременная память становится долговременной. Можно дообучить как и персептрон на зашумлённых векторах.
    \item конкурирующая ДАП: вводится конкуренция между нейронами. вводятся дополнительные связи между нейронами одного слоя и веса этих связей формируют другую весовую матрицу. в этой другой матрице по главной диагонали находятся положительные элементы, все остальные отрицательные. Если какой-то нейрон более активный по сравнению с остальными - он и выигрывает конкуренцию и именно он меняет своё состояние, подстраиваясь под вектор, который его активировал. При использовании конкуренции возникает проблема: появляется нейрон, который всегда выигрывает. нужно думать как избавляться от аномалий, возможно, исключить победителя из соревнований или добавить выход нейрона на вход соседей.
\end{enumerate}

\section{Сеть Ворда}
Вход 3 нейр, выглядит как майндмэп до 9 нейронов среднего слоя через две точки объединения.
Первый входной слой обычный, далее скрытый слой разбивается на блоки, и также на нейроны выходного слоя (тоже 3 и как правило построен на сумме омег входных сигналов). Примечателен именно скрытый слой: в отдичие от остальных сетей, где применяются сигмаидальные пороговые и прочие функции, может применяться несколько функций. То есть средний слой будет подбирать лучшую функцию для обработки входного сигнала. Фактически это архитектурная топология, а не сеть. Это многослойная сеть с обычным обучением, с той разницей, что каждый блок обучается отдельно от других, а на выходе суммируем значения. Главное, чтобы топология скрытого слоя была однотипная.

\section{Генеративно-состязательная сеть}
generative adversarial network
 Алгоритм машинного обучения, основанного на соперничестве двух сетей. генератор Г и дискриминатор Д. Оба персептроны или свёрточные сети. Принцип в том, что Д - это обычная сеть для распознавания изображений. обычная сеть проверки подлинности, ей нужно классифицировать изображение. на вход Г подаётся шум, на основе шума Г создаёт вектор и посылает его Д. Д должен классифицирует этот вектор, и посылает обратно в Г, Г самообучается, подстраивая свои веса так, чтобы подать Д правильный вектор.
 Вход синус. х - это иделаьная последовательность, эталон. подали на Д. Д обучился воспринимать синус. Г подаём на вход шум (z) на основе неё генерируются точки. в результате должны сгенерироваться точки, похожие на х. Д возвращает вероятность, попала точка в х или нет. то есть это простое обучение, но учитель не мы, а Д. Если генератор достаточно обучить - он может выдавать идеальные векторы.
  Используется для восстановления изображений. По сути в итоге - это минимакс двух игроков. После обучения Д его замораживаем и запрещаем менять весовые коэффициенты и начинаем обучать Г. Почему используется минимаксная функция? суть Г - создать вектор так, чтобы Д их принимал за настоящие. В математическом плане функция Г заключается в минимизировании функции ошибки.
  \[min_G\log (1 - D(G(Z))\], где Z - это шум. 
  Цель Д обратная
   \[max_D(\log (B(x_t)) + \log(1 - D(x_f)))\],
   где $x_f = G(z)$. 
   Как можно чётче максимизировать отличия. Общая формула получается минимаксная игра (G играет в минимум, D в максимум) - \[min_Gmax_D(\log  D(x_t) + \log(1 - D(G(z)))\], где $\log D(x_t)$ - это эталон, а $\log(1 - D(G(z)))$ - это отличие от эталона.
   
   
Виды:
\begin{enumerate}
    \item глубокая свёрточная ГСС - сделана на основе свёрточной сети, более устойчива для обучения, используется когда мощности обычной сети не хватает, может эффективно работать на сложных данных, использует больший набор признаков
    \item улучшенная ГСГСС - ещё более высокого разрешения, минус в том, что увеличивая качество входа - вектор сходимости плохой (при добавлении эпох ошибка будет расти).
    \item условная ГСС - использует не только вектор, но и дополнительную информацию, по сути приходит не только вектор, но и категория, к которой относится вектор (дополнительная контрольная сумма). основана на таком же классическом алгоритме, используется когда нужно увеличить качество и есть дополнительный контроль.
    \item информационная ГСС - дополнительно выдаёт кодировку изображения. не просто распознают, но например ещё определяют угол поворота изображения. используется когда данные не очень сложные.
    \item сеть вассерштейна - работает с восстановлением изображений, в уравнение добавлена функция потерь, модифицированная так, чтобы алгоритм учитывал функцию сходимости, то есть останавливает обучение, когда дальше уже не эффективно. используется если требуется высокая стабильность обучения при высокой скорости обучения
    \item улучшенная сеть вассерштейна - улучшенная метрика функции потерь, простые приближения, и другие параметры, в итоге сеть показывает ещё лучшие результаты. может работать с большим количеством данных и архитектур, но отбразывает детальную прорисовку. используется для распознавания номеров машин в камерах
    \item ГСС граничного равновесия - использует простую архитектуру, добавляет динамику при обучении сети, то есть рекуррентная сеть. похожа на вассерштейна, но работает немного дольше.
    \item прогрессирующая ГСС - создана на основе вассерштейна, добавляет слои в архитектуру, так во время обучения появляется идеально прорисованное изображение, потому что каждый дополнительный слой увеличивает качество. в основе использует свёрточную сеть.
    \item цикличная ГСС - одна из самых передовых свёрточных сетей, чтобы переводить изображения в другую категорию. подбирает по мимо вектора ещё и категорию, и на основе признаков подбирает изображение из готовых.
\end{enumerate}
% тут больше прикола ради формул закину, которые делал для другого предмВета, налету)
% \textbf{Райса} описывает более общий случай, когда есть и прямой луч
%   \[p_z(z) = \frac{z}{\sigma^2}exp[-\frac{z^2+S^2}{2\sigma^2}]I_0(\frac{zs}{\sigma^2})\]
%   \[S^2 = \alpha_0^2\]
%   \[2\sigma^2 = \overline{Z_n}M[\alpha_n]\]
%   \[K = \frac{S^2}{2\sigma^2}\]
%   \[p_r = S^2 + 2\sigma^2\]
%   \[p_z(z) = \frac{2(K+1)z}{p_r}exp[-K-\frac{(K+1)z^2}{p_r}]I_0(2\sqrt{\frac{K(K+1)}{p_r}}z)\]
%   При К = 0 релей, при бесконечной прямая видимость доминирует над отражёнными сигналами. представляется в децибелах.

% \textbf{распределение накагами}. суть в том что оно ещё более общего вида. помогает посчитать как часто и сколько в среднем времени мы будем находиться ниже порога гарантии принятия сигнала.
%   \[L_z = \sqrt{2\pi(K+1)f_{D_m} \rho e^{-K-(K+1)\rho^2}I_0(2\rho\sqrt{K(K+1)})}\text{райс}\]
%   если в это выражение подставить к = 0 получим релея.
%   \[L_z = \sqrt{2\pi}f_{D_M}\rho e^{-\rho^2}\]
%   среднее время нахождения ниже порога
%   \[t_z = \frac{e^{\rho^2}}{\rho f_{D_m}\sqrt{2\pi}}\]
%   \[\rho = \frac{z_0}{\sqrt{p_r}} = \sqrt{\frac{p_0}{p_r}}\]
%   в примере получаем разовые битовые ошибки 17 раз в секунду. если больше - биты подряд, если меньше - ошибок нет

\end{document}
