Зачем нейросетям столько данных и почему «много» — это очень много
Современные модели обучают на терабайтах текстов и миллионах картинок. Почему нельзя обойтись малым, как ребёнок, которому хватает пары примеров? Разбираемся, что для модели значат данные и откуда берётся их ненасытный аппетит.
Нейросеть не получает знаний из ниоткуда — всё, что она умеет, она вычитала из примеров; чем их больше и разнообразнее, тем шире её мир.
Для модели данные — это и учебник, и единственный источник опыта. Без них даже самая большая сеть остаётся пустой оболочкой из случайных чисел.
Откуда у сети вообще берётся «знание»
Сеть стартует со случайными весами и ничего не умеет. Всё её мастерство возникает в процессе подгонки этих весов под примеры. Если показать модели сто фотографий котов, она уловит лишь то, что было на этих ста снимках. Покажете миллион — и она увидит котов рыжих и чёрных, спящих и в прыжке, в темноте и на солнце. Каждый новый пример — это ещё один кусочек закономерности, которую она строит. Данные для модели буквально и есть её картина мира.
Почему мало — это плохо
На малом наборе модель почти неизбежно начинает зубрить — запоминать конкретные примеры вместо общего правила (об этом была отдельная статья про переобучение). У большой сети миллиарды параметров; чтобы они настроились на закономерность, а не на случайные совпадения, примеров нужно сопоставимо много. Грубое правило таково: чем больше у модели «ручек настройки», тем больше данных требуется, чтобы выкрутить их осмысленно.
Хвост важнее середины
Есть и более тонкая причина аппетита. Частые случаи модель схватывает быстро: обычных котов в любой выборке полно. Но мир полон редкостей — кот в новогоднем костюме, в необычном ракурсе, странной породы. Каждая такая ситуация встречается редко, но их бесчисленное множество, и в сумме они составляют немалую долю реальности. Чтобы модель не терялась на нестандартном, в данных должны попасться и эти редкие хвосты — а для этого выборка обязана быть огромной.
| Мало данных | Модель зубрит, валится на новом и редком |
| Много данных | Улавливает закономерность, держит редкие случаи |
Количество — не единственное, что важно
Гнаться за объёмом вслепую опасно. Если в данных полно ошибок, перекосов и мусора, модель прилежно их выучит — принцип «мусор на входе, мусор на выходе» работает здесь безотказно. Качество и разнообразие данных зачастую важнее голого размера:
- Чистота. Ошибки и неверные метки сбивают обучение.
- Разнообразие. Однотипные примеры дают узкую, хрупкую модель.
- Представительность. Если в данных перекос, модель унаследует его как предвзятость — и будет несправедлива к недопредставленным случаям.
Когда данных взять негде
Иногда настоящих примеров мало — скажем, снимков редкой болезни. Тогда выручают приёмы экономии. Аугментация создаёт новые примеры из имеющихся: картинку поворачивают, отражают, меняют яркость — и из одного снимка получается десяток. А дообучение позволяет взять модель, уже натренированную на гигантском общем наборе, и доучить её под узкую задачу всего на нескольких примерах — общие признаки она уже знает.
params = 1_000_000 # параметров в модели
per_param = 10 # эмпирически — примеров на параметр
print(f"нужно порядка {params * per_param:,} примеров")
# нужно порядка 10,000,000 примеров — отсюда и терабайтыВот почему «много» — это очень много
Данные — это топливо обучения. Большая модель без больших данных похожа на мощный двигатель с пустым баком: потенциал есть, движения нет. Именно поэтому сбор, очистка и разметка данных — часто самая трудоёмкая и дорогая часть всей работы над ИИ, куда более кропотливая, чем сам код модели.