Лопнуў Ці бурбалка машыннага навучання, ці пачатак новай зары

Нядаўна выйшла артыкул, якая нядрэнна паказвае тэндэнцыю ў машынным навучанні апошніх гадоў. Калі коратка: колькасць стартапаў у галіне машыннага навучання ў апошнія два гады рэзка ўпала.

Лопнуў Ці бурбалка машыннага навучання, ці пачатак новай зары
Ну што. Разбярэм «ці лопнула бурбалка», «як далей жыць» і пагаворым адкуль наогул такая загагуліна.

Для пачатку пагаворым што было бустэрам гэтай крывой. Адкуль яна ўзялася. Напэўна ўсё ўспомняць перамогу машыннага навучання ў 2012 годзе на конкурсе ImageNet. Бо гэта першая глабальная падзея! Але ў рэчаіснасці гэта не так. Ды і рост крывой пачынаецца некалькі раней. Я б разьбіў яго на некалькі момантаў.

  1. 2008 гэта з'яўленне тэрміна "вялікія дадзеныя". Рэальныя прадукты пачалі з'яўляцца з 2010 года. Вялікія дадзеныя прама злучаны з машынным навучаннем. Без вялікіх дадзеных немагчыма стабільная праца алгарытмаў, якія існавалі на той момант. І гэта не нейронавыя сеткі. Да 2012 года нейронавыя сеткі - гэта доля маргінальнай меншасці. Затое тады пачалі працаваць зусім іншыя алгарытмы, якія існавалі ўжо гады, а то і дзесяцігоддзі: SVM(1963,1993 гады), Выпадковы лес (1995) AdaBoost (2003),… Стартапы тых гадоў у першую чаргу звязаныя з аўтаматычнай апрацоўкай структураваных дадзеных: касы, карыстачы, рэклама, шматлікае іншае.

    Вытворная гэтай першай хвалі - набор фрэймворкаў, такіх як XGBoost, CatBoost, LightGBM, і.т.д.

  2. У 2011-2012 годзе скруткавыя нейронавыя сеткі выйгралі шэраг конкурсаў па распазнанні малюнкаў. Рэальнае іх выкарыстанне некалькі зацягнулася. Я б сказаў, што масава асэнсаваныя стартапы і рашэнні пачалі з'яўляцца з 2014 года. Два гады спатрэбілася каб пераварыць што нейронкі ўсё ж працуюць, зрабіць зручныя фрэймворкі якія можна было паставіць і запусціць за разумны час, распрацаваць метады якія б стабілізавалі і паскорылі час сыходжання.

    Згорткавыя сеткі дазволілі вырашаць задачы машыннага зроку: класіфікацыя малюнкаў і аб'ектаў на малюнку, дэтэктаванне аб'ектаў, распазнанне аб'ектаў і людзей, паляпшэнне малюнкаў, і.т.д., і.т.п.

  3. 2015-2017 гады. Бум алгарытмаў і праектаў завязаных на рэкурэнтныя сеткі ці іх аналогі (LSTM, GRU, TransformerNet і.т.д.). З'явіліся добра працуючыя алгарытмы "размова ў тэкст", сістэмы машыннага перакладу. Часткова яны заснаваны на скруткавых сетках для вылучэння базавых фіч. Часткова на тым, што навучыліся збіраць рэальна вялікія і добрыя датасеты.

Лопнуў Ці бурбалка машыннага навучання, ці пачатак новай зары

“Пузыр лопнуў? Хайп перагрэты? Яны памерлі як блокчэйн?”
А то ж! Заўтра ў вашым тэлефоне перастане працаваць Сіры, а паслязаўтра Тэсла не адрозніць паварот ад кенгуру.

Нейронныя сеткі ўжо працуюць. Яны ў дзясятках прылад. Яны рэальна дазваляюць зарабляць, змяняюць рынак і навакольны свет. Хайп выглядае некалькі інакш:

Лопнуў Ці бурбалка машыннага навучання, ці пачатак новай зары

Проста нейронавыя сеткі перасталі быць чымсьці новым. Так, у многіх людзей ёсць завышаныя чаканні. Але вялікая колькасць кампаній навучылася прымяняць у сябе нейронкі і рабіць прадукты на іх аснове. Нейронкі даюць новы функцыянал, дазваляюць скараціць працоўныя месцы, знізіць кошт паслуг:

  • Вытворчыя кампаніі інтэгруюць алгарытмы для аналізу шлюбу на канвееры.
  • Жывёлагадоўчыя гаспадаркі купляюць сістэмы для кантролю кароў.
  • Аўтаматычныя камбайны.
  • Аўтаматызаваныя Call-цэнтры.
  • Фільтры ў SnapChat. (ну хоць нешта слушнае!)

Але галоўнае, і не самае відавочнае: "Новых ідэй больш няма, ці яны не прынясуць імгненнага капіталу". Нейронныя сеткі вырашылі дзясяткі праблем. І вырашаць яшчэ больш. Усе відавочныя ідэі якія былі - спарадзілі мноства стартапаў. Але ўсё што было на паверхні - ужо сабралі. За апошнія два гады я не сустракаў ніводнай новай ідэі для прымянення нейронавых сетак. Ніводнага новага падыходу (ну, ок, там крыху з GAN-амі ёсць праблем).

А кожны наступны стартап усё складаней і складаней. Ён патрабуе ўжо не двух хлопцаў якія навучаюць нейронку на адкрытых дадзеных. Ён патрабуе праграмістаў, сервера, каманду разметчыкаў, складаную падтрымку, і.т.д.

Як вынік - стартапаў становіцца менш. А вось прадакшна больш. Трэба прымайстраваць распазнанне аўтамабільных нумароў? На рынку сотні спецыялістаў з рэлевантным досведам. Можна наняць і за пару месяцаў ваш супрацоўнік зробіць сыстэму. Або купіць гатовую. Але рабіць новы стартап?.. Вар'яцтва!

Трэба зрабіць сістэму трэкінгу наведвальнікаў - навошта плаціць за кучу ліцэнзій, калі можна за 3-4 месяцы зрабіць сваю, завастрыць яе для свайго бізнэсу.

Цяпер нейронавыя сеткі праходзяць той жа шлях які прайшлі дзясяткі іншых тэхналогій.

Падушыце як змянялася з 1995 гады паняцце «распрацоўнік сайтаў»? Пакуль рынак не насычаны спецыялістамі. Прафесіяналаў вельмі мала. Але я магу паспрачацца, што праз 5-10 гадоў не будзе асаблівай розніцы паміж праграмістам Java і распрацоўшчыкам нейронавых сетак. І тых і тых спецыялістаў будзе дастаткова на рынку.

Проста будзе клас задач пад які вырашаецца нейранкамі. Узнікла задача - наймаеце спецыяліста.

“А што далей? Дзе абяцаны штучны інтэлект?”

А вось тут ёсць невялікая, але цікавая незразумела:)

Той стэк тэхналогій, які ёсць сёння, мяркуючы па ўсім, нас да штучнага інтэлекту ўсё ж не прывядзе. Ідэі, іх навізна - шмат у чым вычарпалі сябе. Давайце пагаворым аб тым, што трымае бягучы ўзровень развіцця.

Абмежаванні

Пачнём з аўта-беспілотнікаў. Накшталт зразумела, што зрабіць цалкам аўтаномныя аўтамабілі пры сённяшніх тэхналогіях магчыма. Але праз колькі гадоў гэта здарыцца - не зразумела. Tesla лічыць што гэта адбудзецца праз пару гадоў


Ёсць шмат іншых спецыялістаў, Якія ацэньваюць гэта як 5-10 гадоў.

Хутчэй за ўсё, на мой погляд, гадоў праз 15 інфраструктура гарадоў ужо сама зменіцца так, што з'яўленне аўтаномных аўтамабіляў стане непазбежным, стане яе працягам. Але ж гэта нельга лічыць інтэлектам. Сучасная Тэсла - гэта вельмі складаны канвеер па фільтрацыі дадзеных, іх пошуку і перанавучання. Гэта правілы-правілы-правілы, збор дадзеных і фільтры над імі (вось тут я крыху падрабязней пра гэта напісаў, альбо глядзець з гэтай адзнакі).

першая праблема

І менавіта тут мы бачым першую фундаментальную праблему. Вялікія дадзеныя. Гэта менавіта тое, што спарадзіла бягучую хвалю нейронавых сетак і машыннага навучання. Цяпер, каб зрабіць нешта складанае і аўтаматычнае трэба шмат дадзеных. Ня проста шмат, а вельмі-вельмі шмат. Патрэбны аўтаматызаваныя алгарытмы іх збору, разметкі, выкарыстання. Жадаем зрабіць каб машына бачыла грузавікі супраць сонца трэба спачатку сабраць дастатковую іх лік. Жадаем каб машына не схадзіла з розуму ад ровара прыкручанага да багажніка больш сэмплаў.

Прычым аднаго прыкладу не хопіць. Сотні? Тысячы?

Лопнуў Ці бурбалка машыннага навучання, ці пачатак новай зары

другая праблема

другая праблема - Візуалізацыя таго што наша нейронавая сетка зразумела. Гэта вельмі нетрывіяльная задача. Да гэтага часу мала хто разумее як ​​гэта візуалізаваць. Вось гэтыя артыкулы вельмі свежыя, гэта ўсяго толькі некалькі прыкладаў, няхай нават аддаленых:
Візуалізацыя зацыкленасці на тэкстурах. Добра паказвае, на чым нейронка схільная зацыклівацца + што яна ўспрымае як адпраўную інфармацыю.

Лопнуў Ці бурбалка машыннага навучання, ці пачатак новай зары
Візуалізацыя атэншна пры перакладах. Рэальна атэншн часта можна выкарыстоўваць менавіта для таго каб паказаць што выклікала такую ​​рэакцыю сеткі. Я сустракаў такія штукі і для дэбага і для харчовых рашэнняў. На гэтую тэму вельмі шмат артыкулаў. Але чым складаней дадзеныя, тым складаней зразумець як дамагчыся ўстойлівай візуалізацыі.

Лопнуў Ці бурбалка машыннага навучання, ці пачатак новай зары

Ну і так, стары добры набор з «паглядзі што ў сеткі ўсярэдзіне ў фільтрах». Гэтыя карцінкі былі папулярныя гады 3-4 таму, але ўсё хутка зразумелі, што карцінкі то прыгожыя, ды сэнсу ў іх не шмат.

Лопнуў Ці бурбалка машыннага навучання, ці пачатак новай зары

Я не назваў дзясяткі іншых прымочак, спосабаў, хакаў, даследаванняў аб тым як адлюстраваць вантробы сеткі. Ці працуюць гэтыя інструменты? Ці дапамагаюць яны хутка зразумець у чым праблема і адладзіць сетку?.. Выцягнуць апошнія працэнты? Ну, прыкладна вось гэтак жа:

Лопнуў Ці бурбалка машыннага навучання, ці пачатак новай зары

Можаце паглядзець любы конкурс на Kaggle. І апісанне таго, як народ фінальныя рашэнні робіць. Мы напаткалі 100-500-800 мульёнаў мадэлек і яно зарабіла!

Я, вядома, увыдатняю. Але хуткіх і непасрэдных адказаў гэтыя падыходы не даюць.

Валодаючы дастатковым досведам, патыкаўшы розныя варыянты можна выдаць вердыкт аб тым чаму ваша сістэма прыняла такое рашэнне. Але паправіць паводзіны сістэмы будзе складана. Паставіць мыліцу, перасунуць парог, дадаць датасет, узяць іншую backend-сетку.

Трэцяя праблема

Трэцяя фундаментальная праблема - сеткі вучаць не логіку, а статыстыку. Статыстычна гэта твар:

Лопнуў Ці бурбалка машыннага навучання, ці пачатак новай зары

Лагічна - не вельмі падобна. Нейронныя сеткі не вучаць нешта складанае, калі іх не прымушаюць. Яны заўсёды вучаць максімальна простыя прыкметы. Ёсць вочы, нос, галава? Значыць гэты твар! Або прыводзь прыклад дзе вочы не будуць азначаць твар. І зноў - мільёны прыкладаў.

There's Plenty of Room at the Bottom

Я б сказаў, што менавіта гэтыя тры глабальныя праблемы на сённяшні дзень і абмяжоўваюць развіццё нейронавых сетак і машыннага навучання. А то дзе гэтыя праблемы не абмяжоўвалі - ужо актыўна выкарыстоўваецца.

Гэта канец? Нейронныя сеткі ўсталі?

Невядома. Але, вядома, усе спадзяюцца, што не.

Ёсць шмат падыходаў і напрамкаў да вырашэння тых фундаментальных праблем якія я асвятліў вышэй. Але пакуль ніводны з гэтых падыходаў не дазволіў зрабіць нешта фундаментальна новае, вырашыць нешта, што да гэтага часу не вырашалася. Пакуль што ўсе фундаментальныя праекты робяцца на аснове стабільных падыходаў (Tesla), ці застаюцца тэставымі праектамі інстытутаў ці карпарацый (Google Brain, OpenAI).

Калі казаць грубіянска, то асноўны кірунак - стварэнне некаторага высокаўзроўневага прадстаўлення ўваходных дадзеных. У нейкім сэнсе "памяці". Самы просты прыклад памяці - гэта розныя "Embedding" - прадстаўлення малюнкаў. Ну, напрыклад, усе сістэмы распазнання асоб. Сетка вучыцца атрымаць з асобы некаторае стабільнае паданне якое не залежыць ад павароту, асвятленні, дазволы. Па сутнасці сетка мінімізуе метрыку "розныя асобы – далёка" і "аднолькавыя – блізка".

Лопнуў Ці бурбалка машыннага навучання, ці пачатак новай зары

Для такога навучання патрэбны дзясяткі і сотні тысяч прыкладаў. Затое вынік нясе некаторыя зародкі "One-shot Learning". Цяпер нам не трэба сотні асоб, каб запомніць чалавека. Усяго толькі адна асоба, і ўсё - мы даведаемся!
Толькі вось проблемка ... Сетка можа вывучыць толькі досыць простыя аб'екты. Пры спробе адрозніваць не асобы, а, напрыклад, "людзей па адзенні" (задача Re-indentification) - якасць правальваецца на шмат парадкаў. І сетка ўжо не можа вывучыць дастаткова відавочныя змены ракурсаў.

Ды і вучыцца на мільёнах прыкладаў - таксама неяк так сабе забаўка.

Ёсць работы па значным памяншэнні выбараў. Напрыклад, адразу можна ўспомніць адну з першых прац па OneShot Learning ад гугла:

Лопнуў Ці бурбалка машыннага навучання, ці пачатак новай зары

Такіх прац шмат, напрыклад 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 пакуль што не працуе ў прадакшне. У гугла ёсць нейкія эксперыменты ( 1, 2 ). Але я не бачыў ніводнай прадуктовай сістэмы.

памяць. Мінус усяго таго што апісана вышэй - неструктураванасць. Адзін з падыходаў як усё гэта спрабуюць прыбраць – даць нейронавай сеткі доступ да асобнай памяці. Каб яна магла запісваць і перазапісваць там вынікі сваіх крокаў. Тады нейронавая сетка можа вызначацца бягучым станам памяці. Гэта вельмі падобна на класічныя працэсары і кампутары.

Самая вядомая і папулярная артыкул - ад DeepMind:

Лопнуў Ці бурбалка машыннага навучання, ці пачатак новай зары

Здаецца, што вось ён, ключ да разумення інтэлекту? Але хутчэй не. Сістэме ўсё роўна патрабуецца вялізны масіў дадзеных для трэніроўкі. А працуе яна ў асноўным са структураваным таблічнымі дадзенымі. Пры гэтым калі Facebook вырашаў аналагічную праблему, то яны пайшлі па шляху "нафіг памяць, проста зробім нейронку цяжэй, ды прыкладаў пабольш – і яна сама навучыцца".

Развязванне. Іншы спосаб стварыць значную памяць - гэта ўзяць тыя ж самыя эмбедынгі, але пры навучанні ўвесці дадатковыя крытэры, якія б дазволілі вылучаць у іх "сэнсы". Напрыклад мы хочам навучыць нейронавую сетку адрозніваць паводзіны чалавека ў краме. Калі б мы ішлі па стандартным шляху - мы павінны былі б зрабіць дзясятак сетак. Адна шукае чалавека, другая вызначае што ён робіць, трэцяя яго ўзрост, чацвёртая - падлогу. Асобная логіка глядзіць частка крамы, дзе ён робіць/навучаецца на гэта. Трэцяя вызначае яго траекторыю, і.т.д.

Ці, калі б было бясконца шмат дадзеных, то можна было б навучыць адну сетку на разнастайныя зыходы (відавочна, што такі масіў дадзеных набраць нельга).

Дызэнтэлгмент падыход кажа нам - а давайце навучаць сетку так каб яна сама змагла адрозніваць паняцці. Каб яна па відэа сфармавала эмбедынг, дзе адна вобласць вызначала б дзеянне, адна - пазіцыю на падлозе ў часе, адна - рост чалавека, а яшчэ адна - яго пол. Пры гэтым пры навучанні хацелася б амаль не падказваць сеткі такія ключавыя паняцці, а каб яна сама выдзяляла і групавала вобласці. Такіх артыкулаў дастаткова мала (некаторыя з іх 1, 2, 3) і ў цэлым яны дастаткова тэарэтычныя.

Але дадзены кірунак, прынамсі тэарэтычна, павінен зачыняць пералічаныя ў пачатку праблемы.

Лопнуў Ці бурбалка машыннага навучання, ці пачатак новай зары

Раскладанне выявы па параметрах "колер сцен / колер падлогі / форма аб'екта / колер аб'екта / г.д."

Лопнуў Ці бурбалка машыннага навучання, ці пачатак новай зары

Раскладанне асобы па параметрах "памер, бровы, арыентацыя, колер скуры, і.т.д."

Іншае

Ёсць шмат іншых не гэтулькі глабальных кірункаў, якія дазваляюць неяк памяншаць базы, працаваць з больш разнастайнымі дадзенымі, і.т.д.

Увага. Мусіць, не мае сэнсу вылучаць гэта як асобны метад. Проста падыход, які ўзмацняе іншыя. Яму прысвечана шмат артыкулаў (1,2,3). Сэнс Attention у тым, каб узмацніць у сеткі рэакцыю менавіта на значныя аб'екты пры навучанні. Часцяком якім-небудзь вонкавым цэлеўказаннем, ці невялікай вонкавай сеткай.

3Д-сімуляцыя. Калі зрабіць добры 3д рухавічок, то ім часцяком можна зачыніць 90% навучалых дадзеных (я нават бачыў прыклад калі амаль 99% дадзеных зачынялася добрым рухавічком). Ёсць шмат ідэй і хакаў як прымусіць сетку навучаную на 3д рухавічку працаваць па рэальных дадзеных (Fine tuning, style transfer, і.т.д.). Але часцяком зрабіць добры рухавічок - на некалькі парадкаў складаней чым набраць дадзеныя. Прыклады калі рабілі рухавікі:
Навучанне робатаў (Google, braingarden)
Навучанне распазнання тавараў у краме (але ў двух праектах якія рабілі мы - мы спакойна абыходзіліся без гэтага).
Навучанне ў Tesla (зноў жа тое відэа што было вышэй).

Высновы

Увесь артыкул гэта ў нейкім сэнсе высновы. Напэўна, асноўны пасыл які я хацеў зрабіць – «халява скончылася, нейронкі не даюць больш простых рашэнняў». Зараз трэба ўкалываць ладу складаныя рашэнні. Або ўкалываць робячы складаныя навуковыя рысярчы.

А ўвогуле тэма дыскутабельная. Можа ў чытачоў ёсць цікавейшыя прыклады?

Крыніца: habr.com

Дадаць каментар