MATLAB è Simulink íà ðóññêîì

https://hub.exponenta.ru/

Математика\Neural Network Toolbox

Книга  Kevin Swingler  "Applying Neural Networks. A practical Guide" (перевод Ю.П.Маслобоева)

  В оглавление книги \ К следующему разделу \ К предыдущему разделу

3. Построение сети

3.3. Тренировка нейронных сетей

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

3.3.1. С чего начать

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

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

3.3.2. Режимы тренировки: последовательный или пакетный

Процедура предъявления сети всего набора тренировочных данных называется эпохой. Так как задачей нейронной сети является уменьшение средней ошибки на всем наборе тренировочных данных, такая процедура является удачным вариантом получения суммарной ошибки по всем выходным элементам и всем тренировочным данным. После завершения одной эпохи вычисляется единственная усредненная ошибка и сеть модифицируется в соответствии с этой ошибкой. Этот режим тренировки известен как пакетный режим обучения. Альтернативный к пакетному режиму, т.н. последовательный режим (pattern mode), заключается в том, что модификация весов сети производится после предъявления каждого из примеров тренировочной последовательности.

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

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

3.3.3. Ускорение процесса тренировки

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

  • Если данный вес последовательно изменяется в одном и том же направлении для нескольких последовательных предъявлений, можно увеличить скорость обучения для данного веса. Естественно, это требует использования независимых параметров обучения для каждого веса.
  • Наоборот, если веса изменяются в различных направлениях на последовательно предъявляемых примерах, их параметры обучения должны быть уменьшены.
  • Если поверхность ошибок очень плоская, тогда скорость обучения может быть увеличена. Это простейшее правило может быть применено когда используется только единственный параметр обучения.
  • Когда ошибка большая, мы можем позволить большие изменения весов.
  • Как только ошибка уменьшится, мы должны выполнять более тонкую подстройку.

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

Наблюдения, сделанные выше, могут применяться понемногу. Другими словами, параметры обучения могут изменяться от предъявления к предъявлению, но любое единичное предъявление будет оказывать только слабое влияние на скорость обучения. Такой контроль вводится использованием еще одного параметра, который устанавливает размер шага изменения параметра обучения. Представляется разумным задать ограничения на параметры обучения. Они не могут достигать нулевых значений, так как в этом случае процесс обучения остановится.

Многие программные пакеты моделирования нейронных сетей предусматривают возможность динамической подстройки параметра обучения. Следует запомнить, что те же самые механизмы, которые ускоряют движение сети к решению, также могут приводить к попаданию и застреванию сети в локальном минимуме. Как мы уже отмечали, один из возможных тактических подходов в решении этой проблемы состоит в том, чтобы запомнить веса, увеличить параметры обучения до максимума и медленно уменьшать их в надежде, что сеть “выпрыгнет” из локального минимума и продолжит обучение. Если же такая тактика полностью разрушит решение, тогда оно может быть восстановлено на основе сохраненных весов.

Другие заметки по ускорению

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

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

Оптимальной тактикой является использование ночного времени и выходных дней для тренировки нейронных сетей.

3.3.4. Когда останавливать тренировку

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

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

  • Усредненная ошибка тренировки достигла заранее заданной величины.
  • Средняя ошибка тренировки не уменьшается, или уменьшается незначительно.
  • Средняя ошибка независимого теста начинает возрастать, указывая на начало переобучения.

3.3.5. Меры "здоровья" сети

Наряду с наблюдением за поведением ошибки сети, можно сосредоточить внимание на “здоровье” сети с точки зрения распределения значений весовых коэффициентов.

Гистограммы весовых коэффициентов

Мы видели, что для достижения обобщающей способности сети, необходимо, чтобы значения весовых коэффициентов были малыми. Этот факт позволяет нам сформулировать простой критерий “здоровья” сети, который известен как гистограмма весов. Гистограмма весов показывает количество весов сети, чьи значения попадают в заданный интервал.

Построение гистограммы весов

Гистограмма может быть представлена в стандартном виде как столбцовая диаграмма. Для построения гистограммы необходимо вычислить диапазон изменения весов сети, разбить его на поддиапазоны (достаточно на 10) и вычислить количество весов, которые попадают в каждый из поддиапазонов.

Анализ гистограммы весов

Гистограмма “здоровой” сети имеет плавный максимум в области малых амплитуд (в окрестности нуля), указывая, что большинство весовых коэффициентов невелики. Ясно, что маловероятно, чтобы некоторые веса обращались в нуль. Гистограмма с пиками на краях диапазона изменения указывает на вероятность переобучения. Величины весов зависят от вида функции активации. Взглянув на рис. можно заметить, что выход сигмоидальной функции близок к нулю или к единице при диапазоне входных значений более, чем 5.

Изменяемость гистограмм весов

Внимательный читатель (или читатель, знакомый с гистограммами) отметит, что нетренированная сеть с малыми случайными весами демонстрирует “здоровую”, хотя и слишком узкую гистограмму. Поэтому представляет интерес оценка дисперсии гистограммы в процессе обучения сети. Веса, которые не двигаются от их начальных состояний, не могут давать большого вклада в решение (если, конечно, они не оказались правильными при инициализации). Если ни один из весов сети не изменился по отношению к начальному состоянию, значит сеть не обучилась. Начальные веса должны быть случайными величинами в диапазоне от –1 до +1. “Здоровая сеть должна иметь веса с максимальной амплитудой около 10. На рис. представлены образцы хороших и плохих гистограмм.

  В оглавление книги \ К следующему разделу \ К предыдущему разделу


Поиск по сайту:


Система Orphus