Въведение

Преди няколко месеца стартирахме състезание по наука за данни на известната платформа Kaggle. Целта беше да се разработи продуктов класификатор, базиран на анализ на изображения. Наистина нашият каталог се състои от повече от 30 милиона продукта. Да се ​​уверим, че всички те са добре класифицирани, е много предизвикателство, както и решаващо, като се има предвид, че множество критични алгоритми (класиране в търсачките, препоръка на продукти и т.н.) разчитат на категоризиране на продукти.
Досега прилагахме текст техники за копаене към текстовите описания на продуктите, за да предвидите тяхната категория. Предишно предизвикателство, хоствано на френската платформа datascience.net, беше посветено на този подход. Въпреки това бяхме убедени, че може да се постигне значително подобрение чрез интегриране на изображения в процес на подготовка.

Наборът от данни, предоставен за предизвикателството, съдържа повече от 15 милиона изображения на около 9 милиона продукта (т.е. почти половината от текущия ни каталог), което го прави една от най-големите публични бази данни с етикетирани изображения. Тези продукти са разделени в повече от 5000 категории, което прави това предизвикателство проблем с екстремна мултимодална класификация. Победителите в състезанието си поделиха награда от $35 000.

Предизвикателството приключи на 14 декември 2017 г. и обещанията бяха спазени! Повече от 750 състезатели (разпределени в 627 отбора) взеха участие в предизвикателството, сред които някои от най-талантливите учени по данни и експерти по дълбоко обучение по света. Фигура 1 показва развитието на точността по време на предизвикателството

Резултатите са много впечатляващи, тъй като победителят най-подходящ (понастоящем №1 в глобалната класация на kaggle) достигна 79,6% точност в частната класация и повече от 120 състезатели преодоляха 70% от правилната категоризация (вижте Фигура 2 по-долу).

Използвани стратегии

Можете да получите добър преглед на различните алгоритми за машинно обучение, използвани от състезателите, като разгледате специалния „Дискусионен раздел“ на Kaggle или прочетете „публикацията на победителя“. Успяхме да идентифицираме някои ключови фактори за успех, които са описани по-долу.

Скали за дълбоко обучение!

Дори ако може да се постигне интересна производителност чрез традиционните ML алгоритми (вижте например „подаване на базова линия“), по-голямата част от най-високо класираните решения включват дълбоки невронни мрежи.
Обичайните реализации на python (TensorFlow, Keras, PyTorch) бяха в играта и най-добрите резултати бяха получени чрез фина настройка на добре известни предварително обучени дълбоки (конволюционни) невронни мрежи като различните архитектури на ResNet, Inception-ResNet, DenseNet…

Методи за групиране за изкачване на последните проценти от кривата на точност

Силата се крие в единството, а методите за групиране, изградени върху няколко невронни мрежи, позволиха да се комбинира силата на различните модели, като по този начин се подобри значително точността.

В тази тема авторите обясняват как са събрали резултати от няколко CNN. Всеки отделен модел има достойна за уважение точност (около 74–75%), но комбинирането им, дори само с средна стойност, води до резултат от 77,5%. Добавянето на многослоен алгоритъм за групиране (базиран на класически ML техники като XGBoost, Random Forest и други варианти) допълнително подобрява точността на конвейера (78,7%).

По подобен начин бяха получени многобройни ефективни решения от екипи от до петима учени по данни, обединяващи своите индивидуални модели и показващи силата на общността на Kaggle.

Други трикове, които правят разликата

Повечето от 20-те най-добри състезатели или отбори са приложили методи за групиране върху фино настроени CNN. Как да изпъкнете и да получите малкия плюс, който ви кара да печелите конкуренцията?

Конкурентите са намерили различни трикове за фина настройка на модели или подготовка на данни, някои от които са описани по-долу.

Особеност на набора от данни е, че предоставихме до 4 снимки на продукт. Използването само на първото често е достатъчно, за да намерите категорията, но в някои трудни случаи комбинирането на отделните изображения на продукта може да помогне. Следователно няколко конкуренти използваха комбинации или конкатенации на картините, за да подобрят своите модели. Например, победителят (вижте неговото решение тук) свърза изображения на един и същ продукт в една единствена „мозаична“ картина. След това проектира отделни модели за продукти с 1, 2, 3 или 4 снимки.

По-долу са дадени примери:

В най-горния необработен вид (Фигура 3), първото изображение изглежда най-подходящо за прогнозиране на категорията. В средния случай (Фигура 4) снимките се правят под различни ъгли, така че можем да вярваме, че всички те са информативни. В последния необработен (Фигура 5), първата картина представя елемента на неговия фон, което може да направи задачата за класификация по-трудна. Обратно, второто изглежда по-лесно за обработка, тъй като няма фон. В последните два случая използването на целия набор от изображения вероятно е по-ефективно от работата само с една картина.

Друга умна ключова характеристика на решението на победителя е използването на алгоритъм за оптично разпознаване на знаци (OCR) за извличане на текст от снимките. Всъщност той забеляза, че за някои категории продукти, като компактдискове или книги, формата не е супер информативна, докато текстът, който се появява на снимките, може потенциално да помогне.

Ако се интересувате от по-подробна информация за алгоритмите и триковете, използвани от конкурентите, ще намерите интересни теми в дискусионния канал.

Високопроизводителни хардуерни конфигурации

Добре известно е, че обучението на методи за дълбоко обучение е много скъпо от изчислителна гледна точка, особено когато се работи с огромни количества картини. Това състезание и дискусиите относно хардуера (вижте тази тема) дават добър преглед на най-съвременните настройки. Основната констатация, както може да очаквате, е, че имате нужда от (мощни) графични процесори. И колкото повече, толкова по-добре! Общият хардуер се състои например от до четири графични процесора 1080ti или Titan, обикновено комбинирани с 64 Gb RAM и SSD памет.

Заключение

Състезанието е голям успех за Cdiscount, тъй като бихме могли да достигнем впечатляващи нива на категоризация и да научим много от печелившите решения. Общността на Kaggle показа своята ефективност за справяне с такъв сложен проблем, като се възползва от емулацията и взаимната помощ между нейните брилянтни членове.
Надяваме се, че такъв голям набор от данни за изображения с етикети има потенциала да допринесе за дълбоки подобрения в обучението благодарение на количеството налични снимки и големия брой класове.

Сега ще тестваме в реални условия печелившите алгоритми и ще ги комбинираме с текущия ни алгоритъм за категоризиране, базиран на текст, за да подобрим нашия конвейер.

Благодарим отново на Kaggle и всички състезатели, които благодарение на своето време, усилия и талант го направиха успешен!

Ще се видим скоро!

Julien Jouganous, специалист по данни в Cdiscount

Препратки

Няколко връзки

Някои интересни теми

  • печелившото „решение“,
  • ефективно „единично моделно решение“,
  • няколко други най-високо класирани алгоритми: тук, тук или там,
  • „хардуерни конфигурации“.

Тази публикация първоначално е публикувана в Cdiscount Techblog.