Главная страница
Навигация по странице:

  • Федеральное государственное бюджетное образовательное учреждение Высшего профессионального образования Московский технический университет связи и информатики

  • Лабораторная работа №2

  • Москва 2018 Обучение однослойного персептрона методом стохастического градиентного спуска Цель работы

  • Теоретические сведения.

  • Стохастический градиентный спуск ( SGD )

  • Алгоритм обучения методом стохастического градиентного спуска

  • Нейронные сети. Лабораторная работа № 2.. Лабораторная работа 2 магистрант гр. 3Мпп1801 Симанова Д. А. подпись дата Проверил


    Скачать 77.45 Kb.
    НазваниеЛабораторная работа 2 магистрант гр. 3Мпп1801 Симанова Д. А. подпись дата Проверил
    АнкорНейронные сети
    Дата21.12.2019
    Размер77.45 Kb.
    Формат файлаdocx
    Имя файлаЛабораторная работа № 2..docx
    ТипЛабораторная работа
    #101433
    страница1 из 2
      1   2

    Ордена Трудового Красного Знамени

    Федеральное государственное бюджетное образовательное учреждение

    Высшего профессионального образования

    Московский технический университет связи и информатики

    Факультет повышения квалификации


    Лабораторная работа №2

    Выполнил:

    магистрант гр. 3МПП1801

    Симанова Д.А.

    ________________________

    подпись дата
    Проверил:

    Городничев М.Г.

    ________________________

    подпись дата

    Москва 2018

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

    Задание. Построить и обучить нейронную сеть для распознавания цифровых рукописных символов из базы данных MNIST (Mixed National Institute of Standards and Technology database). Нейронная сеть должна корректно распознавать образы из тестовой выборки в большинстве случаев. Общий процент ошибки распознавания образов не должен быть выше 20%.

    Теоретические сведения.

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

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

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

    Алгоритм обучения методом стохастического градиентного спуска

    Шаг 1. Подготовить обучающую выборку, каждый элемент которой будет состоять из пар (X, D)m (m=1,…q) – обучающего вектора X = (x1,…,xn) (i=1,…,n) с вектором желаемых значений D = (d1,…,dk) (j=1,…,k) выходов персептрона.

    Шаг 2. Генератором случайных чисел всем синаптическим весам wi,j и нейронным смещениям w0,j (i=1,…,n; j=1,…,k) присваиваются некоторые малые случайные значения.

    Шаг 3. Из обучающей выборки (X, D)1,…,(X, D)q, случайным образом взять пару (X, D)m.

    Шаг 4. Из этой выбранной пары (X, D)m взять вектор Xт = (x1,…,xn) и подать его на входы персептрона x1,…,xn. Сигналам нейронных входов смещения x0 присваиваются единичные значения: x0 = 1.

    Шаг 5. Для каждого j-го нейрона вычислить взвешенную сумму входных сигналов netj и выходной сигнал yj на основании функции активации f:









    Шаг 6. Вычислить ошибку ε для текущего обучающего вектора ε:





    где dj – желаемое, а yj - фактическое значение выхода j-го нейрона в соответствии с поданным m-ым входным вектором Xm из пары (X, D)m, k – количество выходов (классов) персептрона.

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

    Шаг 8. Произвести коррекцию синаптических весов j-го нейрона и нейронных смещений:









    где t – номер итерации, η – коэффициент скорости обучения.





    Шаги 5-8 выполняются последовательно для каждого входного образа, на котором обучается персептрон.

    Шаги 5 и 8 повторяются для всех нейронов персептронного слоя при подаче конкретного образа.

    Критерии останова алгоритма обучения могут быть следующими:

    1. Значение ошибки ε для текущего обучающего вектора, вычисляемое на текущем случайно взятом обучающем векторе не превышает заданного заранее установленного порогового значения εпорог, близкого к нулю: .

    2. Превышен установленный лимит количества эпох.

    3. Значение общей ошибки всей сети меняется незначительно на протяжении нескольких эпох.

    Указанные критерии останова обучения используются как по отдельности, так и вместе. Важным замечанием будет то, что использование только 2-го и 3-го критерий могут привести к недообучению сети, поэтому их использование без комбинации с 1-ым критерием, не рекомендуется.

    Скорость обучения η выбирают в пределах [0.05…1.0] в зависимости от функции активации, но если скорость обучения константа, то её следует выбирать в пределах [0.0…0.01], так как при больших значениях метод градиентного спуска может расходиться и «проскакивать» области минимума, которые вычисляет антиградиент. Метод может расходиться и при таком коэффициенте скорости обучения, в зависимости от функции активации.

    Приведем несколько обучений при разных скоростях обучения.
    Первое обучение в диапазоне [-0.0003…0.0003] со скоростью обучения ὴ=0.5



    обучение в диапазоне [-0.003…0.003]



    [-0.3…0.3]



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

      1   2


    написать администратору сайта