Чому нейронні мережі потребують вибору / інженерії функцій?


14

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

Посилаючись на книгу «Глибоке навчання»:

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

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


4
ваш мозок все ще потужніший за машину, тому невелика допомога від людини проходить довгий шлях
Аксакал

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

@ user2137591 в цьому справа. У мене складається враження, що в літературі нейронні мережі часто зображуються як крок від звичайного машинного навчання, оскільки вони, начебто, виконують інженерію та вибір автоматично (як мається на увазі Гудффеллоу, Бенджо, Курвіль у книзі «Глибоке навчання»). Це вірно в багатьох завданнях в CV або NLP, де я вважаю, що інформації все ще мало. З іншого боку, в науці про конкурентоспроможні дані (kaggle), де доступно багато галасливих даних, поширена думка, що найважливішим фактором побудови конкурентного рішення є пошук «магічної особливості».
CephasW

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

Відповіді:


18
  • Що робити, якщо "досить глибока" мережа є надзвичайно величезною, або робить навчання моделей занадто дорогим (збори AWS складаються!) Або тому, що вам потрібно розгорнути мережу в середовищі, обмеженому ресурсами?

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

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

  • Що робити, якщо вас цікавлять дані на рівні користувача, але ви змушені працювати з базою даних, яка збирає дані лише на рівні транзакцій?

  • Припустимо, ваші дані - це цілі числа, такі як , і ваше завдання - передбачити суму цифр, тому ціль у цьому прикладі - . Брудно просто проаналізувати кожну цифру в масиві, а потім підбити підсумки масиву ("особливості інженерії"), але складніше інакше.3 , 5 , 18 , 712,32,486,73,5,18,7

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

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


6

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

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

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

2) Обрізане зображення можна нормалізувати, щоб мати однаковий масштаб . Це допомагає другій мережі вирішувати проблеми масштабування, оскільки в оригінальному зображенні люди можуть виникати поблизу чи далеко. Заздалегідь нормалізація масштабу дозволяє зробити так, щоб вирізане зображення гарантувало наявність у ньому людини, яка заповнює повне обрізане зображення (не дивлячись на пікселізацію, якщо вони були далеко). Щоб побачити, як це може допомогти масштабувати, обрізане тіло, що становить половину ширини та висоти оригінального зображення, має на 4 рази менше пікселів для обробки, а значить, та сама мережа, застосована до цього зображення, мала б у 4 рази сприйнятливе поле оригінальної мережі на кожному шарі.

Наприклад, у змаганнях з легким кагглом поширеною темою у верхніх рішеннях була якась попередня обробка зображень легенів, які максимально обрізали їх та виділяли компоненти кожної легені. Це особливо важливо для 3D-зображень, оскільки ефект є кубічним: видаливши 20% кожного виміру, ви позбудетесь майже половини пікселів!


4

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.