Случайность в искусственном интеллекте и машинном обучении - PullRequest
10 голосов
/ 05 мая 2011

Этот вопрос возник у меня во время работы над двумя проектами в AI и ML.Что делать, если я строю модель (например, Классификационную нейронную сеть, K-NN, ... и т. Д.), И эта модель использует некоторую функцию, которая включает в себя случайность.Если я не исправлю начальное число, то получу разные результаты точности при каждом запуске алгоритма на одних и тех же данных обучения.Однако, если я исправлю это, то некоторые другие настройки могут дать лучшие результаты.

Достаточно ли усреднение набора значений точности, чтобы сказать, что точность этой модели составляет хх%?

Я неконечно, если это правильное место, чтобы задать такой вопрос / открыть такую ​​дискуссию.

Ответы [ 5 ]

6 голосов
/ 05 мая 2011

Простой ответ, да, вы рандомизируете его и используете статистику, чтобы показать точность. Однако недостаточно просто усреднить несколько пробежек. Вам необходимо, как минимум, некоторое представление об изменчивости. Важно знать, означает ли «точность 70%» «точность 70% для каждого из 100 прогонов» или «точность 100% один раз и точность 40% один раз».

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

4 голосов
/ 05 мая 2011

Существуют модели, которые естественно зависят от случайности (например, случайные леса) и модели, которые используют случайность только как часть исследования пространства (например, инициализация значений для нейронных сетей), но на самом деле имеют четко определенный, детерминированный, целевая функция.

Для первого случая вы захотите использовать несколько начальных чисел и сообщить о средней точности, станд.отклонение, и минимум, который вы получили.Часто хорошо, если у вас есть способ воспроизвести это, так что просто используйте несколько фиксированных начальных чисел.

Во втором случае вы всегда можете сказать, только по тренировочным данным, какой прогон лучше (хотя это можетна самом деле не тот, который дает вам лучшую точность теста!).Таким образом, если у вас есть время, то лучше сделать 10 запусков, а затем оценить один из них с лучшей ошибкой обучения (или ошибкой проверки, просто никогда оценить при тестировании за это решение).Вы можете подняться на уровень выше, выполнить несколько многократных прогонов и получить стандартное отклонение.Однако, если вы обнаружите, что это важно, это, вероятно, означает, что вы не пытались достаточно инициализировать или что вы не используете правильную модель для ваших данных.

2 голосов
/ 05 мая 2011

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

Чтобы проверить точность, рекомендуется выделить часть ваших входных шаблонов и избегать обучения этим шаблонам (при условии, что вы изучаете из набора данных). Затем вы можете использовать набор, чтобы проверить, правильно ли ваш алгоритм изучает базовый шаблон или просто запоминает примеры.

Еще одна вещь, о которой стоит подумать, это случайность вашего генератора случайных чисел. Стандартные генераторы случайных чисел (такие как rand из <stdlib.h>) во многих случаях могут не давать оценку, поэтому ищите более надежный алгоритм.

2 голосов
/ 05 мая 2011

Я обобщаю ответ на основании того, что я получаю по вашему вопросу. Полагаю, точность - это всегда средняя точность нескольких прогонов и стандартное отклонение.Поэтому, если вы учитываете точность, вы используете различные начальные числа для генератора случайных чисел, разве вы не рассматриваете больший диапазон входных данных (что должно быть хорошо).Но вы должны учитывать стандартное отклонение, чтобы учитывать точность.Или я правильно понял ваш вопрос?

0 голосов
/ 05 мая 2011

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

...