Проверка работоспособности на этапе обучения алгоритма - PullRequest
2 голосов
/ 29 марта 2012

У меня есть алгоритм сжатия изображений, который я могу обучить, а затем добавить в него несколько тестовых изображений. Кажется, что-то не так с этим кодом. Чтобы проверить это, я попытался дать ему тот же тестовый образ, с которым я тренировался (т.е. набор тестов == набор поездов). Теперь общий вопрос, который у меня есть, следующий:

Что произойдет, если вы протестируете алгоритм с теми же данными, с которыми вы его обучили?

Мое подозрение в том, что я должен получить тот же результат, как если бы я никогда не обучал алгоритм (т. Е. Только что проверил его с исходными данными без какой-либо подготовки)

Что вы думаете об этой ситуации? И какой тип тестов общего характера (например, проверка работоспособности) вы предлагаете, чтобы убедиться, что этап обучения алгоритмам выполнен разумно?


Спасибо за ваши ответы. Алгоритм использует взвешивание дерева контекста, которое вычисляется с вероятностью 0 или 1 в определенной точке полутоновых изображений. Он использует контекст до этой определенной точки для оценки вероятности (0/1). Коэффициент сжатия (бит / байт) является мерой совершенство результата. Сначала я запустил ctw для одного изображения (x), а сжатие составило 0,75, а затем я тренировался, например, с 6 изображениями и протестировал то же изображение (x), которое не входит в тренировочный набор. Но степень сжатия после тренировки составляет 0,80 бит / байт. Изображения 2048 * 2048 оттенков серого. После получения этих результатов я попытался проверить правильность ctw с помощью перекрестной проверки и получил странные результаты, которые я объяснил ранее.

Я надеюсь, что эта информация будет полезна, чтобы дать мне ответ.

Спасибо

Ответы [ 2 ]

2 голосов
/ 29 марта 2012

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

Трудно сказать, потому что я не уверен, как вы преподаете алгоритм сжатия. Используете ли вы соотношение исходного и выходного размера файла в качестве меры "добротности" результата? Как вы настраиваете алгоритм на основе этого, и как вы делаете так, чтобы эти корректировки вызывали сходимость, а не только случайные эффекты?

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

1 голос
/ 29 марта 2012

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...