ИНС являются ключевыми компонентами искусственного интеллекта и машинного обучения. Он может решать проблемы: от распознавания образов, распознавания изображений и речи, обработки естественного языка до генерации изображений.
В этом уроке я объясню, как вы можете создать его с помощью модуля или функций tensorflow, а также поймете, как создать модель искусственной нейронной сети или нейронную сеть с прямой связью.
Что такое искусственная нейронная сеть
Искусственная нейронная сеть(ИНС) — это вычислительная модель, действующая аналогично человеческому мозгу, на самом деле оно основано на функционировании и структуре мозга.
ИНС состоит из трех слоев: входных слоев, скрытых слоев и выходных слоев.
Каждый слой состоит из перцептрона (нейронов).
Входной слой: это первый уровень искусственной нейронной сети, который принимает входные данные и передает их на скрытый уровень для обработки.
Функции набора данных предоставляются в качестве входных данных для этого слоя в реальном мире. В этом слое имеется несколько нейронов в зависимости от количества признаков, что означает, что количество признаков равно количеству нейронов во входном слое. Этот уровень может содержать или не содержать какую-либо функцию активации; он передает входные данные только на следующий скрытый слой.
Посмотрите на картинку выше, как вы можете видеть во входном слое, имеется четыре перцептрона. Они представляют четыре функции, что означает, что один перцептрон обрабатывает одну функцию, в зависимости от структуры нейронных сетей.
Чтобы создать входные слои с помощью TensorFlow, выполните следующие действия.
Как показано ниже, вы должны импортировать функцию Dense() из tensorflow.keras.layers.
from tensorflow.keras.layers import Dense
Предположим, вы предоставляете нейронной сети три функции, ваш входной слой будет содержать три перцептрона (нейрона). Итак, чтобы создать входной слой с тремя перцептронами, запустите приведенный ниже код.
Dense(units=3, activation='relu', input_shape=(3,));
Как видите, функция Dense() содержит 3 единицы, что означает количество перцептронов (нейронов) во входном слое, кроме того, активация входного слоя — «relu».
input_shape(3) представляет количество объектов набора данных, поэтому его также равно трем, поскольку здесь для обработки трех функций требуется три нейрона.
Скрытые слои: этот слой существует между входным и выходным слоями. Это слой, который также содержит нейроны, и эти нейроны связаны с каждым нейроном предыдущего слоя (входного слоя).
Здесь «скрытые слои» означают, что он может содержать несколько слоев, а количество нейронов в каждом скрытом слое является гиперпараметром, который настраивается в зависимости от сложности проблемы.
В каждом скрытом слое к выходу каждого нейрона применяется функция активации, это применяется для введения нелинейности.
На рисунке выше показан перцептрон каждого слоя скрытых слоев. В отличие от входных слоев, каждый персептрон имеет функцию активации (желтого цвета), применяемую к выходу.
Выше показана простая структура перцептрона с параметрами w1 (вес) и смещения (b), перцептрон может иметь корректируемые гиперпараметры.
Чтобы создать скрытые слои в Tensorflow, используйте ту же функцию Dense(), показанную ниже.
Dense(units=10, activation='relu');
Скрытый слой содержит 10 восприятий (нейронов) и функцию активации, такую же, как «relu». Выше находится один скрытый слой, но может быть и больше скрытых слоев, например, создание еще одного скрытого слоя, как показано ниже.
Dense(units=20, activation='relu');
Этот скрытый слой содержит 20 перцептронов или нейронов.
Выходной слой: это последний уровень искусственной нейронной сети. Количество нейронов в этом слое определяется задачей всей ИНС.
Например, бинарная классификация, подобная определению двух фруктов, является ли данный фрукт манго или нет, используется здесь только на нейронах с функцией активации сигмовидной кишки.
- Если это мультиклассификация, идентифицирующая более одного плода, она содержит по одному нейрону на класс с функцией активации softmax.
- Если задача связана с регрессией, она содержит один нейрон без функции активации или использует линейную функцию активации.
Чтобы создать выходной слой в Tensorflow, используйте функцию Dense(), но выбор количества перцептронов и функций активации зависит от типа задачи, которую пытается решить ваша нейронная сеть.
Например, вам нужно обучить нейронную сеть определять, является ли этот фрукт манго. Здесь есть только два возможных исхода: 1 — фрукт — манго, и 0 — фрукт — не манго. Итак, это бинарная классификация.
Как показано ниже, вам понадобится один нейрон и сигмовидная функция активации, чтобы создать выходной слой для бинарной классификации.
Dense(units=1, activation='sigmoid')
Если ваша сеть выполняет задачу, связанную с мультиклассификацией, количество нейронов и функция активации могут различаться.
Как создать
Чтобы создать эту модель, вы должны расположить слои, такие как входной, скрытый и выходной, в последовательном порядке. Это означает, что сначала вам нужно поместить входной слой, затем скрытые слои и, наконец, выходной слой.
Таким образом, сохранение слоев в этом порядке означает, что входные слои принимают входные данные из внешнего мира (предоставляемые через набор данных), а затем передают эти входные данные для дальнейшей обработки скрытым слоям. Поскольку скрытые слои состоят из нескольких скрытых слоев, входные данные обрабатываются через эти слои.
Затем, после этого, выходные данные скрытых слоев передаются в качестве входных данных выходному слою, который является последним слоем.
Таким образом, передача входных данных через эти слои позволяет модели изучать закономерности в наборе данных и делать прогнозы для нового набора данных.
Чтобы упорядочить или сложить слои последовательно, tensorflow предоставляет API под названием Sequential. Итак, используя этот API, вы можете создать последовательную модель в тензорном потоке, которая будет содержать ваши слои в последовательном порядке.
Поэтому импортируйте функцию Sequential из пакета tensorflow.keras.models.
from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense
Затем создайте последовательную модель, используя приведенный ниже код.
model = Sequential()
Теперь добавьте входной, скрытый и выходной слои к этой модели, вызвав для нее функцию add().
model.add(tf.keras.layers.dense(units=3, activation='relu', input_shape=(3,))) # Input layer model.add(tf.keras.layers.dense(units=10, activation='relu')) # Hidden layer model.add(tf.keras.layers.dense(units=1, activation='sigmoid')) # Ouptut layer
Как видите, один за другим каждый слой добавляется в модель последовательно и образует стек слоев. Опять же, слои располагаются последовательно, так что выходные данные одного слоя становятся входными данными следующего слоя.
Вы создали или определили свою первую нейронную сеть в TensorFlow, называемую нейронной сетью прямого распространения. Но она называется нейронной сетью прямого распространения, потому что входные данные (или информация) передаются в одном направлении, то есть только от входного слоя, скрытых слоев, к выходному слою.
Также у вас может возникнуть вопрос: может ли информация течь обратно от выходных слоев к другим слоям (скрытым) в обратном направлении? Ответ: да.
Другие нейронные сети, такие как RNN (рекуррентные нейронные сети), CNN (сверточные нейронные сети), LSTM и т. д., имеют архитектуру, в которой информация течет в обоих направлениях.
Объяснение других типов нейронных сетей не является частью этого руководства, но после построения модели нейронной сети следующим шагом будет ее компиляция.
Заключение
Из этого урока по тензорному потоку вы узнали, что искусственные нейронные сети состоят из входных, скрытых и выходных слоев.
Кроме того, вы узнали назначение каждого слоя и способы последовательного объединения слоев для создания последовательной модели искусственной нейронной сети с помощью функции Sequential().