Нейронна мережа яндекс. Столична влада запустить нейронну їжу для цодд. Рекурентні нейронні мережі

Отримавши черговий «лист щастя», сучасний автовласник завжди намагається досконало вивчити чорно-білий знімок та в найдрібніших подробицях запам'ятати стовп, на який повісили чергову камеру. Однак уникнути нових штрафів виходить далеко не завжди. То які ж сили та кошти стоять на службі у «великого брата», як їх обчислити та оперативно вжити необхідних заходів, щоб не отримати чергового штрафу? "Вісті" з'ясували, як народжується постанова про правопорушення, які існують види дорожніх комплексів фотовідеофіксації, а також постаралися розібратися, що робити, якщо штраф виписаний помилково.

Ім'я їм - легіон

На сьогоднішній день у Москві загалом встановлено близько 167 тис. камер, з яких за дорожньою обстановкою стежать майже 2 тис. комплексів автоматичної фіксації порушень правил дорожнього руху, та їх кількість постійно зростає. На даний момент штрафувати порушників допомагають 1,5 тис. стаціонарних, понад 30 пересувних, майже 400 мобільних та ще 110 встановлених на громадському наземному транспорті комплексів. Безперечно, робота з покращення ситуації з безпекою на дорогах проводиться масштабна: лише у 2017 році за допомогою засобів фотовідеофіксації було виявлено понад 83 млн правопорушень (роком раніше – трохи більше 60 млн), проте нерідко трапляється так, що автоматичні системидають збій та страждають ні в чому не винні автомобілісти.

Перші стаціонарні комплекси фотовідеофіксації порушень правил дорожнього руху з'явилися на вилітних магістралях столиці ще у 2006–2007 роках у рамках федеральної цільової програми «Підвищення безпеки дорожнього руху у 2006–2010 роках». Оскільки ситуація на дорогах відтоді помітно покращала, дорожні камери ставитимуть і надалі.

Сучасні комплекси вміють не тільки фіксувати перевищення швидкості, їзду по узбіччі або виїзд на смуги для громадського транспорту, а й обчислювати порушників, які пересуваються містом без ОСАЦВ, зупиняються або паркуються в зонах, де і без їхнього автомобіля проїхати складно, або на місцях інвалідів, нехтують вимогами дорожніх знаків та розмітки тощо. Нещодавно в столиці з'явилися дорожні камери, що контролюють стоп-лінію. А вже у 2019 році ЦКУ «Центр організації дорожнього руху» (ЦОДД) встановить 200 комплексів для контролю за безпекою найуразливіших учасників руху на дорогах – камери будуть націлені на водіїв, які не пропускають пішоходів на зебрі. Нагадаємо, штраф за подібне правопорушення згідно зі статтею 12.18 КоАП становить від 1,5 тис. до 2,5 тис. рублів.

Не за горами поява зовсім нового для автомобілістів штрафу - про нього 12 листопада голова ДІБДР Михайло Черніков. Інспекція має намір запровадити санкцію за небезпечне водіння. Контролювати лихі та виносити постанови любителям гри «в шашечки», швидше за все, також доручать комплексам фотовідеофіксації.

Стріляють у спину

У рамках концепції перетворення Москви на «розумне місто» з 2011 року в столиці активно впроваджується інтелектуальна транспортна система (ІТС), яка збирає та аналізує інформацію про завантаження та стан вулично-дорожньої мережі. «Руками та очима» ІТС є дорожні камери та інші програмно-технічні засоби, що забезпечують збирання, обробку, зберігання даних та їх підтримку в актуальному стані.

У Росії використовуються три типи комплексів: радарні, лазерні та відеофіксації. Вони можуть бути як стаціонарними, і мобільними. Радарні комплекси можна відрізнити за зовнішньому вигляду(у них по два «вічка» - для радарного датчика і для об'єктиву камери), а відеофіксації по установці кілька камер на штанзі (по одній на кожну смугу).

У середньому фокусна відстань, на якій камера «ловить» порушника, становить від 50 м до 500 м. А ось поріг максимальної швидкості, яка може бути зафіксована пристроєм, суттєво збільшили: діапазон сучасних комплексів становить 0–250 км/год, а не 0-180 км/год, як це було раніше.

Сучасні комплекси навчилися розпізнавати навіть брудні чи деформовані номери і почали рідше помилятися. Наприклад, похибка популярних у Москві комплексів «Автоураган» в залежності від швидкості транспортного засобу складає всього 1-2 км/год, а різних модифікацій комплексу «Стрілка» не перевищує 2 км/год. Останні, до речі, оснащені спеціальним «двірником» - пристроєм, який зможе самостійно очистити вічко камери, якщо на нього потрапив бруд.

Крім того, тепер пристрій може не просто сфотографувати автомобіль анфас, а й засікти швидкість, з якою об'єкт віддаляється від камери, простежити за траєкторією переміщення, виміряти середню швидкість транспортного засобу на певній ділянці або спрацювати за принципом «піт-стоп». В останньому випадку дані порушника будуть передані найближчому черговому екіпажу ДПС із вимогою зупинки.

З вересня 2018 року в Москві в тестовому режимі запущено нейромережу, яка пов'язана з базою даних МВС, що зберігає інформацію про всі зареєстровані автомобілі. Так звана маска транспортного засобу зберігається у відкритому доступі і містить дані про марку і модель авто, колір кузова, держномер.

За словами керівника столичного департаменту транспорту Максима Ліксутова, впровадження в місті нейронної мережі дозволить виявляти випадки шахрайства, тобто заміни реєстраційних знаків або крадіжку транспортного засобу. Система здатна в автоматичному режимі зафіксувати невідповідність машини та встановлених на ній номерів та подати сигнал співробітнику поліції про те, що потрібно перевірити автомобіль.

Як не потрапити під камеру?

Насамперед, щоб уникнути отримання штрафу, потрібно, звичайно ж, не порушувати: дотримуватися правил дорожнього руху, дотримуватись швидкісного режиму, стежити за знаками та нанесеною на асфальт розміткою. Крім цього, можна додатково убезпечити себе за допомогою антирадару або відеореєстратора з антирадаром: ці пристрої в режимі реального часу моніторять обстановку, отримуючи сигнали з камер ДАІ, і сповіщають водія подачею звукового сигналу.

У маркетах для пристроїв на базі Android або Apple існує безліч програм з аналогічним функціоналом. Ціна на такі програми, залежно від їх можливостей і точності, коливається від 100 до 1650 рублів. Або ж можна скористатися безкоштовним навігатором, попередньо активувавши в налаштуваннях функцію звукового сповіщення про камери та інші дорожні події. Щоправда, варто враховувати, що дані, наприклад, про нові камери або мобільні пости ДПС туди заносять такі ж користувачі, як і ви.

Як довести свою правоту?

Заперечувати помилково виставлені штрафи за порушення правил дорожнього руху, зафіксовані камерами, можна і потрібно. Однак робити це потрібно лише в тому випадку, якщо ви абсолютно точно впевнені в тому, що не порушували, і можете підкріпити це вагомими доказами.

Механізм оскарження ухвал наступний:

На подання скарги ви маєте 10 діб з моменту отримання штрафу (стаття 30.3 КоАПу);

Скарга може бути подана як особисто (у сервісні центри«Московський транспорт» або приймальну МАДИ), так і електронному вигляді(через портал Автокод або електронну приймальню уряду Москви);

Комплект документів повинен містити як саму підписану власноруч скаргу, так і додаткові матеріали (фотографії, відеозаписи чи інші документи), які підтверджують інформацію, викладену у вашому зверненні;

У разі якщо до моменту подання скарги, відведені КоАПом 10 діб, вже пройшли, до пакету документів слід додати клопотання про відновлення пропущеного терміну оскарження постанови про адміністративне правопорушення, яку необхідно також власноручно підписати;

У скарзі необхідно вказати назву органу, куди вона подається, дату, номер ухвали та аргументи, що доводять незаконність звинувачення. Більше докладна інструкціяз прикладами текстів скарг опубліковано на офіційному сайті мера Москви.

На розгляд скарги відводиться 10 днів, тому сплатити штраф, хай і помилково виставлений, все ж таки потрібно. Варто також приготуватися до того, що рішення доведеться заперечувати у вищих інстанціях – спочатку у ДІБДР, а потім у суді. І візьміть за правило зберігати записи з відеореєстратора після подорожі хоча б пару тижнів.

Матеріал, розказаний нашим колегою Костянтином Лахманом, узагальнює історію розвитку нейромереж, їх основні особливості та принципові відмінності від інших моделей, які застосовуються у машинному навчанні. Також мова піде про конкретні приклади застосування нейромережевих технологій та їх найближчі перспективи. Лекція буде корисна тим, кому хочеться систематизувати в голові всі найважливіші сучасні знання про нейронні мережі.

Костянтин klakhman Лахман закінчив МІФІ, працював дослідником у відділі нейронаук НДЦ «Курчатовський інститут». В Яндексі займається нейромережевими технологіями, що використовуються у комп'ютерному зорі.

Під катом - докладне розшифрування зі слайдами.

Нейронні сіті

Всім привіт. Мене звуть Костя Лахман і тема сьогоднішньої лекції – це «Нейронні мережі». Я працюю в «Яндексі» у групі нейромережевих технологій, і ми розробляємо всякі прикольні штуки, засновані на машинному навчанні, із застосуванням нейронних мереж. Нейронні мережі – це один із методів машинного навчання, до якого зараз прикута досить велика увага не лише фахівців у галузі аналізу даних чи математиків, а й взагалі людей, які ніяк не пов'язані з цією професією. І це пов'язано з тим, що рішення на основі нейронних мереж показують найкращі результати в різних галузях людського знання, як розпізнавання мови, аналіз тексту, аналіз зображень, про що я спробую в цій лекції розповісти. Я розумію, що, мабуть, у всіх у цій аудиторії та у тих, хто нас слухає, трошки різний рівень підготовки – хтось знає трохи більше, хтось трохи менше – але можете підняти руки ті, хто щось читав. про нейронні мережі? Це дуже солідна частина аудиторії. Я постараюся, щоб було цікаво і тим, хто взагалі нічого не чув, і тим, хто щось таки читав, тому що більшість досліджень, про які я розповідатиму – це дослідження цього року чи попереднього року, бо дуже багато всього відбувається, і буквально минає півроку, і ті статті, які були опубліковані півроку тому, вони вже трохи старіють.


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

Нехай ми маємо деяку U – безліч об'єктів реального світу, і до кожного з цих об'єктів ми відносимо якісь ознаки цих об'єктів. А також у кожного з цих об'єктів є якийсь клас, який ми хотіли б вміти передбачати, маючи ознаки об'єкта. Давайте розглянемо цю ситуацію з прикладу зображень.


Об'єкти – це усі зображення у світі, які можуть нас цікавити.


Найпростіші ознаки зображень – це пікселі. За останні півстоліття, протягом яких людство займається розпізнаванням образів, були вигадані значно складніші ознаки зображень – але це найпростіші.


І клас, який ми можемо віднести до кожного зображення, - це, наприклад, людина (це фотографія Алана Тьюринга, наприклад), птах, будинок і таке інше.


Завданням машинного навчання у разі є побудова вирішальної функції, яка за вектором ознак об'єкта говоритиме, якого класу вона належить. У вас була лекція, наскільки я знаю, Костянтина Воронцова, який про це все розповідав значно глибше за мене, тому я тільки по самій верхівці.


Найчастіше необхідна так звана навчальна вибірка. Це набір прикладів, про які нам точно відомо, що цей об'єкт має такий клас. І на основі цієї навчальної вибірки ми можемо побудувати цю вирішальну функцію, яка якнайменше помиляється на об'єктах навчальної множини і, таким чином, розраховує, що на об'єктах, які не входять до навчальної множини, у нас буде теж гарна якістькласифікацій.


Для цього ми маємо запровадити деяку функцію помилки. Тут D – це навчальна множина, F – це вирішальна функція. І в найпростішому випадку функція помилки – це кількість прикладів, на яких ми помиляємося. І, щоб знайти оптимальну вирішальну функцію, нам треба зрозуміти. Зазвичай ми вибираємо функцію з якоїсь параметричної множини, тобто це просто якийсь, наприклад, поліном рівняння, який має якісь коефіцієнти, і нам їх треба якось підібрати. І параметри цієї функції, які мінімізують цю функцію помилки, функцію втрат, є нашою метою, тобто ми хочемо знайти ці параметри.

Існує безліч методів, як шукати ці параметри. Я не буду зараз у це заглиблюватися. Один із методів – це коли ми беремо один приклад цієї функції, дивимося, чи правильно ми його класифікували чи неправильно, і беремо похідну за параметрами нашої функції. Як відомо, якщо ми підемо у бік зворотної цієї похідної, то ми таким чином зменшимо помилку на цьому прикладі. І, таким чином, проходячи всі приклади, ми зменшуватимемо помилку, підлаштовуючи параметри функції.

Те, про що я зараз розповідав, відноситься до всіх алгоритмів машинного навчання і в тій же мірі відноситься до нейромереж, хоча нейромережі завжди стояли трохи осторонь усіх інших алгоритмів.


Зараз сплеск інтересу до нейромереж, але це один із найстаріших алгоритмів машинного навчання, який тільки можна вигадати. Перший формальний нейрон, комірка нейронної мережі була запропонована, його перша версія, в 1943 Уоррен Маккалоком і Уолтером Піттсом. Вже в 1958 році Френк Розенблатт запропонував першу найпростішу нейронну мережу, яка вже могла розділяти, наприклад, об'єкти у двовимірному просторі. І нейронні мережі проходили за всю цю більш ніж піввікову історію злети та падіння. Інтерес до нейронних мереж був дуже великий у 1950-1960-і роки, коли були отримані перші вражаючі результати. Потім нейронні мережі поступилися місцем іншим алгоритмам машинного навчання, які виявилися сильнішими в той момент. Знову інтерес поновився у 1990-ті роки, потім знову пішов на спад.


І зараз останні 5–7 років виявилося, що у багатьох завданнях, пов'язаних з аналізом природної інформації, а все, що нас оточує – це природна інформація, це мова, це мова, це зображення, відео, багато іншої різної інформації, – нейронні мережі краще, ніж інші алгоритми. Принаймні на даний момент. Можливо, знову ренесанс закінчиться і щось прийде їм на зміну, але зараз вони показують найкращі результати здебільшого.

Що ж привело до цього? Те, що нейронні мережі як алгоритм машинного навчання, їх необхідно навчати. Але на відміну від більшості алгоритмів нейронні мережі дуже критичні до обсягу даних, обсягу тієї навчальної вибірки, яка необхідна для того, щоб їх натренувати. І на невеликому обсязі даних мережі просто погано працюють. Вони погано узагальнюють, погано працюють на прикладах, які вони не бачили у процесі навчання. Але в останні 15 років зростання даних у світі набуває, можливо, експоненційного характеру, і зараз це вже не є такою великою проблемою. Даних у нас дуже багато.

Другий такий наріжний камінь, чому зараз ренесанс мереж – це обчислювальні ресурси. Нейронні мережі – один із найбільш важких алгоритмів машинного навчання. Необхідні величезні обчислювальні ресурси, щоб навчити нейронну мережу і навіть її застосовувати. І зараз такі ресурси ми маємо. І, звісно, ​​нові алгоритми були придумані. Наука не стоїть на місці, інженерія не стоїть на місці, і тепер ми більше розуміємо про те, як навчати такі структури.


Що таке формальний нейрон? Це дуже простий елемент, який має якусь обмежену кількість входів, до кожного з цих входів прив'язана деяка вага, і нейрон просто бере і здійснює зважену сумацію своїх входів. На вході можуть бути, наприклад, ті самі пікселі зображення, про які я розповідав раніше. Уявімо, що X 1 і до X n– це просто всі пікселі зображення. І до кожного пікселя прив'язана якась вага. Він їх підсумовує та здійснює деяке нелінійне перетворення з них. Але навіть якщо не торкатися лінійного перетворення, то вже один такий нейрон є досить сильним класифікатором. Ви можете замінити цей нейрон і сказати, що це просто лінійний класифікатор, і формальний нейрон ним і є, це просто лінійний класифікатор. Якщо, припустимо, у двомірному просторі у нас є кілька точок двох класів, а це їх ознаки X 1і X 2тобто підібравши ці ваги V 1і V 2, ми можемо побудувати розділяючу поверхню в цьому просторі. І, таким чином, якщо у нас ця сума, наприклад, більша за нуль, то об'єкт відноситься до першого класу. Якщо ця сума менша за нуль, то об'єкт відноситься до другого класу.

І все б добре, але єдине, що ця картинка дуже оптимістична, тут лише дві ознаки, класи, що називається, лінійно розділені. Це означає, що ми можемо просто провести лінію, яка правильно класифікує всі об'єкти навчальної множини. Насправді так буває не завжди і практично ніколи так не буває. І тому одного нейрона недостатньо, щоб вирішувати переважну більшість практичних завдань.


Це нелінійне перетворення, яке здійснює кожен нейрон над цією сумою, воно критично важливе, тому що, як ми знаємо, якщо ми, наприклад, здійснимо таку просту сумацію і скажемо, що це, наприклад, якась нова ознака Y 1 (W 1 x 1 + W 2 x 2 = y 1), а потім у нас є, наприклад, ще другий нейрон, який теж підсумовує ті самі ознаки, тільки це буде, наприклад, W 1 "x 1 +W 2 "x 2 = y 2. Якщо ми потім захочемо застосувати знову лінійну класифікацію у просторі цих ознак, це не матиме жодного сенсу, оскільки дві поспіль застосовані лінійні класифікації легко замінюються однією, це властивість лінійності операцій. А якщо ми здійснимо над цими ознаками деяке нелінійне перетворення, наприклад, найпростіше… Раніше застосовували складніші нелінійні перетворення, такі як ця логістична функція, вона обмежена нулем і одиницею, і ми бачимо, що тут є ділянки лінійності. Тобто вона близько 0 по x поводиться досить лінійно, як звичайна пряма, а далі вона поводиться нелінійно. Але, як виявилося, щоб ефективно навчати подібного роду класифікатори, достатньо найпростішої нелінійності на світі – просто урізаної прямої, коли на позитивній ділянці це пряма, а на негативній ділянці це завжди 0. Це найпростіша нелінійність, і виявляється, що навіть її вже достатньо, щоб ефективно навчати класифікацію.


Що являє собою нейронна мережа? Нейронна мережа є послідовністю таких перетворень. F 1- Це так званий шар нейронної мережі. Шар нейронної мережі – це просто сукупність нейронів, які працюють на тих самих ознаках. Уявімо, що у нас є вихідні ознаки x 1 , x 2 , x 3, і у нас є три нейрони, кожен з яких пов'язаний з усіма цими ознаками. Але в кожного з нейронів свої ваги, на яких він зважує такі ознаки, і завдання навчання мережі у підборі таких ваг у кожного з нейронів, які оптимізують цю функцію нашої помилки. І функція F 1- Це один шар таких нейронів, і після застосування функція у нас виходить деякий новий простір ознак. Потім до цього простору ознак ми застосовуємо ще один шар. Там може бути інша кількість нейронів, якась інша нелінійність як перетворююча функція, але це такі ж нейрони, але з такими вагами. Таким чином, послідовно застосовуючи ці перетворення, у нас виходить загальна функція F- Функція перетворення нейронної мережі, яка складається з послідовного застосування декількох функцій.


Як навчаються нейронні мережі? В принципі, як будь-який інший алгоритм навчання. У нас є певний вихідний вектор, який виходить на виході мережі, наприклад клас, якась мітка класу. Є певний еталонний вихід, який ми знаємо, що ці ознаки мають бути, наприклад, такий об'єкт, чи скільки ми повинні до нього прив'язати.


І у нас є деяка дельта, тобто різниця між вихідним вектором та еталонним вектором, і далі на основі цієї дельти тут є велика формула, але суть її полягає в тому, що якщо ми зрозуміємо, що ця дельта залежить від F nтобто від виходу останнього шару мережі, якщо ми візьмемо похідну цієї дельти за вагами, тобто за тими елементами, які ми хочемо навчати, і ще застосуємо так зване правило ланцюжка, тобто коли у нас похідні складної функції– це твір від похідної за функцією до твору функції за параметром, то вийде, що таким нехитрим чином ми можемо знайти похідні для всіх наших ваг і підлаштовувати їх залежно від тієї помилки, яку ми спостерігаємо. Тобто якщо у нас на якомусь конкретному навчальному прикладі немає помилки, то, відповідно, похідні дорівнюватимуть нулю, і це означає, що ми його правильно класифікуємо і нам нічого не треба робити. Якщо помилка на навчальному прикладі дуже велика, то ми повинні щось зробити, якось змінити ваги, щоб зменшити помилку.

Згорткові мережі

Тепер було трохи математики, дуже поверхово. Далі більшу частину доповіді буде присвячено крутим речам, які можна зробити за допомогою нейронних мереж і які роблять зараз багато людей у ​​світі, в тому числі і в Яндексі.


Одним із методів, який першим показав практичну користь, є так звані згорткові нейронні мережі. Що таке згорткові нейронні мережі? Допустимо, у нас є зображення Альберта Ейнштейна. Цю картину, напевно, багато хто з вас теж бачив. І ці кружечки – це нейрони. Ми можемо підключити нейрон до всіх пікселів вхідного зображення. Але тут є велика проблема, що якщо приєднати кожен нейрон до всіх пікселів, то, по-перше, у нас вийде дуже багато терезів, і це буде дуже обчислювально ємна операція, дуже довго обчислюватиме таку суму для кожного з нейронів, а по- по-друге, терезів вийде так багато, що цей метод буде дуже нестійкий до перенавчання, тобто до ефекту, коли на навчальній множині ми всі добре пророкуємо, а на безлічі прикладів, які не входять у навчальні, ми працюємо дуже погано, просто тому, що ми перебудувалися на навчальну множину. У нас занадто багато терезів, надто багато свободи, ми можемо дуже добре пояснити будь-які варіації в навчальній множині. Тому вигадали іншу архітектуру, в якій кожен з нейронів приєднаний лише до невеликої околиці на зображенні. Крім усього іншого всі ці нейрони мають однакові ваги, і така конструкція називається згорткою зображення.


Як вона здійснюється? У нас тут у центрі є так зване ядро ​​згортки – це сукупність терезів цього нейрона. І ми застосовуємо це ядро ​​згортки у всіх пікселях зображення послідовно. Застосовуємо - це означає, що ми просто зважуємо пікселі в цьому квадраті на ваги, і отримуємо нове значення. Можна сказати, що ми перетворили картинку, пройшлися фільтром. Як у Photoshop, наприклад, є якісь фільтри. Тобто найпростіший фільтр – як можна з кольорового малюнку зробити чорно-білу. І ось ми пройшлися таким фільтром та отримали деяке перетворене зображення.

У чому тут плюс? Перший плюс, що менше ваг, швидше вважати, менше схильні до перенавчання. З іншого боку, кожен із цих нейронів виходить деяким детектором, як я покажу це далі. Припустимо, якщо десь у нас на зображенні є око, то ми одним і тим же набором терезів, пройшовшись по картинці, визначимо, де на зображенні очей.


Тут має бути відео.
І однією з перших речей, до чого застосували подібну архітектуру – це розпізнавання цифр як найпростіших об'єктів.

Застосував це десь у 1993 році Ян Лекун у Парижі, і тут зараз буде практично архівний запис. Якість така собі. Тут зараз вони надають рукописні цифри, натискають деяку кнопку, і мережа розпізнає ці рукописні цифри. В принципі, безпомилково вона розпізнає. Ну, ці цифри, звичайно, простіше, тому що вони друковані. Але, наприклад, на цьому зображенні цифри вже значно складніші. А ці цифри, щиро сказати, навіть я не зовсім можу розрізнити. Там, здається, четвірка зліва, але мережа вгадує. Навіть такого роду цифри вона розпізнає. Це був перший успіх згорткових нейронних мереж, який показав, що вони дійсно застосовні на практиці.


У чому полягає специфіка цих згорткових нейронних мереж? Ця операція згортки елементарна, і ми будуємо шари цих пакунків над зображенням, перетворюючи все далі і далі зображення. Таким чином ми насправді отримуємо нові ознаки. Наші первинні ознаки – це були пікселі, а далі ми перетворюємо зображення та отримуємо нові ознаки у новому просторі, які, можливо, дозволять нам ефективніше класифікувати це зображення. Якщо ви собі уявите зображення собак, то вони можуть бути в різних позах, в різних освітленнях, на різному тлі, і їх дуже складно класифікувати, безпосередньо спираючись тільки на пікселі. А послідовно отримуючи ієрархію ознак нових просторів, ми можемо це зробити.
Ось у чому основна відмінність нейронних мереж від інших алгоритмів машинного навчання. Наприклад, у сфері комп'ютерного зору, у розпізнаванні зображень до нейронних мереж було прийнято наступний підхід.

Коли ви берете предметну область, наприклад, нам потрібно між десятьма класами визначати, до якого з класів належить об'єкт – будинок, птах, людина, люди дуже довго сиділи і думали, які ознаки можна було б знайти, щоб відрізняти ці зображення. Наприклад, зображення будинку легко відрізнити, якщо у нас багато геометричних ліній, які перетинаються. У птахів, наприклад, буває дуже яскраве забарвлення, тому якщо ми маємо поєднання зелених, червоних, інших ознак, то, напевно, це більше схоже на птаха. Весь підхід полягав у тому, щоб придумати якнайбільше таких ознак, а далі подати їх на якийсь досить простий лінійний класифікатор, приблизно такий, що складається насправді з одного шару. Є ще й складніші методи, але вони працювали на цих ознаках, які придумані людиною. А з нейронними мережами виявилося, що ви можете просто зробити навчальну вибірку, не виділяти жодних ознак, просто подати їй на вхід зображення, і вона сама навчиться, вона сама виділить ті ознаки, які критичні для класифікації цих зображень за рахунок цієї ієрархії.


Погляньмо на те, які ознаки виділяє нейронна мережа. На перших шарах такої мережі виявляється, що мережа виділяє дуже прості ознаки. Наприклад, переходи градієнтів чи якісь лінії під різним кутом. Тобто вона виділяє ознаки – це означає, що нейрон реагує, якщо приблизно такий шмат зображення він бачить у вікні свого ядра згортки, в області видимості. Ці ознаки не дуже цікаві, ми б самі могли їх придумати.


Переходячи глибше, бачимо, що мережа починає виділяти складніші ознаки, такі, як кругові елементи і навіть кругові елементи разом із якимись смужками.


І чим далі ми йдемо нейронною мережею, чим далі ми від входу, тим складнішими стають ознаки. Тобто, наприклад, цей нейрон вже може реагувати на обличчя собаки, тобто він запалюється, коли бачить у частині зображення обличчя собаки, банку, годинник, ще щось таке.


Навіщо це все потрібно? Є за сучасними мірками невелика, але три роки це була найбільша розмічена база зображень у світі Image.net. У ній є трохи більше мільйона зображень, які поділені на тисячу класів. І необхідно досягти найбільшої точності розпізнавання на цій вибірці.


Ця вибірка дуже непроста. Треба просто зрозуміти, що, наприклад, хаски та сибірський хаски – це два різні класи там. Якщо мені показати ці два зображення, я не відрізню, де хаски, а де сибірський хаски, а мережа може відрізнити. Там, на мою думку, понад 300 порід собак різних класів і кілька десятків лише видів тер'єрів. Тобто людина, напевно, має якесь специфічне знання в галузі кінології, але звичайна людина не може.


Застосували нейронну мережу до цієї вибірки зображень, і виявилося, що вона дуже непогано з нею справляється. Наприклад, тут показана картинка, під картинкою показаний правильний клас, а тут показані стовпчиками передбачення мережі. І що більше стовпчик, то більше мережа впевнена, що це передбачення правильно. І ми бачимо, що вона правильно передбачає леопарда, передбачає скутер, незважаючи на те, що тут крім скутера ще люди є на зображенні. Але вона бачить, що скутер – це домінуючий об'єкт на зображенні, і передбачає саме його. Припустимо, вона навіть передбачає кліща, незважаючи на те, що все зображення складається просто з однорідного фону, і кліщ тільки десь у самому кутку. Але вона розуміє, що кліщ є основою цієї сцени. При цьому аналіз помилок нейронної мережі теж дуже цікавий і дозволяє виявити, наприклад, помилки в навчальній множині, тому що цю множину розмічали люди, і люди завжди помиляються. Допустимо, є картинка з далматином і вишнею, на яку нейронна мережа з величезною впевненістю відповідає, що це далматин. Щоправда, ми дивимося на це зображення і бачимо, що основний об'єкт – далматин. Але насправді на передньому фоні тут є вишня, і людина, яка розмічала це зображення у процесі підготовки вибірки, чомусь вирішила, що вишня – це домінуючий об'єкт на цьому зображенні. І виходить, що нейронна мережа помилилася за нашою метрикою.

З іншого боку, наприклад, тут є деяка тварина праворуч унизу. Я не знав, що то за тварина. У розмітці написано, що то мадагаскарська кішка. Повіримо розмітці. Але мережа робить дуже слушне припущення про те, що це може бути. Вона каже, що це якийсь вид мавпи. Мені здається, що вони дуже розумні. Тобто я теж міг би припустити, що це якийсь вид мавпи, дуже нерозповсюджений та екзотичний.


Основною метрикою помилки на цій базі є так звана топ-5 помилка. Це коли ми беремо Топ-5 пророцтв, перші п'ять пророцтв нашої мережі, в яких вона найбільш впевнена, і якщо правильний клас з розмітки потрапив у ці п'ять пророцтв, то ми говоримо, що мережа права. І помилка – це коли у нас у перші п'ять пророцтв не потрапив правильний клас. І до ери нейронної мережі (це 2010-2011 рік, це до ери згорткових нейронних мереж) ми бачимо, що помилка, звичайно, зменшувалася, була трохи нижче 30%, а в 2011 році ще трохи нижче, але, наприклад, у 2012 році Коли вперше застосували згорткову нейронну мережу до цього завдання, виявилося, що ми можемо знизити помилку радикально, тобто всі інші методи були на це нездатні, а нейронна мережа була на це здатна, і далі в міру зростання інтересу до нейронних мереж виявилося, що ми можемо знизити цю помилку – це буде деяка спекуляція – на рівень, якого може досягти людина на цій базі. Було проведено деяке дослідження, воно було не дуже глобальне, там було п'ять осіб, які кілька днів готувалися розпізнавати подібні зображення, і у них вийшла помилка десь у районі 4,5% на цій вибірці, і нейронна мережа на момент весни або літа 2015 року цей рубіж побила, що всіх дуже вразило, було багато новинних нотаток з цього приводу, і так далі.


Те, про що я говорив раніше, що глибина цієї мережі, тобто кількість цих функцій, які ми послідовно застосовуємо до вхідного зображення, має значення. Наприклад, у 2013 році перемогла така мережа, яка мала порядку, на мою думку, 8 або 9 шарів послідовного перетворення зображення. А, наприклад, у 2014 році перемогла така мережа, в якій дуже багато верств та архітектура загалом значно складніша, але головне, що вона глибша, тобто це означає, що ми більше застосовуємо нелінійності до нашого вхідного зображення, і за рахунок цього ми отримуємо прорив як.


Навіщо все це потрібно? Не лише розпізнавати зображення, а й як ми можемо застосувати це на практиці? Наприклад, так як ми з вами вже знаємо, що на кожному шарі ми отримуємо деякі нові ознаки, то ми можемо взяти з якогось одного з останніх шарівнейронної мережі виходи і вважати щось, припустимо, це деякі нові ознаки зображення, і шукати схожі зображення на основі цих ознак, тобто, грубо кажучи, спробувати знайти зображення з такими самими ознаками, як у вхідного. Наприклад, є така картинка, хлопці грають у баскетбол, NBA, усі справи, і ми хочемо знайти схожі зображення.


Кидаємо цю картинку в сервіс схожих зображень і дійсно знаходимо інші зображення. Це інші гравці та інші команди. Але ми бачимо, що всі вони належать до того, як гравець веде м'яч на майданчику.


Насправді, те, про що я зараз розповідаю – алгоритми комп'ютерного зору – мають дуже багато застосувань, але є також дуже багато застосувань у реальному світі, такі, як пошук таких зображень, розпізнавання. Але є дуже багато анекдотичних застосувань. Наприклад, група дослідників спробувала взяти досить просту картинку, вона тут ліворуч у верхньому ряду зображення, і навчити мережу стилізувати це зображення під картини різних великих художників, таких як Пабло Пікассо, Кандинський, Вінсент Ван Гог. Фактично вони подавали на вхід звичайні зображення та картину і казали, що «Ми хочемо, щоб, з одного боку, вихідне зображення було схоже на вихідне, але також щоб у ньому був присутній певний стиль цього художника». І, як бачимо, воно досить цікавим чином перетворює картинки. І, з одного боку, ми можемо дізнатися про вихідне зображення, а також риси автора. Як бачите, більшість статей, про які розповідаю, – це десь 2014-2015 рік, і ви також можете зайти та подивитись детальніше.

Рекурентні нейронні мережі

В останній рік набувають популярності інші моделі нейронних мереж: не згорткові, які ми застосовуємо до зображень, а так звані рекурентні моделі нейронних мереж. Що це таке?


Зазвичай така мережа - мережа прямого поширення - не має в собі жодної пам'яті. Тобто, скажімо, ми подали зображення на цю мережу, вона щось розпізнала, ми подали наступне зображення, і вона нічого про попереднє зображення вже не пам'ятає. Тобто вона не пов'язує послідовність зображень між собою. У багатьох завдань такий підхід не дуже застосовний, тому що якщо ми, наприклад, візьмемо якийсь текст, припустимо, текст природною мовою, якийсь розділ книжки, то цей текст складається зі слів, і ці слова утворюють деяку послідовність. І нам хотілося б, щоб ми, наприклад, подавали це слово на мережу, потім подавали на наступне слово, але щоб вона не забула про попереднє слово, щоб вона пам'ятала про нього, пам'ятала, що воно було, і аналізувала кожне наступне слово з урахуванням Попередня історія. І для цього існують рекурентні нейронні мережі. Як тут видно, крім того, що у нас є шлях від вхідних ознак до деякого виходу нейронної мережі, ми також враховуємо сигнали з цих внутрішніх шарів з попередніх тимчасових кроків, тобто ми ніби запам'ятовуємо інформацію, подаємо її на вхід знову самим собі. І таку рекурентну нейронну мережу можна розгорнути.

Справа – це просто розгортка за часом. x 0 x 1 x 2і так далі. І мережа ще пам'ятає свій попередній стан. І те, як вона аналізує кожен вхідний об'єкт, залежить не лише від цього об'єкта, а й від попередньої історії.


Навіщо це застосовується? Одне з цікавих застосувань – наприклад, ми хочемо генерувати тексти просто за буквою. Припустимо, ми спочатку ініціалізуємо цю мережу деякою послідовністю, наприклад, словом, і далі хочемо, щоб на кожному наступному часовому кроці вона нам випльовувала просто літеру, тобто якусь наступну літеру вона хоче написати. Це стаття в LaTeX, яка дозволяє одночасно писати, тобто це така мова програмування для написання статей за великим рахунком. Якщо натренувати мережу в такий спосіб і дозволити їй генерувати текст, виходять осмислені, по крайнього заходу, слова. Тобто слова вона не плутає. Здається, навіть синтаксис пропозицій теж виходить осмисленим. Тобто у нас є дієслово, є підлягає, присудок англійською мовою, але семантика цих пропозицій, тобто їх зміст, не завжди присутня. Начебто з погляду побудови все виглядає добре, а сенсу там іноді буває небагато. Але це дуже проста модельвона генерує по одному символу за прохід. І, наприклад, вона ще навіть намагається малювати якісь діаграми тут праворуч нагорі. Так як мова розмітки LaTeX дозволяє не тільки писати, а й малювати, вона намагається ще щось малювати.


Або, наприклад, ми можемо безпосередньо генерувати вихідний програмний код. Ця мережа була навчена на вихідному коді ядра операційної системи Linux, і ми можемо бачити, що, здається, вона генерує принаймні схожий на осмислений код. Тобто у нас є, наприклад, функції, є різні умовні вирази, цикли тощо. Здається, це виглядає осмислено. Незабаром мережі самі будуть писати за нас програми, здається, але, я думаю, що до цього ще далеко, і програмісти будуть нам ще потрібні, не тільки мережі.


Виявляється, що тренувати такі рекурентні мережі, якщо ми просто представляти їх так шарами нейронів, досить складно. Важко тому, що вони швидко забувають інформацію про попередні об'єкти, які ми їм подавали до поточного. А іноді нам потрібно, щоб вони пам'ятали взаємозв'язки між об'єктами, що дуже віддалені на відстані. Припустимо, якщо ми собі уявимо «Війну та мир», чудовий твір Льва Толстого, то там деякі пропозиції займають кілька рядків. І я пам'ятаю, що коли я їх читав, то наприкінці пропозиції я вже забував про те, що там було спочатку. І така ж проблема спостерігається у рекурентних мереж, вони теж забувають, що було на початку послідовності, а не хотілося б. І для цього вигадали складнішу архітектуру. Тут важливо те, що в центрі є один нейрон, який подає свій вихід собі ж на вхід. Ми бачимо такий рекурентний зв'язок. Крім усього іншого, у нас є ще окремі нейрони, які контролюють, вони є вентилями, тобто визначають, чи потрібно нам сприймати поточну вхідну інформацію. Є вентиль на вході, тобто у нас є певний вхід, і ми визначаємо, чи потрібно його пропустити далі чи не потрібно. Або нам потрібно його ігнорувати та просто зберегти свої спогади. Так само тут є вентиль на спогади: чи варто нам зберігати наші спогади зараз про попередні, чи нам варто їх обнулити і сказати, що ми перемо нашу пам'ять.

Звідки береться число нейронів, і що вони являють собою?
- Нейрон – це просто такий суматор, який має якісь входи і має вагу, з якими він їх виважено підсумовує. Це дуже простий елемент.

А кількість – це добре питання, питання експериментального підходу. У різних завданнях нам може бути потрібна різна кількість шарів цих нейронів і різна кількість нейронів у шарах. Це дуже залежить від завдання. Щоразу, коли ви стикаєтеся з якимось завданням, яке ви хочете вирішити за допомогою нейронних мереж, потрібно провести якусь кількість експериментів, щоб зрозуміти, що якщо у вас 100 нейронів – цього недостатньо. Вона погано навчається, висока помилка на навчальній множині, треба більше нейронів. Наприклад, 100 тис нейронів – надто багато, ми не маємо таких обчислювальних ресурсів, щоб усе обрахувати, її навчити. Вона перенавчається на безлічі. Тож правда десь посередині. Давайте візьмемо 50 тис., наприклад, і отримаємо оптимальну якість розпізнавання.
Подібні мережі, які можуть контролювати вентилями, чи потрібно сприймати поточний вхід і чи потрібно забувати деяку пам'ять, яка у нас зараз є, вони зараз і застосовуються. І типова архітектура такої мережі виглядає так.


У нас на вхід цієї мережі подається вхідна послідовність, наприклад деякі пропозиції, і на виході ми теж можемо за допомогою такої ж рекурентної мережі генерувати слова. Тобто ми згортаємо вхідну послідовність і генеруємо послідовність, що виходить.

Для чого це потрібно? Застосувань дуже багато, тому я про всі з них не розповідатиму. Одне із застосувань, які активно досліджуються – це, наприклад, переклад. Тобто на вході у нас пропозиція з однієї мови, наприклад, з російської, а на виході ми намагаємося згенерувати переклад цієї пропозиції іншою мовою, наприклад, англійською. Інша програма трошки фантастична – це коли у нас є деяка стаття, яку нам написав якийсь журналіст, а ми хочемо якийсь короткий вичавки з цієї статті, abstract. І ми подаємо на вхід цієї мережі всю цю статтю, а далі вона нам деякий короткий зміст цієї статті випльовує на висновку.

Або, наприклад, ми можемо навчити деяку систему, яка вестиме діалог і розмовлятиме з нею. Наприклад, ми можемо взяти великі логи спілкування людей із командою техпідтримки, тобто людей, які вирішують деякі проблеми користувача, пов'язані з IT, натренувати таку мережу та спробувати поспілкуватися з нею. Наприклад, тут у користувача виникла проблема, що він не може підключитися через мережу до віддаленого терміналу, і користувач запитує, що йому робити, і машина намагається вирішити його проблему. Вона спочатку намагається зрозуміти деякі вхідні дані, тобто яка операційна системау користувача, що він бачить на екрані, намагається проводити різні діагностичні тести та пропонує якісь рішення. І все це зроблено за допомогою цієї простої мережі, яка складається просто із зважування різних входів, які їй подаються на вхід. Тут немає жодних таємних знань, або люди не сиділи довго-довго і не думали, що «Давайте спробуємо якось, якщо у нас є одне слово на початку речення, інше слово наприкінці, як би нам їх пов'язати, проаналізувати?». Ні, все це подали на нейронну мережу, вона навчилася та генерує такі чудові діалоги з людиною.

Зрештою, нейронна мережа вирішує проблему людини. Вона йому каже, що потрібно отримати інший сертифікат, ще щось ввести пароль, і людина залишається задоволена.

Згорткові + рекурентні мережі

Ми можемо спробувати зв'язати згорткові мережі з рекурентними. Я розповідав окремо про одні, окремо про інші, але ми можемо спробувати їх зв'язати.


Наприклад, завдання «картинка до тексту». Припустимо, у нас є картинка на вході, і ми застосовуємо згорткову нейронну мережу, щоб отримати деяке стисле уявлення цієї картинки, деякі ознаки. Далі ми подаємо ці ознаки на вхід рекурентної мережі, і вона нам генерує опис цього зображення. Припустимо, три роки тому таке здавалося просто неможливим, а зараз нейронні мережі просто описують зображення, що на них зображено які об'єкти. І не просто кажуть, що на картинці є такий об'єкт, а описують це зв'язковою пропозицією.

Тут має бути ще одне відео. Воно називається "Прогулянка з нейронною мережею". Воно було опубліковано буквально тижнів два-три тому. Один із шанувальників нейронних мереж, назвемо його так, вирішив застосувати технологію «картинка в текст», просто пройшовшись своїм рідним містом Амстердаму з телефоном і знімаючи щось на камеру, і намагався зрозуміти, що ж мережа говоритиме на предмети навколишнього світу. Тобто не ті картинки в академічних колекціях, які, можливо, не дуже близькі до реальності, а просто знімаючи те, що навколо нього відбувається. Тут буде не дуже добре видно, але сподіваюся, що ми побачимо.

Тут ліворуч зверху відповідь мережі на те, що вона бачить. Це вона каже «якась людина у кофті». Генерує якісь фрази. Тут вона каже, що це знак, вона не розуміє, що на ньому написано, але вона розуміє, що це знак. Каже, що це людина гуляє вулицею, якісь будівлі навколо, вікно або двері, провулок, каже, що багато велосипедів (але це Амстердам, там багато велосипедів, тому вона часто каже, що скрізь велосипеди). Каже, що припарковано білий човен. І так далі. Я не сказав би, що це спеціально підготовлене зображення, людина просто ходить і знімає, і в реальному часі виходить, що нейромережа справляється з розпізнаванням того, що людина знімає.

А з якою швидкістю вона це розпізнає? А якщо людина біжить, а не йде, як швидко вона розуміє?
- Мені здається, що просто частота кадрів задана.
- Так. Насправді, я вас трошки обдурив, тому що, наскільки я пам'ятаю, це відео було знято з постобробкою, тобто він його зняв, а потім уже прогнав локально на комп'ютері через розпізнавання цієї мережі. Але зараз у дуже багатьох мобільних телефонахє графічні відеокарти, які є в комп'ютері, тільки вони менші, менш потужні, але потужніші, ніж процесори. І в цілому можна практично з якоюсь дискретизацією кадрів у режимі реального часу щось розпізнавати якоюсь невеликою мережею, навіть коли ви біжите, тобто намагатися це робити. Загалом це можливо, і я думаю, що це питання буде менш актуальним ще через кілька років, тому що, як ми знаємо, обчислювальні можливості зростають, і, напевно, колись стане можливим у режимі реального часу з найбільшими мережами. небудь розпізнавати.

- Насправді сенс цієї технології розпізнавання на картинці? Тобто, я сам бачу.
- Тут мені підказують – для людей з обмеженими можливостями це має велике значення. По-друге, уявіть собі, як відбувається пошук за зображеннями в Інтернеті. Як?
- Ви розповідали, з цих самих.
– Це пошук схожих зображень. А, наприклад, якщо ви зайдете на якийсь сервер типу «Яндекс.Малюнки»…
- За ключовими словами.
- Так. І в цей момент, якщо ми можемо генерувати ці ключові слова з картинки, пошук буде просто якіснішим. Тобто ми можемо знаходити картинки ... Зараз пошук по картинках здебільшого йде за прикартинними текстами. Тобто навколо картинки є якийсь текст. Коли ми кладемо картинку до нашого індексу, то кажемо, що у нас у картинки такий текст. Коли користувач вводить запит, ми намагаємося зіставляти слова та запити зі словами у тексті. Але прикартинний текст - це дуже складна штука, вона буває не завжди релевантна картинці, поряд з якою вона розташована. Багато людей намагаються оптимізувати свій заробіток в Інтернеті, наприклад, або ще щось таке, і тому це не завжди надійна інформація.

А якщо ми зможемо надійно говорити, що на картинці, це буде дуже корисно.

У тому відео були досить сухі і короткі описи, тобто ми говорили, що «Ось човен припаркований десь» або «Ось купа велосипедів лежить на асфальті», але ми можемо натренувати мережу трохи іншій вибірці, наприклад, на вибірці пригодницьких романів, і тоді вона генеруватиме дуже живі описи до будь-яких картинок. Вони будуть не зовсім релевантні цим картинкам, тобто не до кінця, але принаймні вони будуть дуже смішні. Наприклад, тут людина просто спускається на лижах, і мережа говорить про те, що була така людина, яка жила сама по собі, і вона не знала, як далеко вона може зайти, і вона гналася, не показувала жодних ознак слабкості. Тобто такий пригодницький роман з однієї картинки. Це зробила також група дослідників у відповідь на те, що говорили, що «У вас якісь дуже сухі прогнози на картинці, якось мережа не палить». Але зробили те щоб мережа генерувала цікаві описи.

Тут теж, якщо прочитати, то ціла драма про те, як людина сідала в автобус, намагалася кудись доїхати і потім міняла маршрути, сідала на машину, опинялася в Лондоні, і так далі.

Взагалі-то ми можемо поміняти ці два блоки в нашій архітектурі і сказати, що «А давайте ми спочатку поставимо на перше місце рекурентну мережу, яка сприйматиме слова, а потім деяку подібність згорткової мережі, яка не стискатиме наше зображення, а навпаки, розтискати його». Тобто якийсь вектор ознак у якомусь просторі, а ми за цим вектором ознак хочемо згенерувати зображення. І один мій колега в «Яндексі» сказав, що «Майбутнє, воно тут, тільки поки що трохи розмите». І майбутнє справді тут, але трохи розмите. Тут можна побачити, що ми генеруємо зображення за описом. Наприклад, ліворуч угорі жовтий автобус припаркований на паркувальне місце. Тут кольори складно сприймаються, на жаль, але, проте, якщо ми замінимо, наприклад, слово «жовтий» на слово «червоний» у цій же пропозиції, то дійсно зміниться колір цієї плями, яка є автобусом, тобто він стане червоним. І те саме, якщо ми поставимо, що це зелений автобус, то ця пляма стане зеленою. Він справді чимось схожий на автобус.
Тут представлено те саме, що якщо ми мінятимемо не тільки колір, а й самі об'єкти, наприклад, «шоколадка лежить на столі» або «банан лежить на столі», то ми безпосередньо не задаємо колір об'єкта, але ясна річ, що шоколадка зазвичай коричнева, а банан зазвичай жовтий, і тому, навіть безпосередньо не задаючи колір об'єкта, наша мережа змінює певну кольоровість зображення.

Це приблизно те саме, про що я говорив раніше. Наприклад, стадо слонів гуляє випаленим полем, полем із сухою травою. І суха трава зазвичай буває оранжевою, а зелена трава зазвичай буває зеленою. І тут видно, що якісь істоти, не дуже помітні, гуляють по чомусь зеленому, а тут по чомусь помаранчевому. Зазвичай цих істот більше одного. Якщо зустрінемося з вами через рік чи через півроку, то ми сильно просунемося в цій галузі вперед.

Нейронні мережі + навчання із підкріпленням

Про що я хотів би розповісти на завершення – це дуже цікава тема«Зв'язування нейронних мереж із навчанням із підкріпленням». Хтось із вас читав, що таке навчання з підкріпленням?

- У психології є таке.
- Насправді це пов'язано із психологією. Область «зв'язка нейронних мереж з навчанням з підкріпленням» - це область дослідження нейронних мереж, що відноситься до біології і психології.

Уявімо, що у нас є мишка і є лабіринт. І ми знаємо, що в кінцях цього лабіринту лежить сир, вода, морква і нічого в одному з кінців лабіринту. І ми знаємо, що кожен із цих предметів має деяку корисність для нашої мишки. Наприклад, мишка дуже любить сир, але менше любить морквину та воду, але любить їх однаково, а нічого вона зовсім не любить. Тобто якщо вона прийде до кінця лабіринту і не побачить нічого, вона буде дуже засмучена.

Уявіть собі, що у нас у цьому простому лабіринті є лише три стани, в яких може бути мишка – це S 1. В стані S 1вона може зробити вибір – піти ліворуч чи піти праворуч. І в стані S 2і S 3вона також може зробити вибір піти ліворуч або піти праворуч.


Ми можемо задати таке чудове дерево, яке говорить нам, що якщо мишка двічі піде ліворуч, то вона отримає деяку цінність, що дорівнює чотирьом умовним одиницям. Якщо вона піде праворуч, а потім вже неважливо, ліворуч чи праворуч, після того, як перший раз вона сходила праворуч, а отримає цінність двійки.

І завдання навчання з підкріпленням у цьому найпростішому випадку полягає у побудові такої функції Q, яка для кожного стану Sу нашому лабіринті або в якомусь нашому середовищі говоритиме: «Якщо ти вчиниш цю дію, – наприклад, підеш ліворуч, – то ти зможеш отримати таку нагороду». Нам важливо, щоб у стані S 1коли ми ще не знаємо, що буде попереду, щоб ця функція говорила, що «Якщо ти підеш ліворуч у цьому стані, ти зможеш отримати нагороду 4». Хоча, якщо ми з S 1перейдемо в S 2, то ми можемо отримати і нагороду 0. Але максимальна нагорода, яку ми можемо отримати за правильної стратегії поведінки, – це 4.


У цій формулі це відображено. Уявімо, що для певного стану ми знаємо для всіх наступних станів, в які можна потрапити з цього, оптимальну нагороду, тобто ми знаємо оптимальну політику поведінки. Тоді для поточного стану ми дуже легко можемо сказати, яку дію нам треба робити. Можемо просто переглянути всі наступні стани, сказати, в якому з наступних станів ми отримуємо найбільшу нагороду - уявімо, що ми її знаємо, хоча це не так насправді, - і сказати, що потрібно йти в стан, в якому очікувана нагорода більше.


Є алгоритм цієї функції, тому що ми не знаємо для наступних станів оптимальну політику поведінки.


І це алгоритм досить простий, він ітеративний. Уявімо, що у нас є ця функція Q(s, a).


У нас є її старе значення, і ми хочемо якось її оновити, щоб вона стала більш правильно оцінювати поточний реальний світ.

Що ми повинні зробити? Ми повинні для всіх наступних станів оцінити, де найбільший максимум можемо заробити, в якому з наступних станів. Ви бачите, що це ще не оптимальна оцінка, це просто якесь наближення цієї оцінки. А це різниця між оцінкою нагороди у поточному стані та в наступному. Що це означає?

Уявімо, що в нас у якомусь стані нашого середовища, наприклад, візьмемо просто, що це якийсь лабіринт, до того ж з такими клітинами, тобто ми знаходимося тут у цьому стані і ми хочемо знайти цю функцію Q (S, up)тобто знайти, скільки ми зможемо придбати цієї корисності, якщо підемо нагору.

І, припустимо, зараз ця функція у нас дорівнює трьом. А в цьому стані S, який ми переходимо після того, як вийшли з S, уявімо, що якщо ми візьмемо max a" Q(S",a")тобто візьмемо максимум, скільки ми можемо отримати з цього стану S, воно дорівнює 5, наприклад. У нас явно деяка нестиковка. Тобто ми знаємо, що з цього стану ми можемо отримати нагороду 5, а в цьому стані ми чомусь цього ще не знаємо, хоча якщо ми підемо нагору, то зможемо отримати цю нагороду 5. І в такому разі ми намагаємося цю нестиковку усунути, тобто беремо різницю між Q (S, up) = 3і max (a") ⁡ Q(S",a")=5і, таким чином, на наступній ітерації збільшуємо цінність цієї дії у тому стані. І так ітеративно ми вчимося.


Навіщо все це треба? У цій задачі, до якої нейронні мережі не мали жодного відношення спочатку, це було навчання з підкріпленням, де також використовувалися класичні методи навчання, можна також їх застосувати.


У нас є ігри Atari. Я не впевнений, що хтось із вас у них грав, бо навіть я в них не грав. Я в них грав, але вже у дорослому віці. Вони різні. Найвідоміша з них, яка зліва внизу розташована - це називається Space Invaders, це коли у нас є деякий шатл, на нас насувається група жовтих інопланетних загарбників, а ми така самотня зелена гармата, і ми намагаємося всіх цих жовтих загарбників відстрілити і таким чином виграти .
Є зовсім прості ігри, як «Пінг-понг», коли нам треба намагатися не прогаяти м'яч у своєї половини і зробити так, щоб суперник упустив м'яч на своїй половині.


Що ми можемо зробити? Ми можемо знову взяти згорткові нейронні мережі, подати на вхід цим згортковим нейронним мережам зображення гри і на виході спробувати отримати не клас цього зображення, а що ми повинні зробити в цій ігровій ситуації, тобто як ми повинні вчинити: піти ліворуч, вистрілити, нічого не робити і таке інше.

І якщо ми зробимо таку досить стандартну мережу, тобто тут згорткові шари, шари просто з нейронами, і навчимо її, запустимо її в цьому середовищі - а в цьому середовищі треба правильно розуміти, що у нас є рахунок, і цей рахунок якраз і є нагородою - якщо ми запустимо в цій грі і дамо їй трохи навчитися, то ми отримаємо систему, яка може, як я покажу далі, навіть обігравати людину.

Тобто вони зараз на рівні, що значно перевищує топову людину, яка грає в цю гру. І ми бачимо, що ця гра не дуже проста, тут треба ховатися за цими червоненькими штучками. Вони захищають нас. І коли ми бачимо, що в нас летить бластер, то краще завертатися, ховатися за ними, потім вилазити назад і продовжувати відстрілювати ці жовті пікселі нагорі. Виглядає не дуже вражаюче, я відчуваю. Але, насправді, щоб досягти такого прориву, знадобилося чимало роботи. І я спробую розповісти, чому це справді вражаюче.

Ще до застосування нейронних мереж у цьому існувало безліч методів, які створювалися спеціально під кожну з цих ігор, і вони дуже добре працювали. Вони теж іноді обігравали людину і таке інше. Але, як і з областю розпізнавання зображень, людям доводилося дуже багато працювати, щоб вигадати ті чи інші виграшні стратегії в цій грі.

Вони брали кожну гру, наприклад, Space Invaders або «Пінг-понг», довго думали, як треба рухатися, вигадували якісь ознаки, говорили, що якщо м'яч летить під таким кутом і з такою швидкістю, то ми маємо розвинути таку швидкість. щоб прийняти його на протилежному боці і щоб він ще відскочив незручно для супротивника. І так далі. І для кожної гри це доводилося вигадувати окремо. А тепер вони взяли взагалі одну й ту саму архітектуру нейронної мережі, запустили її в різні ігри, і на всіх цих іграх ця одна архітектура, правда з різними вагами – у кожній грі були різні ваги, але та сама архітектура – ​​їй вдалося обіграти практично більшість цих методів, які вигадувалися протягом 10–20 років.

Тут синє - це, грубо кажучи, скільки очко набирає нейронна мережа, сіренька - це state of the art може до нейронних мереж, а відсотки в стовпчиках - це те, на скільки відсотків нейронна мережа грає краще, ніж людина. Тобто ми можемо бачити, наприклад, що в пінбол нейронна мережа грає на 2500% краще ніж людина. У бокс, у різні ігри, гонки, теніс, пінг-понг, навіть у Space Invaders нейронна мережа грає краще, ніж людина. До того ж треба розуміти, що Space Invaders – це дуже складна гра. Якщо ми тут подивимося, то вона тут знаходиться, і це сіреньке – це state of the art, який був раніше, грубо кажучи. Скажімо, що він був дуже поганий. Це означає, що ця гра дуже складна, і за допомогою нейронних мереж можна не лише обійти його, а й обійти людину.

Насправді, я показую тільки верхню частину цієї діаграми, там ще внизу є деяка частина цієї діаграми, де за спадною йде успіх нейронної мережі, але зараз на більшості ігор Atari з новими результатами мережа виграє у людини.
Звичайно, є дуже складні ігридля мережі, де потрібно мати пам'ять, про яку я говорив, і туди теж можна застосувати рекурентні мережі, і тоді результати значно покращаться.

Спасибі за увагу. Сподіваюся, у вас залишились питання.

Єдине, що я хотів сказати, що в Інтернеті шалена кількість різних матеріалів про нейронні мережі, дуже багато матеріалів у вигляді наукових статей, які, напевно, важко буде сприйняти з нуля. Але є дуже хороші туторіали. Вони здебільшого англійською. Є дуже добрий курс Віктора Лемпіцького у дорослому ШАД. Є, наприклад, друге посилання – так званий Hackers guide to Neural Networks. Це такий туторіал без математики, лише з програмуванням. Тобто там, наприклад, мовою Python показано, як робити найпростіші мережі, як їх навчати, як збирати вибірки і таке інше. Є дуже багато програмних засобів, у яких реалізовані нейронні мережі, і ними дуже просто користуватись. Тобто ви, грубо кажучи, просто створюєте нейрони, створюєте шари, з цеглинок збираєте нейронну мережу і далі нею користуєтеся. І я вас запевняю, це під силу кожному з вас – спробуйте поекспериментувати. Це дуже цікаво, весело та корисно. Спасибі за увагу.

Теги: Додати теги

Столична влада запустить нейронну мережу, яка розпізнаватиме автомобілі за силуетом, маркою та ліхтарями. Про це повідомили у Центрі організації дорожнього руху Департаменту транспорту та дорожньо-транспортної інфраструктури міста Москви.

Передбачається, що «розумна» система знизить навантаження на операторів та підвищить якість процесу передобробки порушень, зафіксованих автоматичними засобами фіксації правопорушень у галузі дорожнього руху. Використовуватиметься нейронна мережа в центрі фото-відеофіксації ЦОДД, який обробляє фотографії з камер. До речі, щодня туди надходить до 400 тисяч матеріалів.

За словами експерта в області сучасних технологійАндрія Михайлюка, Москва – лідер у сфері застосування сучасних технологій. Він додав, що нейронна система потрібна для обробки випадків, коли камера не може розпізнати номер автомобіля.

Іноді власники машин, щоб уникнути штрафу, закривають одну чи кілька цифр на номері, – розповів експерт. – Такі картинки потрапляють на обробку до співробітників.

При цьому людський ресурс – обмежений. Михайлюк вважає, що передача цієї функції комп'ютеру є цілком логічною.

Таке завдання має вирішувати не людина, а система машинного навчання, – зазначив він.

Експерт також додав, що, на його думку, таке завдання для нейронної мережі є досить примітивним. Справа в тому, що кількість моделей машин обмежена, при цьому стійкі ознаки автомобіля сильно залежать від форми самої машини та її ліхтарів.

Таким чином, вважає він, завдання, поставлене перед нейронною мережею, досить просте. Технічно таку систему можна розробити за кілька місяців, ще деякий час знадобиться навчання мережі за вже наявними фотографіями.

Експерт наголосив, що Росія у плані застосування сучасних технологій для виписки штрафів значно випереджає інші країни світу. На його думку, вся справа у нашому менталітеті.

У нас порушують правила дорожнього руху набагато частіше, ніж в інших країнах, - пояснив Андрій Михайлюк. - Якщо в Європі повісять камеру, то вона фіксуватиме умовно один штраф на місяць, а якщо про неї ще й знатимуть водії, то зовсім ніхто не порушуватиме. У нас у Росії ситуація зовсім інша.

У Москві на даний момент працює 1,5 тисяч стаціонарних камер фіксації порушень. У 2016 році за допомогою фото-відеофіксації було винесено 11,7 мільйонів штрафних постанов, у 2017 році – 24,6 мільйона, а за десять місяців 2018 року – понад 25 мільйонів. Зазначимо, що у Центрі організації дорожнього руху 280 співробітників займаються перевіркою інформації, виправленням помилок та контролем якості фото-відеофіксації.

"Яндекс" впровадив новий алгоритмпошуку на основі нейронних мереж. На думку експертів, це має допомогти компанії збільшити на російському ринку відрив від основного конкурента.

Російський інтернет-холдинг Яндекс впровадив новий пошуковий алгоритм на основі нейронних мереж. Про це повідомив керівник служби релевантності сервісу Олександр Сафронов. Новий алгоритм, який отримав назву «Корольов», шукає не лише за ключовими словами, а й за змістом, і на складні питання видаються точніші відповіді, пояснив представник «Яндекса».

У 2016 році «Яндекс» впровадив алгоритм «Палех», який у режимі реального часу зіставляє сенс рідкісного та унікального запиту та заголовка веб-сторінки, навіть якщо у них немає спільних ключових слів. Наприклад, за запитом «картина, де небо закручується» пошуковик зможе видати полотно Ван Гога «Зоряна ніч». На відміну від «Палеха», «Корольов» здатний аналізувати сторінку цілком, а також зміст запитів, за якими на неї переходять інші користувачі.

Керівник напрямку пошуку «Яндекса» Андрій Стыскин навів інший приклад складного запиту: «фільм про космос, де батько спілкується з дочкою через секундні стрілки». У даному випадку запит не містить ключових слів, але пошуковий алгоритм здатний зрозуміти, що йдеться про фільм «Інтерстеллар», каже Стискін.

За словами представників сервісу, нейромережа здатна самонавчати, тому чим більше користувачі шукають у пошуковику, тим точніше будуть результати. Для обкатки використовуватиметься відкрита краудсорсингова платформа "Яндекс.Толока", запущена в 2014 році. По суті, це сервіс, де будь-хто може брати участь у тестуванні продуктів «Яндекса», давати їм оцінки і залишати зауваження. Компанії це дозволяє покращувати свої послуги, а користувачі одержують за це грошові винагороди. Наразі в «Яндекс.Толоку» зареєстровано понад 1 млн користувачів.

«Проблема нейромереж полягала в тому, що вони дуже повільні і їх не можна було використовувати в роботі з величезними масивами тексту в режимі реального часу, — каже засновник та партнер компанії «Ашманов і партнери» Ігор Ашманов. — Якщо «Яндекс» реально зміг залучити нейромережі до індексування всього обсягу Рунету — це цікаво, це досить серйозний прорив із технологічної точки зору». Наскільки новий алгоритм покращить якість пошуку і чи покращить його в принципі, ще доведеться проаналізувати, зазначив Ашманов.

Основний конкурент «Яндекса» Google, за словами глави «Ашманів та партнери», поки що офіційно не оголошувала про впровадження нейромереж в алгоритми свого пошуку. "Google може собі дозволити налаштовувати фактори ранжирування по-іншому і довше експериментувати в цій галузі, не впроваджуючи нові технології в пошук просто тому, що у компанії більше програмістів і ресурсів", - зазначив експерт.


Наздогнати та перегнати

За словами аналітика «ВТБ Капіталу» Володимира Беспалова, Нова версіяросійського пошуковика - крок щодо утримання частки «Яндекса» на ринку. «Оновлене мобільний додаток«Пошук», новий алгоритм пошуковика — все це має допомогти «Яндексу» стабілізувати та збільшувати свою частку на ринку пошуку, — каже експерт. — Ефект буде відчутним не відразу, але зниження пошукових запитів у довгостроковій перспективі може менш сприятливо позначитися на майбутніх показниках. Пошук — головний продукт «Яндекса», основний дохід компанії — реклама, яка прив'язана до пошуку».

Утримувати свої позиції в мобільному пошуку "Яндексу" може допомогти рішення ФАС, нагадує Беспалов. У квітні цього року відомство уклало мирову угоду з головним конкурентом російської компанії на пошуковому ринку Google. Згідно з ним американський інтернет-гігант перегляне угоди з виробниками смартфонів на Android в Росії і дозволить користувачам вибирати як основні на своїх пристроях альтернативні Google пошукові сервіси.

За підсумками другого кварталу цього року частка Яндекса на ринку пошуку в Росії склала 54,3%, як повідомляла Yandex N.V. (Головна компанія «Яндекса») у своєму фінансовому звіті з посиланням на власний сервіс аналітики «Яндекс.Радар». На 31 липня, за даними "Яндекс.Радар", Google займав 40,36% серед пошукових системв Росії. За даними LiveInternet, в середньому за останні три місяці серед пошукових систем «Яндекс» лідирував з часткою 51,1%, у Google було 43,9%. Yandex N.V. не розкриває виручку від пошуку, але напрямок «пошук та портал» приніс компанії 20,135 млрд руб., що на 22% більше, ніж за аналогічний період 2016 року.

«Попередня революційна версія пошуку «Матрікснет» дозволила «Яндексу» відірватися від Google та наростити свою частку майже на 10 п.п. за півроку. Це наочний приклад того, як застосування проривних технологій призводить до очевидних бізнес-результатів навіть на такому складному ринку, як пошуковий», — вважає керуючий партнер онлайн-школи Skyeng та колишній директор з міжнародного розвитку «Яндекса» Олександр Лар'яновський.

На думку заступника директора з досліджень та розробок групи компаній ABBYY Тетяни Даніелян, від впровадження нових алгоритмів пошуку може змінитися і ранжування (порядок показу сайтів у пошуковій видачі). Однак це зіграє в плюс самим сайтам, стверджує вона: «Користувачі стануть частіше заходити на сторінки, які дійсно відповідають їхнім запитам, і конверсія сайтів може значно зрости».

2021 wisemotors.ru. Як це працює. Залізо. Майнінг. Криптовалюта.