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

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

В одной версии я использовал числа от 0 до N для обучения и от N до 2N для теста, а в другой 2 набора случайных целых чисел от 0 до N.

Для улучшения предсказания я использовал различное количество узлов в первом слое. Следовательно, и в других слоях, поскольку количество узлов во втором и последующих слоях зависит от количества узлов в первом слое — количество узлов в каждом следующем слое уменьшается вдвое.

Кроме того, я использовал разные веса классов, так как простые числа являются искаженным классом. Поскольку количество простых чисел ниже определенного числа N приблизительно равно N/ln(N), я использовал N — N/ln(N) в качестве веса для класса простых чисел и N/ln(N) для класса непростых чисел. (должно быть обратно пропорционально).

Для всех других параметров конфигурации процедуры обучения я использовал параметры по умолчанию, которые дает Keras из фактического Tensorflow (SGD, потеря бинарной кросс-энтропии и т. д.).

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

Вы можете найти код для этого на моем github (https://github.com/lsamec/myProjects/blob/master/primesML.py).

(от 16 января 2021 г.)