Кривая обучения SkikitLearn сильно зависит от размера пакета MLPClassifier ??? Или: как диагностировать смещение / дисперсию для NN?

В настоящее время я работаю над проблемой классификации с двумя классами в ScikitLearn с решателем adam и активацией relu. Чтобы выяснить, страдает ли мой классификатор высокой систематической ошибкой или высокой дисперсией, я построил кривую обучения с помощью встроенной функции Scikitlearns:

https://scikit-learn.org/stable/auto_examples/model_selection/plot_learning_curve.html

Я использую перекрестную проверку Group-K_Fold с 8 разделениями. Однако я обнаружил, что моя кривая обучения сильно зависит от размера пакета моего классификатора:

https://imgur.com/a/FOaWKN1

Это должно быть так? Я думал, что кривые обучения связаны с оценками точности, зависящими от части данных обучения, независимо от каких-либо пакетов / эпох? Могу ли я использовать эту встроенную функцию для пакетных методов? Если да, то какой размер пакета мне следует выбрать (полный пакет или размер пакета = количество обучающих примеров или что-то среднее между ними) и какой диагноз я получу на основании этого? Или как вы обычно диагностируете проблемы смещения / дисперсии классификатора нейронной сети?

Помощь будет очень признательна!


person S.Maria    schedule 26.03.2019    source источник
comment
Может быть, также для этого примера: Какой мне здесь был бы диагноз? Для меня это выглядит как высокая систематическая ошибка, поскольку оценка обучения и перекрестной проверки низкие. Однако, глядя на размер партии 200, похоже, что если бы я взял размер партии = количество обучающих примеров, оценка обучения была бы высокой, и это выглядело бы как переоснащение.   -  person S.Maria    schedule 26.03.2019


Ответы (1)


Да, время обучения зависит от размера партии.

Оптимальный размер пакета зависит от типа данных и общего объема данных.
В идеальном случае лучше всего подходит размер пакета, равный 1, но на практике с большими объемами данных такой подход неосуществим. < br /> Я думаю, вам нужно сделать это путем экспериментов, потому что вы не можете легко вычислить оптимальное значение.

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


Что такое стохастический градиентный спуск?

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

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

Что такое пакетный градиентный спуск?

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

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

Что такое мини-пакетный градиентный спуск?

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

Реализации могут выбрать суммирование градиента по мини-пакету или усреднение градиента, что дополнительно снижает дисперсию градиента.

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


Источник: https://machinelearningmaster.com/gentle-introduction-mini-batch-gradient-descent-configure-batch-size/

person Antoan Milkov    schedule 26.03.2019
comment
Еще один вопрос к моему пониманию мини-партии: правильно ли, что веса обновляются после обработки одной партии? Однако почему тогда кривая обучения меняется после каждого отдельного учебного примера? Похоже, с моей стороны есть неправильное представление, надеюсь, кто-нибудь сможет прояснить это - person S.Maria; 26.03.2019
comment
Думаю, я только что понял: после каждой партии модель обновляется. Однако кривая обучения оценивает модель для каждого обучающего примера. Чем больше обучающих примеров, тем выше обучающий балл в пределах последнего обновления последнего пакета. Однако тогда кривая обучения бесполезна для полного пакета, поскольку в моей кривой обучения никогда не будет обновлений? Это правильно? - person S.Maria; 26.03.2019
comment
И полезна ли вообще кривая обучения для нейронных сетей, если вы все равно тренируетесь в несколько эпох? Как вы оцениваете модель NN? Особенно в ScikitLearn? - person S.Maria; 26.03.2019