Ортогонализация в машинном обучении

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

Одна из проблем при разработке систем машинного обучения заключается в том, что существует так много вещей, которые вы можете попытаться изменить. Например, так много гиперпараметров, которые вы можете настроить. Одна из вещей, которые я заметил, заключается в том, что большинство людей, которые изучают машинное обучение, были действительно последовательны в том, что нужно настраивать? Попытаться добиться одного результата. Этот процесс мы называем ортогонализации.

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

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

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

Что делать, если вы хорошо работаете на наборе для разработчиков, но не на тестовом наборе?

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

Итак, ручки, которые вы используете для настройки, это:

1. Хорошо вписать тренировочный набор в функцию стоимости

-Если это не подходит, может помочь использование более крупной нейронной сети или переход на лучший алгоритм оптимизации.

2. Хорошо согласовывать набор разработки с функцией затрат

-Если это не подходит, может помочь регуляризация или использование большего тренировочного набора.

3.Тестовый набор хорошо подходит для функции стоимости

-Если это не подходит, может помочь использование большего набора для разработки

4. Хорошо работает в реальном мире

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