Обучаемые параметры в глубоких нейронных сетях

Вопрос или проблема

Недавно я наткнулся на термин “обучаемые параметры”, и поиск в Google не помог, так как большинство описаний касалось обучаемых параметров в CNN, а не в DNN. Есть ли разница между этими двумя?

Как мне вычислить количество обучаемых параметров в DNN? Мог бы кто-нибудь объяснить, что это такое, на примере? Я новичок в машинном обучении, поэтому буду благодарен за помощь в этом.

Представьте себе простой вектор входных данных $\boldsymbol{x}=[x_1,x_2,x_3]^T$, с $x_i\in \{0,1,\ldots,255\}$. Если наша нейронная сеть имеет слой, который нормализует входные данные в диапазон рациональных чисел между $0$ и $1$, то результатом этой операции будет

$$\boldsymbol{x}_\text{Norm}=[1/255, 1/255, 1/255]\boldsymbol{x}.$$

Как видите, у нас есть $3$ параметра, но все они не обучаемые.

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

В нейронных сетях в целом, и в алгоритмах глубокого обучения (CNN, DNN и т.д.), которые также основаны на нейронных сетях, обучаемые параметры — это параметры, которые будут изучены моделью в процессе обучения, такие как веса и смещения.

Вы можете генерировать обучаемые параметры для каждого слоя вашей модели.

DNN – это глубокая нейронная сеть. Я понимаю, что когда нейронная сеть становится глубокой, можно сказать, что это модель глубокого обучения.

Итак, чтобы вычислить обучаемые параметры DNN или CNN, вы можете построить свою модель, используя Keras. Он может автоматически генерировать обучаемые параметры модели для каждого слоя. Когда вы завершите построение своей модели, введите model.summary(). Это создаст список обучаемых параметров, когда вы его запустите.

Этот ссылка создает модель DNN, используя Keras.

Ответ или решение

Изучаемые параметры в глубоких нейронных сетях (DNN)

Введение в понятие изучаемых параметров

В глубоких нейронных сетях (DNN) изучаемые параметры представляют собой те параметры, которые модель будет обучать во время тренировочного процесса. К наиболее распространенным видам изучаемых параметров относятся веса и смещения (biases). Эти параметры обновляются в процессе обучения с помощью алгоритмов оптимизации, таких как градиентный спуск.

Различие между изучаемыми параметрами в DNN и CNN (свёрточные нейронные сети) заключается в архитектуре сетей, однако концепция остается неизменной. В обеих типах моделей основными изучаемыми параметрами являются веса, связаные с нейронами, и смещения. Различия могут возникать из-за специфических операций в CNN, таких как свёртка и пуллинг, но общий процесс активации и обучения сохраняется.

Пример вычисления изучаемых параметров в DNN

Чтобы проиллюстрировать это, рассмотрим простую архитектуру DNN. Пусть у нас есть модель с тремя слоями:

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

1. Входной слой (3 нейрона):
Этот слой не имеет параметров, так как он просто принимает входные данные.

2. Скрытый слой (4 нейрона):
Каждый нейрон в скрытом слое связан со всеми нейронами входного слоя. Таким образом, количество весов для этого слоя будет равно:
[
\text{Количество весов} = \text{Количество входных нейронов} \times \text{Количество нейронов в скрытом слое} = 3 \times 4 = 12
]
Кроме того, у каждого из 4 нейронов в скрытом слое есть уникальное смещение, что добавляет еще 4 изучаемых параметра. В итоге для скрытого слоя мы имеем:
[
12 \, (\text{веса}) + 4 \, (\text{смещения}) = 16
]

3. Выходной слой (2 нейрона):
Каждый нейрон выходного слоя связан со всеми нейронами скрытого слоя. Таким образом, количество весов для выходного слоя будет равно:
[
\text{Количество весов} = \text{Количество нейронов в скрытом слое} \times \text{Количество нейронов в выходном слое} = 4 \times 2 = 8
]
Смещения для выходного слоя составляют 2, что вносит вклад в общую сумму. Итого:
[
8 \, (\text{веса}) + 2 \, (\text{смещения}) = 10
]

Теперь, суммируя параметры всех слоев, получаем общее количество изучаемых параметров в нашей DNN:
[
16 \, (\text{скрытый слой}) + 10 \, (\text{выходной слой}) = 26
]

Как посчитать изучаемые параметры с помощью Keras

Если вы собираетесь использовать Python и библиотеку Keras для создания вашей модели, процесс вычисления изучаемых параметров будет значительно упрощен. После того как ваша модель будет готова, вы можете просто вызвать метод .summary(), который выведет на экран количество изучаемых параметров для каждого слоя. Это позволяет избежать ручных вычислений и ошибок, связанных с ними.

Пример использования Keras для построения DNN:

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

# Создание модели
model = Sequential()
model.add(Dense(4, input_dim=3, activation='relu'))  # Скрытый слой
model.add(Dense(2, activation='softmax'))              # Выходной слой

# Подведение итогов
model.summary()

В результате вызова model.summary() вы получите полное представление о структуре модели и количестве изучаемых параметров.

Заключение

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

Оцените материал
Добавить комментарий

Капча загружается...