Использование перекрестной проверки K-Fold для улучшения проверки вашей модели Transformers на примере текстовой классификации BERT.

Первоначально опубликовано на https://www.philschmid.de 7 апреля 2020 г.

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

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

Выбор K обычно 5 или 10, но формального правила нет. По мере того, как K становится больше, подмножества передискретизации становятся меньше. Число K также определяет, как часто ваша модель машинного обучения обучается. В большинстве случаев мы разделяем наши данные на наборы для обучения / проверки по 80% -20%, 90% -10% или 70% -30% и обучаем нашу модель один раз. При перекрестной проверке мы разделяем нашу модель K раз, а затем обучаем. Имейте в виду, что это приведет к более длительному тренировочному процессу.

K-Fold шаги:

  1. Перемешайте набор данных.
  2. Разделите набор данных на K групп.
  3. Для каждой уникальной группы g:
    1. Возьмите g в качестве тестового набора данных.
    2. Возьмите оставшиеся группы в качестве набора обучающих данных.
    3. Подберите модель к обучающему набору и оцените его на тестовом наборе.
    4. Сохраните оценочную оценку и выбросьте модель.
  4. Обобщите навыки модели, используя выборку оценок модели.

Результаты K-кратной перекрестной проверки часто суммируются со средним значением оценок модели.

Пример Scitkit-Learn

Пример представляет собой простую реализацию с scikit-learn и scalar numpy array.

Пример простых преобразователей (текстовая классификация BERT)

Пример представляет собой реализацию для BERT Text-Classification с simpletransformers библиотекой и scikit-learn.

Преимущества перекрестной проверки K-Fold

Использование всех данных: используя K-кратную перекрестную проверку, мы используем полный набор данных, что полезно, если у нас есть небольшой набор данных, потому что вы разделяете и тренируете свою модель K раз, чтобы увидеть ее производительность, а не трата X% на набор проверочных данных.

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

Достижение более высокой точности: проверяя вашу модель по нескольким «наборам проверки», мы получаем более высокий уровень надежности. Представим себе следующий пример: у нас есть 3 динамика и 1500 записей (по 500 на каждого выступающего). Если мы сделаем простой раздел «поезд / проверка», результат может сильно отличаться в зависимости от разделения.