Как Keras оптимизирует вес на слоях, которые не активированы?

1

Фон:

Если я не ошибаюсь, когда мы тренируемся в сети, мы корнем вперед, выполняя сигмоид (сумма (W * x)) для каждого слоя, а затем при обратном распространении вычисляем ошибку и дельта (изменение), тогда мы вычисляем градиенты и обновляем веса,

Допустим, у нас нет активации на одном из слоев, как керам рассчитать градиент? он просто принимает значение sum(W*x)*next_layer_delta*weights чтобы получить дельта для текущего слоя и использовать это для вычисления градиентов?

Код:

У меня есть этот код, который я написал для создания модели word2vec (skip-gram):

model = Sequential()
model.add(Dense(2, input_dim=len(tokens_enc)))#what does it mean for it not to have an activation here? This makes it linear because there is no non-linear function such as tanh!
model.add(Dense(len(tokens_enc), activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])
# Fit the model
model.fit(X, y, epochs=20000)

Вход и выход - 1 горячий вектор.

Вопрос: Как кера оптимизирует вес в этом сценарии и каковы последствия отсутствия функции активации в скрытом слое?

Теги:
keras
activation-function

2 ответа

1
Лучший ответ

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

0

Keras использует возможности автоматической дифференциации Theano и TensorFlow (в зависимости от того, какой бэкэнд вы используете), поэтому Keras действительно не делает ничего особенного в том, что у вас нет функции активации.

Градиенты вычисляются Theano/TensorFlow, и они вычисляют правильные.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню