Конволюційна нейронна мережа

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

pic

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

Активаційна функція: Вводить нелінійність у мережу, що допомагає їй навчатися складним патернам. Зазвичай використовувані активаційні функції — ReLU (Rectified Linear Unit).

Пулінг-шар: Зменшує розмірність карт ознак, зберігаючи важливу інформацію. Найпоширенішими методами пулінгу є max pooling та average pooling.

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

Робота конволюційного шару

У серці CNN знаходиться операція конволюції. Це по суті елементне множення фільтра (кернеля) та області вхідного зображення, після чого підсумовуються результати.

Фільтр (Kernel): Мала матриця ваг, яка виявляє специфічні ознаки.

Stride (крок): Кількість пікселів, на яку фільтр переміщається по зображенню горизонтально та вертикально.

Padding (доповнення): Додавання нулів навколо зображення для контролю розміру виходу.

pic

pic

pic

Розуміння пулінгу

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

pic

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

Активаційна функція: Вводить нелінійність у мережу, що допомагає їй навчатися складним патернам. Зазвичай використовувані активаційні функції — ReLU (Rectified Linear Unit).

Пулінг-шар: Зменшує розмірність карт ознак, зберігаючи важливу інформацію. Найпоширенішими методами пулінгу є max pooling та average pooling.

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

Робота конволюційного шару

У серці CNN знаходиться операція конволюції. Це по суті елементне множення фільтра (кернеля) та області вхідного зображення, після чого підсумовуються результати.

Фільтр (Kernel): Мала матриця ваг, яка виявляє специфічні ознаки.

Stride (крок): Кількість пікселів, на яку фільтр переміщається по зображенню горизонтально та вертикально.

Padding (доповнення): Додавання нулів навколо зображення для контролю розміру виходу.

pic

pic

pic

Розуміння пулінгу

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

pic

pic

pic

pic

Реалізація CNN на MNIST

Імпортуємо бібліотеки:

pic

Завантажуємо датасет:

pic

Завантаження: mnist.load_data() надає 60 000 навчальних зображень і 10 000 тестових зображень, кожне з розміром 28x28 пікселів.

Зміна форми: Перетворюємо дані в (28, 28, 1), де 1 представляє один колірний канал (відтінки сірого).

Нормалізація: Ділення на 255.0 масштабує значення пікселів в діапазон [0, 1], покращуючи стабільність навчання.

One-Hot кодування: Перетворює мітки в двійкову матричну форму для категоріальної класифікації, наприклад, цифра 3 представлена як [0,0,0,1,0,0,0,0,0,0].

Визначаємо модель:

pic

Conv2D (1-й шар):

  • 32 фільтри з розміром ядра (3, 3) для виявлення ознак, таких як краї.
  • activation='relu' додає нелінійність, дозволяючи мережі вчитися складним патернам.
  • input_shape=(28, 28, 1) визначає розміри входу для першого шару.

MaxPooling2D: Зменшує розмірність карт ознак, беручи максимальне значення в кожному вікні (2, 2), зменшуючи розміри і обчислювальну складність.

Conv2D (2-й шар): Додає глибший конволюційний шар з 64 фільтрами, дозволяючи моделі виявляти більш складні патерни.

Flatten: Перетворює 2D карти ознак в 1D вектор для подачі в повністю з'єднані шари.

Dense (Повністю з'єднаний шар): 128 нейронів з активацією ReLU для вивчення складних взаємозв'язків між ознаками.

Dropout: Швидкість відключення 0.5 для запобігання перенавчанню шляхом випадкового встановлення 50% нейронів в нуль під час навчання.

Dense (Вихідний шар): 10 нейронів з активацією softmax для виведення ймовірностей класів (по одному для кожної цифри від 0 до 9).

Компіляція та навчання моделі:

pic

pic

epochs=10: Кількість повних проходів через навчальні дані. Ви можете експериментувати з більшою кількістю епох для потенційно кращих результатів.

batch_size=128: Обробляє 128 зображень за раз перед оновленням ваг моделі, балансуючи ефективність пам'яті та стабільність навчання.

validation_split=0.2: 20% навчальних даних зарезервовано для валідації, щоб контролювати перенавчання під час навчання.

verbose=1: Надає детальний висновок під час навчання, показуючи прогрес і втрату після кожної епохи.

Оцінка та прогнози:

pic

pic

Підсумок

Завантаження та попередня обробка: Підготуйте дані (MNIST) за допомогою зміни форми, нормалізації та кодування.

Визначення CNN: Створіть модель CNN з конволюційними, пулінговими та повністю з'єднаними шарами.

Компіляція моделі: Виберіть оптимізатор, функцію втрат і метрики оцінки.

Навчання моделі: Навчіть модель на навчальних даних з валідацією протягом 10 епох.

Оцінка: Перевірте ефективність моделі на тестових даних.

Прогнози: Зробіть прогнози, щоб оцінити точність моделі та її здатність працювати з новими даними.

Перекладено з: Convolutional Neural Network

Leave a Reply

Your email address will not be published. Required fields are marked *