За останні роки штучний інтелект (ШІ) набув значної популярності.
Якщо ви інженер-програміст, вчений-комп’ютерщик або взагалі ентузіаст науки про дані, то, ймовірно, вас заінтригують дивовижні програми обробки зображень, розпізнавання образів та виявлення об’єктів, які надає ця сфера.
Найважливіша підсфера ШІ, про яку ви, напевно, чули, — це глибоке навчання. Це поле зосереджено на потужних алгоритмах (інструкціях комп’ютерної програми), змодельованих за функціональними можливостями людського мозку, відомими як Нейронні мережі.
У цій статті ми розглянемо концепцію нейронних мереж і як побудувати, компілювати, підігнати та оцінити ці моделі за допомогою Python.
Нейронні мережі
Нейронні мережі, або NN, — це серія алгоритмів, змодельованих на основі біологічної активності людського мозку. Нейронні мережі складаються з вузлів, які також називаються нейронами.
Набір вертикальних вузлів відомий як шари. Модель складається з одного входу, одного виходу та кількох прихованих шарів. Кожен шар складається з вузлів, також званих нейронами, де відбуваються обчислення.
На наступній діаграмі кола представляють вузли, а вертикальна колекція вузлів — шари. У цій моделі три шари.
Вузли одного шару з’єднані з наступним шаром через лінії передачі, як показано нижче.
Наш набір даних складається з позначених даних. Це означає, що кожній сутності даних було присвоєно певне значення імені.
Таким чином, для набору даних класифікації тварин ми матимемо зображення кішок і собак як наші дані, з «кіт» і «собака» як наші мітки.
Важливо зазначити, що мітки повинні бути перетворені в числові значення, щоб наша модель зрозуміла їх, тому наші мітки тварин стають «0» для кішки і «1» для собаки. І дані, і мітки передаються через модель.
Вивчення
Дані надходять до моделі по одній сутності. Ці дані розбиваються на фрагменти і передаються через кожен вузол моделі. Вузли виконують математичні операції над цими фрагментами.
Вам не потрібно знати математичні функції чи обчислення для цього підручника, але важливо мати загальне уявлення про те, як працюють ці моделі. Після серії обчислень в одному шарі дані передаються на наступний шар і так далі.
Після завершення наша модель прогнозує мітку даних на вихідному шарі (наприклад, у задачі класифікації тварин ми отримуємо прогноз «0» для кота).
Потім модель переходить до порівняння цього прогнозованого значення з фактичним значенням мітки.
Якщо значення збігаються, наша модель візьме наступне введення, але якщо значення відрізняються, модель обчислить різницю між обома значеннями, що називається втратою, і налаштує обчислення вузла, щоб наступного разу створити відповідні мітки.
Фреймворки глибокого навчання
Щоб побудувати нейронні мережі в коді, нам потрібно імпортувати Фреймворки глибокого навчання відомі як бібліотеки, що використовують наше інтегроване середовище розробки (IDE).
Ці фреймворки є набір попередньо написаних функцій, які допоможуть нам у цьому підручнику. Ми будемо використовувати фреймворк Keras для побудови нашої моделі.
Keras — це бібліотека Python, яка використовує глибоке навчання та штучний інтелект під назвою Тензорний потік з легкістю створювати NN у вигляді простих послідовних моделей.
Keras також поставляється зі своїми власними моделями, які також можна використовувати. Для цього уроку ми створимо нашу власну модель за допомогою Keras.
Ви можете дізнатися більше про цю систему глибокого навчання з Веб-сайт Keras.
Побудова нейронної мережі (підручник)
Переходимо до створення нейронної мережі за допомогою Python.
Постановка проблеми
Нейронні мережі – це тип вирішення проблем на основі штучного інтелекту. У цьому посібнику ми розглянемо доступні дані про діабет індіанців Піма тут.
UCI Машинне навчання зібрало цей набір даних і містить медичну карту індійських пацієнтів. Наша модель має передбачити, чи почнеться у пацієнта цукровий діабет протягом 5 років чи ні.
Завантаження набору даних
Наш набір даних — це один файл CSV під назвою «diabetes.csv», яким можна легко керувати за допомогою Microsoft Excel.
Перш ніж створити нашу модель, нам потрібно імпортувати наш набір даних. Використовуючи наступний код, ви можете зробити це:
імпортувати панди як pd
дані = pd.read_csv('diabetes.csv')
x = data.drop("Результат")
y = дані [“Результат”]
Тут ми використовуємо Панди Щоб мати можливість маніпулювати даними нашого файлу CSV, read_csv() — це вбудована функція Pandas, яка дозволяє нам зберігати значення у нашому файлі у змінній під назвою «data».
Змінна x містить наш набір даних без даних про результати (мітки). Ми досягаємо цього за допомогою функції data.drop(), яка видаляє мітки для x, тоді як y містить лише дані результату (мітки).
Побудова послідовної моделі
Крок 1. Імпортування бібліотек
По-перше, нам потрібно імпортувати TensorFlow і Keras, а також певні параметри, необхідні для нашої моделі. Наступний код дозволяє нам це зробити:
імпортувати tensorflow як tf
з імпорту keras tensorflow
з tensorflow.keras.models import Sequential
з tensorflow.keras.layers імпорт Активація, Dense
з tensorflow.keras.optimizers імпортувати Adam
з tensorflow.keras.metrics імпортуйте categorical_crossentropy
Для нашої моделі ми імпортуємо щільні шари. Це повністю пов’язані шари; тобто кожен вузол шару повністю пов'язаний з іншим вузлом наступного шару.
Ми також імпортуємо активація функція, необхідна для масштабування даних, що надсилаються на вузли. Оптимізатори були також імпортовані, щоб мінімізувати втрати.
Adam є відомим оптимізатором, який робить обчислення вузлів оновлення нашої моделі більш ефективними, а також categorical_crossentropy котрий є тип функції втрат (обчислює різницю між фактичними та прогнозованими значеннями мітки), яку ми будемо використовувати.
Крок 2: Розробка нашої моделі
Модель, яку я створюю, має один вхідний (з 16 одиницями), один прихований (з 32 одиницями) і один вихідний (з 2 одиницями) шар. Ці цифри не є фіксованими і будуть повністю залежати від даної проблеми.
Встановлення правильної кількості одиниць і шарів – це процес, який можна покращити з плином часу за допомогою практики. Активація відповідає типу масштабування, яке ми будемо виконувати над нашими даними, перш ніж передавати їх через вузол.
Relu і Softmax є відомими функціями активації для цього завдання.
модель = послідовна([
Щільна(одиниці = 16, input_shape = (1,), активація = 'relu'),
Щільна(одиниці = 32, активація = 'relu'),
Щільна (одиниці = 2, активація = 'softmax')
])
Ось як має виглядати короткий огляд моделі:
Навчання моделі
Наша модель буде навчатися в два етапи, перший – компіляція моделі (зведення моделі разом), а наступний – підгонка моделі до заданого набору даних.
Це можна зробити за допомогою функції model.compile(), а потім функції model.fit().
model.compile(optimizer = Adam(learning_rate = 0.0001), втрати = 'binary_crossentropy', metrics = ['accuracy'])
model.fit(x, y, епохи = 30, batch_size = 10)
Визначення метрики «точність» дозволяє нам спостерігати точність нашої моделі під час навчання.
Оскільки наші мітки мають форму 1 і 0, ми будемо використовувати двійкову функцію втрат для обчислення різниці між фактичними та прогнозованими мітками.
Набір даних також розбивається на пакети по 10 (batch_size) і буде передано через модель 30 разів (епохи). Для даного набору даних x буде даними, а y — мітками, що відповідають даним.
Тестування моделі за допомогою передбачення
Щоб оцінити нашу модель, ми робимо прогнози на даних тесту за допомогою функції predict().
прогнози = model.predict(x)
Готово!
Тепер ви повинні добре розуміти Глибоке навчання Нейронні мережі, як вони працюють загалом і як побудувати, навчити та протестувати модель у коді Python.
Сподіваюся, цей посібник дасть вам старт для створення та розгортання власних моделей глибокого навчання.
Повідомте нам у коментарях, чи була стаття корисною.
залишити коментар