Порог для нейронных сетей - PullRequest
0 голосов
/ 17 мая 2018

Я реализовал нейронную сеть для логического элемента AND с 2 входными, 2 скрытыми и 1 выходным блоком.Я обучил нейронную сеть, используя 40 входов для 200 эпох, со скоростью обучения 0,03.Когда я пытаюсь проверить обученную нейронную сеть на входы AND, она выдает мне вывод:

  1. 0,0 = 0,295 (ожидается 0)
  2. 0,1 = 0,355 (0ожидается)
  3. 1,0 = 0,329 (ожидается 0)
  4. 1,1 = 0,379 (ожидается 1)

Это не результат, ожидаемый отсеть.Но я f Я устанавливаю пороговое значение как 0,36 и устанавливаю все значения выше 0,36 как 1, а остальные равны 0, выход нейронной сети всегда соответствует ожидаемому. Мой вопрос таков: Применяет липорог выхода сети необходим для того, чтобы генерировать ожидаемые результаты, как в моем случае?

1 Ответ

0 голосов
/ 25 июля 2018

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

В вашем случае, возможно, вы можете установить порог 0,1 для 0 и 0,9 для 1. Когда ваш выход ниже 0,1, мы можем считать, что это 0, а если выходной сигнал выше 0,9, то это 1.

Поэтому , установите порог 0,36 только потому, что с это Тестовый пример работает, это очень плохая идея.Потому что 0,36 далеко от выхода 1, который мы хотим.И потому что он может (не будет) работать со всеми вашими тестовыми данными.

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

Это не начальный вопрос, но вот несколько идей:1. Посмотрите на точность тренировки на каждом этапе.Если он учится медленно, увеличьте скорость обучения и, возможно, уменьшите его после нескольких эпох.2. Если точность не меняется, посмотрите на алгоритм Back Backagation3. Посмотрите на ваш набор данных и убедитесь, что входы и выходы правильные4. Убедитесь, что ваши веса инициализированы случайным образом5. И ворота можно решить с помощью линейного NN, без скрытого слоя.Myabe попробовать удалить скрытый слой?

...