Спука ли се балонът на машинното обучение или е началото на нова ера

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

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

За начало, нека говорим какво беше бустер за тази крива. Откъде се появи. Вероятно всички ще си припомнят победата в машинното обучение през 2012 година на конкурса ImageNet. Все пак това беше първото глобално събитие! Но в действителност не е така. И растежът на кривата започва малко по-рано. Аз бих я разделил на няколко момента.

  1. 2008 година е появата на термина “големи данни”. Реалните продукти започнаха да се появяват от 2010 година. Големите данни са пряко свързани с машинното обучение. Без големи данни е невъзможна стабилната работа на алгоритмите, които съществуваха по това време. И това не са невронни мрежи. До 2012 година невронните мрежи бяха територия на маргиналното малцинство. Затова тогава започнаха да работят напълно различни алгоритми, които вече съществуваха години, дори десетилетия: SVM(1963, 1993 години), Random Forest (1995), AdaBoost (2003),… Стартъпите от тези години бяха предимно свързани с автоматичната обработка на структурирани данни: каси, потребители, реклама, много други.

    Производната на тази първа вълна — набор от фреймворкове, като XGBoost, CatBoost, LightGBM и т.н.

  2. През 2011-2012 година конволюционните невронни мрежи печелеха редица конкурси за разпознаване на изображения. Реалното им използване малко се забави. Бих казал, че масово осмислените стартъпи и решения започнаха да се появяват от 2014 година. Две години бяха нужни, за да се осмисли, че невронките все пак работят, да се направят удобни фреймворкове, които могат да се инсталират и стартират за разумно време, да се разработят методи, които да стабилизират и ускорят времето за сходство.

    Конволюционните мрежи позволиха да се решават задачи в машинното зрение: класификация на изображения и обекти на изображение, детекция на обекти, разпознаване на обекти и хора, подобряване на изображения и т.н., и т.н.

  3. 2015-2017 година. Бум на алгоритми и проекти, свързани с рекурентни мрежи или техните аналози (LSTM, GRU, TransformerNet и т.н.). Появиха се добре работещи алгоритми за „глас-в-текст“, системи за машинен превод. Частично те се основават на конволюционни мрежи за извеждане на основни характеристики. Частично на това, че научихме как да събираме наистина големи и качествени набори от данни.

Спука ли се балонът на машинното обучение или е началото на нова ера

„Балонът се спука? Хайпът е прегрят? Умряха ли както блокчейн?“
Ами да! Утре в телефона ви Сири ще спре да работи, а вдругиден Тесла няма да разпознае завой от кенгуру.

Невронните мрежи вече работят. Те са в десетки устройства. Те наистина позволяват да се печели, променят пазара и заобикалящия свят. Хайпът изглежда малко по-различно:

Спука ли се балонът на машинното обучение или е началото на нова ера

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

  • Производствени компании интегрират алгоритми за анализ на дефекти на конвейера.
  • Животновъдни ферми купуват системи за контрол на крави.
  • Автоматични комбайни.
  • Автоматизирани кол центрове.
  • Филтри в SnapChat. (поне нещо полезно!)

Но най-важното, и не най-очевидното: „Нови идеи вече няма, или те няма да донесат мигновен капитал“. Невронните мрежи решиха десетки проблеми. И ще решат още повече. Всички очевидни идеи, които съществуваха — родиха множество стартапи. Но всичко, което беше на повърхността — вече е събрано. През последните две години не срещнах нито една нова идея за прилагане на невронни мрежи. Нито един нов подход (ами, ок, имам малко затруднения с GAN-ите).

А всеки следващ стартап става все по-сложен. Той вече не изисква просто двама мъже, които да обучават невронка на отворени данни. Той изисква програмисти, сървъри, екип от анотатори, сложна поддръжка и т.н.

В резултат на това — стартапите стават по-малко. А производството нараства. Нуждаете се от разпознаване на автомобилни номера? На пазара има стотици специалисти с релевантен опит. Можете да наемете и след няколко месеца ваш служител ще направи системата. Или да купите готова. Но да създадете нов стартап?.. Лудост!

Необходимо да се създаде система за проследяване на посетители — защо да плащате за куп лицензи, когато може да създадете своя собствена за 3-4 месеца, специализирана за вашия бизнес.

В момента невронните мрежи преминават през същия път, който изминаха десетки други технологии.

Помните ли как се променяше понятието "разработчик на сайтове" от 1995 година насам? Докато пазарът не е наситен със специалисти. Професионалистите са много малко. Но мога да споря, че след 5-10 години няма да има особена разлика между Java програмист и разработчик на невронни мрежи. И за двата типа специалисти ще има достатъчно на пазара.

Просто ще има клас задачи, за които ще се решават с невронни мрежи. Появява се задача — наемате специалист.

„А какво следва? Къде е обещаният изкуствен интелект?“

А тук има малко, но интересна неяснота :)

Този стек технологии, който имаме днес, явно не ще ни доведе до изкуствения интелект. Идеите, тяхната новост — в значителна степен са изчерпани. Нека да поговорим за това, което задържа текущото ниво на развитие.

Ограничения

Нека започнем с авто-беспилотници. Ясно е, че изработването на напълно автономни автомобили при сегашните технологии — е възможно. Но след колко години това ще се случи — не е ясно. Tesla смята, че това ще стане след няколко години —

Пуснете видеото

Има много други специалисти, които оценяват това на 5-10 години.

Вероятно, по мое мнение, след 15 години инфраструктурата на градовете вече сама ще се промени така, че появата на автономни автомобили да стане неизбежна, да стане нейно продължение. Но това не може да се счита за интелект. Съвременната Tesla е много сложен конвейер за филтриране на данни, търсене и повторно обучение. Това са правила-правила-правила, събиране на данни и филтри над тях (ето тук аз написах малко по-подробно за това, със заглавията от этой отбелязването).

Проблем номер едно

И точно тук виждаме първия фундаментален проблем. Големите данни. Това е точно това, което генерира настоящата вълна от невронни мрежи и машинно обучение. В момента, за да се направи нещо сложно и автоматично, са нужни много данни. Не просто много, а наистина много. Нужни са автоматизирани алгоритми за събиране, маркиране и използване на тези данни. Искаме да накараме машината да разпознава камиони на фона на слънцето — първо трябва да съберем достатъчно от тях. Искаме машината да не се побърква от велосипед, прикрепен към багажника — нужни са повече примери.

И един единствен пример не е достатъчен. Стотици? Хиляди?

Спука ли се балонът на машинното обучение или е началото на нова ера

Втората проблема

Втората проблема — визуализацията на това, което нашата невронна мрежа е разбрала. Това е много нетривиална задача. Все още малко хора разбират как да го визуализират. Тези статии са сравнително нови, това са само няколко примера, макар и отдалечени:
Визуализация зацикляне върху текстури. Добре показва на какво невронната мрежа е склонна да се зацикля + какво възприема като отправна информация.

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

Спука ли се балонът на машинното обучение или е началото на нова ера

И да, старият добър комплект от "погледни какво има в мрежата в филтрите". Тези картинки бяха популярни преди 3-4 години, но всички бързо разбраха, че картинките са красиви, но смисълът в тях не е много.

Спука ли се балонът на машинното обучение или е началото на нова ера

Не назовах десетки други трикове, методи, хакове, изследвания за това как да визуализираме вътрешността на мрежата. Работят ли тези инструменти? Помагат ли бързо да се разбере какъв е проблемът и да се дебъгне мрежата?.. Да извлечем последните проценти? Ами, горе-долу така:

Спука ли се балонът на машинното обучение или е началото на нова ера

Можете да разгледате всеки конкурс на Kaggle. И описанието на това как хората правят финалните си решения. Събрахме 100-500-800 милиона модела и то сработи!

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

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

Проблем номер три

Третата фундаментална проблема — мрежите учат не логика, а статистика. Статистически това лице:

Спука ли се балонът на машинното обучение или е началото на нова ера

Логически — не изглежда много подобно. Невронните мрежи не учат нещо сложно, освен ако не им се нареди. Те винаги учат максимално прости характеристики. Има ли очи, нос, глава? Значи е лице! Или дай пример, при който очите не значат лице. И отново — милиони примери.

Има много място в дъното

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

Това край ли е? Невронните мрежи спряха?

Не е известно. Но, разбира се, всеки се надява, че не.

Има много подходи и направления за решаване на тези фундаментални проблеми, които описах по-горе. Но досега нито един от тези подходи не е позволил да се направи нещо фундаментално ново, да се реши проблем, който досега не е бил решаван. Досега всички фундаментални проекти се правят на база стабилни подходи (Tesla) или остават тестови проекти на институти или корпорации (Google Brain, OpenAI).

Грубо казано, основното направление е създаването на високо ниво представяне на входните данни. В известен смисъл “памет”. Най-простият пример за памет е различните “Embedding” — представяния на изображения. Например, всички системи за разпознаване на лица. Мрежата учи да получи от лицето стабилно представяне, което не зависи от ъгъла, осветлението, резолюцията. По същество мрежата минимизира метриката “различни лица — далеч” и “еднакви — близо”.

Спука ли се балонът на машинното обучение или е началото на нова ера

За такова обучение са нужни десетки и стотици хиляди примери. Затова резултатът носи известни зачатъци на “One-shot Learning”. Сега не ни трябват стотици лица, за да запомним човек. Само едно лице, и всичко — ние разпознаваме!
Само че има проблем... Мрежата може да научи само доста прости обекти. При опит да различава не лица, а например “хора по дрехите” (задача Re-identification) — качеството рязко спада. И мрежата вече не може да научи достатъчно очевидни смени на ъгли.

И да учиш на милиони примери — също не е особено приятно удоволствие.

Има изследвания за значително намаляване на изборите. Например, веднага мога да си спомня едно от първите изследвания по OneShot Learning от Google:

Спука ли се балонът на машинното обучение или е началото на нова ера

Има много такива изследвания, например 1 или 2 или 3.

Един минус е, че обучението обикновено работи добре само с някои прости, "MNIST" примери. А при преминаване към по-сложни задачи — необходима е голяма база, модел на обектите или някаква магия.
Обикновено изследванията по One-Shot обучение са много интересна тема. Много идеи можете да намерите. Но основно двете проблеми, които изброих (предобучение на огромен набор от данни / нестабилност при сложни данни) много пречат на обучението.

От друга страна, темата за Embedding подходи GAN — генеративно състезателни мрежи. Вероятно сте чели много статии по тази тема в Хабра.1, 2,3)
Характерната особеност на GAN е формирането на известно вътрешно пространство на състояния (по същество същото като Embedding), което позволява да се нарисува изображение. Това могат да бъдат лица, могат да бъдат действия.

Спука ли се балонът на машинното обучение или е началото на нова ера

Проблемът на GAN е, че колкото по-сложен е генерираният обект, толкова по-трудно е да се опише логиката "генератор-дискриминатор". В резултат на това, от реалните приложения на GAN, за които се говори, остава само DeepFake, който отново манипулира с представянето на лица (за които съществува огромна база).

Други полезни приложения, които съм срещал, са много малко. Обикновено става дума за някакви свистелки и перделки с доизображаване на картинки.

И отново. Никой няма разбиране как това ще ни помогне да постигнем светлото бъдеще. Представянето на логиката / пространството в невронната мрежа е добре. Но е необходим огромен брой примери, не разбираме как невронната мрежа го представя, не разбираме как да накараме невронната мрежа да запомни някакво наистина сложно представяне.

Обучение с подсилване — това е подход съвсем от друга страна. Сигурно помните как Google победи всички в Go. Непоследните победи в Starcraft и Dota. Но тук нещата не са толкова розови и обещаващи. Най-добре за RL и неговите сложности разказва тази статия.

Ако накратко обобщим какво е писал авторът:

  • Моделите от кутията не са подходящи / работят лошо в повечето случаи.
  • Практическите задачи по-лесно се решават по други начини. Boston Dynamics не използва RL заради неговата сложност / непредсказуемост / трудности с изчисленията.
  • За да работи RL — необходима е сложна функция. Често е трудно да я създадете / напишете.
  • Трудно е да се обучават модели. Трябва да се влага много време, за да се разгърне и излезе от локалните оптимуми.
  • В резултат на това — трудно се повторя модел, нестабилността на модела при най-малките промени.
  • Често се случва да се оверфитне на някакви случайни закономерности, дори до генератор на случайни числа.

Ключовият момент е, че RL все още не работи в продукция. Google има някакви експерименти ( 1, 2 ). Но не съм виждал нито една продуктова система.

Памет. Минусът на всичко описано по-горе е неструктурираността. Един от подходите, с които се опитват да се справят, е да предоставят на невронната мрежа достъп до отделна памет. Така тя може да записва и презаписва резултата от своите стъпки. Тогава невронната мрежа може да бъде определена от текущото състояние на паметта. Това е много подобно на класическите процесори и компютри.

Най-известната и популярна статия — от DeepMind:

Спука ли се балонът на машинното обучение или е началото на нова ера

Изглежда, че ето го, ключът към разбирането на интелекта? Но по-скоро не. На системата все още ѝ е необходим огромен масив от данни за обучение. А основно работи със структурирани таблици. В същото време, когато Facebook решаваше аналогичен проблем, те поеха по пътя: "Хайде да махнем паметта, просто да направим невронната мрежа по-сложна, и с повече примери — и тя сама ще се обучи."

Disentanglement. Друг начин за създаване на значима памет е да вземем същите ембедингами, но при обучението да въведем допълнителни критерии, които да позволят да се открояват "смислите" в тях. Например, искаме да обучим невронната мрежа да различава поведението на хора в магазин. Ако следвахме стандартния път — щяхме да трябва да направим десетки мрежи. Едната търси човек, другата определя какво прави, третата — възрастта му, четвъртата — пола. Отделна логика разглежда частта от магазина, където той прави / обучава на това. Третата определя неговата траектория и т.н.

Или, ако имаше безкрайно много данни, можеше да се обучи една мрежа на всевъзможни изходи (очевидно, че такъв масив от данни не може да се събере).

Подходът Disentanglement ни казва — а да обучим мрежата да различава понятията сама. Да създаде ембединг от видео, където една зона определя действието, една — позицията на пода във времето, една — ръста на човека, а друга — пола му. При това, по време на обучението, желателно е почти да не насочваме мрежата да разпознава такива ключови понятия, а тя сама да разграничава и групира областите. Такива статии са сравнително малко (някои от тях 1, 2, 3) и по същество те са достатъчно теоретични.

Но това направление, поне теоретично, трябва да решава посочените в началото проблеми.

Спука ли се балонът на машинното обучение или е началото на нова ера

Разлагането на изображението по параметрите „цвят на стените/цвят на пода/форма на обекта/цвят на обекта и т.н.“

Спука ли се балонът на машинното обучение или е началото на нова ера

Разлагането на лицето по параметрите „размер, вежди, ориентация, цвят на кожата и т.н.“

Други

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

Attention. Вероятно, няма смисъл да се отделя като самостоятелен метод. Просто подход, който подсилва другите. На него са посветени много статии (1,2,3). Същността на Attention е да усили реакцията на мрежата именно към значимите обекти при обучението. Често чрез някакво външно целеуказание или малка външна мрежа.

3D симулация. Ако се направи добър 3D двигател, той може да покрие 90% от обучителните данни (видял съм пример, когато почти 99% от данните се покриваха с добър двигател). Съществуват много идеи и трикове как да се накара мрежата, обучена на 3D двигател, да работи с реални данни (Fine tuning, style transfer и т.н.). Но често е много по-сложно да се направи добър двигател, отколкото да се съберат данни. Примери, когато са правени двигатели:
Обучение на роботи (google, braingarden)
Обучение за разпознаване стоки в магазина (но в два проекта, които правихме, успявахме да се справим и без това).
Обучение в Tesla (отново, видеото, което беше по-горе).

Изводи

Цялата статия е в известен смисъл изводи. Вероятно, основното послание, което исках да предам, е - „безплатното приключи, невронките не предлагат повече лесни решения“. Сега трябва да се работи, изграждайки сложни решения. Или да се работи, правейки сложни научни изследвания.

А всъщност темата е дискусионна. Може би читателите имат по-интересни примери?

Източник: habr.com

Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри 🔥 Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри | ProHoster