Роль функции активации в вычислении функции стоимости для искусственных нейронных сетей - PullRequest
0 голосов
/ 10 января 2019

У меня есть некоторые трудности с пониманием роли функций активации и функций стоимости. Давайте посмотрим на простой пример. Допустим, я строю нейронную сеть (искусственная нейронная сеть). У меня есть 5 переменных x и одна переменная y.

Если я выполняю обычное масштабирование объектов и затем применяю, например, функцию активации Relu в скрытом слое, то эта функция активации выполняет преобразование, и в результате мы получаем наше прогнозируемое выходное значение (y hat) между 0 и, скажем, M Затем следующим шагом является вычисление функции стоимости.

Однако при расчете функции стоимости нам нужно сравнить выходное значение (y hat) с фактическим значением (y).

Вопрос заключается в том, как мы можем сравнить преобразованное выходное значение (y hat), которое, скажем, между 0 и M, с не преобразованным фактическим значением (y) (которое может быть любым числом, поскольку оно не подвергалось функции активации Relu ) рассчитать функцию стоимости? Может быть большое несоответствие, поскольку одна переменная подверглась преобразованию, а другая - нет.

Спасибо за любую помощь.

Ответы [ 2 ]

0 голосов
/ 10 января 2019

Значение, с которым вы сравниваете фактические результаты для функции стоимости, не имеет (по сути) никакого отношения к входным данным, которые вы использовали для получения выходных данных. Он никак не трансформируется.

Ожидаемое значение [10,200,3], но вы использовали Softmax на выходном слое и среднеквадратичные потери? Что ж, плохо, у вас все время будет высокая стоимость (и модель, вероятно, не будет сходиться).

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

0 голосов
/ 10 января 2019

Похоже, что вы выполняете задачу регрессии, поскольку вы описываете свой конечный результат как «не преобразованное фактическое значение (y) (которое может быть любым числом, поскольку оно не было подвергнуто функции активации Relu)».

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

Например, см. Учебник Basic Regression TensorFlow Keras. Вы можете увидеть из определения слоя модели:

def build_model():
  model = keras.Sequential([
    layers.Dense(64, activation=tf.nn.relu, input_shape=[len(train_dataset.keys())]),
    layers.Dense(64, activation=tf.nn.relu),
    layers.Dense(1)
  ])

  optimizer = tf.train.RMSPropOptimizer(0.001)

  model.compile(loss='mse',
                optimizer=optimizer,
                metrics=['mae', 'mse'])
  return model

Он использует среднеквадратичную потерю ошибок, а последний слой представляет собой просто Dense(1) значение без активации.

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

Так, например, если вы хотите предсказать метку для задачи прогнозирования 4 категории, ваш выходной слой будет выглядеть примерно так: Dense(4, activation=tf.nn.softmax), где активация softmax преобразует необработанные значения нейронов этих 4 нейронов в относительные оценки.

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

...