Jaký je rozdíl mezi gradientem a stochastickým gradientem?

Jaký je rozdíl mezi gradientem a stochastickým gradientem?

Nejsem s nimi příliš obeznámen, můžete popsat rozdíl na krátkém příkladu?

Odpověď

Pro rychlé a jednoduché vysvětlení:

U gradientního klesání (GD) i stochastického gradientního klesání (SGD) aktualizujete sadu parametrů iterativním způsobem, abyste minimalizovali chybovou funkci.

Zatímco jste v GD, musíte projít VŠECHNY ukázky ve vaší tréninkové sadě, abyste provedli jednu aktualizaci pro parametr v konkrétní iteraci, v SGD naopak používáte POUZE JEDEN nebo SUBSET cvičného vzorku z vaše tréninková sada pro aktualizaci parametru v konkrétní iteraci. Pokud používáte SUBSET, nazývá se to Minibatch Stochastic gradient Descent.

Tedy pokud je počet tréninkových vzorků velký, ve skutečnosti velmi velký, pak může použití gradientového sestupu trvat příliš dlouho, protože v každé iteraci, když aktualizujete hodnoty parametrů, procházíte kompletní tréninkovou sadou. Na druhou stranu bude použití SGD rychlejší, protože použijete pouze jeden tréninkový vzorek a hned od prvního vzorku se začne zlepšovat.

SGD často konverguje mnohem rychleji ve srovnání s GD, ale chybová funkce není stejně jako v případě GD. Ve většině případů stačí přibližná aproximace, kterou získáte v SGD pro hodnoty parametrů, protože dosahují optimálních hodnot a stále tam oscilují.

Pokud potřebujete příklad s praktickým případem, zkontrolujte Poznámky Andrewa NG, kde vám jasně ukazuje kroky v obou případech. cs229-notes

Zdroj: Quora Thread

Komentáře

  • děkuji, krátce se mi to líbí? Existují tři varianty Gradient Descent: Batch, Stochastic a Minibatch: Batch aktualizuje váhy po vyhodnocení všech tréninkových vzorků. Stochastic, váhy se aktualizují po každém cvičném vzorku. Minibatch kombinuje to nejlepší z obou světů. Nepoužíváme celou sadu dat, ale nepoužíváme jediný datový bod. Používáme náhodně vybranou sadu dat z naší datové sady. Tímto způsobem snížíme náklady na výpočet a dosáhneme nižší rozptylu než stochastická verze.
  • Všimněte si, že výše uvedený odkaz na cs229-notes nefunguje. Wayback Machine, v souladu s datem odeslání, však přináší – jo! web.archive.org/web/20180618211933/http://cs229.stanford.edu/…

Odpověď

Zahrnutí slova stochastic jednoduše znamená, že náhodné vzorky z tréninkových dat jsou vybrány v každém běhu k aktualizaci parametru během optimalizace v rámci gradient descent .

Tímto způsobem nejen vypočítáte chyby a aktualizujete váhy v rychlejších iteracích (protože zpracováváme pouze malý výběr vzorků najednou), ale také to často pomůže posunout se k optimální rychleji. podívejte se na odpovědi zde , kde najdete další informace o tom, proč používání stochastických minibatchů pro trénink nabízí výhody.

Jedna možná nevýhoda, je že cesta k optimu (za předpokladu, že by to bylo vždy stejné optimum) může být mnohem hlučnější. Takže místo pěkné křivky hladké ztráty, která ukazuje, jak se chyba snižuje v každé iteraci sestupného přechodu, můžete vidět něco jako toto:

hlučná křivka ztráty

Zřetelně vidíme, jak se ztráta v průběhu času snižuje, nicméně existují velké rozdíly mezi epochami (tréninková dávka k tréninkové dávce), takže křivka je hlučná.

Je to jednoduše proto, že z každé datové sady v každé iteraci vypočítáme střední chybu přes naši stochasticky / náhodně vybranou podmnožinu. Některé vzorky způsobí vysokou chybu, jiné nízkou. Průměr se tedy může lišit v závislosti na tom, které vzorky jsme náhodně použili pro jednu iteraci sestupného přechodu.

Komentáře

  • děkuji, krátce takhle? K dispozici jsou tři varianty přechodu: Batch, Stochastic a Minibatch: Batch aktualizuje váhy po vyhodnocení všech tréninkových vzorků. Stochastic, váhy jsou aktualizovány po každém tréninkovém vzorku. Minibatch kombinuje to nejlepší z obou světů. Nepoužíváme celou sadu dat, ale nepoužíváme jediný datový bod. Používáme náhodně vybranou sadu dat z naší datové sady. Tímto způsobem snížíme náklady na výpočet a dosáhneme nižší odchylky než u stochastické verze.
  • Já ' říkám, že existuje dávka, kde dávka je celá tréninková sada (tedy v zásadě jedna epocha), pak existuje minidávka, kde používá se podmnožina (tedy jakékoli číslo menší než celá množina $ N $) – tato podmnožina je vybrána náhodně, takže je stochastická. Použití jediného vzorku by se označovalo jako online učení a je podmnožinou mini-dávky … Nebo jednoduše mini-dávka s n=1.
  • tks, to je jasné!

Odpověď

V přechodu nebo dávkovém přechodu , používáme celá tréninková data na epochu, zatímco ve Stochastic Gradient Descent používáme pouze jeden tréninkový příklad na epochu a Mini-batch Gradient Descent leží mezi těmito dvěma extrémy, ve kterých můžeme použít mini-dávku (malá část ) tréninkových dat za epochu, pravidlo pro výběr velikosti minidávky je v síle 2, jako je 32, 64, 128 atd.
Další podrobnosti: poznámky k přednášce cs231n

Komentáře

  • díky, krátce takhle? K dispozici jsou tři varianty přechodu: Batch, Stochastic a Minibatch: Batch aktualizuje váhy po vyhodnocení všech tréninkových vzorků. Stochastic, váhy jsou aktualizovány po každém tréninkovém vzorku. Minibatch kombinuje to nejlepší z obou světů. Nepoužíváme celou sadu dat, ale nepoužíváme jediný datový bod. Používáme náhodně vybranou sadu dat z naší datové sady. Tímto způsobem snížíme náklady na výpočet a dosáhneme nižší odchylky než u stochastické verze.

Odpovědět

Gradient Descent je algoritmus k minimalizaci $ J (\ Theta) $ !

Nápad: Pro aktuální hodnotu theta vypočítejte $ J (\ Theta) $ , pak udělejte malý krok ve směru záporného přechodu. Opakujte.

Gradient_Descent

Aktualizovat rovnici = UpdateEqn

Algoritmus:

while True: theta_grad = evaluate_gradient(J,corpus,theta) theta = theta - alpha * theta_grad 

Ale problém je $ J (\ Theta) $ je funkce celého korpusu v oknech, takže výpočet je velmi nákladný.

Stochastic Gradient Descent opakovaně ochutnávat okno a aktualizovat po každém

Algoritmus Stochastic Gradient Descent:

while True: window = sample_window(corpus) theta_grad = evaluate_gradient(J,window,theta) theta = theta - alpha * theta_grad 

Velikost ukázkového okna je obvykle síla 2, řekněme 32, 64 jako mini dávka.

Odpověď

Oba algoritmy jsou si velmi podobné. Jediný rozdíl přichází při iteraci. V Gradient Descent uvažujeme všechny body při výpočtu ztráty a derivace, zatímco ve Stochastickém gradientním sestupu používáme jeden bod ve ztrátové funkci a její derivaci náhodně. Podívejte se na tyto dva články, oba spolu souvisejí a jsou dobře vysvětleny. Doufám, že to pomůže.

  1. Algoritmus přechodu sestupně

  2. Stochastický sklon přechodu .

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *