1

Я пытаюсь создать образец нейронной сети, которая может использоваться для оценки кредита. Поскольку это сложная структура для меня, я сначала пытаюсь изучить их.sigmoid - back распространение нейронной сети

Я создал сеть, использующую обратное распространение - слой ввода (2 узла), 1 скрытый слой (2 узла +1 смещение), выходной слой (1 узел), который использует сигмоид как функцию активации для всех слоев. Я пытаюсь проверить его сначала, используя^2 + b2^2 = c^2, что означает, что мой ввод будет a и b, а целевой вывод будет c.

Моя проблема заключается в том, что мои входные и целевые выходные значения являются действительными числами, которые могут варьироваться от (-/infty, +/infty). Поэтому, когда я передаю эти значения в свою сеть, моя функция ошибки будет похожа на (выход целевой сети). Будет ли это правильно или точно? В том смысле, что я получаю разницу между сетевым выходом (который варьируется от 0 до 1) и целевым выходом (который является большим числом).

Я читал, что решение было бы нормализовать сначала, но я не совсем уверен, как это сделать. Должен ли я нормализовать как входные, так и выходные значения перед подачей их в сеть? Какая нормализация лучше всего использовать, потому что я читаю разные методы при нормализации. Получив оптимизированные веса и используя их для проверки некоторых данных, Im получает выходное значение от 0 до 1 из-за сигмоидной функции. Должен ли я возвращать вычисленные значения в ненормированную/оригинальную форму/значение? Или я должен только нормализовать целевой выход, а не входные значения? Это действительно заставило меня застрять в течение нескольких недель, так как я не получаю желаемого результата и не уверен, как включить идею нормализации в мой алгоритм обучения и тестирования.

спасибо!

ответ

0

Так, чтобы ответить на ваши вопросы:

  1. функция сигмовидной является давя свой вклад в интервале (0, 1). Это обычно полезно для задачи классификации, потому что вы можете интерпретировать его вывод как вероятность определенного класса. Ваша сеть выполняет задачу регрессии (вам нужно приблизить действительную функцию) - поэтому лучше установить линейную функцию как активацию с вашего последнего скрытого слоя (в вашем случае также сначала :)).
  2. Я бы посоветовал вам не использовать сигмоидную функцию в качестве функции активации в ваших скрытых слоях. Гораздо лучше использовать tanh или relu nolinearities. Подробное объяснение (а также некоторые полезные советы, если вы хотите сохранить сигмовидность в качестве вашей активации), можно найти here.
  3. Также важно понимать, что архитектура вашей сети не подходит для задачи, которую вы пытаетесь решить. Вы можете узнать немного о том, что могут узнать различные сети. here.
  4. В случае нормализации: основной причиной, по которой вы должны нормализовать свои данные, является не предоставление каких-либо дополнительных знаний в вашей сети. Рассмотрим две переменные: age и income. Первый вариант варьируется от, например, 5 - 90. Второй вариант варьирует от, например, От 1000 до 100000. Среднее абсолютное значение намного больше для income, чем для age, поэтому из-за линейных преобразований в вашей модели - ANN обрабатывает income, так как больше важно в начале вашего обучения (из-за случайной инициализации). Теперь подумайте, что вы пытаетесь решить задачу, где вам нужно классифицировать, если у человека есть седые волосы :) Действительно ли важна переменная для этой задачи income?
  5. Есть много rules of thumb о том, как вы должны нормализовать свои входные данные. Один из них - сквош всех входов до [0, 1] интервала.Другой способ состоит в том, чтобы каждая переменная имела mean = 0 и sd = 1. Обычно я использую второй метод, когда распределение данной переменной аналогично нормальному распределению, а во-первых - в других случаях.
  6. Когда дело доходит до нормализации вывода, обычно полезно также нормализовать его, когда вы решаете задачу регрессии (особенно в случае с множественной регрессией), но это не так важно, как во входном случае.
  7. Следует помнить, что необходимо сохранить параметры, необходимые для восстановления исходного размера ваших входов и выходов. Вы также должны помнить, что они должны вычислять их только на обучающем наборе и применять его как на наборах обучения, тестирования и проверки.
+0

Большое вам спасибо! Это прояснилось и многое помогло! :) – hannah