Такси“ е за това как данните предсказват бъдещето и оформят света. „Готин учен по данни получава заплащане като главен изпълнителен директор на средностатистическа компания.“ Експерт по машинно обучение на Yandex.Taxi за това как данните предсказват бъдещето и оформят света Опитът вече не играе роля

- Можете ли да използвате напълно примитивен пример, за да ни кажете как работи машинното обучение?

Мога. Има пример за техника за машинно обучение, наречена Дърво на решенията, което е едно от най-старите неща. Нека го направим сега. Да приемем, че абстрактен човек ви покани на среща. Какво е важно за вас?

- Първо, дали го познавам или не...

(Виктор пише това на дъската.)

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

И ако знаете, тогава няма значение? Мисля, че разбрах, това е темата за приятелската зона! Като цяло, пиша, ако не знаете и е непривлекателно, тогава отговорът е „не, вероятно“. Ако знаете, отговорът е „да“.

- Ако знам, това също е важно!

Не, това ще бъде клон на зона за приятели.

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

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

(Виктор завършва с рисуването на решаващото дърво.)

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

Отговорите могат да бъдат не само „да“ и „не“, но и под формата на числа. Ако искате по-точна прогноза, можете да направите няколко такива дървета и да ги осредните. И с помощта на такова просто нещо всъщност можете да предскажете бъдещето.

А сега си представете, трудно ли е на хората да измислят такава схема преди двеста години? Абсолютно не! Тази схема не носи никаква ракетна наука. Като феномен машинното обучение съществува от около половин век. Роналд Фишър започва да прави прогнози въз основа на данни в началото на 20 век. Той взе ирисите и ги разпредели според дължината и ширината на чашелистчетата и венчелистчетата, като по тези параметри определи вида на растението.

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

- Е, определено не по-добър от всеки октопод предсказател на футболни мачове...

Не, какво ни интересуват октоподите? Въпреки че имаме повече вариативност. Сега, с помощта на машинно обучение, можете да спестите време, пари и да подобрите комфорта на живот. Машинното обучение победи хората преди няколко години, когато става въпрос за класифициране на изображения. Например компютърът може да разпознае 20 породи териери, но обикновеният човек не може.

- А когато анализирате потребителите, всеки човек набор от числа ли е за вас?

Грубо казано, да. Когато работим с данни, всички обекти, включително потребителското поведение, се описват с определен набор от числа. И тези числа отразяват характеристиките на поведението на хората: колко често взимат такси, какъв клас такси използват, на какви места обикновено ходят.

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

Например, сега имаме услуга - две детски седалки в такси. Можем да спамим всички с тази новина или да информираме специално за нея само определен кръг от хора. През годината натрупахме няколко потребители, които написаха в коментарите, че имат нужда от две детски седалки. Намерихме тях и подобни на тях. Условно това са хора над 30 години, които редовно пътуват и обичат средиземноморската кухня. Въпреки че, разбира се, има много повече знаци, това е само пример.

- Дори такива тънкости?

Това е проста работа. Всичко се изчислява с помощта на заявки за търсене.

Може ли това по някакъв начин да работи в приложение? Например, знаете ли, че аз съм просяк и се абонирам за групи като „Как да оцелея с 500 рубли на месец“ - предлагат ми само очукани евтини коли, абонирам се за новини на SpaceX - и от време на време ме продават Тесла?

Може да работи по този начин, но такива неща не се одобряват от Yandex, защото това е дискриминация. Когато персонализирате услуга, по-добре е да предложите не най-приемливото, а най-доброто налично и това, което човек харесва. А разпределението по логиката „този има нужда от по-добра кола, а този от по-малко добра“ е зло.


Всеки има извратени желания и понякога трябва да намерите не рецепта за средиземноморско ястие, а например снимки за копрофилия. Ще работи ли персонализацията в този случай?

Винаги има частен режим.

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

Можете също така да решите коя услуга на компанията да използвате, например Yandex или Google.

- Има ли разлика?

Сложен въпрос. Не знам за други, но Yandex е строг със защитата на личните данни. Особено се наблюдават служителите.

- Тоест, ако се разделих с човек, няма да мога да разбера дали е отишъл в тази дача или не?

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

Между другото, имахме интересен случай по темата за раздялата с момчета. Когато направихме прогноза за точка "Б" - крайната точка в таксито, въведохме съвети. Ето виж.

(Виктор влиза в приложението Yandex.Taxi.)

Например таксито мисли, че съм си вкъщи. Той ми предлага да отида или на работа, или в университета RUDN (аз изнасям лекции там като част от курса за машинно обучение Data Mining в действие). И в един момент, докато разработвахме тези съвети, осъзнахме, че трябва да избегнем компрометирането на потребителя. Всеки може да види точка Б. Поради тези причини ние отказахме да предложим места въз основа на прилика. Иначе сядаш на прилично място със свестни хора, поръчваш си такси и те ти пишат: „Виж, още не си бил в този бар!“

- Какви са тези сини точки, които мигат на вашата карта?

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

- Да, по всяко време. Някак си прелетях две пресечки с това.

Напоследък имаше различни трудности с GPS, това доведе до различни смешни ситуации. Хората, например на Тверская, бяха транспортирани с навигация през Тихия океан. Както можете да видите, понякога има пропуски и повече от два блока.

- И ако рестартирате приложението и щракнете отново, цената се променя с няколко рубли. Защо?

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

- Не мислите ли, че Yandex.Taxi скоро ще убие целия таксиметров пазар?

Мисля че не. Ние сме за здрава конкуренция и не се страхуваме от нея.

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


- Обединихте се с Uber. За какво?

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

В Германия един човек инсталира вана на дронове и отлетя за бургер. Мислили ли сте, че е дошло времето да овладеете въздушното пространство?

За въздушното пространство не знам. Следим новини като „Uber пусна таксита на лодки“, но не мога да кажа нищо за въздуха.

- Ами безпилотните таксита?

Тук има един интересен момент. Разработваме ги, но трябва да помислим как точно да се използват. Твърде рано е да прогнозираме под каква форма и кога ще се появят по улиците, но ние правим всичко, за да разработим технологията за напълно автономен автомобил, при който човек-шофьор изобщо няма да е необходим.

- Има ли опасения, че софтуерът на дрона ще бъде хакнат, за да се управлява дистанционно колата?

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

- Какви потребителски данни събирате и как ги защитавате?

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

- Смятате ли, че ще намалеят работните места заради дроновете?

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

- На всяка своя лекция Греф казва, че човек поне три пъти ще промени радикално професията си.

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

- Опитът вече не играе роля?

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

- А вашата професия е data scientist, търсена ли е?

Търсенето на специалисти по наука за данни е просто извън класациите. Очевидно това е период на луд хайп. Слава Богу, блокчейнът помогна този шум да утихне малко. Специалистите по блокчейн се привличат още по-бързо.

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

Има моменти, когато една банка иска да направи система за препоръки за услуги за потребителите. Питаме: „Смятате ли, че това ще бъде икономически оправдано?“ Те отговарят: „Не ни интересува. Направи го. Всеки има системи за препоръки, ние ще бъдем в тенденция.“

Болката е, че нещо наистина полезно за бизнеса не може да се направи за един ден. Трябва да наблюдаваме как системата ще се учи. Но винаги прави грешки в началото; може да му липсват някои данни по време на обучението. Коригирате грешките, след това ги коригирате отново и дори преработвате всичко. След това трябва да конфигурирате системата така, че да работи в производство, така че да е стабилна и мащабируема, това все още е време. В резултат на това един проект отнема шест месеца, година или повече.


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

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

От доста време ходя на всякакви събития за ученици, изнасям лекции за машинно обучение. И между другото една от темите ми я преподаваше десетокласничка. Бях абсолютно сигурен, че историята ми ще бъде добра и интересна, бях горд от себе си, започнах да излъчвам, а момичето каза: „О, искаме да минимизираме това нещо.“ Гледам и си мисля, наистина, защо и истината може да бъде сведена до минимум и тук няма нищо специално за доказване. Вече минаха няколко години, сега тя слуша нашите лекции като студентка във Физико-техническия институт. Yandex, между другото, има Yandex.Lyceum, където учениците могат да получат основни познания по програмиране безплатно.

- Препоръчайте университети и факултети, където в момента се преподава машинно обучение.

Има MIPT, факултети на FIVT и FUPM. HSE също има чудесен отдел по компютърни науки, а в Московския държавен университет има машинно обучение в комплекса по компютърни науки. Е, сега можете да слушате нашия курс в университета RUDN.

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

- Колко добре?

Назовете сумата.

- 500 хиляди на месец.

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

Измина почти година от момента, в който във ФИВТ стартира една необичайна тема – иновативна работилница. Същността му е създаването на ИТ стартъпи от студентски екипи под ръководството на опитни ментори. Получи се добре: благодарение на курса някой прекара част от лятото в Cream Valley, някой получи безвъзмездна помощ в размер на 800 000 рубли за развитието на проекта и ABBYY е готов напълно да закупи проекта от някого. И това не са всички резултати от семинара!

В началото на 2011 г. студенти от трета година на FIVT бяха събрани в заседателната зала и им казаха: през следващата година ще трябва да създадете свой собствен стартъп. Студентите не приеха тази идея двусмислено: не беше ясно как изобщо да го направят и отговорността беше необичайна - в крайна сметка беше необходимо да се създаде технологичен бизнес, а не просто пореден образователен проект. Ето какво мисли за това победителят в студентската олимпиада по физика на MIPT, студент от катедрата Yandeska Виктор Кантор:

Когато избрах FIVT при постъпване, се надявах, че ще имаме нещо подобно. Така че се радвам, че надеждите ми не бяха напразни. През годината се усещаше, че курсът все още се формира, има много ново в него, много въпроси се оказаха спорни не само за студентите, но и за организаторите, но като цяло смятам, че тенденциите са положителни. Хареса ми този курс.

За да се улесни работата на студентите, различни куратори бяха поканени да предложат своите идеи за изграждане на иновативни бизнеси. Сред тях имаше напълно различни хора: от студенти и докторанти на MIPT до съветника по иновациите на Ernst & Young Юрий Павлович Амосов (той беше ръководител на целия курс) и Михаил Батин, който се занимава с регенеративна медицина и проблеми на удължаването на живота. В резултат на това студентите по физика и техника избраха идеите, които им бяха най-интересни, кураторите се присъединиха към екипите и тежката, но вълнуваща работа започна.

За почти година, която измина оттогава, момчетата се сблъскаха с много проблеми, някои от които бяха решени. Сега можем да оценим техните резултати - въпреки трудностите, момчетата се справиха. Студентите на MIPT (в допълнение към Философския факултет, някои студенти от Филологическия факултет и други факултети се присъединиха към процеса) успяха да подготвят няколко доста интересни и жизнеспособни проекта:

Askeroid (по-рано Ask Droid) – търсене на смартфони ( Анастасия Уряшева)

Приложение за Android, което ви позволява удобно да търсите в голям брой търсачки. Някои експерти проявиха интерес към разработката и в резултат на това Анастасия прекара цялото изминало лято в един от най-известните инкубатори в Силиконовата долина - Plug&Play. изучаване на основите на технологичното предприемачество и разговор с международни рискови експерти.

1minute.ru – една минута за добро (Лев Грунин)

Този проект дава възможност на всеки да прави благотворителна дейност просто, бързо и напълно безплатно. Моделът е прост: рекламодателите предлагат определен набор от дейности на сайта, потребителите доброволно участват в тях и всички пари от реклама се прехвърлят на благотворителна фондация. В рамките на седмица след стартирането си проектът събра повече от 6500 потребители и няма да спре дотук. В резултат на това, благодарение на Лев и неговия екип, 600 деца от домове за сираци ще получат скъпи подаръци от Дядо Коледа за Нова година. Отделихте ли вече една минута за добро дело?!

Embedded Desktop - компютър във вашия телефон (Алексей Вуколов)

Приложение, което ви позволява да комбинирате възможностите на компютъра и мобилността на телефона в един пакет - изключително полезен продукт за заети хора, които често пътуват в командировки. Достатъчно е да го инсталирате на смартфон и потребителят ще може да „получи“ собствения си компютър във всеки хотел, офис и наистина навсякъде, където може да намери монитор (подходящ е и телевизор), клавиатура и мишка. Проектът получи грант за развитие на идеята и беше представен на изложението Technovation Cup, а с получените пари екипът вече активно закупува оборудване. Американският производител на процесори MIPS е изключително заинтересован от разработката.

Smart Tagger – семантично търсене в документи (Виктор Кантор)

Какво трябва да направите, ако си спомните, че някъде в пощенската ви кутия е имало много важно писмо, в което се говори за последния епизод на Теория за Големия взрив, но не си спомняте ключови думи от текста? Yandex и Google търсачката са безсилни. Развитието на Smart Tagger ще дойде на помощ - „умна“ програма, която използва семантично търсене, ще ви даде всички текстове, чието значение е преплетено с популярния телевизионен сериал. Проектът спечели грант на конкурса U.M.N.I.K. общо 400 000 рубли!

MathOcr – разпознаване на формули (Viktor Prun)

ABBYY предложи интересна задача за изпълнение - да се създаде програма, която да разпознава математически формули с всякаква сложност. Студентите от FIVT, след като си сътрудничиха със заинтересовани студенти, изпълниха задачата - модулът всъщност разпознава формули, сканирани от учебници по математика или физика. Резултат: ABBYY е готов да закупи този продукт за много пари.

Като част от съвместния проект „ABC of AI“ с MIPT вече писахме за така наречените, които ви позволяват да „отглеждате“ програми според принципите и законите на еволюцията на Дарвин. Засега обаче този подход към изкуствения интелект със сигурност е „гост от бъдещето“. Но как се създават системите с изкуствен интелект днес? Как се обучават? Виктор Кантор, старши преподавател в катедрата по алгоритми и технологии за програмиране в MIPT и ръководител на групата за анализ на потребителското поведение в Yandex Data Factory, ни помогна да разберем това.

Според скорошен доклад на изследователската фирма Gartner, която редовно актуализира своя „цикъл на зрялост на технологиите“, машинното обучение в момента е на върха на очакванията във всички ИТ. Това не е изненадващо: през последните няколко години машинното обучение излезе от сферата на интересите на тесен кръг от математици и специалисти по теория на алгоритмите и навлезе първо в речника на ИТ бизнесмените, а след това и в света. на обикновените хора. Сега всеки, който е използвал приложението Prisma, търсил е песни с помощта на Shazam или е виждал изображения, преминали през DeepDream, знае, че има такова нещо като невронни мрежи с тяхната специална „магия“.

Едно е обаче да използваш технологията, а друго е да разбереш как работи. Общи думи като „компютърът може да научи, ако му дадете намек“ или „невронната мрежа се състои от цифрови неврони и е структурирана като човешкия мозък“ може да помогнат на някого, но по-често те само объркват ситуацията. Тези, които ще изучават сериозно математика, не се нуждаят от популярни текстове: за тях има учебници и отлични онлайн курсове. Ще се опитаме да поемем по среден път: да обясним как всъщност се случва ученето на много проста задача и след това да покажем как същият подход може да се приложи за решаване на наистина интересни проблеми.

Как машините се учат

Като начало, за да разберем как точно се случва машинното обучение, нека дефинираме понятията. Както е дефинирано от един от пионерите в тази област, Артър Самуел, машинното обучение се отнася до методи, които „позволяват на компютрите да учат, без директно да ги програмират“. Има два широки класа методи за машинно обучение: контролирано обучение и обучение без надзор. Първият се използва, когато например трябва да научим компютър да търси снимки с изображения на котки, вторият е, когато имаме нужда от машината, например, за да можем независимо да групираме новини в истории, както се случва в услугите като Yandex.News или Google News. Тоест, в първия случай имаме работа със задача, която предполага наличието на верен отговор (котката на снимката или е там, или не), във втория случай няма нито един верен отговор, но има различни начини за решаване на проблема. Ще се спрем конкретно на първия клас проблеми като най-интересни.

Така че трябва да научим компютъра да прави някои прогнози. Освен това е желателно да бъдете възможно най-точни. Прогнозите могат да бъдат два вида: или трябва да избирате между няколко варианта за отговор (дали има котка на снимката или не е избор на една опция от две, възможността за разпознаване на букви в изображения е избор на една опция от няколко дузини и т.н.) или направете числена прогноза. Например, прогнозирайте теглото на човек въз основа на неговия ръст, възраст, размер на обувките и т.н. Тези два типа проблеми само изглеждат различни, но всъщност се решават почти идентично. Нека се опитаме да разберем как точно.

Първото нещо, което трябва да направим система за прогнозиране, е да съберем така наречената тренировъчна извадка, тоест данни за теглото на хората в популацията. Второто е да вземем решение за набор от признаци, въз основа на които можем да направим изводи за теглото. Ясно е, че един от „най-силните“ такива признаци ще бъде височината на човек, така че като първо приближение е достатъчно да се вземе само това. Ако теглото зависи линейно от височината, тогава нашата прогноза ще бъде много проста: теглото на човек ще бъде равно на неговата височина, умножена по някакъв коефициент, плюс някаква постоянна стойност, която се записва с най-простата формула y=kx+b. Всичко, което трябва да направим, за да обучим една машина да прогнозира теглото на човек, е по някакъв начин да намерим правилните стойности за k и b.

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

Да кажем, че теглото на човек се влияе от неговия ръст не линейно, а до трета степен (което обикновено се очаква, защото теглото зависи от обема на тялото). За да вземем предвид тази зависимост, ние просто въвеждаме друг член в нашето уравнение, а именно третата степен на растеж със собствен коефициент, като по този начин получаваме y=k 1 x+k 2 x 3 +b. Сега, за да обучим машината, ще трябва да намерим не две, а три величини (k 1, k 2 и b). Да кажем, че в нашата прогноза искаме да вземем предвид и размера на обувките на човек, възрастта му, времето, прекарано в гледане на телевизия, и разстоянието от апартамента му до най-близкото заведение за бързо хранене. Няма проблем: ние просто добавяме тези характеристики като отделни термини в едно и също уравнение.

Най-важното е да се създаде универсален начин за намиране на необходимите коефициенти (k 1, k 2, ... k n). Ако съществува, за нас ще бъде почти безразлично кои функции да използваме за прогнозиране, защото самата машина ще се научи да дава голяма тежест на важните и малка на маловажните характеристики. За щастие, такъв метод вече е изобретен и почти цялото машинно обучение работи успешно върху него: от най-простите линейни модели до системите за разпознаване на лица и речеви анализатори. Този метод се нарича градиентно спускане. Но преди да обясним как работи, трябва да направим малко отклонение и да поговорим за невронните мрежи.

Невронни мрежи

През 2016 г. невронните мрежи навлязоха толкова плътно в информационния дневен ред, че станаха почти идентифицирани с всяко машинно обучение и напреднали ИТ като цяло. Формално погледнато, това не е вярно: невронните мрежи не винаги се използват в математическото обучение; има и други технологии. Но като цяло, разбира се, подобна асоциация е разбираема, тъй като системите, базирани на невронни мрежи, сега предоставят най-„магическите“ резултати, като възможността за търсене на човек на снимка, появата на приложения, които прехвърлят стила на едно изображение към друго или системи за генериране на текстове в маниера на речта на определено лице.

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

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

Нека обясним с пример. Спряхме се на прогноза, при която теглото на човек зависи от неговия ръст и ръст на куб, което се изразява с формулата y=k 1 x+k 2 x 3 +b. С известно удължение, но всъщност дори такава формула може да се нарече невронна мрежа. В него, както в обикновената невронна мрежа, има първи слой от „неврони“, който също е слой от характеристики: това са x и x 3 (добре, „единичният неврон“, който имаме предвид и за който отговорен е коефициентът b). Горният или резултатният слой е представен от един „неврон“ y, тоест прогнозираното тегло на човека. А между първия и последния слой на „невроните“ има връзки, чиято сила или тегло се определя от коефициентите k 1, k 2 и b. Обучението на тази „невронна мрежа“ означава просто намиране на същите тези коефициенти.

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

Градиентно спускане

И така, имаме тренировъчен набор от примери с известни данни, тоест таблица с точно измерено тегло на човек и някаква хипотеза за връзката, в този случай линейна регресия y=kx+b. Нашата задача е да намерим правилните стойности на k и b, не ръчно, а автоматично. И за предпочитане универсален метод, който не зависи от броя на параметрите, включени във формулата.

Като цяло това не е трудно да се направи. Основната идея е да се създаде функция, която ще измерва текущото общо ниво на грешка и ще „ощипва“ коефициентите, така че общото ниво на грешка постепенно да пада. Как мога да намаля нивото на грешка? Трябва да настроим параметрите си в правилната посока.

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

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

Как можете да намерите тази точка? Най-правилният начин е да се движим през цялото време надолу от точката, в която първоначално сме се озовали. Така че рано или късно ще стигнем до локален минимум – точка, под която няма нищо в непосредствена близост. Освен това е препоръчително да правите стъпки с различни размери: когато наклонът е стръмен, можете да правите по-широки стъпки; когато наклонът е малък, по-добре е да се промъкнете до местния минимум „на пръсти“, в противен случай може да превишите.

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

Функцията на грешката може да се дефинира като сбор от квадратите на всички отклонения, които текущата формула допуска за хора, чието тегло вече знаем точно. Нека вземем някои случайни променливи k и b, например 0 и 50. Тогава системата ще ни предскаже, че теглото на всеки човек в извадката винаги е равно на 50 килограма y=0×x+50 На графиката, като зависимостта ще изглежда като права линия, успоредна на хоризонталата. Ясно е, че това не е много добра прогноза. Сега нека да вземем отклонението в теглото от тази прогнозирана стойност, да го повдигнем на квадрат (така че да се вземат предвид и отрицателните стойности) и да го обобщим - това ще бъде грешката в този момент. Ако сте запознати с началото на анализа, можете дори да изясните, че посоката на най-големия спад е дадена от частната производна на функцията на грешката по отношение на k и b, а стъпката е стойност, която е избрана за практически причини: малките стъпки отнемат много време за изчисляване, а големите могат да доведат до факта, че ще преминем минимума.

Добре, какво ще стане, ако нямаме просто сложна регресия с много функции, а истинска невронна мрежа? Как да приложим градиентно спускане в този случай? Оказва се, че градиентното спускане работи по абсолютно същия начин с невронна мрежа, само че обучението се извършва 1) стъпка по стъпка, от слой на слой и 2) постепенно, от един пример в извадката към друг. Методът, използван тук, се нарича обратно разпространение и е описан независимо през 1974 г. от съветския математик Александър Галушкин и математика от Харвардския университет Пол Джон Уеброс.

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

Преминавайки през невронната мрежа по този начин с всеки пример от обучителната извадка и „завъртайки“ теглата на невроните в желаната посока, в крайна сметка трябва да получим обучена невронна мрежа. Методът на обратно разпространение е проста модификация на метода на градиентно спускане за многослойни невронни мрежи и следователно трябва да работи за невронни мрежи от всякаква сложност. Тук казваме „трябва“, защото всъщност има случаи, когато градиентното спускане се проваля и не ви позволява да направите добра регресия или да обучите невронна мрежа. Може да е полезно да знаете защо възникват такива трудности.

Трудностите на градиентното спускане

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

Представете си, че стоите на върха на планина. Ако искате да се спуснете до най-ниската повърхност в района, методът на градиентно спускане не винаги ще ви помогне, тъй като първата ниска точка по пътя ви няма да е непременно най-ниската точка. И ако в живота сте в състояние да видите, че ако се изкачите малко нагоре и след това можете да отидете още по-надолу, тогава алгоритъмът в такава ситуация просто ще спре. Често тази ситуация може да бъде избегната, ако изберете правилната стъпка.

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

Мрежова парализа.Понякога се случва методът за градиентно спускане изобщо да не намери минимум. Това може да се случи, ако от двете страни на минимума има равни площи - алгоритъмът, когато попадне на равна зона, намалява стъпката и накрая спира. Ако стоите на върха на планина и решите да се придвижите към дома си в низината, пътуването може да е твърде дълго, ако случайно се лутате в много равна област. Или, ако има почти вертикални „наклони“ по краищата на плоските зони, алгоритъмът, след като е избрал много голяма стъпка, ще скочи от един наклон на друг, като практически не се движи към минимума.

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

Подготви Александър Ершов