Я развиваю популяцию нейронных сетей, и я борется с нормализацией показателей пригодности (до значений в диапазоне от 0 до 1), так что номер сам по себе наиболее значим. Проблема в том, что агенты тестируются в разных условиях - они участвуют в разных играх, а для каждой игры используется другая функция фитнеса. Функции фитнеса выглядят примерно так:Как нормализовать баллы по фитнесу?
agentsFitness[indiv][0] += Util.mean(speed) * (games[0].getConstant(0) - Math.sqrt((Math.abs((speed[LEFT] - speed[RIGHT]))) * (games[0].getConstant(1) - Util.normalize(0, 4000, maxIRActivation))));
, но каждый из них будет принимать разные входные данные. Я могу легко нормализовать числа для каждого из них отдельно, потому что я могу оценить максимумы и минимумы ввода. Некоторые из них будут в диапазоне (-30 000, 360 000) и некоторые (0, 900).
Часть, которую мне трудно найти, заключается в том, что агенты могут быть протестированы на две, три или более игры одновременно, поэтому их оценка пригодности будет суммой баллов по всем играм. Кроме того, новые игры могут быть внедрены/развиты. Здесь не подходит минимальная и максимальная нормализация жесткого кодирования.
Если я пытаюсь использовать очень большие макс и мин, я получаю оценки в диапазоне (0,40, 0,45) для игр с меньшими входными значениями, которые скрывают основное разнообразие баллов.
Любые предложения о том, как эти показатели пригодности могут быть нормализованы, будут очень признательны.
нейронного передаточная функция является гиперболический тангенс. Для этого мне не нужно вводить данные для нормализации.Но когда дело доходит до построения пригодности агентов и пригодности игр (игры - это функции фитнеса), их сложно анализировать, когда их ценности имеют такой широкий диапазон. Поэтому я хочу их нормализовать (0, 1). Я следил за максимумами и минимумами, и он работает. Это не идеально (поскольку ввод иногда превышает оценочные значения), поэтому я попытаюсь выполнить дополнительную итерацию. Спасибо за совет! –
Просто предложение ... вы можете попробовать умножить коэффициент масштабирования с помощью функции передачи tanh .... например: a * tanh ... где a <1. это может привести к выходу на управляемые пределы (опять же, это может нарушить обучение нейронов, я не уверен). – metsburg