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

Дадим определение искусственной нейронной сети.

Искусственная нейронная сеть — это вычислительная система, состоящая из набора связанных единиц, называемых нейронами, которые организованы в так называемые слои.

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

Узлы организованы в то, что мы называем слоями. На самом высоком уровне в каждой ИНС есть три типа слоев:

  1. Входной слой
  2. Скрытые слои
  3. Выходной слой

Различные слои выполняют различные виды преобразований на своих входах. Данные проходят через сеть, начиная с входного уровня и проходя через скрытые слои, пока не будет достигнут выходной уровень. Это известно как прямой проход по сети. Слои, расположенные между входным и выходным слоями, называются скрытыми слоями.

Рассмотрим количество узлов, содержащихся в каждом типе слоя:

  1. Входной слой — Один узел для каждого компонента входных данных.
  2. Скрытые слои — Произвольно выбранное количество узлов для каждого скрытого слоя.
  3. Выходной слой — Один узел для каждого из возможных желаемых выходных данных.

Теперь, когда у нас есть общее представление об определении и структуре ИНС, давайте посмотрим, как эти идеи можно проиллюстрировать.

Визуализация искусственной нейронной сети

Эта ИНС имеет всего три слоя. Слой слева является входным слоем. Слой справа — это выходной слой, а слой посередине — скрытый слой. Помните, что каждый слой состоит из нейронов или узлов. Здесь узлы изображены кружками, поэтому давайте рассмотрим, сколько узлов находится в каждом слое этой сети.

Количество узлов в каждом слое:

  1. Входной слой (слева): 2 узла
  2. Скрытый слой (средний): 3 узла
  3. Выходной слой (справа): 2 узла

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

Поскольку эта сеть имеет два узла в выходном слое, это говорит нам о том, что есть два возможных выхода для каждого входа, который передается вперед (слева направо) через сеть. Например, двумя выходными классами могут быть избыточный вес или недостаточный вес. Обратите внимание, что выходные классы также известны как классы предсказания.

Последовательная модель Keras

В Keras мы можем построить так называемую последовательную модель. Керас определяет последовательную модель как последовательный стек линейных слоев. Этого и следовало ожидать, поскольку мы только что узнали, что нейроны организованы в слои.

Эта последовательная модель представляет собой реализацию Keras искусственной нейронной сети. Давайте теперь посмотрим, как с помощью Keras строится очень простая последовательная модель.

Сначала мы импортируем необходимые классы Keras.

from keras.models import Sequential
from keras.layers import Dense, Activation

Затем мы создаем переменную с именем model и устанавливаем ее равной экземпляру объекта Sequential.

model = Sequential(layers)

В конструктор мы передаем массив из Dense объектов. Каждый из этих объектов под названием Dense на самом деле является слоями.

layers = [
    Dense(3, input_shape=(2,), activation='relu'),
    Dense(2, activation='softmax')
]

Слово dense указывает на то, что эти слои относятся к типу Dense. Плотный — это один особый тип слоя, но есть много других типов, которые мы увидим, продолжив наше путешествие по глубокому обучению.

А пока просто поймите, что плотность — это самый простой тип слоя в ИНС, и что каждый выход плотного слоя вычисляется с использованием каждого входа слоя.

Глядя на стрелки на нашем изображении (в приведенном выше разделе), идущие от скрытого слоя к выходному слою, мы видим, что каждый узел в скрытом слое подключен ко всем узлам в выходном слое. Вот откуда мы знаем, что выходной слой в изображении является плотным слоем. Та же логика применима и к скрытому слою.

Первый параметр, передаваемый конструктору слоя Dense в каждом слое, сообщает нам, сколько нейронов в нем должно быть.

Параметр входной формы input_shape=(2,) сообщает нам, сколько нейронов есть в нашем входном слое, поэтому в нашем случае их два.

Наконец, у нас есть параметр для так называемой функции активации.

  1. activation='relu'
  2. activation='softmax'

Ссылка — диплизард