2010-01-23 4 views
2

Я начал работу с нейронными сетями, в настоящее время следуя в основном D. Kriesel's tutorial. С самого начала он вводит по меньшей мере три (разные?) Правила обучения (Hebbian, правило дельта, backpropagation) относительно контролируемого обучения.Нейронные сети - почему так много правил обучения?

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

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

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

ответ

11

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

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

2

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

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

1

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

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

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

1

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

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

Greetz, David (Kriesel ;-))