Машинное обучение (ML), особенно искусственная нейронная сеть (ANN), - это мощный инструмент, который мы можем использовать сегодня - вы можете прочитать все о нем в части 1. Имея набор обучающих данных, мы можем обучить модель, которая будет давать нам прогнозы для определенных функций, таких как прогноз цены дома с учетом квадратного фута, количества спален и т. Д. Если вам не хватает знаний в области машинного обучения или искусственной нейронной сети, пожалуйста, прочтите часть 1, которая объясняет, что такое ИНС и ее строительные блоки. Далее мы посмотрим, как построить, обучить и прогнозировать модель с помощью Tensorflow.

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

Чтобы создать модель ИНС, сначала нам нужно создать входной слой с таким количеством входных узлов, сколько входных параметров мы хотим передать в модель. Затем нам нужно создать скрытые слои, которые придадут модели необходимую глубину для сохранения требуемых данных, и, наконец, нам нужно создать выходной слой, который включает столько узлов, сколько требуется для вывода. Все веса и смещения слоев будут инициализированы и готовы к оптимизации. Нам также необходимо указать другие известные параметры, такие как функция потерь, стратегия оптимизации обучения и, возможно, регистратор.

Вот пример модели Tensorflow ANN, написанной на python:

Выглядит довольно сурово, давайте углубимся и разберемся в сложности. Сначала у нас есть две функции инициализации - одна для весов и одна для смещений. Функция zero_weights создает переменную начального веса от одного слоя к другому, а функция zero_biases создает переменную смещения для всех доступных узлов.

Далее мы собираемся создать все слои в нашей ИНС, начиная с входного слоя. Предполагая, что наш вход содержит 9 переменных, мы создаем новую переменную tf от None до 9, потому что это первый уровень. Затем мы создаем еще 3 скрытых слоя: 50 узлов - ›100 узлов -› 50 узлов с именами «слой_1», «слой_2» и «слой_3». Затем мы создаем выходной слой, который имеет только 1 выход. Наконец, мы создаем функцию потерь с именем cost, которая является другим названием функции потерь. Функция потерь будет измеряться среднеквадратическим значением для поиска ближайшего к желаемому значению, а стратегия оптимизации - это метод стохастической оптимизации. Это лучшая стратегия, известная сегодня.

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

Вот пример обучения модели с учетом X - входов и Y - ожидаемых выходов:

Теперь модель - это просто объект, содержащий все ранее созданные переменные. Df - это фрейм данных, а значение - это ожидаемый выходной столбец. X будет всем, кроме столбца значений, а Y будет только столбцом Y. Теперь мы запускаем оптимизатор 50 эпох, каждая эпоха будет загружать весь набор данных и запускать оптимизатор для оптимизации результатов. Затем после каждой эпохи мы будем вычислять функцию потерь и наблюдать, как она уменьшается с течением времени.

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

Для создания модели Tensorflow требуется ~ 35 строк кода, которые содержат много шаблонного кода, значений по умолчанию и передовых практик, которые необходимо указать. Keras - это новый инструмент, который пытается решить эту проблему. Keras - это высокоуровневый API, созданный поверх других фреймворков, таких как Tensorflow, и предоставляет возможность создавать модели ИНС практически без усилий.

Для сравнения, ту же модель Tensorflow можно построить с помощью Keras с ~ 6 строками кода:

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