Нейронные сети в машинном обучении
Как птицы вдохновляли людей на создание самолета, так же и человеческий мозг вдохновлял на создание интеллектуальных машин. Нейронные сети были вдохновлены биологическими нейронами, обнаруженными в мозгу человека. В этой статье я познакомлю вас с реализацией нейронных сетей с использованием Python.
Нейронные сети
Нейронная сеть – важнейшее понятие в глубоком обучении, которое является подмножеством машинного обучения. Нейронные сети были вдохновлены биологическими нейронами, обнаруженными в мозгу человека. Можно думать о нейронной сети как об алгоритме машинного обучения, который работает так же, как человеческий мозг.
Вы, должно быть, думаете, почему же мы не используем нейронные сети всегда. Причина в том, что нейронной сети требуется огромное количество данных. Поскольку теперь все бизнесы осознали важность данных, у нас есть достаточно данных для обучения нейронной сети. Нейронная сеть может легко превзойти любой алгоритм машинного обучения при работе с очень большим набором данных.
Нейронные сети с использованием Python
Надеюсь, теперь вы понимаете, что такое нейронная сеть и почему мы предпочитаем использовать ее, а не другие алгоритмы машинного обучения при работе с огромными наборами данных. Чтобы понять, как работает нейронная сеть, давайте обучим ее с помощью Python. При обучении нейронных сетей на огромном наборе данных у вас должна быть система, совместимая с графическим процессором, в противном случае для запуска вашего кода потребуются часы. Если у вас нет компьютера, совместимого с графическим процессором, вы можете использовать Google Colab.
Теперь давайте посмотрим, как обучить модель классификации с помощью нейронных сетей с использованием Python. Я начну с импорта необходимых библиотек Python и набора данных:
import tensorflow as tf from tensorflow import keras fashion_mnist = keras.datasets.fashion_mnist (x_train, y_train), (x_test, y_test) = fashion_mnist.load_data()
Здесь я использую набор данных Fashion MNIST, не очень большой, но достаточно хороший для обучения нейронной сети. Теперь давайте разделим данные:
x_valid, x_train = x_train[:5000]/255.0, x_train[5000:]/255.0 y_valid, y_train = y_train[:5000], y_train[5000:]
Набор данных Fashion MNIST аналогичен набору данных MNIST digits, но, чтобы понять, с чем мы имеем дело, нам нужно создать список Python имен классов в наборе данных:
classes = ["T-shirt/top", "Trouser", "Pullover", "Dress", "Coat", "Sandal", "Shirt", "Sneaker", "Bag", "Ankle boot"]
Теперь давайте создадим модель нейронной сети:
model = keras.models.Sequential([ keras.layers.Flatten(input_shape=[28, 28]), keras.layers.Dense(300, activation="relu"), keras.layers.Dense(100, activation="relu"), keras.layers.Dense(10, activation="softmax") ])
Теперь давайте посмотрим на сводку модели, которая просто означает отображение каждого слоя модели:
print(model.summary())
Результат:
Model: "sequential"
______________________________________________
Layer (type) Output Shape Param #
===========================================
flatten (Flatten) (None, 784) 0
_____________________________________________
dense (Dense) (None, 300) 235500
_____________________________________________
dense_1 (Dense) (None, 100) 30100
_____________________________________________
dense_2 (Dense) (None, 10) 1010
============================================
Total params: 266,610
Trainable params: 266,610
Non-trainable params: 0
После создания модели следующим шагом будет ее компиляция. Вот как можно скомпилировать вашу модель:
model.compile(loss="sparse_categorical_crossentropy", optimizer="sgd", metrics=["accuracy"])
Теперь последний шаг – обучить модель, что означает подгонку данных в нейронную сеть:
history = model.fit(x_train, y_train, epochs=30, validation_data=(x_valid, y_valid))
Теперь давайте посмотрим на производительность модели и протестируем ее на тестовом наборе:
import pandas as pd import matplotlib.pyplot as plt pd.DataFrame(history.history).plot(figsize=(12, 8)) plt.grid(True) plt.gca().set_ylim(0, 1) plt.legend() plt.show()
import numpy as np x_new = x_test[:3] y_pred = model.predict_classes(x_new) print(y_pred) print(np.array(classes)[y_pred])
Результат:
[9 2 1]
['Ankle boot' 'Pullover' 'Trouser']
Резюме
Вот как можно обучить нейронную сеть с помощью Python. В этой статье я обучил модель нейронной сети задаче классификации на наборе данных Fashion MNIST. Надеюсь, вам понравилась эта статья о реализации нейронных сетей с использованием Python.