На сегодня среди множества алгоритмов машинного обучения широкое применение получили нейронные сети (НС). Основное преимущество НС перед другими методами машинного обучения состоит в том, что они могут выявить достаточно глубокие, часто неочевидные закономерности в данных. Классической парадигмой среди НС являются полносвязные сети с обратным распространением ошибки. У полносвязных НС с обратным распространением ошибки имеется много преимуществ, главным среди которых является достаточно высокая точность классификации исходных данных, основанная на «сильном» математическом аппарате, лежащем в основе их функционирования. Но, с другой стороны, есть и недостатки, самым значительным среди которых является склонность к переобучению, когда НС подстраивается под локальные особенности обучающей выборки и утрачивает обобщающую способность. Это снижает эффективность и целесообразность их использования в качестве средства классификации или прогнозирования вне обучающей выборки на произвольных данных. В данной статье к рассмотрению предлагается вариант полносвязных бинарных НС (в качестве целевого значения сети выступают бинарные переменные) с логической функцией на выходе, в которых отсутствует механизм обратного распространения ошибки. На этапе обучения при формировании весовых коэффициентов нейронов вместо их многократных итерационных расчётов, производимых для каждого обучающего образца, осуществляется однократный случайный выбор коэффициентов, что значительно сокращает время на обучение. Другим фундаментальным преимуществом данного подхода является отсутствие проблемы с переобучением сети. На рис. приведена структурная схема бинарной случайной логической нейронной сети. Бинарная случайная НС структурно состоит из трёх последовательных слоёв, пронумерованных по мере прохождения информации от входа к выходу: Далее производится подробное рассмотрение указанных слоёв. В первом слое входные данные перед обработкой их нейронами проходят через преобразование, выравнивающее плотность распределения вероятности их значений к равномерному распределению в диапазоне от 0 до 1. Выравнивание производится с помощью применения к каждой переменной входного вектора определённой нелинейной функции, которая выбирается согласно следующей теореме о функции распределения вероятности случайной величины, доказываемой в математической статистике. Теорема: если случайная величина Х имеет плотность распределения вероятностей f(х), то распределение случайной величины s=F(x) является равномерным в интервале (0,1), где под F(x) понимается функция распределения вероятностей случайной величины Х, т. е. f(х)=dF(x)/dx. Следовательно, после нелинейного преобразования входной вектор X будет преобразован в вектор S, у которого каждая из его составляющих будет иметь единичный диапазон (0,1) значений с равномерной плотностью распределения вероятностей в нём. Таким образом, исходные вектора X, которые являются точками в некотором N-мерном пространстве, будут переведены в другое N-мерное пространство, где они будут равномерно рассредоточены по всему объёму N-мерного единичного куба, располагающегося в начале координат. Ниже дано изображение для двумерного случая с двумя кластерами точек, разделённых чёткой границей, соответствующих двум разным логическим состояниям. В зависимости от задачи, может быть, одна общая функция F(x) или отдельная под каждую переменную Xi (i=1,2,…,N) входного вектора данных. Тогда в процессе обучения НС для каждой компоненты входных векторов необходимо сформировать своё распределение Fi(x), которое является нелинейной функцией преобразования для соответствующего i-го элемента входных данных. В предложенной ниже реализации производится расчёт функции распределения отдельно для каждой переменной входных векторов. Однако на практике в ряде случае в качестве общей функции достаточно будет даже использовать широко известные сигмоидные функции, например логистическую: В этом случае, при обучении НС не требуется нахождение N разных функций распределения вероятностей элементов входных векторов X. Требуется подобрать только лишь два параметра: a –крутизна функции; x0 – смещение нуля, что несколько упрощает процесс обучения. После входного нелинейного преобразования, выровненные входные вектора S поступают на вход скрытого слоя случайных нейронов. По своему смыслу эти нейроны являются N-мерными линейными плоскостями, заданными посредством своих коэффициентов W={w0, w1, w2, w3, …, wN} так, что для любой точки S={s1, s2, s3, …, sN}, принадлежащей плоскости, выполняется условие: Соответственно, для точек, не лежащих на плоскости, это равенство соблюдаться не будет и знак величины выражения будет определять с какой стороны относительно плоскости находится точка. Собственно именно эту указанную величину и формируют нейроны. Задать эти плоскости-нейроны можно произвольным способом, но так, чтобы их задающие коэффициенты W удовлетворяли одному единственному требованию: в N-мерном пространстве плоскости обязательно должны пересекать единичный куб, находящийся в начале координат Иначе они не будут иметь никакого участия в процессе работы сети. Ниже дано представление результата распределения плоскостей для двумерного случая (плоскости являются прямыми), когда они случайным образом расчерчивают единичную область. Если взять их достаточное количество, то с большой вероятностью они достаточно точно определят границу двух кластеров точек. Чтобы это требование выполнялось можно использовать задание коэффициентов W плоскости по одной точке, принадлежащей плоскости, и вектору нормали к ней. В этом случае внутри N-мерного единичного куба в начале координат случайно выбирается произвольная точка, заданная своими координатами: a1, a2, a3, …, aN, где случайные числа 0<ai<1. Коэффициенты, задающие плоскость нейрона, тогда будут следующими: Здесь n1, n2, n3, …, nN – значения вектора нормали к плоскости, являющиеся также весовыми коэффициентами для соответствующих элементов вектора S (это могут быть любые случайные числа с любым знаком, но делать их по модулю слишком большими смысла нет); w0 – коэффициент для постоянного смещения, равного 1. Такое условие легко реализуется даже на самых простых вычислительных устройствах, что делает возможным обучение и работу НС в широком спектре приложений. Следовательно, никакого обучения нейронов в рассматриваемой НС производить не нужно, т. к. они формируются случайным образом. При этом чем больше таких плоскостей-нейронов, тем более точнее будет результат классификации. Увеличение их количества ограничено только вычислительной сложностью и производительностью вычислительного устройства и не приводит к переобучению сети. Бинарный выход каждого нейрона будет рассчитываться по формуле: Значения выходов от M нейронов попадают на вход логической минимальной ДНФ функции от M переменных, которая используется в качестве выходного слоя сети, увязывая бинарные аргументы нейронов, получаемые после функции Sign, с бинарным (логическим) целевым выходом НС. Именно поэтому у этой логической функции столько переменных, сколько имеется нейронов в скрытом слое. В немалой степени устойчивость сети к переобучению базируется на работе этой логической функции, которая включает только необходимые нейроны, рассматривая их, при этом, в комбинации друг с другом. Большое количество нейронов позволяет рассмотреть границы кластеров с максимально высоким разрешением, а способность логической функции проводить обобщение позволяет использовать предоставленное разрешение с максимальной эффективностью, не скатываясь к переобучению, когда сеть утрачивает обобщающую способность, становясь по своей сути элементом памяти. В качестве реализации последнего каскада НС используется собственная разработка минимизации логических функций методом Квайна-Мак’Класки при неполном входном наборе данных (https://habr.com/ru/post/424517). Дополнительным преимуществом данной реализации является то, что она позволяет выявлять нейроны, не задействованные в процессе формирования выходного отклика сети. Такими нейронами будут те, у которых во всех дизъюнкциях минимальной ДНФ в соответствующих позициях будет находиться признак «склеенности» «*». Не участвующие нейроны можно удалять из скрытого слоя и заменять их новыми более полезными случайными нейронами. Для проверки работы алгоритма формируется псевдо-случайная последовательность определённой длины в виде суммы заданного количества гармоник со случайными частотами, фазами и амплитудами. Эта последовательность разделяется на две равные части, первая из которых используется как обучающая, а вторая часть является тестовой. В качестве исходных данных для обучения и тестирования на каждой позиции t выборки используются N предыдущих её элементов X(t-j) (j=1,2,…,N), а в качестве целевого бинарного признака значение функции Sign(X(t)-X(t-1)). После обучения сети на первой половине последовательности, формируется отчёт о правильности её работы на этой обучающей выборке. Далее производится работа обученной сети на тестовой выборке, т. е. второй половине последовательности, после чего формируется аналогичный отчёт о правильности её работы. Нейронная сеть работает хорошо, если отчёты по своим прогнозам значений Sign(X(t)-X(t-1)) примерно совпадают. Если на тестовой выборке сеть показывает плохой результат, то это означает, что псевдо-случайная последовательность имеет действительно случайные характеристики и НС не обнаруживает связи между обучающей и тестовой выборками, т. е. каких-либо закономерностей нет. Как итог проверки качества работы НС, необходимо отметить, что по точности классификации предложенный вид случайных НС не превосходит классические с обратным распространением ошибок. Но они имеют перед ними, по крайней мере, три конкурентных преимущества: В качестве недостатка НС необходимо отметить её большие требования к величине доступной оперативной памяти и значительному времени, затрачиваемому при обучении. Их основным потребителем является алгоритм минимизации логических функций методом Квайна-Мак’Класки, т. е. 3-й выходной слой. Но есть возможность несколько сгладить этот недостаток путём каскадирования нескольких логических функций. В остальном же данная НС зарекомендовала себя надёжным средством для прогнозирования и классификации бинарных данных. Разработчик ПО