Розуміння нейронних мереж - огляд IA

Подібно до людського мозку, який для Федеріка Ленуара є незвіданим континентом XXI століття, штучний інтелект є незвіданою наукою.

нейронна мережа

Подібно до людського мозку, який для Федеріка Ленуара є незвіданим континентом 21 століття, штучний інтелект є незвіданою наукою 21 століття. І на цьому порівняння не закінчується. Як і про людський інтелект, про штучний інтелект ми говоримо нейронні мережі.

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

Ця технологія натхнена функціонуванням нервової системи нашого мозку. Для глибокого його розуміння знадобляться сотні сторінок, але оскільки ви дуже добрі, вистачить кількох слів 🙂

Від нейронів людини до штучних нейронних мереж

Перш ніж говорити про штучні нейрони, давайте опишемо, як працює нейрон людини.

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

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

Діаграма нейрона людини

Щоб просто моделювати біологічні нейрони, неврологи ввели в 1940-х роках математичне поняття формальний нейрон.

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

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

Що таке нейронна мережа ?

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

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

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

Нейронні мережі для класифікації

На практиці нейрони першого шару передаватимуть просту інформацію до нейронів наступного шару. Що впливатиме на ступінь їх активації тощо. Потім останній шар надасть нам інформацію про результат.

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

Фундаментальна теорема

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

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

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

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

На практиці навчання нейронної мережі є вправою оптимізації

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

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

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

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

Нейронні мережі не є новиною

На відміну від того, що можна подумати, нейронні мережі датуються 1950-х рр. Жертві критики до 1990-х рр., Лише в 2010 р. Вони стали важливими. Незважаючи на те, що їх великий потенціал був помітний, їм потрібна велика кількість даних, а системи зберігання та обробки даних явно не підходили.

Багатошаровий персептрон

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

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

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

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

Розпізнавання об’єктів, класифікація, NLP, кожен зі своїми нейронними мережами

Як я вже пояснював вам, архітектури нейронних мереж відрізняються залежно від застосувань. Ось кілька прикладів архітектур та їх застосування.

Мережі LSTM для обробки текстів

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

Щоб мати можливість ефективно обробляти тексти, мережа повинна мати можливість розуміти слова окремо, а також загальний контекст. Системи НЛП вже давно задовольняються розглядом слів окремо. Очевидно, що такий підхід нежиттєздатний. LSTM, довгострокова короткочасна пам’ять, нейронні мережі можуть бути використані, щоб надати значення зв’язкам між словами. Мережа "запам'ятовує" слова, які обробила через кілька кроків.

Нейронні мережі типу CNN для розпізнавання зображень

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

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

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

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

Експлуатація згорткових мереж

На практиці алгоритми згортки - це кілька повторень з двох кроків: згортання, потім об’єднання.

Виток

Щоб протидіяти обмеженню наївного підходу, дослідники ШІ знайшли рішення. Тут виникають згорткові нейронні мережі. CNN обробляють зображення на ділянках у кілька пікселів, а не піксель за пікселем. Ці невеликі площі називаються "характеристиками".

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

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

Приклад згортки

Об'єднання

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

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

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

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

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

Існує багато інших моделей нейронних мереж, які покладаються на нейронні мережі. Моїми улюбленими є ГАН !

Від простих нейронних мереж до глибокого навчання

Починаючи з 2016 року в LeCun, Bengio та Hinton, машинне навчання, здається, досягло знаменних меж. Методи глибокого навчання дали змогу досягти вражаючого прогресу в обробці зображень, звукових даних або відео.

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

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

Чи зможемо ми колись спроектувати нейралістичні мережі загального плану? ?