Введение

В этой статье я объясню, что такое нейронная сеть и как ее реализовать с помощью библиотеки TensorFlow через Google Colab.

Что тебе нужно знать

Чтобы понять эту статью, было бы лучше, если бы у вас были некоторые знания в Python (библиотека Numpy) и в машинном обучении.

Машинное обучение

Машинное обучение - это область обучения, которая дает компьютерам возможность автоматически учиться и совершенствоваться на основе опыта без явного программирования.

Другими словами, эта ветвь искусственного интеллекта использует данные для ответа на вопросы. Хотя в прошлом мы вручную анализировали данные, созданные людьми, компьютерами, телефонами и другими устройствами, в последние годы объем данных вырос в геометрической прогрессии, что затрудняет обработку с помощью традиционных методов.

Здесь в игру вступает машинное обучение: его можно использовать для автоматического обучения на основе этих данных, чтобы мы могли понять смысл этого огромного количества информации.

Нейронные сети

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

Обучение нейронной сети

Нейронные сети обучаются методом градиентного спуска. Веса в каждом слое начинаются со случайных значений, которые со временем итеративно улучшаются, чтобы сделать сеть более точной. Функция потерь используется для количественной оценки неточности сети, а процедура под названием обратное распространение используется для определения того, следует ли увеличивать или уменьшать каждый вес, чтобы уменьшить потери. .

Разработка нейронной сети

Python - один из самых популярных языков программирования для создания алгоритмов машинного обучения. Сегодня нейронные сети можно использовать, даже не зная точно, как работает обучение. Фактически, большинство современных библиотек машинного обучения значительно автоматизировали процесс обучения. Я собираюсь представить вам библиотеку TensorFlow от Google.

Tensorflow

TensorFlow - это библиотека с открытым исходным кодом, разработанная Google в первую очередь для приложений машинного обучения, упрощающая создание и развертывание моделей машинного обучения.

Название TensorFlow происходит от операций, которые такие нейронные сети выполняют с многомерными массивами данных, которые называются тензорами и удобны при обработке больших объемов данных.

Колаб

Colaboratory - это продукт Google, похожий на блокнот Jupyter, позволяющий писать и выполнять код Python через браузер. Он хорошо подходит для машинного обучения, поскольку обеспечивает бесплатный доступ к вычислительным ресурсам, включая графические процессоры.

Обычно для использования библиотеку TensorFlow необходимо установить и импортировать, но в Google Colab она «готова к использованию», нам просто нужно ее импортировать!

# Import TensorFlow
import tensorflow as tf

Определение модели

Первая модель, которую мы разработаем, будет действительно простой, но будет полезно понять, как создать, настроить, обучить модель и, наконец, использовать ее, чтобы дать нам прогноз.

Предположим, у нас есть следующие наборы чисел. Мы хотим создать нейронную сеть, которая сможет понять отношения между ними.

Как вы могли заметить, эта связь определяется следующей функцией: y = 3x-7.

Как и для любого приложения машинного обучения, первым шагом является сбор данных: давайте сохраним значения для x и y в двух разных массивах numpy.

# Import numpy
import numpy as np
# y = 3x -7
x = np.array([-1.0, 0.0, 1.0, 2.0, 3.0, 4.0, 5.0], dtype=float)
y = np.array([-10.0, -7.0, -4.0, -1.0, 2.0, 5.0, 7.0], dtype=float)

Создание простейшей нейронной сети:

Простейшая сеть, которую мы можем создать, имеет только 1 вход, 1 выход и 1 скрытый слой с одним узлом.

Чтобы создать такую ​​модель с помощью TensorFlow, мы сначала определяем нейронную сеть как последовательную, что означает, что она будет иметь последовательность слоев, а затем просто добавляем к ней плотный слой, который будет представлять наш скрытый слой.

from tensorflow.keras.layers import Dense
model = tf.keras.Sequential([Dense(units=1, input_shape=[1])])

После того, как модель создана, потери и показатели можно настроить с помощью model.compile (), модель можно обучить с помощью model.fit (), оценивается с помощью model.evaluate () и используется для прогнозирования с помощью model.predict ().

model.compile(optimizer='sgd', loss='mean_squared_error')
model.fit(x, y, epochs=500)
print(model.predict([25.0]))

Напечатанное значение не 68, а 67,997734, почему так? Поскольку нейронные сети имеют дело с вероятностями, учитывая семь точек, введенных в модель, они поняли, что связь между x и y с высокой вероятностью составляет y = 3x-7, но семи точек недостаточно, чтобы быть уверенным, поэтому он предсказывает, что точка 25 очень близка к 68, но не обязательно к 68.

Полный код

Здесь вы можете увидеть полный код или попробовать его через Google Colab:

Что дальше?

В следующей статье я покажу, как разработать более сложную нейронную сеть для классификации изображений и как использовать Google Colab для ускорения процесса обучения.