Нейронные сети - почему так много правил обучения? - PullRequest
2 голосов
/ 23 января 2010

Я запускаю нейронные сети, в настоящее время в основном следую D. Учебное пособие Кризела . С самого начала он вводит как минимум три (разные?) Правила обучения (хеббианское, дельта-правило, обратное распространение) в отношении контролируемого обучения.

Я мог бы что-то упустить, но если цель состоит просто в том, чтобы минимизировать ошибку, то почему бы просто не применить градиентное снижение по Error(entire_set_of_weights)?

Редактировать: Я должен признать, что ответы все еще смущают меня. Было бы полезно, если бы можно было указать на реальную разницу между этими методами и разницу между ними и прямым градиентным спуском.

Чтобы подчеркнуть это, эти правила обучения, похоже, учитывают многоуровневую структуру сети. С другой стороны, поиск минимума Error(W) для всего набора весов полностью игнорирует его. Как это вписывается?

Ответы [ 4 ]

11 голосов
/ 23 января 2010

Один вопрос - как распределить «вину» за ошибку. Классическое Delta Rule или LMS правило - это по существу градиентный спуск. Когда вы применяете Delta Rule к многослойной сети, вы получаете backprop. Другие правила были созданы по различным причинам, включая стремление к более быстрой конвергенции, неконтролируемое обучение, временные вопросы, модели, которые, как считается, ближе к биологии и т. Д.

По вашему конкретному вопросу "почему не просто градиентный спуск?" Градиентный спуск может работать для некоторых проблем, но многие проблемы имеют локальные минимумы, в которых наивный градиентный спуск застрянет. Первоначальный ответ на это - добавить термин «импульс», чтобы вы могли «выкатить» локальный минимум ; это в значительной степени классический алгоритм backprop.

2 голосов
/ 23 января 2010

Прежде всего, обратите внимание, что «обратное распространение» просто означает, что вы применяете дельта-правило к каждому слою от вывода обратно к вводу, поэтому это не отдельное правило.

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

1 голос
/ 16 февраля 2010

могут быть проблемы, которые, например, заставляют backprop сталкиваться с локальными минимумами. Кроме того, в качестве примера, вы не можете настроить топологию с помощью backprop. Существуют также классные методы обучения, использующие природную метаэвристику (например, эволюционные стратегии), которые позволяют одновременно корректировать вес и топологию (даже повторяющиеся). Возможно, я добавлю одну или несколько глав, чтобы покрыть их тоже.

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

Greetz, Дэвид (Kriesel ;-))

1 голос
/ 26 января 2010

Обратное распространение и наивный градиентный спуск также отличаются вычислительной эффективностью. Backprop в основном учитывает структуру сетей и для каждого веса рассчитывает только фактически необходимые детали.

Производная ошибки по весам делится через цепочку на: ∂E / ∂W = ∂E / ∂A * ∂A / ∂W. А активация отдельных единиц. В большинстве случаев производные будут равны нулю, поскольку W разрежен из-за топологии сетей. С помощью backprop вы получаете правила обучения игнорированию этих частей градиента.

Итак, с математической точки зрения, backprop не так уж и интересен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...