Чому дані слід перемішувати для завдань машинного навчання


30

У завданнях машинного навчання зазвичай перетасовувати дані та нормалізувати їх. Мета нормалізації зрозуміла (для того ж діапазону значень функції). Але, багато потрудившись, я не знайшов жодної цінної причини для перенесення даних.

Я читав цю публікацію тут, де обговорювали, коли нам потрібно переміщувати дані, але не очевидно, чому нам слід переміщувати дані. Крім того, я часто бачив у таких алгоритмах, як Adam або SGD, де нам потрібно спустити градієнт партії (дані повинні бути розділені на міні-партії, а розмір партії повинен бути вказаний). Відповідно до цього допису, важливо змінювати дані для кожної епохи, щоб вони мали різні дані для кожної партії. Тож, можливо, дані переміщуються і важливіше змінюються.

Чому ми це робимо?


1
Можливо, буде корисно вказати, чому відповідь у першому посиланні вам не допомогла. Інакше ми ризикуємо повторити вміст, про який вже говорилося, з невеликими вдосконаленнями.
E_net4 повідомляє про відновлення

Як я вже заявив, я хочу знати, чому ні, коли ви знаєте, чому? це дійсно там пояснено? Я взагалі не бачив жодного паперу для цього
Медіа

1
Для отримання додаткової інформації про вплив прикладного замовлення читайте Навчання навчальним планом [pdf].
Емре

1
Я розмістив це на CrossValidated і вважаю, що це актуально. stats.stackexchange.com/a/311318/89653
Josh

@Emre насправді ця стаття проти перетасування, дякую, я не чув про таке навчання.
Медіа

Відповіді:


18

Виходячи з того, що робити, коли запитання, розміщене на DataScience, є дублікатом запитання, розміщеного на CrossValidated? , Я надсилаю відповідь на те саме запитання, яке було задано на CrossValidated ( https://stats.stackexchange.com/a/311318/89653 ).

Примітка: у цій відповіді я маю на увазі мінімізацію втрат у навчанні, і я не обговорюю такі критерії зупинки, як втрата перевірки. Вибір критеріїв зупинки не впливає на процес / концепції, описані нижче.

Процес тренування нейронної мережі полягає у знаходженні мінімального значення функції втрат , де являє собою матрицю (або кілька матриць) ваг між нейронами, а являє навчальний набір даних. Я використовую підпис для щоб вказати, що наша мінімізація відбувається лише над вагами (тобто ми шукаємо таким, що мінімізоване), поки фіксований.WX WW XX(W)WXXWWX

Тепер, якщо припустити, що у нас є елементи в (тобто в мережі є ваги), - поверхня в розмірному просторі . Щоб дати візуальний аналог, уявіть, що у нас є лише дві ваги нейронів ( ). Тоді має просту геометричну інтерпретацію: це поверхня в тривимірному просторі. Це випливає з того, що для будь-яких заданих матриць ваг функцію втрат можна оцінити на і це значення стає висотою поверхні.W P P + 1 P = 2 W XPWPP+1P=2WX

Але є проблема невипуклості; поверхня, яку я описав, матиме численні локальні мінімуми, а тому алгоритми спуску градієнта чутливі до того, що вони "застрягають" у цих мінімумах, тоді як поблизу може лежати глибше / нижче / краще рішення. Це, швидше за все, відбудеться, якщо незмінний для всіх тренувань тренувань, оскільки поверхня фіксується для заданого ; всі його особливості статичні, включаючи різні його мінімуми.XXX

Рішенням цього є міні-серійні тренування в поєднанні з перетасуванням. Перемішуючи рядки і тренуючись лише на підмножині з них під час заданої ітерації, змінюється з кожною ітерацією, і насправді цілком можливо, що жодна дві ітерації протягом усієї послідовності тренувань і епох тренувань не будуть виконані в точно такому ж . Ефект полягає в тому, що вирішувач може легко «відскочити» від локального мінімуму. Уявіть, що вирішувач застряг у локальному мінімумі під час ітерації з навчальним міні-партією . Цей локальний мінімум відповідає оцінюється за певним значенням ваг; ми будемо називати цеX i X i X i ( W i ) X i + 1 X i + 1 ( W i ) X i ( W i ) X i + 1X i X W WXXiXiXi(Wi). При наступній ітерації форма нашої втрати поверхні фактично змінюється, оскільки ми використовуємо , тобто може приймати дуже інше значення від і цілком можливо, що це не відповідає локальному мінімуму! Тепер ми можемо обчислити оновлення градієнта і продовжити навчання. Щоб було зрозуміло: форма взагалі буде відрізнятися від форми . Зауважте, що тут я маю на увазі функцію втрат оцінену на тренувальному наборі ; це повна поверхня, визначена за всіма можливими значеннямиXi+1Xi+1(Wi)Xi(Wi)Xi+1XiXW, А не оцінки цієї втрати (який є тільки скаляром) для певного значення . Зауважимо також, що якщо міні-партії використовуються без переміщення, все ще існує ступінь "диверсифікації" поверхонь, що втрачаються, але буде обмежена (і відносно невелика) кількість унікальних похибних поверхонь, які бачить вирішувач (конкретно, він побачить той самий точний набір міні-партій - і, отже, втратні поверхні - протягом кожної епохи).W

Одне, чого я навмисно уникнув, - це обговорення розмірів міні-партії, оскільки на це є мільйон думок, і це має значні практичні наслідки (більша паралелізація може бути досягнута більшими партіями). Однак я вважаю, що варто згадати наступне. Оскільки оцінюється шляхом обчислення значення для кожного рядка (і підсумовування або взяття середнього; тобто комутативного оператора) для заданого набору вагових матриць , розташування рядків не має ефекту при використанні повно- спуск градієнта партії (тобто коли кожна партія є повною , а ітерації та епохи - це одне і те ж). X W X XXWX X


+1. Ця відповідь технічно краще пояснена, ніж інша відповідь з більшою кількістю поданих заявок.
Gokul NC

29

Дані про перемішування служать для зменшення дисперсії та забезпечення того, щоб моделі залишалися загальними та менше набували.

Очевидний випадок, коли ви змішуватимете свої дані, це якщо ваші дані відсортовані за їх класом / ціллю. Тут ви хочете змінити переконайтесь, щоб переконатися, що ваші набори для навчання / тесту / перевірки є репрезентативними для загального розподілу даних.

Для групового спуск градієнта застосовується та ж логіка. Ідея спуску градієнта партії полягає в тому, що, обчисливши градієнт на одній партії, ви зазвичай отримаєте досить хорошу оцінку "справжнього" градієнта. Таким чином, ви економите час обчислень, не потребуючи кожного разу обчислювати "справжній" градієнт для всього набору даних.

Ви хочете перемішувати свої дані після кожної епохи, оскільки у вас завжди буде ризик створювати партії, що не є репрезентативними для загального набору даних, а отже, ваша оцінка градієнта буде вимкнена. Переміщення даних після кожної епохи гарантує, що ви не будете «застрягати» занадто багато поганих партій.

У звичайному стохастичному градієнтному спуску, коли кожна партія має розмір 1, ви все одно хочете перемішувати свої дані після кожної епохи, щоб зберегти загальне навчання. Дійсно, якщо точка 17 даних завжди використовується після точки 16 даних, її власний градієнт буде зміщений з будь-якими оновленнями даних 16, зробленими на моделі. Перетасовуючи свої дані, ви гарантуєте, що кожна точка даних створює "незалежну" зміну на моделі, не будучи упередженими однаковими точками перед ними.


1
Як я пояснив, ви перетасуєте свої дані, щоб переконатися, що ваші навчальні / тестові набори будуть репрезентативними. У регресії ви використовуєте перетасування, тому що хочете переконатися, що ви не тренуєтесь лише на малих значеннях, наприклад. Перемішування - це переважно захисна програма, в гіршому випадку - це не корисно, але ви нічого не втрачаєте, роблячи це. Що стосується стохастичної частини градієнтного спуску, ви знову хочете переконатися, що модель не така, якою вона є, через порядок, в який ви її подавали дані, тож, щоб уникнути цього, ви перетасуєтесь
Валентин Каломме

2
Я думаю, що перетасування зменшує дисперсію і, ймовірно, збільшує упередженість (тобто, це зменшує тенденцію до перевиконання даних). Уявіть, що ми робили повний градієнтний спуск, так що епохи та ітерації - це одне і те ж. Тоді існує глобальний мінімум (не те, що ми його обов'язково можемо знайти), який намагається знайти наш вирішальник. Якщо ми використовуємо втрати MSE, то ми зведемо до мінімуму упередження, якби ми могли кожного разу дійти до цього рішення. Але оскільки цей глобальний мінімум, ймовірно, знайдеться в іншому місці для різних навчальних наборів, це рішення, як правило, має великі розбіжності.
Джош

2
Перетасовуючи, ми рідше сходимося до рішення, що лежить в глобальному мінімумі для всього навчального набору (більш високий ухил), але більше шансів знайти рішення, яке узагальнює краще (менша дисперсія).
Джош

7

Припустимо, дані сортуються у визначеному порядку. Наприклад, набір даних, який сортується на основі їх класу. Отже, якщо ви виберете дані для навчання, валідації та тестування, не враховуючи дану тему, ви виберете кожен клас для різних завдань, і він не завершить процес.

Отже, щоб уникнути подібних проблем, простим рішенням є переміщення даних, щоб отримати різні набори даних про навчання, перевірку та тестування.

Щодо міні-партії, відповіді на цю публікацію можуть бути вирішенням вашого питання.


1
@Media Найбільш спорідненою відповіддю у наданому посиланні є: "Перемішування міні-партій робить градієнти більш змінними, що може сприяти конвергенції, оскільки це збільшує ймовірність потрапляння в хороший напрямок"
OmG

Насправді я це бачив у статті SGD, але це, як стверджували автори статті, є причиною конвергенції, а не перетасуванням. Я побачив посилання і трохи сумніваюся в цьому. для більшої наочності дивіться цей дивовижний папір. Автори згадали про це, але, як ви побачите, немає точної причини для переміщення
Медіа

1

Нам потрібно переміщуватися тільки для minibatch / SGD, немає необхідності в партійному градієнті спуску.

Якщо не перетасувати дані, дані можуть бути відсортовані або подібні точки даних будуть лежати поруч, що призводить до повільної конвергенції:

  • Подібні зразки дають подібні поверхні (1 поверхня для функції втрати для 1 зразка) -> градієнт вказуватиме на подібні напрямки, але цей напрямок рідко вказує на мінімум-> він може вести градієнт дуже далеко від мінімального
  • "Найкращий напрямок": середнє значення для всіх градієнтів усіх поверхонь (спуск градієнта партії), яке вказує безпосередньо на мінус
  • "Міні-партія напрямків": середнє значення для різних напрямків буде вказувати ближче до мінімального, хоча жодне з них не вказує на мінімальне
  • "Напрямок 1-зразок": крапка до мінімальної порівняно з міні-партією

Я намалював сюжет функції втрат L-2 для лінійної регресії y=2x тут


1

Тому що оцінюється обчисленням значення для кожного рядкаXWX

Доповнюючи відповідь @ Джоша, я хотів би додати, що з тієї ж причини перемішування потрібно зробити перед тим, як проводити групування. В іншому випадку ви отримуєте однакову кінцеву кількість поверхонь.


Дякуємо та вітаємо нашу громаду.
Медіа

1

Для найкращої точності моделі завжди рекомендується, щоб дані тренувань мали бути всіма смаками даних.

Переміщення даних про навчання допомагає нам досягти цієї мети.


1

Переміщення рядків і тренування лише на їх підмножині під час заданої ітерації 𝑋 змінюється з кожною ітерацією, і насправді цілком можливо, що дві ітерації протягом усієї послідовності тренувань і епох тренувань не будуть виконані в точно такій самій 𝑋

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.