Обмеження глибинного навчання і майбутнє

Ця стаття являє собою адаптацію до розділів 2 та 3 глави 9 моєї книги «Глибинне навчання з Python» (Manning Publications).

Стаття розрахована на людей, у яких вже є значний досвід роботи з глибинним навчанням (наприклад, тих, хто вже прочитав глави 1-8 цієї книги). Передбачається наявність великої кількості знань.

Обмеження глибинного навчання

Глибинне навчання: геометричний вигляд

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

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

Весь процес застосування цієї складної геометричної трансформації вхідних даних можна візуалізувати у 3D, зобразивши людини, який намагається розгорнути паперовий м’ячик: зім’ятий паперовий грудочка — це різноманіття вхідних даних, з якими модель починає роботу. Кожен рух людини з паперовим м’ячиком схоже на просту геометричну трансформацію, яку виконує один шар. Повна послідовність жестів по розгортанню — це складна трансформація всієї моделі. Моделі глибинної навчання — це математичні машини з розгортання заплутаного різноманіття багатовимірних даних.

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

Обмеження глибинного навчання

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

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

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

Ризик антропоморфизации моделей машинного навчання

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

Зокрема, найбільш яскраво це проявляється в «змагальних прикладах», тобто зразках вхідних даних мережі глибинного навчання, спеціально підібраних, щоб їх неправильно класифікували. Ви вже знаєте, що можна зробити градієнтне сходження в просторі вхідних даних для генерації зразків, які максимізують активацію, наприклад, певного фільтру сверточной нейромережі — це основа техніки візуалізації, яку ми розглядали у розділі 5 (примітка: книги «Глибинне навчання з Python»), також як алгоритму Deep Dream з глави 8. Схожим способом, через градієнтне сходження, можна злегка змінити зображення, щоб максимізувати передбачення класу для заданого класу. Якщо взяти фотографію панди і додати градієнт «гібон», ми можемо змусити нейромережа класифікувати цю панду як гібона. Це свідчить як про крихкість цих моделей, так і про глибоку відмінність між трансформацією з входу на вихід, якою вона керується, і нашим власним людським сприйняттям.

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

Читайте також  Drag & Drop у ваших додатках iOS

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

Локальне узагальнення проти граничного узагальнення

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

Люди здатні на набагато більше, ніж перетворення негайного стимулу негайний відгук, як нейромережа або, може бути, комаха. Люди утримують у свідомості складні, абстрактні моделі поточної ситуації, самих себе, інших людей, і можуть використовувати ці моделі для передбачення різних можливих варіантів майбутнього, і виконувати довготривале планування. Вони здатні на об’єднання в єдине ціле відомих концепцій, щоб уявити, що вони ніколи не знали раніше — як малювання коні в джинсах, наприклад, або зображення того, що б вони зробили, якби виграли в лотерею. Здатність мислити гіпотетично, розширювати свою модель ментального простору далеко за межі того, що ми безпосередньо відчували, тобто, здатність робити абстракції і міркування, мабуть, визначальна характеристика людського пізнання. Я називаю це «граничним узагальненням»: здатність пристосовуватися до нових, ніколи не випробуваним раніше ситуацій, використовуючи дуже мало даних або зовсім не використовуючи ніяких даних.

Це різко відрізняється від того, що роблять мережі глибинного навчання, що я б назвав «локальним узагальненням»: перетворення вхідних даних у вихідні дані швидко припиняє мати сенс, якщо нові вхідні дані хоча б трохи відрізняються від того, з чим вони зустрічалися під час навчання. Розглянемо, для прикладу, проблему навчання відповідним параметрам запуску ракети, яка повинна сісти на Місяць. Якщо б ви використовували нейромережа для цієї задачі, навчаючи її з учителем або з підкріпленням, вам знадобилося б дати їй тисячі або мільйони траєкторій польоту, тобто потрібно видати щільний набір прикладів у просторі вхідних значень, щоб навчитися надійному перетворення з простору вхідних значень в простір вихідних значень. На відміну від них, люди можуть використовувати силу абстракції для створення фізичних моделей — ракетобудування — і вивести точне рішення, яке доставить ракету на Місяць всього за декілька спроб. Таким же чином, якщо ви розробили нейромережа для управління людським тілом і хочете, щоб вона навчилася безпечно проходити по місту, не будучи збитим автомобілем, мережа повинна померти багато тисяч разів в різних ситуаціях, перш ніж зробить висновок, що автомобілі небезпечні, і не виробить відповідну поведінку, щоб їх уникати. Якщо її перенести у нове місто, то мережі доведеться заново вчитися більшу частину того, що вона знала. З іншого боку, люди здатні вивчити безпечна поведінка, не померши жодного разу — знову, завдяки силі абстрактного моделювання гіпотетичних ситуацій.

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

Висновки

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

Щоб зняти деякі з цих обмежень і почати конкурувати з людським мозком, нам потрібно відійти від прямого перетворення входу у вихід і перейти до розмірковувань та абстракцій. Можливо, підходящою основою для абстрактного моделювання різних ситуація і концепцій можуть бути комп’ютерні програми. Ми говорили раніше (примітка: у книзі «Глибинне навчання з Python»), що моделі машинного навчання можна визначити як «слухачі програми»; в даний момент ми можемо навчати тільки вузьке і специфічне підмножина всіх можливих програм. Але що якщо б ми могли навчати кожну програму, модульно і багаторазово? Подивимося, як ми можемо до цього прийти.

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

На високому рівні ось основні напрямки, які я вважаю перспективними:

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

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

Отже, вперед.

Моделі як програми

Як ми відзначили раніше, необхідним трансформаційних розвитком, яке можна очікувати в області машинного навчання, є відхід від моделей, що виконують чисто розпізнавання шаблонів і здатних лише на локальне узагальнення, до моделей, здатним на абстракції і міркування, які можуть досягти граничного узагальнення. Всі нинішні програми ШІ з базовим рівнем міркувань жорстко запрограмовані людьми-програмістами: наприклад, програми, які покладаються на пошукові алгоритми, маніпуляції з графом, формальну логіку. Так, у програмі DeepMind AlphaGo велика частина «інтелекту» на екрані спроектована і жорстко запрограмована експертами-програмістами (наприклад, пошук у дереві за методом Монте-Карло); навчання на нових даних відбувається тільки в спеціалізованих подмодулях — мережі створення цінностей (value networks) і мережі з питань політики (policy networks). Але в майбутньому такі системи штучного інтелекту можуть бути повністю навчені без людської участі.

Читайте також  Приклад розрахунку коефіцієнта готовності» для IT-системи

Як цього досягти? Візьмемо добре відомий тип мережі: RNN. Що важливо, у RNN трохи менше обмежень, ніж у нейромереж прямого поширення. Це тому що RNN являють собою трохи більше, ніж прості геометричні перетворення: це геометричні перетворення, які здійснюються безперервно в циклі for. Часовий цикл for задається розробником: це вбудоване допущення мережі. Природно, мережі RNN все ще обмежені в тому, що вони можуть представляти, в основному, тому що кожен їх крок як і раніше є дифференцируемым геометричним перетворенням і з-за способу, яким вони передають інформацію крок за кроком через точки в безперервному геометричному просторі (вектори стану). Тепер уявіть нейромережі, які б «нарощувалися» примітивами програмування таким же способом, як цикли for — але не просто одним-єдиним жорстко закодованим циклом for з прошитою геометричної пам’яттю, а великий набір примітивів програмування, з якими модель могла б вільно звертатися для розширення своїх можливостей обробки, таких як гілки if, оператори while, створення змінних, дисковий сховище для довготривалої пам’яті, оператори сортування, просунуті структури даних зразок списків, графів, хеш-таблиць і багато чого іншого. Простір програм, які така мережа може представляти, буде набагато ширше, ніж можуть висловити існуючі мережі глибинного навчання, і деякі з цих програм можуть досягти чудової сили узагальнення.

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

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

Безумовно, Я очікую, що до цієї області знову прокинеться великий інтерес у наступні кілька років. Зокрема, я очікую взаємне проникнення суміжних областей глибинного навчання і програмного синтезу, де ми будемо не просто генерувати програми на мовах загального призначення, а де ми будемо генерувати нейромережі (потоки обробки геометричних даних), доповнювалися багатим набором алгоритмічних примітивів, таких як цикли for — і багато хто інші. Це повинно бути набагато більш зручно і корисно, ніж пряма генерація вихідного коду, і істотно розширить межі для тих проблем, які можна вирішувати з допомогою машинного навчання — простір програм, які ми можемо генерувати автомтически, отримуючи відповідні дані для навчання. Суміш символічного ІЇ та геометричного ІІ. Сучасні RNN можна розглядати як історичного предка таких гібридних алгоритмо-геометричних моделей.


Малюнок: Навчена програма одночасно покладається на геометричні примітиви (розпізнавання шаблонів, інтуїція) і алгоритмічні примітиви (аргументація, пошук, пам’ять).

За межами зворотного поширення та диференціюється шарів

Якщо моделі машинного навчання стануть більше схожі на програми, тоді вони більше майже не будуть дифференцируемы — безумовно, ці програми будуть використовувати безперервні геометричні шари як підпрограми, які залишаться дифференцируемыми, але вся модель в цілому не буде такою. В результаті, використання зворотного поширення для налаштування значень ваг в фіксованої, жорстко закодованої мережі не може залишатися в майбутньому кращим методом для навчання моделей — принаймні, не можна обмежуватися тільки цим методом. Нам потрібно з’ясувати, як найбільш ефективно навчати недифференцируемые системи. Нинішні підходи включають генетичні алгоритми, «еволюційні стратегії», певні методи навчання з підкріпленням, ADMM (метод змінних напрямків множників Лагранжа). Природно, градієнтний спуск більше нікуди не дінеться — інформація про градієнті завжди буде корисна для оптимізації диференціюється параметричних функцій. Але наші моделі безумовно будуть стає все більш амбітними, ніж просто диференційовані параметричні функції, і тому їх автоматизована розробка («навчання» у «машинному навчанні») зажадає більшого, ніж зворотне поширення.

Крім того, зворотне поширення має рамки end-to-end, що підходить для навчання хороших зчеплених перетворень, але досить неефективно з обчислювальної точки зору, тому що не використовує повністю модульність глибинних мереж. Щоб підвищити ефективність чого б то не було, є один універсальний рецепт: ввести модульність та ієрархію. Так що ми можемо зробити саме зворотне поширення більш ефективним, ввівши расцепленные модулі навчання за певним механізмом синхронізації між ними, організованому в ієрархічному порядку. Ця стратегія частково відображена у недавній роботі DeepMind за «синтетичним градієнтам». Я очікую набагато, набагато більше робіт в цьому напрямку в найближчому майбутньому.

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

Автоматизоване машинне навчання

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

Зараз більшу частину часу розробник систем глибинного навчання нескінченно модифікує дані скриптами Python, потім довго налаштовує архітектуру і гиперпараметры мережі глибинного навчання, щоб отримати працюючу модель — або навіть щоб отримати найкращу модель, якщо розробник настільки амбітний. Годі й говорити, що це не найкращий стан речей. Але ИИ і тут може допомогти. На жаль, частина з обробки та підготовки даних важко автоматизувати, оскільки вона часто вимагає знання області, а також чіткого розуміння на високому рівні, чого розробник хоче досягти. Однак настройка гиперпараметров — це проста пошукова процедура, і в даному випадку ми вже знаємо, чого хоче досягти розробник: це визначається функцією втрат нейромережі, яку потрібно налаштувати. Зараз вже стало звичайною практикою встановлювати базові системи AutoML, які беруть на себе більшу частину підкручення параметрів моделі. Я і сам встановив таку, щоб виграти змагання Kaggle.

На самому базовому рівні така система буде просто налаштовувати кількість шарів в стеку, їх порядок і кількість елементів або фільтрів в кожному шарі. Це звичайно робиться за допомогою бібліотек начебто Hyperopt, які ми обговорювали в главі 7 (примітка: книги «Глибинне навчання з Python»). Але можна піти набагато далі і спробувати отримати навчанням відповідну архітектуру з нуля, з мінімальним набором обмежень. Це можливо за допомогою навчання з підкріпленням, наприклад, або з допомогою генетичних алгоритмів.

Читайте також  Реалізація цілочисельного ШПФ на ПЛІС

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

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

Довічне навчання і повторне використання модульних підпрограм

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

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

Що ми робимо насправді, коли повторно застосовуємо модель на різних завданнях, так це використовуємо предобученные ваги для моделей, які виконують загальні функції, на зразок витягу візуальних ознак. Ви бачили це на практиці в главі 5. Я очікую, що в майбутньому буде повсюдно використовуватися більш загальна версія цієї техніки: не тільки ми станемо застосовувати раніше засвоєні ознаки (ваги подмодели), а також архітектури моделей і процедури навчання. По мірі того, як моделі будуть ставати більш схожими на програми, ми почнемо повторно використовувати підпрограми, функції та класи у звичайних мовах програмування.

Подумайте, як виглядає сьогодні процес розробки програмного забезпечення: як тільки інженер вирішує певну проблему (HTTP-запити в Python, наприклад), він упаковує її як абстрактну бібліотеки для повторного використання. Інженери, яким у майбутньому зустрінеться схожа проблема, просто шукають існуючі бібліотеки, скачують і використовують їх у своїх власних проектах. Таким же чином в майбутньому системи метаобучения зможуть збирати нові програми, просіваючи глобальну бібліотеку високорівневих повторно використовуваних блоків. Якщо система почне розробляти схожі підпрограми для декількох різних завдань, то випустить «абстрактну» повторно версію підпрограми і збереже її в глобальній бібліотеці. Такий процес відкриє можливість для абстракції, необхідного компонента для досягнення «граничного узагальнення»: підпрограма, яка виявиться корисною для багатьох завдань і областей, можна сказати, «абстрагує» якийсь аспект прийняття рішень. Таке визначення «абстракції» схоже не поняття абстракції в розробці програмного забезпечення. Ці підпрограми можуть бути або геометричними (модулі глибинного навчання з предобученными уявленнями), або алгоритмічними (ближче до бібліотек, з якими працюють сучасні програмісти).

Малюнок: Метаобучаемая система, здатна швидко розробити специфічні моделі для задачі із застосуванням повторно використовуваних примітивів (алгоритмічних і геометричних), за рахунок цього досягаючи «граничного узагальнення».

У підсумку: довгострокове бачення

Коротенько, ось моє довгострокове бачення для машинного навчання:

  • Моделі стануть більше схожі на програми і отримають можливості, які простягаються далеко за межі безперервних геометричних перетворень вихідних даних, з чим ми зараз працюємо. Можливо, ці програми будуть набагато ближче до абстрактних ментальних моделей, які люди підтримують про своє оточення і про себе, і вони будуть здатні на більш сильне узагальнення завдяки своїй алгоритмічної природі.
  • Зокрема, моделі будуть змішувати алгоритмічні модулі з формальними міркуваннями, пошуком, здібностями до абстракції — і геометричні модулі з неформальної інтуїцією і розпізнаванням шаблонів. AlphaGo (система, що вимагає інтенсивного ручного програмування і розробки архітектури) являє собою ранній приклад, як може виглядати злиття символічного і геометричного ІІ.
  • Вони будуть вирощуватися автоматично (а не писатися вручну людьми-програмістами), з використанням модульних частин з глобальної бібліотеки повторно використовуваних підпрограм — бібліотеки, яка еволюціонувала шляхом засвоєння високопродуктивних моделей з тисяч попередніх завдань і наборів даних. Як тільки метаобучаемая система визначила загальні шаблони вирішення завдань, вони перетворюються в повторно використовувані підпрограми — багато в чому як функції і класи у сучасному програмуванні — і додаються в глобальну бібліотеку. Так досягається здатність абстракції.
  • Глобальна бібліотека і відповідна система вирощування моделей буде здатна досягти деякої форми людиноподібного «граничного узагальнення»: зіткнувшись з новою задачею, новою ситуацією, система зможе зібрати нову працюючу модель для цієї задачі, використовуючи дуже малу кількість даних, завдяки: 1) багатим программоподобным примітивів, які добре роблять узагальнення і 2) великому досвіду вирішення схожих завдань. Таким же чином, як люди можуть швидко вивчити нову складну відеогру, тому що у них є попередній досвід багатьох інших ігор, тому що моделі на основі попереднього досвіду є абстратктными і программоподобными, а не простим перетворенням стимулу в дію.
  • По суті, цю безперервно обучающуюся систему по вирощуванню моделей можна інтерпретувати як Сильний Штучний Інтелект. Але не чекайте настання якогось сингулярного робоапокалипсиса: він є чистою фантазією, яка народилася з великого списку глибоких непорозумінь у розумінні інтелекту та технологій. Втім, цій критиці тут не місце.

Степан Лютий

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

You may also like...

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *