Соревнование
Найдите наименьшую нейронную сеть с прямой связью, чтобы при любом трехмерном входном векторе с целочисленными значениями в сеть выводила самый большой (т. Е. «Наиболее положительный») корень полином с ошибкой, строго меньшей .
допустимость
Понятие допустимости в моей предыдущей игре в нейронную сеть выглядело немного ограничительным, поэтому для этой задачи мы используем более либеральное определение нейронной сети с прямой связью:
Нейрон является функцией , который задается вектором из весов , A смещения , и функции активации следующим образом:
Нейронная сеть с прямой связью с входными узлами является функцией которая может быть построена из последовательности нейронов, где каждый принимает входные данные из и выводит скаляр . С учетом некоторого заданного множестваизвыходных узлов, то выход из нейронной сети является вектор .
Поскольку функции активации могут быть настроены для любой конкретной задачи, нам нужно ограничить класс функций активации, чтобы эта задача была интересной. Разрешены следующие функции активации:
Идентичность.
РЕЛУ.
Softplus.
Сигмовидной.
Синусоида.
В целом, допустимая нейронная сеть определяется входными узлами, последовательностью нейронов и выходными узлами, в то время как каждый нейрон задается вектором весов, смещением и функцией активации из приведенного выше списка. Например, допустима следующая нейронная сеть, хотя она не соответствует цели производительности этой задачи:
Входные узлы:
Нейроны: для
Выходные узлы:
Эта сеть состоит из 8 нейронов, каждый с нулевым смещением и активацией идентичности. Словом, эта сеть вычисляет обобщенную последовательность Фибоначчи, сгенерированную и а затем выводит 5-е, 9-е и 10-е числа из этой последовательности в указанном порядке.
счет
Дано вещественное число с завершающим десятичным разложением, пусть наименьшее неотрицательное целое число для которого , и пусть наименьшее неотрицательное целое число для которого является целым числом. Тогда мы говорим , является точностью от .
Например, имеет точность , тогда как имеет точность .
Ваша оценка - это сумма точности весов и смещений в вашей нейронной сети.
(Например, приведенный выше пример имеет оценку 16.)
верификация
В то время как корни могут быть выражены через кубическую формулу , самый большой корень, возможно, легче всего получить с помощью числовых средств. Следуя предложению @ xnor, я вычислил самый большой корень для каждого выбора целых чисел , и результаты можно найти здесь . Каждая строка этого текстового файла имеет форму a,b,c,root
. Например, первая строка сообщает, что самый большой корень из составляет примерно .
Редактировать: исходный файл, который я разместил, имел ошибки в тех случаях, когда полином имел многократный корень. Текущая версия не должна содержать таких ошибок.
a
отличны от нуля или даже равны 1. Кроме того, я бы порекомендовал ввести несколько тестовых случаев, чтобы получить корни с высокой точностью, чтобы мы могли проверить, что наши значения находятся в пределах 0,1. Также было бы хорошо иметь выходные данные для всех возможных входов, вероятно, в виде ссылки, поскольку это много для поста.
x -> a * sin(b * softplus(x) + c)
может переопределить любое конечное число точек данных с целочисленной x
или произвольной точностью, используя чрезвычайно большую и точную частоту.
a=0
квадратик имеет два сложных корня?