А що дійсно приховують нейронні мережі?

    Кілька днів тому на Хабре вийшла стаття Що приховують нейронні мережі? . Вона є вільним переказом англійської статті The Flaw Lurking In Every Deep Neural Net , а та в свою чергу розповідає про конкретному дослідженні деяких властивостей нейронних мереж (Інтригуючі властивості нейронних мереж ).
 
У статті, що описує дослідження, автори вибрали кілька сенсаційний підхід до подачі матеріалу і написали текст у дусі «в нейронних мережах знайдена серйозна проблема» і «ми не можемо довіряти нейромережах в проблемах, пов'язаних з безпекою». Посилання на пост на Хабре серед моїх знайомих багато хто розшарив, в фейсбуці зав'язалося відразу кілька дискусій на цю тему. При цьому у мене склалося враження, що за два переказу частина інформації з початкового дослідження загубилося, плюс виникло багато питань, пов'язаних з нейронними мережами, які в первісному тексті не розглядалися. Мені здається, що є потреба докладніше описати, що ж робили в дослідженні, а заодно спробувати відповісти на споконвічні питання. Формат Фейсбук для таких довгих текстів не підходить зовсім, так що я вирішив спробувати оформити свої роздуми в пост на Хабре.
 
 
Зміст вихідної статті
Вихідна стаття під назвою «Інтригуючі властивості нейронних мереж» написана групою з 7 вчених, троє з яких працює у відділі досліджень нейронних мереж в Google. У статті обговорюється два неочевидних властивості нейронних мереж:
 
 
     
  • Вважається, що якщо для конкретного нейрона на глибокому рівні нейронної мережі підібрати вихідні зображення так, щоб конкретно цей нейрон був активований, то вибрані зображення будуть мати будь-яким загальним семантичним ознакою. Вчені показали, що теж саме твердження вірне якщо розглянемо не активацію одного нейрона, а лінійну комбінацію виходів декількох нейронів.
  •  
  • Для кожного елемента навчальної вибірки нейромережі можна підібрати дуже схожий на нього зорово приклад, який буде класифікуватися неправильно — дослідники це називають сліпими плямами мережі.
  •  
Давайте спробуємо розібратися детальніше, що ж ці дві властивості означають.
 
 
Значення конкретних нейронів
Перше властивість постараємося розібрати швидше.
 
Є припущення, популярне у фанатів нейронних мереж, яке полягає в тому, що нейронна мережа всередині себе розбирає вихідні дані на окремі зрозумілі властивості та на глибоких рівнях нейронної мережі кожен нейрон відповідає за деяке конкретне властивість вихідного об'єкта.
 
Перевіряється це твердження зазвичай візуальним переглядом:
 
 
     
  1. Вибирається нейрон в навченої мережі.
  2.  
  3. Вибираються зображення з тестової вибірки, які цей нейрон активують.
  4.  
  5. Вибрані зображення проглядаються людиною і робиться висновок про те, що у всіх цих зображень є деяке загальна властивість.
  6.  
Що зробили дослідники в статті: вони замість того, щоб розглядати окремі нейрони, стали розглядати лінійні комбінації нейронів і шукати для зображень, що активують конкретну комбінацію, загальні семантичні властивості. У авторів вийшло — вони з цього роблять висновок, що дані про предметної області в нейронної мережі зберігаються не в конкретних нейронах, а в загальній конфігурації мережі.
 
Обговорювати серйозно цю частину статті взагалі кажучи не дуже хочеться, тому що вона належить швидше до області релігії, ніж науки.
 
Первісне міркування про те, що конкретні нейрони відповідають за конкретні ознаки береться з вельми абстрактних міркувань про те, що нейромережа повинна по своїй роботі нагадувати людський мозок. Звідки береться твердження, що виділені ознаки при цьому повинні бути зрозумілі людині, я взагалі ніде не зміг знайти. Перевірка цього твердження — дуже дивне заняття, тому що знайти спільну ознаку в невеликої підбірки довільних зображень можна легко, було б бажання. А провести статистично значиму перевірку на великому обсязі зображень неможливо, так як процес неможливо автоматізіруешь. У підсумку отримали закономірний результат: якщо можна на одному наборі зображень знаходити загальні ознаки, то можна теж саме робити і на будь-якому іншому.
 
 
Приклад зображень з однаковим властивістю з оригінальної статті.
 
Загальний висновок у цій частині статті при цьому дійсно виглядає закономірним — у нейромережі знання про предметну область дійсно швидше міститься у всій архітектурі нейромережі та параметрах її нейронів, а не в кожному конкретному нейроні окремо.
 
 
Сліпі плями мережі
 Дослідники провели наступний експеримент — вони задалися метою знайти неправильно що класифікуються мережею об'єкти, розташовані якомога ближче до об'єктів навчальної вибірки. Для пошуку таких автори розробили спеціальний алгоритм оптимізації, який відходив від вихідної картинки в бік погіршення відповідей нейромережі, до тих пір, поки класифікація об'єкта не ламалася.
 
В результаті експерименту вийшло наступне:
 
 
     
  • Для будь-якого об'єкта навчальної вибірки завжди знаходиться картинка, яку людина очима не відрізняє від першого, а нейросеть на ній ламається.
  •  
  • Картинки з внесеними дефектами будуть погано розпізнаватися нейронною мережею, навіть якщо у неї поміняти архітектуру або навчити на іншому підмножині навчальної вибірки.
  •  
Власне, про ці сліпі плями і йдуть в основному розмови, так що давайте спробуємо відповісти на питання які при цьому з'являються. Але для початку розберемо кілька базових заперечень, які з'являються у людей, які читають опис дослідження:
 
 
     
  • «У дослідженні використовуються дуже прості нейромережі, зараз такими ніхто не користується» — ні, в дослідженні використовувалося 6 різних типів мереж, від простої одношарової до великих глибоких мереж, всі з інших відомих робіт останніх 2-3 років. Не всі експерименти були поставлені на всіх типах мереж, але всі основні висновки в статті від типу мережі не залежать.
  •  
  • «Дослідники використовують нейронну мережу, яка на вхід приймає растрові зображення, а не виділені на них ознаки — це спочатку неефективно» — у статті насправді не разу явно не написано, що саме вони передають на вхід нейронної мережі. При цьому їх нейронні мережі показують хорошу якість на великих базах зображень, тому в неефективності вихідної системи їх звинуватити важко.
  •  
  • «Дослідники взяли дуже переучених нейронну мережу — закономірно отримали погані результати поза навчальній вибірці» — ні, результати які вони наводять показують, що мережі, які вони навчали були перевчити. Зокрема, у статті є результат роботи мережі на вихідної вибірці з доданим випадковим шумом, на якому немає ніякого падіння якості. При перенавчанні системі таких результатів не було б.
  •  
  • «Спотворення, які додаються до мереж сильно спеціальні і в реальному житті зустрінеться не можуть» — не зовсім так. З одного боку, ці спотворення невипадкові, з іншого вони змінюють картинку дуже незначно, в середньому на порядок менше ніж випадковий шум, непомітний для людського ока — у статті є відповідні цифри. Так що стверджувати, що таких спотворень не отримати в реальності я б не став — вірогідність цього мала, але виключати такі можливості не можна.
  •  
 
 
Що тут реально новина?
Те, що у нейромережі можуть бути сліпі плями поруч з об'єктами навчальної вибірки — це насправді не велика новина. Справа в тому, що в нейромережі ніхто ніколи не обіцяв локальної точності.
 
Є методи класифікації (наприклад Support Vector Machines ), які в основі своєї навчання ставлять максимальне відділення об'єктів навчальної вибірки від меж зміни класів. У нейронних мережах ніяких вимог подібного роду немає, більше того в силу складності нейронних мереж підсумкове поділ вихідного безлічі зазвичай не піддається нормально інтерпретації та дослідженню. Тому те, що в мережах можна знайти області локальної нестабільності — це не новина, а підтвердження факту, який і так був досить відомий.
 
Що тут реально новина — це те, що спотворення, що призводять до помилок, зберігають свої властивості при переході до іншої архітектурі мереж і при зміні навчальної вибірки. Це дійсно дуже несподіване відкриття, і я сподіваюся, що автори в наступних роботах знайдуть йому пояснення.
 
 
Чи справді нейромережі це глухий кут?
 Ні, нейромережі це не безвихідь. Це дуже потужний і сильний інструмент, який вирішує деякий набір абсолютно конкретних завдань.
 
Популярність нейромереж побудована в основі на двох ідеях:
 
 
     
  • Теорема збіжності перспетрона Розенблатта — під будь-яку навчальну вибірку можна підібрати архітектуру і ваги нейронної мережі з одним внутрішнім шаром, таку щоб навчальна вибірка класифікувалась з 100% точністю.
  •  
  • Практично всі процеси в навчанні нейронної мережі (останнім часом включаючи підбір архітектури) повністю автоматизуються.
  •  
Тому нейросеть — це засіб швидко отримувати прийнятні рішення для дуже складних задач розпізнавання. Нічого іншого ніхто для нейромереж ніколи не обіцяв (хоча було багато спроб). Ключові слова тут «швидко» і «складні завдання»:
 
     
  • Якщо ви хочете навчиться стабільно відрізняти котиків від собачок на Ютюбі за рік роботи, то крім нейромереж у вас зараз інструментів порівнянного за якістю і зручності все одно немає — вигадування ознак для більш простих класифікаторів та їх налаштування займе набагато більше часу. Але при цьому доведеться мириться що чорний ящик нейромережі буде іноді робити дивні з точки зору людини помилки, які буде важко виправити.
  •  
  • А якщо ви хочете розпізнавати текст або відрізняти позитивні відгуки від негативних — візьміть краще класифікатор простіше — у вас буде сильно більше контролю над тим що відбувається, хоча можливе отримання перших результатів займе деякий час.
  •  
 
Чи можна довіряти нейромережах?
Основне закінчення статті, що обговорює оригінальне дослідження було: «Поки цього не відбудеться, ми не може покладатися на нейронні мережі там, де безпека критично важлива ...». Потім ще в окремих обговореннях часто спливав Google Car, з якихось причин (мабуть із місця роботи авторів і картинки машини в статті).
 
Насправді нейромережах довіряти можна, і для цього є кілька причин:
 
 
     
  1. Користувачеві (а не досліднику) нейромережі важливо не де конкретно вона помиляється, а наскільки часто. Повірте, вам буде абсолютно все одно ваша автоматична машина не дізналася вантажівка який був у її навчальною базі, або той, який вона раніше не бачила. Всі дослідження присвячено пошуку помилок в конкретних областях поруч з навчальною вибіркою, при цьому загальна якість роботи нейромереж (і способи його оцінки) не ставляться під сумнів.
  2.  
  3. Будь-яка система розпізнавання ніколи не працює на 100%, у ній завжди є помилки. Один з перших прініципов, які дізнаються в роботехніці — це те що ніколи не можна робити дії на основі одного окремого показника датчика — завжди потрібно брати плаваюче вікно значень і викидати звідти виродків. Для будь-якої критичної системи це теж вірно — у будь реальній задачі завжди йде потік даних, навіть якщо в якийсь момент система дала збій, сусідні дані виправлять ситуацію.
  4.  
 
 
 
Так що до нейромережах в будь-якій критичній системі потрібно відноситься як до ще одного виду датчиків, який в цілому дає правильні дані, але іноді помиляється і на його помилки потрібно закладатися.
 
 
Що важливого є в цій статті?
Здавалося б — якщо ніяких великих одкровень у статті не знайшли, то навіщо її взагалі писали?
 
На мій погляд у статті є один головний результат — це продуманий спосіб помітного збільшення якості нейронної мережі при навчанні. Часто при навчанні систем розпізнавання застосовують стандартний трюк, коли для навчання використовують крім оригінальних об'єктів навчальної вибірки ще ті ж об'єкти з доданим шумом.
 
Автори статті показали, що замість цього можна використовувати об'єкти з спотвореннями, які призводять до помилок нейронної мережі — і таким чином і усувати помилки на цих спотвореннях і одночасно підвищувати якість роботи всієї мережі на тестовій вибірці. Це важливий результат для роботи з нейросетями.
 
Під кінець можу тільки порекомендувати не читати статті з «сенсаційними» заголовками, а краще знаходити першоджерела і читати їх — там все набагато цікавіше.
    
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.