Neural PRNG
Простейший пример. Выходные значения каждого нейрона (Big Int) используются для поиска ближайшей пары простых чисел для алгоритма Блюм-Блюм-Шуба (не крипто-стойкого).
Из полученного результата используется бит четности. Затем выполняется следующий цикл работы. На вход подаются вычисленные и не использованные данные с нейронов. Получается еще один бит генерируемого псевдослучайного числа. И так далее, до формирования Big Int «случайного» числа нужной размерности.
Очень интересно. И это пока еще без использования переобучения генератора и без реконфигурирования нейронной сети.
Такой PRNG будет медленным, не для поточного шифрования (если не рассматривать масштабируемые NPRNG на одном нейроне или слое, реализованном на отдельном чипе). Рассматриваемые здесь генераторы псевдослучайных чисел интересны прежде всего с точки зрения противодействия криптоанализу. На каждые несколько псевдослучайных чисел будет создаваться свой алгоритм генерирования. Здесь огромный потенциал.
Далее, попробуем построить простейший «нейронный» PRNG без обучения. Сначала это будет простая нейронная сеть из 6 нейронов. С слоями из 3,2,1 нейронов. Затем добавим методы для получения «псевдочисел», методы для извлечения одного бита и накопления выходного псевдослучайного числа. Затем сделаем эту нейронную часть NPRNG динамически перестраиваемой (с изменяемыми параметрами, связями и структурой). Добавим слой и связи.
Используем простую нейронную сеть из 3-х слоев с распределением нейронов 3,2,1. Сначала используем выходные значения нейронов для составления псевдослучайного числа, затем создадим обратную связь и сделаем ее программно перестраиваемой. Потом создадим масштабируемую нейронную сеть, которая сможет увеличивать или уменьшать количество нейронов в слоях и менять количество слоев. Пока это всё без обучения нейронной сети.