2013-03-11 7 views
4

Мой вопрос о тренинге, установленного в контролируемой искусственной нейронной сети (ИНС)обучения нейронной сети набор

обучающего набора, так как некоторые из вас, наверное, знаете, состоит из пар (входной, желаемый выход)

сама фаза обучения является следующей

для каждой пары в обучающем множество

-мы введите первое значение пары и вычислить погрешность выходной т.е. насколько это сгенерированный от желаемого выхода, который является второе значение пары

-основана на это значение ошибки мы используем backpropagate алгоритм для вычисления веса градиентов и обновления весов ИНС

конец для

Теперь предположим, что есть pair1, pair2, ... пара м ... в обучающем наборе

мы принимаем pair1, произвести некоторую ошибку, веса обновлений, а затем принять pair2 и т.д.

позже мы достигаем пару метров, производят некоторые ошибки и обновления веса,

Мой вопрос в том, что, если это обновление веса после пары m устранит некоторое обновление веса или даже обновления, которые произошли раньше?

Например, если пара m будет устранять обновления веса, произошедшие после пары 1 или пары 2, или оба, то, хотя ANN будет производить разумный вывод для ввода m, он будет забывать обновления для пары 1 и пары 2 и результат для входов 1 и 2 будет неудовлетворительным, , тогда в чем смысл тренировки ??

Если мы снова поезд ИНС с pair1 и pair2, после пары м

ответ

3

Например, если пара м собирается ликвидировать обновления веса произошло после того, как pair1 или pair2, или оба, то хотя ИНС будет производить разумный выход для ввода m, он будет забывать обновления для пары 1 и пары2, а результат для входов 1 и 2 будет неудовлетворительным, тогда в чем смысл тренировки?

Цель обучения нейронной сети состоит в том, чтобы в конечном итоге с весами дать желаемый результат для всех возможных входных значений. То, что вы здесь делаете, - это перемещение поверхности ошибки при повторном распространении, чтобы вы оказались в области, где ошибка ниже порога ошибки. Имейте в виду, что когда вы возвращаете ошибку для одного набора входов, это не означает, что нейронная сеть автоматически распознает , что указывает, и сразу производит точный ответ, когда этот ввод представлен снова. Когда вы backpropagate, все это означает, что вы изменили свои веса таким образом, что ваша нейронная сеть получит лучше при распознавании этого конкретного входа (то есть ошибка продолжает уменьшаться).

Итак, если вы представляете пару-1, а затем пару-2, возможно, что пара-2 может отрицательно повлиять на изменения. Однако в конечном итоге вес нейронной сети будет стремиться к должному признанию всех исходных данных. Дело в том, что вы не можете смотреть на результат определенной тренировочной попытки для определенного набора входов/выходов и быть обеспокоены тем, что изменения будут сведены на нет.Как я уже упоминал ранее, когда вы тренируете нейронную сеть, вы пересекаете поверхность ошибки, чтобы найти место, где ошибка является самой низкой. Подумайте об этом как о прогулке по ландшафту с кучей холмов и долин. Представьте, что у вас нет карты и у вас есть специальный компас, который говорит вам, в каком направлении вам нужно двигаться, и на каком расстоянии. Компас в основном пытается направить вас к самой низкой точке в этом ландшафте. Теперь этот компас не знает ландшафта, и так, пытаясь отправить вас в самую низкую точку, он может идти в слегка неправильном направлении (т. Е. Отправить вам путь вверх по холму), но он попытается исправить сам после этого. В конечном счете, вы в конечном итоге окажетесь в самой низкой точке ландшафта (если вы не находитесь в локальных минимумах, то есть в нижней точке, но не в самой низкой точке).

0

Если вы выполняли стохастический градиентный спуск (SGD), это, вероятно, не произойдет, потому что обновление параметров для пары 1 вступит в силу до того, как будут вычислены обновления параметров для пары 2. Вот почему SGD может сходиться быстрее.

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

+0

спасибо за комментарий, но, честно говоря, до сих пор я никогда не слышал о обновлениях параметров, чтобы использовать все данные или их часть одновременно:) Является ли это популярной стратегией? – mangusta

+0

Да, я бы сказал, что это очень популярная стратегия; вероятно, более популярным, чем SGD. У них разный оптимум b/c они не используют ** истинный ** градиент, а используют его аппроксимацию: приближение, созданное добавлением всех градиентов вместе. – danelliottster

3

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

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

Практически во всех случаях, когда набор данных обучения является относительно репрезентативным для общего случая, вы должны предпочесть стохастическую подготовку по пакетному обучению. Стохастическое обучение превосходит пакетное обучение в 99 из 100 случаев! (Нужна цитата :-)). (Исключением являются простые случаи обучения XOR и другие проблемы с игрушками)

Назад к вопросу (который применяется для стохастического обучения): Да, вторая пара действительно может регулировать весы в противоположном направлении от первой пары. Однако вряд ли все весы корректируются в противоположном направлении для двух случаев. Однако, поскольку вы будете запускать несколько эпох через множество, эффект будет уменьшаться через каждую эпоху. Вы также должны рандомизировать порядок пар для каждой эпохи. (Используйте какой-то алгоритм Фишера-Йейса.) Это еще больше уменьшит эффект.

Следующий совет: Храните контрольный набор данных отдельно от данных обучения. Для каждой n эпохи обучения сравнивайте нейронную сеть с эталонным набором. Это вычисляет общую ошибку по парам в этом наборе данных эталонных тестов. Когда ошибка не уменьшается, пришло время прекратить тренировку.

Удачи вам!

Смежные вопросы