Як налагоджувати моделі машинного навчання

image

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

Наприклад, моя звичайна стратегія щодо усунення помилок складається з наступних кроків:

  1. Спочатку переконаємося, що проблема не в оптимізаторі. Це можна перевірити, додавши ознаки, які ідеально відповідають мітках класів. Переконайтеся, що у цьому випадку класифікація навчальних даних працює вірно. Якщо ні, то проблема, швидше за все, в оптимізаторі або в надто маленькій вибірці.
  2. Видалити всі ознаки крім доданих на кроці 1. Перевірте, що класифікація працює в цьому випадку. Якщо так, поступово повертайте ознаки на місце зростаючими порціями (зазвичай за експоненціальним законом). Якщо в якийсь момент модель перестає працювати, значить, у вас занадто багато ознак або занадто мало даних.
  3. Видаліть додані ознаки і значно збільшити ваш клас гіпотез, наприклад, додавши безліч квадратичних ознак. Перевірте, що класифікація працює. Якщо ні — можливо, нам потрібен кращий клас гіпотез.
  4. Скоротіть обсяг навчальних даних в два рази. Зазвичай із зростанням обсягу навчальних даних точність тесту прагне до асимптоте, а значить, якщо зменшення їх обсягу в два рази має значних ефект, то ви ще далекі від асимптоти і варто взяти більше даних.
Проблема в тому, що звичайний розбір в термінах помилок прийшов з теорії, а теорія властиво упускати з уваги деякі речі з-за певного рівня абстракції. Зазвичай абстракції доводиться мати справу з тим фактом, що кінцева мета вже була приведена до задачі iid (гіпотеза простої вибірки) / PAC learning (теорія ймовірно майже коректного навчання), тому ми не можемо бачити всі типи помилок — їх приховує абстракція.

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

Я постарався дати кроків прийнятні імена (ліва частина прямокутників), а потім привести приклад з реального життя — з галузі розміщення реклами. Пройдемося по всіх кроків і розглянемо, які помилки можуть виникати на кожному з них.



  1. На першому кроці ми ставимо за мету збільшення прибутків нашої компанії, а щоб досягти її, вирішуємо оптимізувати відображення рекламних банерів. Уже на цьому кроці ми обмежуємо максимальне збільшення прибутку, на що ми можемо сподіватися, так як, можливо, варто сфокусуватися не на рекламу, а, наприклад, на створення кращого продукту. Це свого роду бізнес-рішення, але і, може бути, один з головних питань: а тими речами ми займаємося?
  2. Тепер, коли у нас є реальний механізм (оптимізація розміщення реклами), необхідно перетворити його у завдання навчання (або немає). В даному випадку ми вирішили зробити це, спрогнозувавши, куди будуть клікати користувачі, а потім використовуючи отримані прогнози для найкращого розміщення рекламних банерів. Можна використовувати інформацію про кліках для прогнозування збільшення продажів? Це питання сам по собі — область активних досліджень. Але як тільки ви вирішуєте прогнозувати кліків, ви вже відчуваєте деякі втрати із-за невідповідності задачі прогнозування і цілі оптимізації розміщення банерів.
  3. Тепер потрібно зібрати небагато даних. Можна зробити це, реєструючи взаємодії з працюючою системою. І тут ми отримаємо весь зоопарк похибок, так як дані зібрані не з тієї системи, яку ви плануєте розгорнути (вона знаходиться в процесі побудови), що призводить до проблем, пов'язаних зі зміщенням розподілу.
  4. Ймовірно, у вас немає можливості залогировать все, що відбувається на поточній системі, а значить, ви зможете зібрати тільки певний набір інформації. Припустимо, ви зібрали інформацію про запити, банерах і кліки. У цьому випадку ми втрачаємо всі дані, які не були зареєстровані, наприклад, час дня, день тижня, інформація про користувача, які теж можуть мати значення. Все це також обмежує вашу максимально можливий прибуток.
  5. Потім зазвичай вибирається подання даних, наприклад, квадратичні відносини між набором ключових слів запиту і набором ключових слів банера зі знаком + або — в залежності від того, клікнув користувач на банер. Це той момент, коли ми можемо використовувати теоретичні викладки, але вони обмежені в основному поняттям байєсівської помилки. Чим більше інформації отримано і чим краще вибрано подання даних, тим менше буде ця помилка.
  6. Далі необхідно вибрати клас гіпотез. Особисто я вибрав би дерева рішень. Звідси й мої помилки апроксимації.
  7. Нам потрібно зібрати навчальні дані. У реальному світі не існує простих вибірок (i.i.d.), так що які дані ми не візьмемо, вони завжди будуть містити похибку. Розподіл може відрізнятися від розподілу тестових даних (наприклад, тому що поведінка може відрізнятися в різні місяці). Вибірка може не бути незалежною (тому що поведінка не сильно розходиться в сусідні секунди). Це все буде коштувати нам точності.
  8. Тепер ми навчаємо нашу модель, можливо налаштовуючи також і гиперпараметры. На цьому кроці з'являються помилки оцінки (estimation error).
  9. Потім підбираємо тестові дані для вимірювання продуктивності моделі. Звичайно, ці дані скажуть нам тільки про те, наскільки добре модель буде працювати в майбутньому, якщо ці дані взагалі про щось говорять. На практиці, вибірка навряд чи буде репрезентативною, хоча б тому що з плином часу дані будуть змінюватися.
  10. Після того, як прогнозування буде виконано на тестовій вибірці, необхідно вибрати критерії оцінки успішності. Можна використовувати точність, F-міру, площа під ROC-кривою і т. д. Ступінь того, як ці показники співвідносяться з тим, що для нас справді важливо (збільшення прибутку), визначить успіх досягнення головної мети. Якщо метрика не відповідає цьому, ми можемо опинитися в збитку замість прибутку.
(Невелике зауваження: хоча і розташував кроки в певному порядку, не обов'язково цього порядку дотримуватися, багато стадії можна поміняти місцями. Крім того, у цьому процесі роботи над поліпшенням системи може бути безліч ітерацій і залежностей).

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

Коли розробляють нові метрики для оцінки моделей (такі, як Bleu для машинного перекладу), намагаються брати до уваги їх відповідність кінцевої мети (подібно описаному в пункті 10).

Література по темі:


О, а приходьте до нас працювати? :)wunderfund.io — молодий фонд, який займається високочастотної алготорговлей. Високочастотна торгівля — це безперервне змагання кращих програмістів і математиків всього світу. Приєднавшись до нас, ви станете частиною цієї захоплюючої сутички.

Ми пропонуємо цікаві і складні завдання з аналізу даних і low latency розробки для захоплених дослідників і програмістів. Гнучкий графік і ніякої бюрократії, швидко приймаються рішення і втілюються в життя.

Приєднуйтесь до нашої команди: wunderfund.io
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.