Нейронные сети и обратное распространение

Итак, у меня есть многослойная нейронная сеть, которая научилась выполнять И, ИЛИ, НЕ и исключающее ИЛИ. У меня есть сомнения по поводу обратного распространения. Я использую сигмовидную функцию, поэтому для определения градиента ошибки она выглядит примерно так:

(Цель - Выход) * Выход * (1 - Выход)

Но мой вопрос в том, что если у меня есть цель 1, а мой вывод равен 0, это приведет к чему-то вроде

(1 - 0) * 0 * (1 - 0), поэтому он скажет мне, что моя ошибка равна 0, хотя она (я думаю) 1. Это действительно должно быть 0 или это то, что я должен учитывать при оценке градиент? Может кто-нибудь объяснить мне, в чем логика этого 0? это локальный минимум функции или что-то в этом роде?


person Alejandro2600    schedule 15.02.2014    source источник
comment
Какую функцию ошибок вы используете?   -  person Paul Manta    schedule 16.02.2014


Ответы (2)


Если подумать, так оно и будет, даже если ваша цель равна 1, а результат равен 1.

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

РЕДАКТИРОВАТЬ: я думаю, что я должен сосредоточиться на насыщенности. Итак, предположим, что у вас есть 1 на выходном слое. Это означает, что ваша сигмовидная функция вернула 1, что означает, что значение на входе приближалось к 6. Если вы посмотрите на сигмовидный график, вы увидите, что когда x близок к 6, выход близок к 1, а производная выхода также будет близок к 0. Это ситуация, когда мы говорим о сигмовидной «насыщенной». Вы хотите избежать подобных ситуаций. Надеюсь, теперь стало понятнее.

person mp85    schedule 15.02.2014
comment
О, я вижу! Это действительно многое проясняет; это как раз то, что мне было нужно, потому что поначалу у меня была такая проблема; Это было решено путем запуска веса сети с меньшими значениями, но я не понял, почему. Теперь понял, большое спасибо. - person Alejandro2600; 16.02.2014
comment
Да, причина была в большем весе. Если вы посмотрите здесь, вы увидите другие проблемы с обратным распространением. сетей и множество хороших идей по их решению. - person mp85; 16.02.2014

Вы видели этот вопрос?

Функция ошибки обратного распространения

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

person linse    schedule 15.02.2014