2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу 1, 2  След.
 
 Переобучение на валидационном наборе
Сообщение13.06.2024, 19:59 


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

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

Но не будет ли это похоже на таки обучение сети на валидационном наборе и таки ее возможное переуобучение? Хотя тут валидационное множество и не участвует прямо в пересчете весов сети (т.е. не участвует в обучении), но косвенно мы же "руками" все равно так или иначе подгоняем сеть под наилучшее соответствие валидационному набору?

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

 Профиль  
                  
 
 Re: Переобучение на валидационном наборе
Сообщение13.06.2024, 20:08 


12/07/15
3322
г. Чехов
Есть существенная разница: остановить обучение после нахождения нескольких минимумов от остановки обучения в глобальном минимуме. Я так понимаю, в этом вопрос.

 Профиль  
                  
 
 Re: Переобучение на валидационном наборе
Сообщение13.06.2024, 20:29 
Заслуженный участник
Аватара пользователя


16/07/14
9166
Цюрих
sergey zhukov в сообщении #1642523 писал(а):
Но не будет ли это похоже на таки обучение сети на валидационном наборе и таки ее возможное переуобучение?
Будет, и возможно. В пределе - представьте, что у вас "обучение" это перебор всех возможных весов, и выбираете просто глобальный минимум по валидационному набору.

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

 Профиль  
                  
 
 Re: Переобучение на валидационном наборе
Сообщение13.06.2024, 21:09 
Заслуженный участник


23/05/19
1163
sergey zhukov
Иногда разбивают на три набора: тренировочный, валидационный и тестовый. На тренировочном обучают автоматически, на валидационном "руками" (то, про что Вы писали) и на тестовом лишь проверяют, но никак не учитывают эти результаты в обучении.

 Профиль  
                  
 
 Re: Переобучение на валидационном наборе
Сообщение13.06.2024, 21:51 


15/11/15
1080
Dedekind в сообщении #1642533 писал(а):
Иногда разбивают на три набора: тренировочный, валидационный и тестовый.

Дык, ну и что, я не вижу, как это решит проблему, описанной ТС )

 Профиль  
                  
 
 Re: Переобучение на валидационном наборе
Сообщение13.06.2024, 22:00 
Заслуженный участник


23/05/19
1163
gevaraweb в сообщении #1642539 писал(а):
Дык, ну и что, я не вижу, как это решит проблему, описанной ТС )

Ну как, насколько я понял, ТС опасается, что информация про тестовые данные "просочится" в тренировочную выборку. С таким подходом, что я описал - не просочится.

 Профиль  
                  
 
 Re: Переобучение на валидационном наборе
Сообщение13.06.2024, 23:05 
Заслуженный участник
Аватара пользователя


16/07/14
9166
Цюрих
Dedekind в сообщении #1642540 писал(а):
С таким подходом, что я описал - не просочится
Если не принимать на основе метрики на тестовом датасете никаких решений. Если смотреть на результаты хотя бы двух моделей на нем, и выбирать с учетом этих результатов - то формально уже просочится.

 Профиль  
                  
 
 Re: Переобучение на валидационном наборе
Сообщение13.06.2024, 23:34 


10/03/16
4444
Aeroport
mihaild в сообщении #1642550 писал(а):
Если смотреть на результаты хотя бы двух моделей на нем, и выбирать с учетом этих результатов - то формально уже просочится.


:mrgreen: :mrgreen: ++++++++

 Профиль  
                  
 
 Re: Переобучение на валидационном наборе
Сообщение14.06.2024, 00:12 
Заслуженный участник


23/05/19
1163
mihaild в сообщении #1642550 писал(а):
Dedekind в сообщении #1642540 писал(а):
С таким подходом, что я описал - не просочится
Если не принимать на основе метрики на тестовом датасете никаких решений. Если смотреть на результаты хотя бы двух моделей на нем, и выбирать с учетом этих результатов - то формально уже просочится.

Формально да, но гораздо меньше, чем в подходе из стартового поста. И разве есть подходы еще лучше?

 Профиль  
                  
 
 Re: Переобучение на валидационном наборе
Сообщение14.06.2024, 00:17 
Заслуженный участник
Аватара пользователя


16/07/14
9166
Цюрих
Dedekind в сообщении #1642563 писал(а):
Формально да, но гораздо меньше, чем в подходе из стартового поста. И разве есть подходы еще лучше?
Ничего принципиально лучшего нет. И на практике даже такое разбиение обычно не нужно, хватает достаточно большого валидационного сета.
Нестационарность при валидации в любом случае создает гораздо больше проблем, чем переобучение на валидационный сет. При современых типичных объемах данных переобучиться под валидационный сет подборм пары десятков гиперпараметров невозможно.

 Профиль  
                  
 
 Re: Переобучение на валидационном наборе
Сообщение14.06.2024, 09:00 


17/10/16
4828
Примерно это я имел ввиду:
Изображение

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

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

 Профиль  
                  
 
 Re: Переобучение на валидационном наборе
Сообщение14.06.2024, 09:21 


15/11/15
1080
sergey zhukov в сообщении #1642599 писал(а):
Вообще, у нас ведь нет задачи получить глобальный минимум на валидационном наборе (иначе на нем и следует тренировать сеть)?

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

sergey zhukov в сообщении #1642599 писал(а):
При стохастическом спуске, когда мы ищем из нескольких минимумов на валидационном множестве самый глубокий, есть вероятность, что он появится тогда, когда мы залезем в минимум "Тест" уже достаточно глубоко. Вряд ли это будет глобальный минимум "Вал".

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

 Профиль  
                  
 
 Re: Переобучение на валидационном наборе
Сообщение14.06.2024, 09:38 


17/10/16
4828
gevaraweb
Можно говорить о четырех видах минимума:
1. Глобальный минимум на валидационном наборе
2. Глобальный минимум на тренировочном наборе
3. Глобальный минимум на сумме этих наборов
4. Минимум на валидационном наборе при условии, что он лежит на кривой градиентного спуска в минимум на тестовом наборе.

При тренировке сети мы ищем минимум 4. Но если стохастически тренировать сеть очень долго и выбрать самый глубокий минимум 4 , то он может оказаться ближе к минимуму 3. Про это примерно речь.

 Профиль  
                  
 
 Re: Переобучение на валидационном наборе
Сообщение14.06.2024, 09:40 


15/11/15
1080
sergey zhukov в сообщении #1642605 писал(а):
2. Глобальный минимум на тренировочном наборе
Дык, он разве не равен нулю?

 Профиль  
                  
 
 Re: Переобучение на валидационном наборе
Сообщение14.06.2024, 09:48 


17/10/16
4828
gevaraweb
Не обязательно, данные в тренировочном наборе могут быть противоречивыми. Да и вообще все равно, чему он равен. Просто минимум.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 21 ]  На страницу 1, 2  След.

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group