Як оновлюються ваги в методі пакетного навчання в нейронних мережах?


15

Може хтось скажіть, будь ласка, як я повинен будувати нейронну мережу за допомогою пакетного методу?

Я читав, що в пакетному режимі для всіх зразків навчального набору ми обчислюємо помилку, дельту і, таким чином, дельта ваги для кожного нейрона в мережі, а потім замість негайного оновлення ваг ми їх накопичуємо, а потім перед початком наступної епохи ми оновлюємо ваги.

Я також десь читав, що метод партії схожий на онлайн-метод, але з тією різницею, що потрібно лише підсумовувати помилки для всіх зразків у навчальному наборі, а потім взяти середнє значення, а потім використовувати його для оновлення ваг так само, як те, що робиться в онлайн-методі (різниця є лише таким середнім), як це:

for epoch=1 to numberOfEpochs

   for all i samples in training set

         calculate the errors in output layer
         SumOfErrors += (d[i] - y[i])
   end

   errorAvg = SumOfErrors / number of Samples in training set

   now update the output layer with this error
   update all other previous layers

   go to the next epoch

end
  • Який із них є справді правильною формою пакетного методу?
  • У випадку першого, чи не накопичення всіх дельта-ваг призводить до величезної кількості?

1
"Правильний" метод залежить від контексту. Виявляється, у багатьох випадках оновлення ваг лише один раз за епоху буде зближуватися набагато повільніше, ніж стохастичне оновлення (оновлення ваг після кожного прикладу). Я додам, що існує думка про те, що ви, як правило, хочете використовувати якусь форму пакетного оновлення, але набагато частіше, ніж 1x за епоху.
Тахлор

Відповіді:


9

Використання середнього чи суми еквівалентні, в тому сенсі, що існує пари темпів навчання, для яких вони виробляють те саме оновлення.

Щоб підтвердити це, спочатку згадайте правило оновлення:

Δwij=αEwij

μEnnμEnw

Δwij=α(nμ)wij=αnμwij

ΔwΔw


1
Чи спуск міні-партії градієнта однаковий за партією-градієнтом? Я тут загубився! якщо ні, то в чому різниця між ними? Виправте мене, якщо я помиляюсь, в режимі Batch весь набір даних потрібно зчитувати партіями, градієнти обчислюються, а коли всі читаються, то вони усереднюються, а потім оновлюються параметри, тоді як, у міні-пакетній, кожен batch читається, градієнти обчислюються, а потім параметри оновлюються, а потім читається наступна міні-партія, поки не закінчиться одна епоха.
Ріка

1
Це загально задане визначення: Оновіть параметри, використовуючи по одному підмножині навчальних даних за раз. (Є деякі методи, за допомогою яких міні-партії відбирають довільно до вибірки до конвергенції, тобто партія не буде проходити в епоху.) Подивіться, чи це корисно.
Шон Пасха

0

Дві відповіді рівнозначні. Я особисто вважав би це середньою помилкою замість суми. Але пам’ятайте, що спуск градієнта має параметр, який називається швидкістю навчання, і що лише частина градієнта помилки віднімається. Отже, чи визначається помилка як загальна середня величина, можна компенсувати зміною рівня навчання.


дякую, але якщо вони насправді однакові, навіщо турбувати витрачати стільки пам’яті на збереження накопичувальних оновлень для кожного шаблону, коли ми можемо підсумовувати лише помилки, які були б лише простою змінною?
Ріка
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.