Подтвердить что ты не робот

Как настроить функции для машинного обучения

Есть ли у вас какие-то советы или вы читаете, как создавать функции для машинного обучения? Хорошие функции ввода важны даже для нейронной сети. Выбранные функции повлияют на необходимое количество скрытых нейронов и необходимое количество примеров обучения.

Ниже приведен пример проблемы, но я вообще заинтересован в разработке функций.

Пример мотивации: Что было бы хорошим вкладом при рассмотрении головоломки (например, 15-головоломка или Sokoban)? Можно ли узнать, какое из двух государств ближе к цели?

4b9b3361

Ответ 1

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

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

Особенности крепления к вашему классификатору

Предположим, вы используете простой линейный классификатор, например логистическая регрессия или SVM с линейным ядром. Если вы считаете, что могут быть интересные взаимодействия между различными атрибутами, которые вы можете измерить и предоставить в качестве входных данных для классификатора, вам нужно вручную создать и предоставить функции, которые захватывают эти взаимодействия. Однако, если вы используете SVM с полиномиальным или гауссовским ядром, взаимодействия между входными переменными уже будут захвачены структурой модели.

Аналогично, SVM могут работать плохо, если некоторые входные переменные принимают гораздо больший диапазон значений, чем другие (например, большинство функций принимают значение 0 или 1, но одна функция принимает значения от -1000 до 1000). Поэтому, когда вы создаете конструкторские возможности для SVM, вы можете попробовать нормализовать значения своих функций, прежде чем предоставлять их классификатору. Однако, если вы используете деревья решений или случайные леса, такая нормализация не нужна, так как эти классификаторы устойчивы к различиям в величине между значениями, которые принимают различные функции.

Примечания В частности, решение головоломок

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