Кароткае кіраўніцтва па навучанні перадачы і як прымяніць яго да нейронавай сеткі

Прыклады класіфікацыі малюнкаў і апрацоўкі натуральнай мовы

Даступны таксама на іспанскай мове | También disponible en español

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

Фота Doug Linstedt на Unsplash

Заўвага: Большасць таго, што я распавядаю тут, я даведалася пра гэта з курсу "Глыбокае навучанне кодэрам", які выкладаў Джэрэмі Говард з універсітэта Сан-Францыска.

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

Першы буйны атрымальнік: Computer Vision

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

Брэды Букет, версія для котак

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

Вось што мы атрымліваем пры прыняцці мадэляў, якія раней праходзілі навучанне па велізарным наборы дадзеных ImageNet, які ў цяперашні час змяшчае больш за 14 мільёнаў малюнкаў і амаль 22 000 розных надпісаў. Мабыць, самы вядомы выпадак - архітэктура ResNet, пераможца конкурсу па распазнаванні малюнкаў, праведзены ImageNet у 2015 годзе. Факт выкарыстання той жа архітэктуры з тымі ж параметрамі, што і папярэдне трэніраваная мадэль, дасць нашай сетцы магчымасць распазнаваць шмат рэчаў з самага пачатку, што таксама будзе мець на ўвазе вельмі кароткі час навучання. Выкарыстанне дадзеных ImageNet як адпраўной кропкі азначае велізарны скачок у поле Computer Vision.

Выбар дадзеных ImageNet

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

У прыкладзе парод котак мы будзем выкарыстоўваць мадэль ResNet, папярэдне навучаную на дадзеных ImageNet, у якасці адпраўной кропкі; затым выдаліце ​​выходны пласт, адказны за прыняцце рашэння, ці была ў нас кошка ці рыба (ці нешта іншае) і, нарэшце, далучыце пару фінальных слаёў, каб пераарыентаваць задачы на ​​пачатковую мадэль, арыентуючыся на класіфікацыю парод котак у залежнасці ад назіраных адрозненняў. паміж імі.

Прыклад (Mathworks)

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

Навучальная стратэгія нейроннай сеткі з трансферным навучаннем

Мы можам прытрымлівацца практычна агульнай працэдуры пры навучанні любой сеткі з выкарыстаннем перадач навучання. Мы будзем прымяняць двухэтапную стратэгію:

На першым этапе мы замарозім параметры, якія належаць базавай архітэктуры. Недарэчна будзе перанастройваць параметры першых слаёў гэтак жа, як і ў нядаўна дададзеных, бо наўрад ці можна палепшыць магчымасць базавай мадэлі выяўляць простыя фігуры, напрыклад, дыяганалі ці градыенты (нешта ўжо дасягнута першым пластом). Мы абярэм адпаведную хуткасць навучання для карэкціроўкі параметраў у дадатковых пластах (не занадта высокая для прадухілення ваганняў, ні занадта нізкая, каб пазбегнуць чакання вечна). Час трэніровак будзе невялікім, бо не так шмат параметраў для карэкціроўкі; некалькі эпох (поўных ітэрацый па ўсіх дадзеных) павінна быць дастаткова.

На другім этапе мы паспрабуем палепшыць мадэль, выканаўшы тонкую карэкціроўку. Першае, што мы зробім, - размарозіць параметры ад базавых слаёў, каб крыху адкарэктаваць яго значэнні. Мы абярэм дыяпазон для максімальнай хуткасці навучання з дапамогай розных слаёў, так што вага асноўных слаёў практычна не мяняецца, у той час як выніковыя вагі маюць большы запас мадыфікацыі (хаця ён будзе меншым, чым на першым этапе). Мы будзем трэніраваць нашу сетку для больш эпох; у асноўным, пакуль памылка праверкі нязменна пагаршаецца.

Трансфернае навучанне для апрацоўкі натуральнай мовы

Асноўнай прычынай рэзкіх паляпшэнняў, дасягнутых пару гадоў таму ў галіне апрацоўкі натуральных моў (NLP), стала таксама трансфернае навучанне.

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

У 2018 годзе Джэрэмі Ховард і Себасцьян Рудэр апублікавалі дакумент, прадстаўляючы ULMFiT (Universal Language Model Fine-Tuning), агульны метад прымянення Transfer Learning да любой праблемы NLP, прыносячы ў гэта поле дасягнутыя раней поспехі ў галіне Computer Vision. Вынік: лепшыя вынікі, якія бачылі на сённяшні дзень (з павышэннем дакладнасці на 18–24%) у некалькіх класічных наборах дадзеных, напрыклад, у класіфікацыі водгукаў IMDB на пазітыўныя і адмоўныя.

Натуральная апрацоўка мовы не так простая

Крокі, зробленыя для гэтага прыкладу і іншых падобных праблем, будуць наступнымі:

1. Выберыце загадзя падрыхтаваную мадэль (альбо стварыце і навучыце новую) у больш агульным тэкставым заданні ў якасці адпраўной кропкі. У NLP мы будзем выкарыстоўваць моўную мадэль, якая, напрыклад, спрабуе прадказаць наступнае слова ў сказе, як мы бачым на прадказальных клавіятурах. Гэтая задача патрабуе глыбокага ведання мовы і навакольнага свету; праца з n-грамамі (словы, якія звычайна з'яўляюцца разам), як і раней, недастаткова для набыцця здольнасці, неабходнай для працягу прапаноў. Але ... што рабіць, калі мы ўжываем Deep Learning з выкарыстаннем большага набору дадзеных, напрыклад, вялікай кучы артыкулаў, узятых з Вікіпедыі? Здаецца, добрая ідэя! Прадказанне наступнага слова не будзе вельмі карысным для нашай канчатковай задачы па класіфікацыі, але, дасягнуўшы гэтага, мы атрымаем вельмі каштоўныя веды пра мову і пра рэчаіснасць, дзе яно ўжываецца. Значна лепш, чым пачаць са выпадковых параметраў, ці не так?

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

2. Удакладніць моўную мадэль, ужыўшы Transfer Learning, каб стварыць новую, якая здольная прадказаць наступнае слова, але ў межах нашага пэўнага дамена; у гэтым выпадку агляды фільмаў. Мы будзем падаваць сетку з дапамогай нашага набору дадзеных, які таксама называецца мэтавым корпусам, і будзем прымяняць токенізацыю (сегментацыю тэксту на мінімальныя адзінкі альбо лексемы), нармалізацыю і нумаралізацыю (будзьце ўважлівыя да спецыяльных лексем). Рэкамендуецца выкарыстоўваць усе даступныя дадзеныя, у тым ліку пробныя ўзоры; бо іх ярлыкі (якія будуць выкарыстоўвацца для класіфікацыі) не патрэбныя для прагназавання наступнага слова. Мы далучымся да ўсіх узораў і пакінем, напрыклад, 10% ад агульнай колькасці для праверкі мадэлі.

Не трэба захоўваць поўную мадэль; гэтага дастаткова з кадавальнікам, які з'яўляецца часткай, якая вывучыла мову (а не той, якая генеруе наступнае слова).

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

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

Выява перанесена з fast.ai

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

Атрыманая мадэль пасля гэтага моманту ўжо зможа заўважыць, станоўчы ці адмоўны водгук :)

Выснова

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

Для вырашэння задач, пастаўленых у гэтых галінах, мы разлічваем са шматлікімі загадзя падрыхтаванымі мадэлямі, якія будуць нам вельмі карысныя; нам застаецца толькі выбраць правільны:

  • Computer Vision: мадэлі для PyTorch, Keras
  • Апрацоўка натуральнай мовы: трансфарматары ([*] BERT, GPT-2,…), ULMFiT і г.д.
Эрні, Элма і Берт

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

PS- Паглядзіце на гэтыя нататнікі Python для атрымання поўных прыкладаў з выкарыстаннем fastai: Класіфікацыя малюнкаў + класіфікацыя агляду IMDB.

Спадзяюся, вам спадабалася! Падпішыцеся на #yottabytes, каб не прапусціць такія артыкулы :)