ഗ്രേഡിയൻ്റ് ഡിസെൻ്റ്സ്: ബാച്ചും സ്റ്റോക്കാസ്റ്റിക് ഗ്രേഡിയൻ്റ് ഡിസെൻ്റ്സും. വിവിധ തരം ഗ്രേഡിയൻ്റ് ഇറക്കം. കോൺവെക്‌സ് ഒപ്റ്റിമൈസേഷൻ പ്രശ്‌നങ്ങളിൽ ജോലി നടന്നുകൊണ്ടിരിക്കുമ്പോൾ, കോൺവെക്‌സ് അല്ലാത്ത ഒപ്റ്റിമൈസേഷൻ പ്രശ്‌നങ്ങളിൽ അഡാഗ്രാഡ് വിജയകരമായി പ്രയോഗിച്ചു

ഗ്രേഡിയൻ്റ് ഡിസൻ്റ്- ഏറ്റവും കൂടുതൽ ഉപയോഗിക്കുന്ന പഠന അൽഗോരിതം, ഇത് മിക്കവാറും എല്ലാ മോഡലുകളിലും ഉപയോഗിക്കുന്നു. ഗ്രേഡിയൻ്റ് ഡിസെൻ്റ് എന്നത് പ്രധാനമായും മോഡലുകളെ എങ്ങനെ പരിശീലിപ്പിക്കുന്നു എന്നതാണ്. ജിഎസ് ഇല്ലായിരുന്നെങ്കിൽ മെഷീൻ ലേണിംഗ് ഇന്നത്തെ നിലയിൽ ഉണ്ടാകുമായിരുന്നില്ല. ഗ്രേഡിയൻ്റ് ഡിസെൻ്റ് രീതി, ചില പരിഷ്ക്കരണങ്ങളോടെ, പഠനത്തിനും ആഴത്തിലുള്ള പഠനത്തിനും വ്യാപകമായി ഉപയോഗിക്കുന്നു, ഇത് പിശകുകൾ എന്നറിയപ്പെടുന്നു.

ഈ പോസ്റ്റിൽ നിങ്ങൾ ഗ്രേഡിയൻ്റ് ഡിസെൻറിൻ്റെ ഒരു വിശദീകരണം കണ്ടെത്തും. സംഗ്രഹം:

  • ജിഎസ്സിൻ്റെ അർത്ഥം മുഴുവൻ അൽഗോരിതത്തിൻ്റെയും വിശദീകരണമാണ്;
  • അൽഗോരിതത്തിൻ്റെ വിവിധ വ്യതിയാനങ്ങൾ;
  • കോഡ് നടപ്പിലാക്കൽ: ഫൈറ്റണിൽ കോഡ് എഴുതുക.

എന്താണ് ഗ്രേഡിയൻ്റ് ഡിസെൻ്റ്

ഒരു ലോസ് ഫംഗ്‌ഷൻ്റെ ഏറ്റവും കുറഞ്ഞ മൂല്യം കണ്ടെത്തുന്നതിനുള്ള ഒരു രീതിയാണ് ഗ്രേഡിയൻ്റ് ഡിസെൻ്റ് (ഈ ഫംഗ്‌ഷൻ്റെ പല തരങ്ങളുണ്ട്). ഏതെങ്കിലും ഫംഗ്‌ഷൻ ചെറുതാക്കുക എന്നതിനർത്ഥം ആ ഫംഗ്‌ഷനിലെ ഏറ്റവും ആഴത്തിലുള്ള താഴ്‌വര കണ്ടെത്തുക എന്നാണ്. മെഷീൻ ലേണിംഗ് മോഡലിൻ്റെ പ്രവചനങ്ങളിലെ പിശക് നിയന്ത്രിക്കുന്നതിനാണ് ഫംഗ്ഷൻ ഉപയോഗിക്കുന്നതെന്ന് ഓർമ്മിക്കുക. മിനിമം കണ്ടെത്തുക എന്നതിനർത്ഥം ഏറ്റവും ചെറിയത് നേടുക എന്നാണ് സാധ്യമായ പിശക്അല്ലെങ്കിൽ മോഡലിൻ്റെ കൃത്യത മെച്ചപ്പെടുത്തുന്നു. ഞങ്ങളുടെ മോഡൽ പാരാമീറ്ററുകൾ (ഭാരവും പക്ഷപാതവും) ട്യൂൺ ചെയ്യുമ്പോൾ പരിശീലന ഡാറ്റ സെറ്റിൽ ആവർത്തിച്ച് ഞങ്ങൾ കൃത്യത വർദ്ധിപ്പിക്കുന്നു.

അതിനാൽ, നഷ്ടത്തിൻ്റെ പ്രവർത്തനം കുറയ്ക്കുന്നതിന് ഗ്രേഡിയൻ്റ് ഡിസെൻ്റ് ആവശ്യമാണ്.

ഏറ്റവും ചെറിയ പിശക് മൂല്യം നേടുന്നതിനുള്ള പ്രക്രിയയാണ് അൽഗോരിതത്തിൻ്റെ സാരാംശം. അതുപോലെ, മലയിടുക്കിൻ്റെ അടിയിൽ സ്വർണ്ണം കണ്ടെത്താനുള്ള ശ്രമത്തിൽ ഒരു വിഷാദത്തിലേക്ക് ഇറങ്ങിച്ചെല്ലുന്നതായി കരുതാം (ഏറ്റവും കുറഞ്ഞ പിശക് മൂല്യം).


ഒരു ഫംഗ്‌ഷൻ്റെ ഏറ്റവും കുറഞ്ഞ തുക കണ്ടെത്തുന്നു

ഭാവിയിൽ, ഏറ്റവും കൂടുതൽ കണ്ടെത്താൻ കുറഞ്ഞ പിശക്(ആഴമുള്ള താഴ്വര) നഷ്ടം ഫംഗ്ഷനിൽ (ഒരു ഭാരം സംബന്ധിച്ച്), നിങ്ങൾ മോഡൽ പാരാമീറ്ററുകൾ ക്രമീകരിക്കേണ്ടതുണ്ട്. ഞങ്ങൾ അവ എങ്ങനെ സജ്ജീകരിക്കും? ഇത് സഹായിക്കും ഗണിത വിശകലനം. വിശകലനത്തിലൂടെ, ഒരു ഫംഗ്ഷൻ്റെ ഗ്രാഫിൻ്റെ ചരിവ് വേരിയബിളുമായി ബന്ധപ്പെട്ട് ഫംഗ്ഷൻ്റെ ഡെറിവേറ്റീവ് ആണെന്ന് നമുക്കറിയാം. ഈ ചരിവ് എല്ലായ്പ്പോഴും ഏറ്റവും അടുത്തുള്ള വിഷാദത്തിലേക്ക് വിരൽ ചൂണ്ടുന്നു!

ചിത്രത്തിൽ ഒരു ഭാരമുള്ള ലോസ് ഫംഗ്ഷൻ്റെ ഒരു ഗ്രാഫ് ("ജെ" എന്ന ചിഹ്നത്തോടുകൂടിയ "പിശക്" എന്ന് നാമകരണം ചെയ്യപ്പെട്ടിരിക്കുന്നു) കാണാം. ഇപ്പോൾ ഒരു ഭാരവുമായി ബന്ധപ്പെട്ട് ലോസ് ഫംഗ്ഷൻ്റെ ചരിവ് (dJ/dw എന്ന് വിളിക്കുക) കണക്കാക്കിയാൽ, ലോക്കൽ മിനിമയിലെത്താൻ നമ്മൾ നീങ്ങേണ്ട ദിശ നമുക്ക് ലഭിക്കും. ഞങ്ങളുടെ മോഡലിന് ഒരു ഭാരം മാത്രമേയുള്ളൂവെന്ന് ഇപ്പോൾ സങ്കൽപ്പിക്കുക.

പ്രവർത്തന നഷ്ടം

പ്രധാനപ്പെട്ടത്:എല്ലാ പരിശീലന ഡാറ്റയിലൂടെയും ഞങ്ങൾ ആവർത്തിക്കുമ്പോൾ, ഓരോ ഭാരത്തിനും ഞങ്ങൾ dJ/dw മൂല്യങ്ങൾ ചേർക്കുന്നത് തുടരുന്നു. നഷ്ടം പരിശീലന ഉദാഹരണത്തെ ആശ്രയിച്ചിരിക്കുന്നതിനാൽ, dJ/dw മാറുന്നത് തുടരുന്നു. ശരാശരി ലഭിക്കുന്നതിന് ഞങ്ങൾ ശേഖരിച്ച മൂല്യങ്ങളെ പരിശീലന ഉദാഹരണങ്ങളുടെ എണ്ണം കൊണ്ട് ഹരിക്കുന്നു. ഓരോ ഭാരവും ക്രമീകരിക്കാൻ ഞങ്ങൾ ഈ ശരാശരി (ഓരോ ഭാരത്തിൻ്റെയും) ഉപയോഗിക്കുന്നു.

ഇതും ശ്രദ്ധിക്കുക:ഓരോ പരിശീലന ഉദാഹരണത്തിലും പിശക് ട്രാക്ക് ചെയ്യുന്നതിനാണ് ലോസ് ഫംഗ്ഷൻ ഉദ്ദേശിക്കുന്നത്, അതേസമയം ആപേക്ഷിക സിംഗിൾ വെയ്റ്റ് ഫംഗ്ഷൻ്റെ ഡെറിവേറ്റീവ്, ആ പരിശീലന ഉദാഹരണത്തിനായി ഭാരം കുറയ്ക്കുന്നതിന് അത് മാറ്റേണ്ടതുണ്ട്. ലോസ് ഫംഗ്ഷൻ ഉപയോഗിക്കാതെ തന്നെ നിങ്ങൾക്ക് മോഡലുകൾ സൃഷ്ടിക്കാൻ കഴിയും. എന്നാൽ ഓരോ ഭാരത്തെയും (dJ/dw) സംബന്ധിച്ച് നിങ്ങൾ ഡെറിവേറ്റീവ് ഉപയോഗിക്കേണ്ടിവരും.

ഇപ്പോൾ ഞങ്ങൾ ഭാരം തള്ളേണ്ട ദിശ നിർണ്ണയിച്ചു, അത് എങ്ങനെ ചെയ്യണമെന്ന് നമ്മൾ കണ്ടെത്തേണ്ടതുണ്ട്. ഇവിടെ നമ്മൾ പഠന നിരക്ക് ഗുണകം ഉപയോഗിക്കുന്നു, അതിനെ ഹൈപ്പർ പാരാമീറ്റർ എന്ന് വിളിക്കുന്നു. ഒരു ഹൈപ്പർ-പാരാമീറ്റർ എന്നത് നിങ്ങളുടെ മോഡലിന് ആവശ്യമായ ഒരു മൂല്യമാണ്, ഞങ്ങൾക്ക് ശരിക്കും അവ്യക്തമായ ഒരു ആശയം മാത്രമേ ഉള്ളൂ. സാധാരണയായി ഈ മൂല്യങ്ങൾ ട്രയൽ വഴിയും പിശക് വഴിയും പഠിക്കാൻ കഴിയും. ഇവിടെ അങ്ങനെയല്ല: ഒന്ന് എല്ലാ ഹൈപ്പർ-പാരാമീറ്ററുകൾക്കും യോജിക്കുന്നു. പഠന നിരക്ക് ഘടകം "ശരിയായ ദിശയിലേക്കുള്ള ഒരു ചുവട്" ആയി കണക്കാക്കാം, ഇവിടെ ദിശ dJ/dw-ൽ നിന്നാണ് വരുന്നത്.

ഇത് ഒരു ഭാരത്തിൽ നിർമ്മിച്ച ഒരു നഷ്ട പ്രവർത്തനമായിരുന്നു. IN യഥാർത്ഥ മാതൃകഎല്ലാ പരിശീലന ഉദാഹരണങ്ങളിലൂടെയും എല്ലാ ഭാരങ്ങൾക്കും മുകളിൽ ലിസ്റ്റുചെയ്തിരിക്കുന്നതെല്ലാം ഞങ്ങൾ ചെയ്യുന്നു. താരതമ്യേന ചെറിയ ഒരു മെഷീൻ ലേണിംഗ് മോഡലിൽ പോലും നിങ്ങൾക്ക് 1 അല്ലെങ്കിൽ 2-ൽ കൂടുതൽ ഭാരം ഉണ്ടായിരിക്കും. ഇത് ദൃശ്യവൽക്കരണം ബുദ്ധിമുട്ടാക്കുന്നു, കാരണം ഗ്രാഫിന് മനസ്സിന് സങ്കൽപ്പിക്കാൻ കഴിയാത്ത അളവുകൾ ഉണ്ടാകും.

ഗ്രേഡിയൻ്റുകളെ കുറിച്ച് കൂടുതൽ

ലോസ് ഫംഗ്‌ഷനുപുറമെ, ഗ്രേഡിയൻ്റ് ഡിസെൻ്റിന് dJ/dw (എല്ലാ ഭാരങ്ങൾക്കും വേണ്ടിയുള്ള ഒരു ഭാരവുമായി ബന്ധപ്പെട്ട ലോസ് ഫംഗ്‌ഷൻ്റെ ഡെറിവേറ്റീവ്) ഒരു ഗ്രേഡിയൻ്റും ആവശ്യമാണ്. dJ/dw നിങ്ങളുടെ ലോസ് ഫംഗ്‌ഷൻ്റെ തിരഞ്ഞെടുപ്പിനെ ആശ്രയിച്ചിരിക്കുന്നു. ഏറ്റവും സാധാരണമായ നഷ്ട പ്രവർത്തനം റൂട്ട് ശരാശരി ചതുര പിശകാണ്.

ഏതെങ്കിലും ഭാരവുമായി ബന്ധപ്പെട്ട് ഈ ഫംഗ്‌ഷൻ്റെ ഡെറിവേറ്റീവ് (ഈ ഫോർമുല ഗ്രേഡിയൻ്റിൻ്റെ കണക്കുകൂട്ടൽ കാണിക്കുന്നു):

ജിഎസിലെ ഗണിതശാസ്ത്രം ഇതാണ്. ഇത് നോക്കുമ്പോൾ, സാരാംശത്തിൽ, GS ൽ അധികം ഗണിതശാസ്ത്രം അടങ്ങിയിട്ടില്ലെന്ന് നമുക്ക് പറയാം. അതിൽ അടങ്ങിയിരിക്കുന്ന ഒരേയൊരു ഗണിതം ഗുണനവും വിഭജനവുമാണ്, അത് നമുക്ക് ലഭിക്കും. നിങ്ങളുടെ ഫംഗ്‌ഷൻ തിരഞ്ഞെടുക്കുന്നത് ഓരോ ഭാരത്തിൻ്റെയും ഗ്രേഡിയൻ്റിൻ്റെ കണക്കുകൂട്ടലിനെ ബാധിക്കുമെന്നാണ് ഇതിനർത്ഥം.

പഠന നിരക്ക് ഘടകം

മുകളിൽ എഴുതിയതെല്ലാം പാഠപുസ്തകത്തിലുണ്ട്. ഗ്രേഡിയൻ്റ് ഡിസെൻറിനെക്കുറിച്ചുള്ള ഏത് പുസ്തകവും നിങ്ങൾക്ക് തുറക്കാൻ കഴിയും, അതേ കാര്യം അവിടെ എഴുതപ്പെടും. ഓരോ ലോസ് ഫംഗ്‌ഷനുമുള്ള ഗ്രേഡിയൻ്റ് ഫോർമുലകൾ ഇൻ്റർനെറ്റിൽ കണ്ടെത്താനാകും, അവ സ്വയം എങ്ങനെ നേടണമെന്ന് അറിയാതെ.

എന്നിരുന്നാലും, മിക്ക മോഡലുകളുടെയും പ്രശ്നം പഠന നിരക്കാണ്. ഓരോ ഭാരത്തിനുമുള്ള അപ്‌ഡേറ്റ് ചെയ്‌ത എക്‌സ്‌പ്രഷൻ നോക്കാം (j 0 മുതൽ ഭാരങ്ങളുടെ എണ്ണം വരെയാണ്, കൂടാതെ Theta-j ആണ് j-th ഭാരംഭാരത്തിൻ്റെ വെക്‌ടറിൽ, k എന്നത് 0 മുതൽ ഓഫ്‌സെറ്റുകളുടെ എണ്ണം വരെയാണ്, ഇവിടെ B-k kth ഓഫ്സെറ്റ്ഡിസ്പ്ലേസ്മെൻ്റ് വെക്റ്ററിൽ). ഇവിടെ ആൽഫ എന്നത് പഠന നിരക്ക് ഗുണകമാണ്. ഇതിൽ നിന്ന് നമുക്ക് dJ/dTheta-j (Theta-j യുടെ ഭാരത്തിൻ്റെ ഗ്രേഡിയൻ്റ്), തുടർന്ന് ആ ദിശയിലുള്ള സ്റ്റെപ്പ് സൈസ് ആൽഫ കണക്കാക്കുന്നു എന്ന് പറയാം. അതിനാൽ, ഞങ്ങൾ ഗ്രേഡിയൻ്റിലേക്ക് പോകുന്നു. ഓഫ്‌സെറ്റ് അപ്‌ഡേറ്റ് ചെയ്യുന്നതിന്, Theta-j മാറ്റി പകരം B-k.

ഈ സ്റ്റെപ്പ് സൈസ് ആൽഫ വളരെ വലുതാണെങ്കിൽ, നമ്മൾ മിനിമം കവിയും: അതായത്, ഏറ്റവും കുറഞ്ഞത് നമുക്ക് നഷ്ടമാകും. ആൽഫ വളരെ ചെറുതാണെങ്കിൽ, ഏറ്റവും കുറഞ്ഞതിലെത്താൻ ഞങ്ങൾ വളരെയധികം ആവർത്തനങ്ങൾ ഉപയോഗിക്കുന്നു. അതിനാൽ ആൽഫ ഉചിതമായിരിക്കണം.

ഗ്രേഡിയൻ്റ് ഡിസൻ്റ് ഉപയോഗിക്കുന്നു

ശരി, അത്രമാത്രം. ഗ്രേഡിയൻ്റ് ഡിസെൻ്റിനെ കുറിച്ച് നിങ്ങൾ അറിഞ്ഞിരിക്കേണ്ടത് ഇത്രമാത്രം. നമുക്ക് എല്ലാം സ്യൂഡോകോഡിൽ സംഗ്രഹിക്കാം.

ശ്രദ്ധിക്കുക: ഇവിടെയുള്ള സ്കെയിലുകളെ വെക്റ്ററുകളിൽ പ്രതിനിധീകരിക്കുന്നു. വലിയ മോഡലുകളിൽ അവ മെട്രിക്സുകളായിരിക്കും.

i = 0 മുതൽ "പരിശീലന ഉദാഹരണങ്ങളുടെ എണ്ണം" വരെ

1. ഓരോ ഭാരത്തിനും പക്ഷപാതത്തിനും വേണ്ടിയുള്ള i-th പരിശീലന ഉദാഹരണത്തിനായി ലോസ് ഫംഗ്ഷൻ്റെ ഗ്രേഡിയൻ്റ് കണക്കാക്കുക. ഇപ്പോൾ നിങ്ങൾക്ക് ഓരോ ഭാരത്തിനും ഗ്രേഡിയൻ്റുകൾ നിറഞ്ഞ ഒരു വെക്‌ടറും ബയസ് ഗ്രേഡിയൻ്റ് അടങ്ങിയ ഒരു വേരിയബിളും ഉണ്ട്.

2. ഒരു പ്രത്യേക അക്യുമുലേറ്റീവ് വെക്‌ടറിനായി കണക്കാക്കിയ ഭാരത്തിൻ്റെ ഗ്രേഡിയൻ്റുകൾ ചേർക്കുക, ഓരോ പരിശീലന ഉദാഹരണത്തിലും നിങ്ങൾ ആവർത്തിച്ചതിന് ശേഷം, ഒന്നിലധികം ആവർത്തനങ്ങളിൽ ഓരോ ഭാരത്തിൻ്റെയും ഗ്രേഡിയൻ്റുകളുടെ ആകെത്തുക അടങ്ങിയിരിക്കണം.

3. സ്കെയിലുകളുടെ സാഹചര്യത്തിന് സമാനമായി, സഞ്ചിത വേരിയബിളിലേക്ക് ഒരു ബയസ് ഗ്രേഡിയൻ്റ് ചേർക്കുക.

ഇപ്പോൾ, എല്ലാ പരിശീലന ഉദാഹരണങ്ങളും പരിശോധിച്ച ശേഷം, ഇനിപ്പറയുന്നവ ചെയ്യുക:

1. ക്യുമുലേറ്റീവ് വെയ്റ്റും ബയസ് വേരിയബിളുകളും പരിശീലന ഉദാഹരണങ്ങളുടെ എണ്ണം കൊണ്ട് ഹരിക്കുക. ഇത് എല്ലാ ഭാരങ്ങൾക്കുമുള്ള ശരാശരി ഗ്രേഡിയൻ്റും ബയസിൻ്റെ ശരാശരി ഗ്രേഡിയൻ്റും നൽകും. ഞങ്ങൾ അവയെ പരിഷ്കരിച്ച ബാറ്ററികൾ (RA) എന്ന് വിളിക്കും.

2. തുടർന്ന്, ചുവടെയുള്ള ഫോർമുല ഉപയോഗിച്ച്, എല്ലാ ഭാരങ്ങളും പക്ഷപാതങ്ങളും അപ്ഡേറ്റ് ചെയ്യുക. dJ / dTheta-j എന്നതിനുപകരം നിങ്ങൾ ഭാരത്തിന് OA (അപ്‌ഡേറ്റ് ചെയ്‌ത അക്യുമുലേറ്റർ), പക്ഷപാതത്തിന് OA എന്നിവ മാറ്റിസ്ഥാപിക്കും. ഓഫ്‌സെറ്റിനും ഇതുതന്നെ ചെയ്യുക.

ഇത് ഗ്രേഡിയൻ്റ് ഡിസെൻറിൻ്റെ ഒരു ആവർത്തനം മാത്രമായിരുന്നു.

നിരവധി ആവർത്തനങ്ങൾക്കായി ഈ പ്രക്രിയ തുടക്കം മുതൽ അവസാനം വരെ ആവർത്തിക്കുക. ഇതിനർത്ഥം, GS-ൻ്റെ ആദ്യ ആവർത്തനത്തിനായി, നിങ്ങൾ എല്ലാ പരിശീലന ഉദാഹരണങ്ങളിലൂടെയും ആവർത്തിക്കുകയും ഗ്രേഡിയൻ്റുകൾ കണക്കാക്കുകയും തുടർന്ന് ഭാരവും പക്ഷപാതവും അപ്‌ഡേറ്റ് ചെയ്യുകയും ചെയ്യുന്നു എന്നാണ്. HS-ൻ്റെ നിരവധി ആവർത്തനങ്ങൾക്കായി നിങ്ങൾ ഇത് ചെയ്യുന്നു.

വ്യത്യസ്ത തരം ഗ്രേഡിയൻ്റ് ഇറക്കം

ഗ്രേഡിയൻ്റ് ഡിസെൻ്റിന് 3 ഓപ്ഷനുകൾ ഉണ്ട്:

1. മിനി-ബാച്ച്: ഇവിടെ, എല്ലാ പരിശീലന ഉദാഹരണങ്ങളും ആവർത്തിച്ച് ഓരോ ആവർത്തനത്തിലും ഒരു പരിശീലന ഉദാഹരണത്തിൽ മാത്രം കണക്കുകൂട്ടലുകൾ നടത്തുന്നതിനുപകരം, ഞങ്ങൾ ഒരേസമയം n പരിശീലന ഉദാഹരണങ്ങൾ പ്രോസസ്സ് ചെയ്യുന്നു. വളരെ വലിയ ഡാറ്റാ സെറ്റുകൾക്ക് ഈ തിരഞ്ഞെടുപ്പ് നല്ലതാണ്.

2.സ്ഥായിയായ ഗ്രേഡിയൻ്റ് ഇറക്കം: ഈ സാഹചര്യത്തിൽ, ഓരോ പരിശീലന ഉദാഹരണത്തിലൂടെയും ഉപയോഗിക്കുന്നതിനും ലൂപ്പ് ചെയ്യുന്നതിനുപകരം, ഞങ്ങൾ ഒരിക്കൽ മാത്രം ഉപയോഗിക്കുക. ശ്രദ്ധിക്കേണ്ട ചില കാര്യങ്ങളുണ്ട്:

  • GS-ൻ്റെ ഓരോ ആവർത്തനത്തിലും നിങ്ങൾ പരിശീലന സെറ്റ് ഷഫിൾ ചെയ്ത് തിരഞ്ഞെടുക്കേണ്ടതുണ്ട് ക്രമരഹിതമായ ഉദാഹരണംപരിശീലനം.
  • നിങ്ങൾ ഒരു പരിശീലന ഉദാഹരണം മാത്രം ഉപയോഗിക്കുന്നതിനാൽ, പ്രാദേശിക മിനിമയിലേക്കുള്ള നിങ്ങളുടെ പാത വളരെ ശബ്ദമയമായിരിക്കും, ധാരാളം മദ്യപിച്ച മദ്യപനെപ്പോലെ.

3. ജിഎസ് സീരീസ്: മുൻ ഭാഗങ്ങളിൽ എഴുതിയത് ഇതാണ്. ഓരോ പഠന ഉദാഹരണത്തിലും സൈക്കിൾ ചെയ്യുക.


3 ഹിറ്റുകളെ ലോക്കൽ മിനിമയുമായി താരതമ്യം ചെയ്യുന്ന ചിത്രം

പൈത്തണിലെ ഉദാഹരണ കോഡ്

GS സീരീസിന് ബാധകമാണ്, പൈത്തണിലെ പരിശീലന കോഡിൻ്റെ ഒരു ബ്ലോക്ക് ഇങ്ങനെയായിരിക്കും.

Def train(X, y, W, B, alpha, max_iters): """ എല്ലാ പരിശീലന ഉദാഹരണങ്ങളിലും GD നടപ്പിലാക്കുന്നു, X: പരിശീലന ഡാറ്റ സെറ്റ്, y: പരിശീലന ഡാറ്റയ്ക്കുള്ള ലേബലുകൾ, W: വെയ്റ്റ്സ് വെക്റ്റർ, B: ബയസ് വേരിയബിൾ, ആൽഫ : പഠന നിരക്ക്, max_iters: പരമാവധി GD ആവർത്തനങ്ങൾ. """ dW = 0 # Weights gradient accumulator dB = 0 # Bias gradient accumulator m = X.shape # No. i എന്ന ശ്രേണിയിലെ (max_iters) ഉദാഹരണങ്ങളുടെ പരിശീലനത്തിൻ്റെ ഉദാഹരണങ്ങൾ: dW = 0 # ശ്രേണിയിലെ (m) എന്നതിനുള്ള സഞ്ചിതങ്ങൾ dB = 0 പുനഃസജ്ജമാക്കൽ: # 1. എല്ലാ ഉദാഹരണങ്ങളിലും ആവർത്തിക്കുക, # 2. w_grad-ലെ ഭാരങ്ങളുടെയും പക്ഷപാതങ്ങളുടെയും ഗ്രേഡിയൻ്റുകൾ കണക്കാക്കുക. b_grad, # 3. b_grad, W = W - alpha * (dW / m) എന്നിവ ചേർത്ത് w_grad, dB എന്നിവ ചേർത്ത് dW അപ്ഡേറ്റ് ചെയ്യുക # ഭാരം B = B - alpha * (dB / m) # ബയസ് റിട്ടേൺ W, B അപ്ഡേറ്റ് ചെയ്യുക # അപ്‌ഡേറ്റ് ചെയ്ത ഭാരവും പക്ഷപാതവും തിരികെ നൽകുക.

അത്രയേയുള്ളൂ. ഗ്രേഡിയൻ്റ് ഡിസെൻ്റ് എന്താണെന്ന് നിങ്ങൾക്ക് ഇപ്പോൾ നല്ല ധാരണ ഉണ്ടായിരിക്കണം.

ഈ പ്രഭാഷണത്തിൽ നമ്മൾ ചർച്ച ചെയ്യും വിവിധ വഴികൾനടപ്പിലാക്കൽ, അവയുടെ ഗുണങ്ങളെയും ദോഷങ്ങളെയും കുറിച്ച്. ഗ്രേഡിയൻ്റ് ഡിസെൻറിൻ്റെ മൂന്ന് പ്രധാന തരങ്ങളെക്കുറിച്ച് സംസാരിക്കാൻ ഞാൻ ആഗ്രഹിക്കുന്നു - ഫുൾ, ബാച്ച്, സ്റ്റോക്കാസ്റ്റിക്.

മുമ്പത്തെ മിക്ക കോഴ്‌സുകളിലും ഞങ്ങൾ ഫുൾ ഗ്രേഡിയൻ്റ് ഡിസെൻ്റ് ഉപയോഗിച്ചു.

എന്തുകൊണ്ടാണ് ഇത് അങ്ങനെ?

കാരണം അത് കൊണ്ടുവരുന്നു കൂടുതൽ പ്രയോജനം, മുഴുവൻ പരിശീലന സെറ്റിൻ്റെയും സാധ്യത വർദ്ധിപ്പിക്കാൻ ഞങ്ങൾ ആഗ്രഹിക്കുന്നുവെങ്കിൽ:

ഈ സമീപനത്തിൻ്റെ പോരായ്മ, ഗ്രേഡിയൻ്റ് കണക്കാക്കാൻ വളരെ സമയമെടുക്കും, കാരണം ഇത് ഓരോ ഉദാഹരണത്തെയും ആശ്രയിച്ചിരിക്കുന്നു (നിരീക്ഷണം).

കൃത്യമായ വിപരീതമാണ് സ്റ്റോക്കാസ്റ്റിക് ഗ്രേഡിയൻ്റ് ഡിസെൻ്റ്. ഇത് ഒരു പ്രത്യേക നിരീക്ഷണത്തിനുള്ള പിശകിനെ ആശ്രയിച്ചിരിക്കുന്നു:

എല്ലാ നിരീക്ഷണങ്ങളും സ്വതന്ത്രവും ഏകീകൃതവുമായി വിതരണം ചെയ്യപ്പെടുന്നു എന്ന വസ്തുതയെ അടിസ്ഥാനമാക്കിയുള്ളതാണ് ഈ രീതി, അതിനാൽ ദീർഘകാലാടിസ്ഥാനത്തിൽ പിശക് കുറയും, കാരണം എല്ലാ നിരീക്ഷണങ്ങളും ഒരേ വിതരണത്തിൽ നിന്നാണ് എടുത്തിരിക്കുന്നത്. ഈ സാഹചര്യത്തിൽ, കണക്കുകൂട്ടലുകൾ കുറയുമ്പോൾ എൻ 1-ലേക്കുള്ള നിരീക്ഷണങ്ങൾ, രീതിയിലെ ശ്രദ്ധേയമായ പുരോഗതിയാണ്.

എന്താണ് ദോഷം?

പൂർണ്ണ ഗ്രേഡിയൻ്റ് ഡിസെൻസിനൊപ്പം, ഓരോ ആവർത്തനത്തിലും സാധ്യതാ പ്രവർത്തനത്തിൻ്റെ ലോഗരിതം എല്ലായ്പ്പോഴും മെച്ചപ്പെടുകയാണെങ്കിൽ, സ്റ്റോക്കാസ്റ്റിക് ഡിസെൻസിനൊപ്പം, സാധ്യതാ പ്രവർത്തനത്തിൻ്റെ ലോഗരിതം കൂടുതൽ വഷളായേക്കാം എന്നതാണ് വസ്തുത. വാസ്തവത്തിൽ, ഓരോ ആവർത്തനത്തിലും കോസ്റ്റ് ഫംഗ്‌ഷൻ്റെ സ്വഭാവം ക്രമരഹിതമായി മാറും, പക്ഷേ ദീർഘകാലാടിസ്ഥാനത്തിൽ അത് കുറയും.

ഈ രണ്ട് രീതികൾക്കിടയിലുള്ള ഒരു നല്ല ഒത്തുതീർപ്പ് ബാച്ച് ഗ്രേഡിയൻ്റ് ഡിസെൻ്റ് ആണ്. ഉദാഹരണത്തിന്, നമുക്ക് 10,000 നിരീക്ഷണങ്ങൾ ഉണ്ടെങ്കിൽ, നമുക്ക് അവയെ 100 നിരീക്ഷണങ്ങളുടെ 100 ബാച്ചുകളായി വിഭജിച്ച് ഓരോ ആവർത്തനത്തിലും ഓരോ ബാച്ചിനെ അടിസ്ഥാനമാക്കി ചെലവ് ഫംഗ്ഷൻ കണക്കാക്കാം:

ഈ സാഹചര്യത്തിൽ ചെലവ് പ്രവർത്തനത്തിന് എന്ത് സംഭവിക്കും?

ഇത് വലുതായി മാറുകയും ചെയ്യാം, പക്ഷേ തികച്ചും സ്‌റ്റോക്കാസ്റ്റിക് ഗ്രേഡിയൻ്റ് ഡിസെൻറിൻറെ കാര്യത്തേക്കാൾ കുഴപ്പം കുറവായിരിക്കും.

ആഴത്തിലുള്ളതും മെഷീൻ ലേണിംഗും ഡാറ്റ പ്രോസസ്സിംഗുമായി ബന്ധപ്പെട്ട സൗജന്യ മെറ്റീരിയലുകൾ ലഭിക്കാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നുവെങ്കിൽ, എൻ്റെ വെബ്സൈറ്റ് lazyprogrammer.me സന്ദർശിക്കുക എന്നത് ഈ അവസരത്തിൽ ശ്രദ്ധിക്കാൻ ഞാൻ ആഗ്രഹിക്കുന്നു. ഈ വിഷയങ്ങളിൽ ഞാൻ നിരന്തരം പുതിയ ഉള്ളടക്കം എഴുതുന്നു, അതിനാൽ ഇടയ്ക്കിടെ പരിശോധിക്കുക. സബ്‌സ്‌ക്രൈബുചെയ്യാൻ ഒരു നിർദ്ദേശം ഉണ്ടായിരിക്കണം, അതിനാൽ നിങ്ങൾക്ക് എൻ്റെ വരിക്കാരനാകാം സ്വതന്ത്ര ആമുഖംഡാറ്റ പ്രോസസ്സിംഗിൽ. പര്യവേക്ഷണം ചെയ്യാൻ ഇതിന് ധാരാളം മികച്ച വിഭവങ്ങൾ ഉണ്ട്. പൈത്തൺ ഭാഷ, അൽഗോരിതങ്ങളും ഡാറ്റാ ഘടനകളും, കോഴ്‌സുകൾക്കുള്ള കൂപ്പണുകളും.

കോഡിൽ പൂർണ്ണമായ, ബാച്ച്, സ്‌റ്റോക്കാസ്റ്റിക് ഗ്രേഡിയൻ്റ് ഇറക്കം

ഇപ്പോൾ ഗ്രേഡിയൻ്റ് ഡിസെൻറ് മൂന്ന് കേസുകളിൽ കോസ്റ്റ് ഫംഗ്ഷനിലെ മാറ്റം താരതമ്യം ചെയ്യാം - ഫുൾ, ബാച്ച്, സ്റ്റോക്കാസ്റ്റിക്. ഈ ഉദാഹരണത്തിൽ മറ്റ് ഫയലുകളിൽ നിന്ന് കോപ്പി ചെയ്ത ധാരാളം കോഡുകൾ ഉള്ളതിനാൽ, ഞങ്ങൾ പ്രോഗ്രാമിൻ്റെ വാചകം ഓരോന്നായി പരിശോധിക്കും.

അതിനാൽ ഫയലിൻ്റെ തുടക്കത്തിൽ ഞങ്ങൾ എല്ലാ സാധാരണ ലൈബ്രറികളും ഇറക്കുമതി ചെയ്യുന്നു. ഫയലിൽ നിന്ന് util.py ഞങ്ങൾ ഫംഗ്ഷൻ ഇറക്കുമതി ചെയ്യുന്നു ഡാറ്റ_രൂപാന്തരപ്പെടുകപ്രധാന ഘടക വിശകലനം, അതുപോലെ ഫംഗ്‌ഷനുകൾ എന്നിവ ഉപയോഗിച്ച് ഡാറ്റ രൂപാന്തരപ്പെടുത്തുന്നതിന് മുന്നോട്ട്, പിശക്_തീയതി, ചെലവ്, gradW, gradbഒപ്പം y2 സൂചകം.

nmpy np ആയി ഇറക്കുമതി ചെയ്യുക

pd ആയി പാണ്ടകളെ ഇറക്കുമതി ചെയ്യുക

matplotlib.pyplot plt ആയി ഇറക്കുമതി ചെയ്യുക

sklearn.utils ഇറക്കുമതി ഷഫിളിൽ നിന്ന്

തീയതി മുതൽ ഇറക്കുമതി തീയതി സമയം

ഇറക്കുമതി ചെയ്യുന്നതിൽ നിന്ന് get_transformed_data, ഫോർവേഡ്, എറർ_റേറ്റ്, ചെലവ്, gradW, gradb, y2indicator

പൂർണ്ണമായും എന്നതിനുപകരം, പ്രക്രിയ വേഗത്തിലാക്കാൻ ന്യൂറൽ നെറ്റ്വർക്ക്ഞങ്ങൾ ഉപയോഗിക്കുന്നു .

അതിനാൽ ആദ്യം നമ്മൾ ഫംഗ്ഷൻ ഉപയോഗിക്കുന്നു ഡാറ്റ_രൂപാന്തരപ്പെടുക, ആദ്യത്തെ 300 കോളങ്ങൾ മാത്രം എടുക്കുന്നു. അടുത്തതായി, ശരാശരി കുറയ്ക്കുകയും സ്റ്റാൻഡേർഡ് ഡീവിയേഷൻ കൊണ്ട് ഹരിക്കുകയും ചെയ്തുകൊണ്ട് ഞങ്ങൾ X നോർമലൈസ് ചെയ്യുന്നു. പിന്നെ, ചടങ്ങ് മുതൽ ഡാറ്റ_രൂപാന്തരപ്പെടുകഞങ്ങളുടെ ഡാറ്റ ഇതിനകം മിക്സ് ചെയ്തിട്ടുണ്ട്, ഞങ്ങൾ അവസാനത്തെ 1,000 ഉദാഹരണങ്ങൾ ഒരു ടെസ്റ്റിംഗ് സെറ്റായി ഉപേക്ഷിക്കുന്നു, ബാക്കിയുള്ളവ ഒരു പരിശീലന സെറ്റായി ഉപയോഗിക്കുന്നു.

defപ്രധാന():

X, Y, _, _ = get_transformed_data()

X = X[:, :300]

# ആദ്യം X നോർമലൈസ് ചെയ്യുക

മു = എക്സ്.മീൻ( അച്ചുതണ്ട്=0)

std = X.std( അച്ചുതണ്ട്=0)

X = (X – mu) / std

"ലോജിസ്റ്റിക് റിഗ്രഷൻ നടത്തുന്നു..." എന്ന് പ്രിൻ്റ് ചെയ്യുക.

എക്സ്ട്രെയിൻ = X[:-1000,]

Ytrain = Y[:-1000]

Xtest = X[-1000:,]

N, D = Xtrain.shape

Ytrain_ind = y2indicator(Ytrain)

Ytest_ind = y2indicator(Ytest)

തുടർന്ന് ഞങ്ങൾ വെയ്റ്റിംഗ് ഗുണകങ്ങളും ഡമ്മി നിബന്ധനകളും ആരംഭിക്കുന്നു. ട്രിഗർ ചെയ്‌ത വെയ്റ്റിംഗ് ഗുണകങ്ങൾ താരതമ്യേന ചെറുതാണ് - ആനുപാതികമായി സജ്ജീകരിച്ചിരിക്കുന്നു എന്നത് ശ്രദ്ധിക്കുക സ്ക്വയർ റൂട്ട്അളവിൽ നിന്ന്. ഈ വീഡിയോ റെക്കോർഡുചെയ്യുന്നതിന് മുമ്പുതന്നെ, ഞാൻ പഠന ഗുണകവും ക്രമപ്പെടുത്തൽ പിഴയും യഥാക്രമം 0.0001, 0.01 എന്നിങ്ങനെ സജ്ജീകരിച്ചു. ഞങ്ങൾ ആവർത്തനങ്ങളുടെ എണ്ണം 200 ആയി സജ്ജീകരിക്കും, അതിനാൽ കണക്കുകൂട്ടലുകൾക്ക് കൂടുതൽ സമയമെടുക്കില്ല.

#1.പൂർണ്ണം

b = np.zeros(10)

LL=

lr = 0.0001

reg = 0.01

t0 = datetime.now()

ഞാൻ ഉള്ളതിന് xrange(200):

p_y = ഫോർവേഡ് (എക്‌സ്‌ട്രെയിൻ, ഡബ്ല്യു, ബി)

അടുത്തതായി, ഗ്രേഡിയൻ്റ് ഡിസെൻ്റ് ഉപയോഗിച്ച് ഞങ്ങൾ മൂല്യങ്ങളും സൗജന്യ നിബന്ധനകളും അപ്ഡേറ്റ് ചെയ്യുന്നു. ഞങ്ങൾ ഫംഗ്ഷനും ഉപയോഗിക്കുന്നു മുന്നോട്ട്പരിശീലന സെറ്റിലൂടെ കടന്നുപോകുമ്പോൾ ചെലവ് പ്രവർത്തനത്തിൻ്റെ മൂല്യം കണക്കാക്കാൻ. ഓരോ പത്ത് ആവർത്തനങ്ങളിലും ഞങ്ങൾ പിശക് നിരക്ക് മൂല്യം പ്രദർശിപ്പിക്കും. കൂടാതെ, കണക്കുകൂട്ടലുകൾക്കായി ചെലവഴിച്ച സമയം ഞങ്ങൾ പ്രദർശിപ്പിക്കും, കാരണം ഒരു രീതി വളരെ വേഗതയുള്ളതും മറ്റൊന്ന് വളരെ മന്ദഗതിയിലുള്ളതുമാണ്.

W += lr*(gradW(Ytrain_ind, p_y, Xtrain) – reg*W)

b += lr*(gradb(Ytrain_ind, p_y) – reg*b)

LL.അനുബന്ധം(ll)

ഞാൻ % 10 == 0 ആണെങ്കിൽ:

"പിശക് നിരക്ക്:" പ്രിൻ്റ് ചെയ്യുക, പിശക്

p_y = ഫോർവേഡ് (Xtest, W, b)

"പൂർണ്ണ ജിഡിക്ക് വേണ്ടി കഴിഞ്ഞ സമയം:", datetime.now() – t0 എന്ന് പ്രിൻ്റ് ചെയ്യുക

സ്‌റ്റോക്കാസ്റ്റിക് ഗ്രേഡിയൻ്റ് ഡിസെൻറിൻ്റെ കാര്യത്തിൽ, ഞങ്ങൾ ഒരേ കാര്യം ചെയ്യുന്നു, ഡാറ്റയിലൂടെ ഒരു തവണ മാത്രമേ കടന്നുപോകൂ എന്നതൊഴിച്ചാൽ, സ്‌റ്റോക്കാസ്റ്റിക് ഗ്രേഡിയൻ്റ് ഡിസെൻ്റ് ഉപയോഗിച്ച് ഞങ്ങൾ ഒരു ഉദാഹരണം മാത്രം നോക്കുകയും ഓരോ പാസിലും വെയ്റ്റുകളും ഇൻ്റർസെപ്‌റ്റുകളും വെവ്വേറെ അപ്‌ഡേറ്റ് ചെയ്യുകയും തുടർന്ന് ഡാറ്റ പുനഃക്രമീകരിക്കുകയും ചെയ്യുന്നു. . നിങ്ങൾ എല്ലാ ഉദാഹരണങ്ങളിലൂടെയും കടന്നുപോയാൽ, പ്രോഗ്രാം വളരെ സാവധാനത്തിൽ പ്രവർത്തിക്കും, അതിനാൽ ഞങ്ങൾ സ്വയം 500 ഉദാഹരണങ്ങൾ മാത്രമായി പരിമിതപ്പെടുത്തും.

തുടർന്ന്, പതിവുപോലെ, ഞങ്ങൾ ഗ്രേഡിയൻ്റ് കണക്കാക്കുകയും റെഗുലറൈസേഷൻ ഉപയോഗിച്ച് വെയ്‌റ്റുകൾ അപ്‌ഡേറ്റ് ചെയ്യുകയും പിശക് നിരക്ക് കണക്കാക്കുകയും ചെയ്യുന്നു, അല്ലാതെ ഓരോ N/2 കടന്നുപോകുമ്പോഴും ഗുണകത്തിൻ്റെ മൂല്യം ഞങ്ങൾ പ്രിൻ്റ് ചെയ്യുന്നു, അല്ലാത്തപക്ഷം കണക്കുകൂട്ടലുകൾ വളരെ നീണ്ടതായിരിക്കും. അല്ലെങ്കിൽ, എല്ലാം ഒന്നുതന്നെ.

#2. സ്റ്റോക്കാസ്റ്റിക്

W = np.random.randn(D, 10) / 28

b = np.zeros(10)

LL_stochastic =

lr = 0.0001

reg = 0.01

t0 = datetime.now()

ഞാൻ ഉള്ളതിന് xrange(1): 41k സാമ്പിളുകൾക്കുള്ള ചെലവ് ഞങ്ങൾ കണക്കാക്കുന്നതിനാൽ # വളരെ സമയമെടുക്കും

n എന്നതിന് xrange(മിനിറ്റ്(N, 500)): # കുറുക്കുവഴി ആയതിനാൽ ഇതിന് അധികം സമയമെടുക്കില്ല...

x = tmpX.reshape(1,D)

y = tmpY.reshape(1,10)

p_y = ഫോർവേഡ്(x, ​​W, b)

p_y_test = ഫോർവേഡ് (Xtest, W, b)

ll = ചെലവ്(p_y_test, Ytest_ind)

LL_stochastic.append(ll)

എങ്കിൽ n % (N/2) == 0:

തെറ്റ് = error_rate(p_y_test, Ytest)

പ്രിൻ്റ് ചെയ്യുക “ആവർത്തന %d: %.6f” % (i, ll)

"പിശക് നിരക്ക്:" പ്രിൻ്റ് ചെയ്യുക, പിശക്

p_y = ഫോർവേഡ് (Xtest, W, b)

"ഫൈനൽ" എന്ന് അച്ചടിക്കുക പിശക് നിരക്ക്:”, error_rate(p_y, Ytest)

“SGD-യ്‌ക്കുള്ള കഴിഞ്ഞ സമയം:”, datetime.now() – t0 എന്ന് അച്ചടിക്കുക

ബാച്ച് ഗ്രേഡിയൻ്റ് ഡിസെൻ്റ് ഉപയോഗിച്ച്, വീണ്ടും, മിക്കവാറും എല്ലാം സമാനമാണ്. ഓരോ പാക്കേജിലും 500 ഉദാഹരണങ്ങൾ അടങ്ങിയിട്ടുണ്ടെന്ന് സ്ഥാപിക്കാം, അതിനാൽ പാക്കേജുകളുടെ ആകെ എണ്ണം N- ന് തുല്യമായിരിക്കും.

#3.ബാച്ച്

W = np.random.randn(D, 10) / 28

b = np.zeros(10)

LL_batch =

lr = 0.0001

reg = 0.01

batch_sz = 500

n_ബാച്ചുകൾ = N/batch_sz

t0 = datetime.now()

ഞാൻ ഉള്ളതിന് xrange(50):

tmpX, tmpY = ഷഫിൾ (Xtrain, Ytrain_ind)

ജെ ഇൻ വേണ്ടി xrange(n_ബാച്ചുകൾ):

x = tmpX

y = tmpY

p_y = ഫോർവേഡ്(x, ​​W, b)

W += lr*(gradW(y, p_y, x) – reg*W)

b += lr*(gradb(y, p_y) – reg*b)

p_y_test = ഫോർവേഡ് (Xtest, W, b)

ll = ചെലവ്(p_y_test, Ytest_ind)

LL_batch.append(ll)

j % (n_batch/2) ​​== 0:

തെറ്റ് = error_rate(p_y_test, Ytest)

പ്രിൻ്റ് ചെയ്യുക “ആവർത്തന %d: %.6f” % (i, ll)

"പിശക് നിരക്ക്:" പ്രിൻ്റ് ചെയ്യുക, പിശക്

p_y = ഫോർവേഡ് (Xtest, W, b)

പ്രിൻ്റ് “അവസാന പിശക് നിരക്ക്:”, error_rate(p_y, Ytest)

പ്രിൻ്റ് "ബാച്ച് GD:", datetime.now() – t0

അവസാനം ഞങ്ങളുടെ എല്ലാ ഡാറ്റയും സ്ക്രീനിൽ പ്രദർശിപ്പിക്കും.

x1 = np.linspace(0, 1, len(LL))

plt.plot(x1, LL, ലേബൽ="പൂർണ്ണ")

x2 = np.linspace(0, 1, len(LL_stochastic))

plt.plot(x2, LL_stochastic, ലേബൽ="സ്‌റ്റോക്കാസ്റ്റിക്")

x3 = np.linspace(0, 1, len(LL_batch))

plt.plot(x3, LL_batch, ലേബൽ="ബാച്ച്")

plt.legend()

plt.show()

__പേര്__ == '__പ്രധാന__' ആണെങ്കിൽ:

അതിനാൽ, നമുക്ക് പ്രോഗ്രാം പ്രവർത്തിപ്പിക്കാം.

സ്‌റ്റോക്കാസ്റ്റിക് ഗ്രേഡിയൻ്റ് ഡിസെൻറിൻ്റെ കാര്യത്തിൽ പിശക് മെച്ചപ്പെടാത്തതായി നമുക്ക് കാണാൻ കഴിയും. ഇതിനർത്ഥം, സ്റ്റോക്കാസ്റ്റിക് ഗ്രേഡിയൻ്റ് ഡിസെൻറ് ഉപയോഗിച്ച് മെച്ചപ്പെടുത്തൽ നേടുന്നതിന് കൂടുതൽ ആവർത്തനങ്ങൾ ആവശ്യമാണ് എന്നാണ്. ഫുൾ ഗ്രേഡിയൻ്റ് ഇറക്കം, നമുക്ക് കാണാനാകുന്നതുപോലെ, ബാച്ച് ഇറക്കത്തേക്കാൾ വേഗത്തിൽ ഒത്തുചേരുന്നു, പക്ഷേ ഇത് സാവധാനത്തിൽ പ്രവർത്തിക്കുന്നു.

വലിയ തോതിലുള്ള കോസ്റ്റ് ഫംഗ്‌ഷൻ്റെ പരിണാമം നോക്കുകയാണെങ്കിൽ, ബാച്ച് ഗ്രേഡിയൻ്റ് ഇറക്കത്തിൻ്റെ കാര്യത്തിൽ, കോസ്റ്റ് ഫംഗ്‌ഷൻ സുഗമമായി മാറുന്ന ഫുൾ ഗ്രേഡിയൻ്റ് ഇറക്കത്തിൽ നിന്ന് വ്യത്യസ്തമായി, ഇത് വളരെ സുഗമമല്ലെന്ന് നമുക്ക് കാണാൻ കഴിയും, കാരണം ഈ സാഹചര്യത്തിൽ കോസ്റ്റ് ഫംഗ്‌ഷൻ എപ്പോഴും കുറയുന്നു. സ്റ്റോക്കാസ്റ്റിക് ഗ്രേഡിയൻ്റ് ഇറക്കത്തിൻ്റെ കാര്യത്തിൽ, കോസ്റ്റ് ഫംഗ്ഷനിലെ മാറ്റവും സുഗമമല്ല:


പോസ്റ്റ് കാഴ്‌ചകൾ: 588

വിജ്ഞാന അടിത്തറയിൽ നിങ്ങളുടെ നല്ല സൃഷ്ടികൾ അയയ്ക്കുക ലളിതമാണ്. ചുവടെയുള്ള ഫോം ഉപയോഗിക്കുക

വിദ്യാർത്ഥികൾ, ബിരുദ വിദ്യാർത്ഥികൾ, അവരുടെ പഠനത്തിലും ജോലിയിലും വിജ്ഞാന അടിത്തറ ഉപയോഗിക്കുന്ന യുവ ശാസ്ത്രജ്ഞർ നിങ്ങളോട് വളരെ നന്ദിയുള്ളവരായിരിക്കും.

പോസ്റ്റ് ചെയ്തത് http://www.allbest.ru/

റഷ്യൻ ഫെഡറേഷൻ്റെ വിദ്യാഭ്യാസ, ശാസ്ത്ര മന്ത്രാലയം

ഫെഡറൽ സ്റ്റേറ്റ് സ്വയംഭരണ വിദ്യാഭ്യാസ സ്ഥാപനം

ഉന്നത വിദ്യാഭ്യാസം

"കസാൻ (വോൾഗ) ഫെഡറൽ യൂണിവേഴ്‌സിറ്റി"

ഹൈസ്കൂൾ ഓഫ് ഇൻഫർമേഷൻ ടെക്നോളജി ആൻഡ് ഇൻഫർമേഷൻ സിസ്റ്റങ്ങൾ

കോഴ്‌സ് വർക്ക്

സ്ഥായിയായ ഗ്രേഡിയൻ്റ് ഇറക്കം. നടപ്പിലാക്കൽ ഓപ്ഷനുകൾ

ആമുഖം

ഗ്രേഡിയൻ്റ് ഡിസെൻ്റ് എന്നത് ഒരു ഗ്രേഡിയൻ്റിലൂടെ നീങ്ങിക്കൊണ്ട് ഒരു ഫംഗ്ഷൻ്റെ ഒരു ലോക്കൽ എക്‌സ്‌ട്രീം (മിനിമം അല്ലെങ്കിൽ പരമാവധി) കണ്ടെത്തുന്നതിനുള്ള ഒരു രീതിയാണ്.

എല്ലാ പ്രാദേശിക ഒപ്റ്റിമൈസേഷൻ രീതികളിലും, ഇത് നടപ്പിലാക്കാൻ എളുപ്പമാണ്. ഇതിന് താരതമ്യേന ദുർബലമായ കൺവെർജൻസ് അവസ്ഥകളുണ്ട്, പക്ഷേ ഒത്തുചേരൽ നിരക്ക് വളരെ കുറവാണ്.

സപ്പോർട്ട് വെക്റ്റർ മെഷീനുകൾ, ലോജിസ്റ്റിക് റിഗ്രഷൻ, ഗ്രാഫിക്കൽ മോഡലുകൾ എന്നിവയുൾപ്പെടെയുള്ള മെഷീൻ ലേണിംഗ് മോഡലുകളുടെ വിശാലമായ ശ്രേണികൾക്കായുള്ള ഒരു ജനപ്രിയ അൽഗോരിതം ആണ് ഗ്രേഡിയൻ്റ് ഡിസെൻ്റ്. ബാക്ക്‌പ്രൊപഗേഷൻ അൽഗോരിതം സംയോജിപ്പിച്ച്, കൃത്രിമ ന്യൂറൽ നെറ്റ്‌വർക്കുകൾ പരിശീലിപ്പിക്കുന്നതിനുള്ള ഒരു സാധാരണ അൽഗോരിതം ആണ് ഇത്. സ്റ്റോക്കാസ്റ്റിക് ഗ്രേഡിയൻ്റ് ഡിസെൻ്റ് L-BFGS അൽഗോരിതവുമായി മത്സരിക്കുന്നു, അത് വ്യാപകമായി ഉപയോഗിക്കപ്പെടുന്നു. അനുസരിച്ച്, സ്റ്റോക്കാസ്റ്റിക് ഗ്രേഡിയൻ്റ് ഡിസെൻ്റ് ഉപയോഗിച്ചു ഇത്രയെങ്കിലും, 1960-ൽ ലീനിയർ റിഗ്രഷൻ മോഡലുകൾ പരിശീലിപ്പിക്കാൻ, തുടക്കത്തിൽ അഡലിൻ എന്ന പേരിൽ.

ഇതിൻ്റെ ഉദ്ദേശം കോഴ്സ് ജോലിസ്റ്റോക്കാസ്റ്റിക് ഗ്രേഡിയൻ്റ് ഡിസെൻറ്, അവയുടെ തുടർന്നുള്ള താരതമ്യം, ഗുണങ്ങളുടെയും ദോഷങ്ങളുടെയും വ്യക്തത എന്നിവയ്ക്കായി നിരവധി ഓപ്ഷനുകൾ നടപ്പിലാക്കുന്നത് പരിഗണിക്കുക എന്നതാണ്.

1. സ്റ്റോക്കാസ്റ്റിക് ഗ്രേഡിയൻ്റ് ഡിസെൻ്റ്

സ്റ്റോക്കാസ്റ്റിക് ഗ്രേഡിയൻ്റ് ഡിസെൻ്റ് ഒരു ഒപ്റ്റിമൈസേഷൻ അൽഗോരിതം ആണ്, ഇത് പലപ്പോഴും ഒരു മെഷീൻ ലേണിംഗ് മോഡലിൻ്റെ പാരാമീറ്ററുകൾ ട്യൂൺ ചെയ്യാൻ ഉപയോഗിക്കുന്നു.

സ്റ്റാൻഡേർഡ് ഗ്രേഡിയൻ്റ് ഡിസെൻ്റ് മോഡൽ പാരാമീറ്ററുകൾ മാറ്റാൻ ഒരു ഗ്രേഡിയൻ്റ് ഉപയോഗിക്കുന്നു. ഓരോ പരിശീലന ഘടകവും മൂലമുണ്ടാകുന്ന ഗ്രേഡിയൻ്റുകളുടെ ആകെത്തുകയാണ് ഗ്രേഡിയൻ്റ് സാധാരണയായി കണക്കാക്കുന്നത്. തന്നിരിക്കുന്ന ഘട്ടം അനുസരിച്ച് പാരാമീറ്റർ വെക്റ്റർ ആൻ്റിഗ്രേഡിയൻ്റിൻ്റെ ദിശയിൽ മാറുന്നു. അതിനാൽ, സ്റ്റാൻഡേർഡ് ഗ്രേഡിയൻ്റ് ഡിസെൻ്റിന് പാരാമീറ്ററുകൾ മാറ്റുന്നതിന് മുമ്പ് പരിശീലന ഡാറ്റയിലൂടെ ഒരു പാസ് ആവശ്യമാണ്.

സ്‌റ്റോക്കാസ്റ്റിക് ഗ്രേഡിയൻ്റ് ഡിസെൻറ്റിൽ, ഒരു പരിശീലന ഘടകത്തിൽ മാത്രം കണക്കാക്കിയ കോസ്റ്റ് ഫംഗ്‌ഷൻ്റെ ഗ്രേഡിയൻ്റാണ് ഗ്രേഡിയൻ്റിൻ്റെ മൂല്യം കണക്കാക്കുന്നത്. അതിനുശേഷം ഏകദേശ ഗ്രേഡിയൻ്റിന് ആനുപാതികമായി പരാമീറ്ററുകൾ മാറ്റുന്നു. അങ്ങനെ, ഓരോ പഠന വസ്തുവിനും ശേഷം മോഡൽ പാരാമീറ്ററുകൾ മാറ്റുന്നു. വലിയ ഡാറ്റാ സെറ്റുകൾക്ക്, സ്റ്റാൻഡേർഡ് ഗ്രേഡിയൻ്റ് ഡിസെൻ്റിനെ അപേക്ഷിച്ച് സ്റ്റോക്കാസ്റ്റിക് ഗ്രേഡിയൻ്റ് ഡിസെൻ്റിന് കാര്യമായ വേഗത നേട്ടം നൽകാൻ കഴിയും.

ഈ രണ്ട് തരം ഗ്രേഡിയൻ്റ് ഡീസൻ്റുകൾക്കിടയിൽ ഒരു വിട്ടുവീഴ്ചയുണ്ട്, ചിലപ്പോൾ "മിനി-ബാച്ച്" എന്ന് വിളിക്കപ്പെടുന്നു. ഈ സാഹചര്യത്തിൽ, ചെറിയ പരിശീലന സാമ്പിളുകളുടെ ആകെത്തുക കൊണ്ട് ഗ്രേഡിയൻ്റ് കണക്കാക്കുന്നു.

1.1 മുൻവ്യവസ്ഥകൾ

സ്റ്റാറ്റിസ്റ്റിക്കൽ എസ്റ്റിമേറ്റുകളും മെഷീൻ ലേണിംഗും ഒരു ഫംഗ്ഷൻ ചെറുതാക്കുന്നതിൻ്റെ പ്രശ്നം പരിഗണിക്കുന്നു, അതിന് ഫോം ഉണ്ട്:

ഇവിടെ ചെറുതാക്കുന്ന പരാമീറ്റർ കണക്കാക്കണം. ഓരോ പദവും സാധാരണയായി ഡാറ്റാ സെറ്റിലെ i-th നിരീക്ഷണവുമായി ബന്ധപ്പെട്ടിരിക്കുന്നു (പരിശീലനത്തിനായി ഉപയോഗിക്കുന്നു).

ക്ലാസിക്കൽ സ്ഥിതിവിവരക്കണക്കുകളിൽ, തുകകൾ കുറയ്ക്കുന്നതിനുള്ള പ്രശ്നം ഏറ്റവും കുറഞ്ഞ സ്ക്വയർ രീതിയിലും പരമാവധി സാധ്യതാ രീതിയിലും (സ്വതന്ത്ര നിരീക്ഷണങ്ങൾക്ക്) ഉയർന്നുവരുന്നു. തുകകൾ ചെറുതാക്കുന്നതിലൂടെ ഉണ്ടാകുന്ന എസ്റ്റിമേറ്റർമാരുടെ പൊതുവിഭാഗത്തെ എം-എസ്റ്റിമേറ്റർ എന്ന് വിളിക്കുന്നു. എന്നിരുന്നാലും, സ്ഥിതിവിവരക്കണക്കുകളിൽ, ചില പരമാവധി സാധ്യത കണക്കാക്കൽ പ്രശ്നങ്ങൾക്ക് പ്രാദേശിക മിനിമൈസേഷൻ്റെ ആവശ്യകത പോലും വളരെ നിയന്ത്രിതമാണെന്ന് വളരെക്കാലമായി തിരിച്ചറിഞ്ഞിട്ടുണ്ട്. അതിനാൽ, ആധുനിക സ്റ്റാറ്റിസ്റ്റിക്കൽ സൈദ്ധാന്തികർ പലപ്പോഴും സാധ്യതാ പ്രവർത്തനത്തെക്കുറിച്ചുള്ള നിശ്ചല പോയിൻ്റുകൾ പരിഗണിക്കുന്നു (ഡെറിവേറ്റീവിൻ്റെ പൂജ്യങ്ങൾ, എസ്റ്റിമേറ്റിംഗ് ഫംഗ്ഷൻ, മറ്റ് എസ്റ്റിമേറ്റിംഗ് സമവാക്യങ്ങൾ).

അനുഭവപരമായ അപകടസാധ്യത കുറയ്ക്കുന്നതിലും തുകകൾ കുറയ്ക്കുന്നതിനുള്ള പ്രശ്നം ഉയർന്നുവരുന്നു. ഈ സാഹചര്യത്തിൽ, ഇത് ഐ-സെറ്റിനുള്ള നഷ്ട പ്രവർത്തനത്തിൻ്റെ മൂല്യവും അനുഭവപരമായ അപകടസാധ്യതയുമാണ്.

ഒരു ഫംഗ്‌ഷൻ ചെറുതാക്കുമ്പോൾ, സ്റ്റാൻഡേർഡ് (അല്ലെങ്കിൽ "ബാച്ച്") ഗ്രേഡിയൻ്റ് ഡിസെൻ്റ് ഇനിപ്പറയുന്ന ആവർത്തനങ്ങൾ നടത്തും:

സ്റ്റെപ്പ് സൈസ് എവിടെയാണ് (ചിലപ്പോൾ മെഷീൻ ലേണിംഗിലെ ലേണിംഗ് റേറ്റ് എന്ന് വിളിക്കുന്നു).

മിക്ക കേസുകളിലും, സം ഫംഗ്ഷൻ്റെയും ഗ്രേഡിയൻ്റുകളുടെ ആകെത്തുകയുടെയും ലളിതമായ കണക്കുകൂട്ടലുകൾ ഉൾപ്പെടുന്ന ഒരു ലളിതമായ മാതൃകയാണ് സമ്മണ്ട് ഫംഗ്ഷനുള്ളത്. ഉദാഹരണത്തിന്, സ്ഥിതിവിവരക്കണക്കുകളിൽ, ഒരു പരാമീറ്ററുള്ള എക്‌സ്‌പോണൻഷ്യൽ ഫാമിലികൾ ഫംഗ്‌ഷനുകളുടെയും ഗ്രേഡിയൻ്റുകളുടെയും സാമ്പത്തിക കണക്കുകൂട്ടലുകൾ അനുവദിക്കുന്നു.

എന്നിരുന്നാലും, മറ്റ് സന്ദർഭങ്ങളിൽ, മൊത്തം ഗ്രേഡിയൻ്റ് എസ്റ്റിമേറ്റുകൾക്ക് എല്ലാ ടേം ഫംഗ്ഷനുകളിൽ നിന്നും ഗ്രേഡിയൻ്റുകളുടെ വിലയേറിയ എസ്റ്റിമേറ്റ് ആവശ്യമായി വന്നേക്കാം. പരിശീലന സെറ്റ് വളരെ വലുതും നിലവിലില്ലാത്തതും ആയിരിക്കുമ്പോൾ ലളിതമായ സൂത്രവാക്യങ്ങൾ,ഗ്രേഡിയൻ്റുകളുടെ ആകെത്തുക കണക്കാക്കുന്നത് വളരെ ചെലവേറിയതായിത്തീരുന്നു, കാരണം ഗ്രേഡിയൻ്റ് കണക്കാക്കുന്നതിന് ഫംഗ്‌ഷനുകളുടെ എല്ലാ ഗ്രേഡിയൻ്റുകളും ഒരു സംഗ്രഹം ഉപയോഗിച്ച് വിലയിരുത്തേണ്ടതുണ്ട്. ഓരോ ആവർത്തനത്തിലും കമ്പ്യൂട്ടേഷണൽ ചെലവ് ലാഭിക്കുന്നതിന്, സ്‌റ്റോക്കാസ്റ്റിക് ഗ്രേഡിയൻ്റ് ഡിസെൻറിൽ സാമ്പിൾ ഓരോ ഘട്ടത്തിലും നിബന്ധനകളുടെ പ്രവർത്തനങ്ങളുടെ ഒരു ഉപവിഭാഗമാണ്. വലിയ തോതിലുള്ള മെഷീൻ ലേണിംഗ് പ്രശ്നങ്ങളുടെ കാര്യത്തിൽ ഇത് വളരെ ഫലപ്രദമാണ്.

1.2 ആവർത്തന രീതി

സ്റ്റോക്കാസ്റ്റിക് ഗ്രേഡിയൻ്റ് ഡിസെൻറ്റിൽ, ഈ ഉദാഹരണത്തിലെ ഗ്രേഡിയൻ്റ് ഉപയോഗിച്ച് യഥാർത്ഥ ഗ്രേഡിയൻ്റ് കണക്കാക്കുന്നു:

പരിശീലന സെറ്റിലൂടെ അൽഗോരിതം കുതിക്കുമ്പോൾ, ഓരോ പരിശീലന ഉദാഹരണത്തിനും മുകളിലുള്ള അപ്‌ഡേറ്റുകൾ അത് നടപ്പിലാക്കുന്നു. അൽഗോരിതം ഒത്തുചേരുന്നത് വരെ പരിശീലന സെറ്റിൽ നിരവധി പാസുകൾ നടത്താം. ലൂപ്പുകൾ തടയാൻ ഓരോ പാസിനും ഡാറ്റ ഷഫിൾ ചെയ്യാം. സാധാരണ നിർവ്വഹണങ്ങൾ ഒരു അഡാപ്റ്റീവ് ലേണിംഗ് നിരക്ക് ഉപയോഗിച്ചേക്കാം, അങ്ങനെ അൽഗോരിതം ഒത്തുചേരുന്നു.

സ്യൂഡോകോഡിൽ, സ്റ്റോക്കാസ്റ്റിക് ഗ്രേഡിയൻ്റ് ഡിസെൻ്റ് ഇനിപ്പറയുന്ന രീതിയിൽ പ്രതിനിധീകരിക്കാം:

1) പ്രാരംഭ പാരാമീറ്റർ വെക്‌ടറും പഠന നിരക്കും തിരഞ്ഞെടുക്കുക.

2) ഏറ്റവും കുറഞ്ഞത് ലഭിക്കുന്നത് വരെ ആവർത്തിക്കുക:

2.1) പരിശീലന സെറ്റിലെ ഉദാഹരണങ്ങൾ ക്രമരഹിതമായി ഷഫിൾ ചെയ്യുക.

2.2) i = 1,2,...,n, ചെയ്യുക:

കോൺവെക്‌സ് മിനിമൈസേഷൻ്റെയും സ്‌റ്റോക്കാസ്റ്റിക് ഏകദേശത്തിൻ്റെയും സിദ്ധാന്തം ഉപയോഗിച്ച് സ്‌റ്റോക്കാസ്റ്റിക് ഗ്രേഡിയൻ്റ് ഡിസെൻറിൻ്റെ സംയോജനം വിശകലനം ചെയ്തു. പഠന നിരക്ക് ഉചിതമായ നിരക്കിൽ ക്ഷയിക്കുമ്പോൾ, താരതമ്യേന ദുർബലമായ അനുമാനങ്ങൾക്ക് കീഴിൽ, ഫംഗ്ഷൻ കോൺവെക്സ് അല്ലെങ്കിൽ സ്യൂഡോകോൺവെക്സ് ആയിരിക്കുമ്പോൾ, സ്റ്റോക്കാസ്റ്റിക് ഗ്രേഡിയൻ്റ് ഡിസെൻ്റ് ആഗോള മിനിമം ആയി മാറുന്നു, അല്ലെങ്കിൽ പ്രാദേശിക മിനിമം ആയി ഒത്തുചേരുന്നു.

1.3 നടപ്പിലാക്കൽ ഓപ്ഷനുകൾ

അടിസ്ഥാന സ്‌റ്റോക്കാസ്റ്റിക് ഗ്രേഡിയൻ്റ് ഡിസെൻ്റ് രീതിയെക്കാൾ നിരവധി മെച്ചപ്പെടുത്തലുകൾ നിർദ്ദേശിക്കപ്പെടുകയും ഉപയോഗിക്കുകയും ചെയ്തിട്ടുണ്ട്. പ്രത്യേകിച്ച് മെഷീൻ ലേണിംഗിൽ, ലേണിംഗ് റേറ്റ് (സ്റ്റെപ്പ് സൈസ്) സജ്ജീകരിക്കേണ്ടതിൻ്റെ ആവശ്യകത പ്രശ്നമാണെന്ന് കണ്ടെത്തി.

നിങ്ങൾ ഈ പരാമീറ്റർ വളരെ വലുതായി സജ്ജീകരിക്കുകയാണെങ്കിൽ, അത് അൽഗോരിതം വ്യതിചലിച്ചേക്കാം. ഇത് നേരെ മറിച്ചാണെങ്കിൽ, അൽഗരിതം സാവധാനം ഒത്തുചേരും.

സ്‌റ്റോക്കാസ്റ്റിക് ഗ്രേഡിയൻ്റ് ഡിസെൻറിൻ്റെ ആശയപരമായി ലളിതമായ ഒരു വിപുലീകരണം, ആവർത്തനങ്ങളുടെ എണ്ണം അനുസരിച്ച് പഠന നിരക്ക് കുറയുന്ന പ്രവർത്തനമാക്കുന്നു m.

ഈ ഓപ്പറേഷൻ ചെയ്തുകഴിഞ്ഞാൽ, ആദ്യ ആവർത്തനങ്ങൾ പരാമീറ്ററുകളിൽ വലിയ മാറ്റങ്ങൾക്ക് കാരണമാകുമെന്ന് വ്യക്തമാണ്, അതേസമയം പിന്നീടുള്ളവ മികച്ച ട്യൂണിംഗ് നടത്തുന്നു.

ഈ സൃഷ്ടിയുടെ ചട്ടക്കൂടിനുള്ളിൽ, സ്റ്റോക്കാസ്റ്റിക് ഗ്രേഡിയൻ്റ് ഡിസെൻ്റ് നടപ്പിലാക്കുന്നതിനുള്ള ഇനിപ്പറയുന്ന ഓപ്ഷനുകൾ പരിഗണിക്കും:

1. 4 ആക്കം

മൊമെൻ്റം മെത്തേഡ് എന്നും അറിയപ്പെടുന്ന മൊമെൻ്റം, അമേരിക്കൻ മനശാസ്ത്രജ്ഞനായ ഡേവിഡ് റാംൽഹാർട്ടിൽ നിന്നും, ജെഫ്രി ഹിൻ്റണിൻ്റെയും റൊണാൾഡ് ജെ വില്യം എന്നിവരുടെയും ബാക്ക്പ്രൊപ്പഗേഷൻ രീതിയെക്കുറിച്ചുള്ള പഠനത്തിൽ നിന്നാണ് ഉത്ഭവിച്ചത്. മൊമെൻ്റം ഉള്ള സ്‌റ്റോക്കാസ്റ്റിക് ഗ്രേഡിയൻ്റ് ഡിസെൻ്റ് ഓരോ ആവർത്തനത്തിലും അപ്‌ഡേറ്റുകൾ ഓർമ്മിക്കുകയും ഗ്രേഡിയൻ്റിൻ്റെയും മുമ്പത്തെ അപ്‌ഡേറ്റിൻ്റെയും ലീനിയർ കോമ്പിനേഷനായി അടുത്ത അപ്‌ഡേറ്റ് നിർണ്ണയിക്കുകയും ചെയ്യുന്നു:

ഇത് നയിക്കുന്നു:

ഇവിടെ ചെറുതാക്കുന്ന പാരാമീറ്ററും സ്റ്റെപ്പ് വലുപ്പവും കണക്കാക്കണം (ചിലപ്പോൾ മെഷീൻ ലേണിംഗിലെ ലേണിംഗ് റേറ്റ് എന്ന് വിളിക്കുന്നു).

ഭൗതികശാസ്ത്രത്തിലെ പ്രേരണയുമായി സാമ്യമുള്ളതിൽ നിന്നാണ് ഇംപൾസ് എന്ന പേര് വന്നത്: ഒരു ഭാരം വെക്റ്റർ. പാരാമീറ്റർ സ്‌പെയ്‌സിലൂടെ ഒരു മെറ്റീരിയൽ പോയിൻ്റിൻ്റെ ചലനം ബലം മൂലം ത്വരിതപ്പെടുത്തുന്നു, ഇത് ലോസ് ഗ്രേഡിയൻ്റ് ആണ്.

ക്ലാസിക് സ്റ്റോക്കാസ്റ്റിക് ഗ്രേഡിയൻ്റ് ഡിസെൻ്റ് രീതി പോലെയല്ല, ഇത് ചലനത്തെ ഒരു ദിശയിൽ നിർത്തുന്നു, ആന്ദോളനങ്ങൾ തടയുന്നു. നിരവധി പതിറ്റാണ്ടുകളായി മൊമെൻ്റം വിജയകരമായി ഉപയോഗിച്ചു.

1.5 അഡാഗ്രാഡ്

അഡാഗ്രാഡ് പരിഷ്‌ക്കരിച്ച സ്‌റ്റോക്കാസ്റ്റിക് ഗ്രേഡിയൻ്റ് ഡിസെൻ്റ് ആണ് പ്രാഥമിക പരാമീറ്റർപഠന വേഗത. 2011-ൽ ആദ്യമായി പ്രസിദ്ധീകരിച്ചത്. അനൗപചാരികമായി, ഇത് കൂടുതൽ വിരളമായ പാരാമീറ്ററുകൾക്കുള്ള പഠന നിരക്ക് വർദ്ധിപ്പിക്കുകയും വിരളമായവയ്ക്ക് പഠന നിരക്ക് കുറയ്ക്കുകയും ചെയ്യുന്നു. താരതമ്യം ചെയ്യുമ്പോൾ ഈ തന്ത്രം പലപ്പോഴും ഒത്തുചേരാനുള്ള സാധ്യത വർദ്ധിപ്പിക്കുന്നു സ്റ്റാൻഡേർഡ് അൽഗോരിതംഡാറ്റ വിരളവും അപൂർവമായ പാരാമീറ്ററുകൾ കൂടുതൽ വിവരദായകവുമായ സ്ഥലങ്ങളിൽ സ്‌റ്റോക്കാസ്റ്റിക് ഗ്രേഡിയൻ്റ് ഡിസെൻ്റ്.

അത്തരം ആപ്ലിക്കേഷനുകളുടെ ഉദാഹരണങ്ങളിൽ സ്വാഭാവിക ഭാഷാ പ്രോസസ്സിംഗും പാറ്റേൺ തിരിച്ചറിയലും ഉൾപ്പെടുന്നു.

ഇതിന് ഇപ്പോഴും ഒരു പഠന നിരക്ക് അടിസ്ഥാനമുണ്ട്, പക്ഷേ മാട്രിക്സിൻ്റെ ടെൻസർ ഉൽപ്പന്നത്തിൻ്റെ ഡയഗണലായ വെക്‌ടറിൻ്റെ മൂലകങ്ങളാൽ ഗുണിക്കപ്പെടുന്നു.

ആവർത്തന m-ൽ ഗ്രേഡിയൻ്റ് എവിടെയാണ്.

ഡയഗണൽ ഇപ്രകാരം വ്യക്തമാക്കിയിരിക്കുന്നു:

ഓരോ ആവർത്തനത്തിനു ശേഷവും വെക്റ്റർ അപ്ഡേറ്റ് ചെയ്യുന്നു. അപ്ഡേറ്റ് ഫോർമുല ഇപ്പോൾ ഇതുപോലെ കാണപ്പെടുന്നു:

അല്ലെങ്കിൽ ഒരു പ്രാഥമിക പാരാമീറ്റർ അപ്ഡേറ്റായി എഴുതിയിരിക്കുന്നു,

ഓരോന്നും ഒരൊറ്റ പാരാമീറ്ററിൽ പ്രയോഗിക്കുന്ന പഠന നിരക്ക് ഘടകത്തിൻ്റെ സ്കേലബിളിറ്റി വർദ്ധിപ്പിക്കുന്നു.

ഡിനോമിനേറ്റർ മുമ്പത്തെ ഡെറിവേറ്റീവുകളുടെ യൂക്ലിഡിയൻ മാനദണ്ഡമായതിനാൽ, അപ്‌ഡേറ്റ് പാരാമീറ്ററുകളുടെ നാമമാത്ര മൂല്യങ്ങൾ പരിമിതപ്പെടുത്തിയിരിക്കുന്നു, അതേസമയം ചെറിയ അപ്‌ഡേറ്റുകൾ ഉള്ള പാരാമീറ്ററുകൾക്ക് ഉയർന്ന തലത്തിലുള്ള പഠനം ലഭിക്കും.

കോൺവെക്‌സ് ഒപ്റ്റിമൈസേഷൻ പ്രശ്‌നങ്ങളിൽ ജോലി നടക്കുമ്പോൾ, കോൺവെക്‌സ് അല്ലാത്ത ഒപ്റ്റിമൈസേഷൻ പ്രശ്‌നങ്ങളിൽ അഡാഗ്രാഡ് വിജയകരമായി പ്രയോഗിച്ചു.

1.6 RMSProp

ഓരോ പാരാമീറ്ററുകൾക്കും പഠന നിരക്ക് പൊരുത്തപ്പെടുത്തുന്ന ഒരു രീതി കൂടിയാണ് RMSProp. ഒരു പ്രത്യേക ഭാരത്തിനായുള്ള പഠന നിരക്ക് ആ ഭാരത്തിനായുള്ള ഏറ്റവും പുതിയ ഗ്രേഡിയൻ്റുകളുടെ ചലിക്കുന്ന ശരാശരി കൊണ്ട് ഹരിക്കുക എന്നതാണ് ആശയം. അങ്ങനെ, ആദ്യത്തെ ചലിക്കുന്ന ശരാശരി ഒരു ചതുരമായി കണക്കാക്കുന്നു:

എക്‌സ്‌പോണൻഷ്യൽ വെയ്റ്റിംഗ് പാരാമീറ്റർ അല്ലെങ്കിൽ "മറക്കുന്ന ഘടകം" പരാമീറ്റർ എവിടെയാണ്

ചുവടെയുള്ള ഫോർമുല ഉപയോഗിച്ച് പാരാമീറ്ററുകൾ അപ്ഡേറ്റ് ചെയ്യുന്നു:

RMSProp വ്യത്യസ്ത ആപ്ലിക്കേഷനുകളിലുടനീളം പഠന നിരക്കുകളുടെ മികച്ച പൊരുത്തപ്പെടുത്തൽ കാണിച്ചു. RMSProp എന്നത് Rprop-ൻ്റെ ഒരു സാമാന്യവൽക്കരണമായി കണക്കാക്കാം, സാധാരണ ഗ്രേഡിയൻ്റ് ഡിസെൻ്റിന് വിരുദ്ധമായ മിനി-ബാച്ച് പോലെയുള്ള ഗ്രേഡിയൻ്റ് ഡീസൻ്റിൻ്റെ ഒരു വകഭേദവുമായി പ്രവർത്തിക്കാനും ഇതിന് കഴിയും.

2. സ്റ്റോക്കാസ്റ്റിക് ഗ്രേഡിയൻ്റ് ഡിസെൻ്റ് നടപ്പിലാക്കൽ

ഓൺ ഈ ഘട്ടത്തിൽസ്റ്റോക്കാസ്റ്റിക് ഗ്രേഡിയൻ്റിൻ്റെ നിരവധി വകഭേദങ്ങൾ നടപ്പിലാക്കുന്നത് രൂപത്തിൽ നടപ്പിലാക്കും പ്രോഗ്രാം കോഡ്പൈത്തൺ പ്രോഗ്രാമിംഗ് ഭാഷയിൽ.

2.1 സ്റ്റാൻഡേർഡ് സ്റ്റോക്കാസ്റ്റിക് ഗ്രേഡിയൻ്റ് ഡിസെൻ്റ് നടപ്പിലാക്കൽ

ആദ്യം, നിങ്ങൾക്ക് ഒരു ഡാറ്റ സെറ്റ് ആവശ്യമാണ്. ഈ സാഹചര്യത്തിൽ, Scikit-Learn ലൈബ്രറി ഉപയോഗിച്ച് ഒരു ഡാറ്റാസെറ്റ് സൃഷ്ടിക്കപ്പെടുന്നു:

ഗ്രേഡിയൻ്റ് സ്റ്റോക്കാസ്റ്റിക് ലേണിംഗ് അൽഗോരിതം

sklearn.datasets-ൽ നിന്ന് make_moons ഇറക്കുമതി ചെയ്യുക

sklearn.cross_validation ഇറക്കുമതി train_test_split എന്നതിൽ നിന്ന്

X, y = make_moons(n_samples=5000, random_state=42, noise=0.1)

X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42)

ഞങ്ങൾക്ക് ലഭിച്ചത് ഇതാ:

ചിത്രം 1 - ഗ്രാഫിക്കൽ പ്രാതിനിധ്യംഡാറ്റ സെറ്റ്

അടുത്തതായി, ന്യൂറൽ നെറ്റ്വർക്ക് മോഡൽ നിർണ്ണയിക്കപ്പെടുന്നു. ഇത് നെറ്റ്‌വർക്കിൻ്റെ മൂന്ന് പാളികളായിരിക്കും (ഒരു മറഞ്ഞിരിക്കുന്ന പാളി):

nmpy np ആയി ഇറക്കുമതി ചെയ്യുക

def make_network(n_hidden=100):

മോഡൽ = dict(W1=np.random.randn(n_feature, n_hidden),

W2=np.random.randn(n_hidden, n_class)

ഇത് രണ്ട് പ്രവർത്തനങ്ങളെയും നിർവചിക്കുന്നു: ഫോർവേഡ് പ്രൊപ്പഗേഷൻ, ബാക്ക്പ്രൊപഗേഷൻ. ആദ്യം നമുക്ക് ആദ്യ ഓപ്ഷൻ ചെയ്യാം:

np.exp(x) / np.exp(x).sum() തിരികെ നൽകുക

ഡെഫ് ഫോർവേഡ്(x, ​​മോഡൽ):

h = x @model["W1"]

prob = softmax(h @ മോഡൽ["W2"])

സർക്യൂട്ട് ഇൻപുട്ടിൽ നിന്ന് മറഞ്ഞിരിക്കുന്ന ലെയറിലേക്കും തുടർന്ന് ഔട്ട്പുട്ട് ലെയറിലേക്കും പോയിൻ്റുകളുടെ ഒരു ശ്രേണി ഉണ്ടാക്കണം. മറഞ്ഞിരിക്കുന്ന പാളിയിൽ, രേഖീയമല്ലാത്തതും പ്രയോഗിക്കാൻ കഴിയും, അതുവഴി ന്യൂറൽ നെറ്റ്‌വർക്കിന് ഒരു രേഖീയമല്ലാത്ത തീരുമാന അതിർത്തി പ്രവചിക്കാൻ കഴിയും. ഇന്നത്തെ ഒരു നോൺ-ലീനിയർ ഫംഗ്‌ഷൻ്റെ ഒരു പ്രമുഖ പ്രതിനിധി ReLU ആണ്.

ReLU എന്നത് f(x)=max(0,x) എന്നാണ് നിർവചിച്ചിരിക്കുന്നത്, എന്നാൽ np.max(0, x) ചെയ്യുന്നതിനുപകരം ഒരു വൃത്തിയുള്ള നടപ്പിലാക്കൽ ട്രിക്ക് ഉണ്ട്: x = 0.

ഔട്ട്‌പുട്ട് ലെയറിൽ എത്തിക്കഴിഞ്ഞാൽ, ഔട്ട്‌പുട്ട് ബെർണൂലി പ്രോബബിലിറ്റി ഡിസ്‌ട്രിബ്യൂഷൻ കൃത്യമായിരിക്കണം, അതിനാൽ തന്നിരിക്കുന്ന വിതരണം ലഭിക്കുന്നതിന് SoftMax ഫംഗ്‌ഷൻ ഉപയോഗിച്ച് ഔട്ട്‌പുട്ട് ഡീകംപ്രസ് ചെയ്യുന്നു.

ഇപ്പോൾ രണ്ടാമത്തെ പ്രവർത്തനം നിർവചിച്ചിരിക്കുന്നു. Backpropagation ഇതുപോലെ കാണപ്പെടുന്നു:

def backward(മോഡൽ, xs, hs, പിശകുകൾ):

dW2 = hs.T @ പിശകുകൾ

dh = പിശകുകൾ @ മോഡൽ["W2"].T

dh = 0

റിട്ടേൺ ഡിക്ട് (W1=dW1, W2=dW2)

അൽഗോരിതത്തിൻ്റെ അടിസ്ഥാനം സൃഷ്ടിക്കപ്പെടുന്നു. sgd ഫംഗ്‌ഷൻ നടപ്പിലാക്കുന്നു. ഇത് ഇതുപോലെ കാണപ്പെടുന്നു:

def sgd(model, X_train, y_train, batch_size):

ശ്രേണിയിലുള്ള ഇറ്ററിന് (n_iter):

പ്രിൻ്റ് ("ആവർത്തനം ()". ഫോർമാറ്റ്(ഇറ്റർ))

X_train, y_train = ഷഫിൾ (X_ട്രെയിൻ, y_ട്രെയിൻ)

ഞാൻ ശ്രേണിയിൽ (0, X_train.shape, batch_size):

X_train_mini = X_train

y_train_mini = y_train

മോഡൽ = sgd_step(മോഡൽ, X_train_mini, y_train_mini)

മടക്ക മാതൃക

sgd_step ഫംഗ്‌ഷൻ നടപ്പിലാക്കുന്നു. ഇത് ഇതുപോലെ കാണപ്പെടുന്നു:

def sgd_step(മോഡൽ, X_ട്രെയിൻ, y_ട്രെയിൻ):

ഗ്രേഡ് = get_batch_grad(മോഡൽ, X_ട്രെയിൻ, y_ട്രെയിൻ)

മോഡൽ = model.copy()

ഗ്രേഡിലെ ലെയറിനായി:

മോഡൽ += learning_rate * ഗ്രേഡ്

get_batch_grad ഫംഗ്‌ഷൻ നടപ്പിലാക്കുന്നു. ഇത് ഇതുപോലെ കാണപ്പെടുന്നു:

def get_batch_grad(മോഡൽ, X_ട്രെയിൻ, y_ട്രെയിൻ):

xs, hs, പിശകുകൾ = , ,

x-ന്, zip-ലെ cls_idx (X_train, y_train):

h, y_pred = ഫോർവേഡ്(x, ​​മോഡൽ)

y_true = np.zeros(n_class)

y_true = 1.

തെറ്റ് = y_true - y_pred

errs.append(err)

പിന്നിലേക്ക് മടങ്ങുക(മോഡൽ, np.array(xs), np.array(hs), np.array(errs))

ഈ ഫംഗ്‌ഷനിൽ, ബാച്ചിലെ ഓരോ ഡാറ്റാ പോയിൻ്റും ആവർത്തിച്ച് നെറ്റ്‌വർക്കിലേക്ക് അയയ്‌ക്കുകയും പരിശീലന ഡാറ്റയിലൂടെ ലഭിച്ച യഥാർത്ഥ ലേബലിൻ്റെ ഫലം താരതമ്യം ചെയ്യുകയും ചെയ്യുന്നു. യഥാർത്ഥ ലേബലിൻ്റെ പ്രോബബിലിറ്റിയും നമ്മുടെ പ്രവചനത്തിൻ്റെ സാധ്യതയും തമ്മിലുള്ള വ്യത്യാസമാണ് പിശക് നിർണ്ണയിക്കുന്നത്.

2.2 മൊമെൻ്റം നടപ്പിലാക്കൽ

ചലനത്തിൻ്റെ ഭൗതിക നിയമത്തിൻ്റെ തത്വത്തിൽ മൊമെൻ്റം പ്രവർത്തിക്കുന്നു, ഇത് പ്രാദേശിക ഒപ്റ്റിമയിലൂടെ (ചെറിയ കുന്നുകൾ) കടന്നുപോകുന്നു. ആക്കം കൂട്ടുന്നത് അൽഗോരിതം വേഗത്തിൽ ഒത്തുചേരാൻ ഇടയാക്കും, കാരണം വേഗത കുമിഞ്ഞുകൂടുകയും രീതി സ്റ്റെപ്പ് ഒരു പരമ്പരാഗത രീതിയിലുള്ള സ്ഥിരമായ ഘട്ടത്തേക്കാൾ വലുതാകുകയും ചെയ്യും.

പ്രോഗ്രാം ടെംപ്ലേറ്റ് ഇതിനകം തയ്യാറാണെന്ന് കണക്കിലെടുക്കുമ്പോൾ, നിങ്ങൾ ഈ രീതിയുടെ പ്രധാന പ്രവർത്തനം മാത്രം നടപ്പിലാക്കേണ്ടതുണ്ട്. മൊമെൻ്റം ഫംഗ്ഷൻ ചുവടെ നൽകിയിരിക്കുന്നു:

def momentum(model, X_train, y_train, batch_size):

വേഗത = (k: np.zeros_like(v) for k, v in model.items())

ഗാമ =.9

X_mini, y_mini = ബാച്ചുകൾ

ഗ്രേഡിലെ ലെയറിനായി:

വേഗത = ഗാമ * വേഗത + ആൽഫ * ഗ്രേഡ്

മോഡൽ += വേഗത

ഓരോ പാരാമീറ്ററിനും ആക്കം കൂട്ടുന്ന ഒരു പുതിയ വേഗത വേരിയബിൾ പ്രവർത്തനക്ഷമമാക്കി. ഗ്രേഡിയൻ്റ് ഇറക്കത്തിൻ്റെ ഓരോ പുതിയ ഘട്ടത്തിലും ആൽഫ*ഗ്രേഡ് ടേം ഉപയോഗിച്ച് വേരിയബിൾ അപ്‌ഡേറ്റ് ചെയ്യും. ഗാമാ കോഫിഫിഷ്യൻ്റ് ഉപയോഗിച്ച് മുൻ ഘട്ടത്തിൽ കണക്കാക്കിയ വേഗത വേരിയബിളിൻ്റെ മൂല്യത്തിലും നേരിയ കുറവുണ്ട്.

2.3 അഡാഗ്രാഡിൻ്റെ നടപ്പാക്കൽ

ഇതുവരെ, ആൽഫ പഠനനിരക്ക് നിരസിക്കപ്പെട്ടു, കാരണം അത് സ്ഥിരമായിരുന്നു. പഠന നിരക്ക് എല്ലാ പാരാമീറ്ററുകളെയും ബാധിക്കുന്നു എന്നതും സ്ഥിരമായ പഠന നിരക്കിൽ അൽഗോരിതം എല്ലായ്പ്പോഴും കാര്യക്ഷമമായി പ്രവർത്തിക്കുന്നില്ല എന്നതും പ്രശ്നം ഉയർന്നുവരുന്നു. AdaGrad ഈ പ്രശ്നത്തിന് ഒരു പരിഹാരമാകും.

AdaGrad ഉപയോഗിക്കുമ്പോൾ, പാരാമീറ്റർ അപ്‌ഡേറ്റ് പോയിൻ്റ് വൈസായി സംഭവിക്കുന്നു, അതിനാൽ പഠന നിരക്ക് ഒരു അഡാപ്റ്റീവ് പാരാമീറ്ററാണ്.

ഈ രീതിയുടെ നടപ്പാക്കൽ പുരോഗമിക്കുകയാണ്. മുഴുവൻ പ്രോഗ്രാമും തയ്യാറാണ്, നിങ്ങൾ പ്രധാന പ്രവർത്തനം മാറ്റേണ്ടതുണ്ട്. അതിനെ അഡാഗ്രാഡ് എന്ന് വിളിക്കും. പ്രവർത്തനം താഴെ കാണിച്ചിരിക്കുന്നു:

def adagrad(മോഡൽ, X_ട്രെയിൻ, y_ട്രെയിൻ, ബാച്ച്_സൈസ്):

ബാച്ചുകൾ = get_batch(X_train, y_train, batch_size)

ശ്രേണിയിലുള്ള iter-ന് (1, n_iter + 1):

idx = np.random.randint(0, len(ബാച്ചുകൾ))

X_mini, y_mini = ബാച്ചുകൾ

ഗ്രേഡ് = get_batch_grad(മോഡൽ, X_mini, y_mini)

കാഷെ[കെ] += ഗ്രേഡ്[കെ]**2

മടക്ക മാതൃക

പഠന നിരക്ക് സാധാരണ നിലയിലാകുന്നത് കാണാം. ഏറ്റവും പുതിയ ഗ്രേഡിയൻ്റുകൾ എങ്ങനെ പ്രവർത്തിക്കുന്നു എന്നതിനെ ആശ്രയിച്ച് അത് ഇപ്പോൾ വലുതോ ചെറുതോ ആകാം.

2.4 RMSProp നടപ്പിലാക്കൽ

അഡാഗ്രാഡിൻ്റെ ക്യുമുലേറ്റീവ് ഭാഗത്ത്, തുകയുടെയും ചതുരത്തിൻ്റെയും അനന്തരഫലമായി കാഷെ[k] += grad[k]**2 ഏകതാനമായി വർദ്ധിക്കുന്നത് നിങ്ങൾക്ക് ശ്രദ്ധിക്കാം. പഠന നിരക്ക് വളരെ ചെറിയ പഠന നിരക്കിലേക്ക് ഏകതാനമായി കുറയുമെന്നതിനാൽ ഇത് പ്രശ്നമുണ്ടാക്കാം.

ഈ പ്രശ്‌നത്തെ ചെറുക്കുന്നതിന്, RMSProp കഴിഞ്ഞ സഞ്ചിത ഗ്രേഡിയൻ്റ് മൂല്യത്തെ വിഘടിപ്പിക്കുന്നു, അതിനാൽ ഏറ്റവും പുതിയ ഗ്രേഡിയൻ്റുകളുടെ ഒരു ഭാഗം മാത്രമേ പരിഗണിക്കൂ. ഇപ്പോൾ, ഏറ്റവും പുതിയ എല്ലാ ഗ്രേഡിയൻ്റുകളും പരിഗണിക്കുന്നതിനുപകരം, RMSProp ഒരു ചലിക്കുന്ന ശരാശരി പോലെയാണ് പ്രവർത്തിക്കുന്നത്.

ഈ രീതിയുടെ നടപ്പാക്കൽ പുരോഗമിക്കുകയാണ്. മുഴുവൻ പ്രോഗ്രാമും തയ്യാറാണ്, നിങ്ങൾ പ്രധാന പ്രവർത്തനം മാറ്റേണ്ടതുണ്ട്. അതിനെ rmsprop എന്ന് വിളിക്കും. പ്രവർത്തനം താഴെ കാണിച്ചിരിക്കുന്നു:

def rmsprop(model, X_train, y_train, batch_size):

കാഷെ = (k: np.zeros_like(v) for k, v in model.items())

ഗാമ =.9

ബാച്ചുകൾ = get_batch(X_train, y_train, batch_size)

ശ്രേണിയിലുള്ള iter-ന് (1, n_iter + 1):

idx = np.random.randint(0, len(ബാച്ചുകൾ))

X_mini, y_mini = ബാച്ചുകൾ

ഗ്രേഡ് = get_batch_grad(മോഡൽ, X_mini, y_mini)

കാഷെ[കെ] = ഗാമ * കാഷെ[കെ] + (1 - ഗാമ) * (ഗ്രേഡ്[കെ]**2)

മോഡൽ[k] += ആൽഫ * ഗ്രേഡ്[k] / (np.sqrt(കാഷെ[k]) + eps)

പ്രധാന വ്യത്യാസം കാഷെ[k] മൂല്യം കണക്കാക്കുന്നതിലാണ്, ഇപ്പോൾ സഞ്ചിത ഗ്രേഡിയൻ്റ് മൂല്യം ഏകതാനമായി വർദ്ധിക്കുകയില്ല.

3. ടെസ്റ്റിംഗും താരതമ്യവും

ഈ അധ്യായം നടപ്പിലാക്കൽ പരിശോധിക്കുകയും ലഭിച്ച ഫലങ്ങൾ വിശകലനം ചെയ്യുകയും ചെയ്യും.

3.1 സ്റ്റാൻഡേർഡ് സ്റ്റോക്കാസ്റ്റിക് ഗ്രേഡിയൻ്റ് ഡിസെൻ്റ് പരിശോധിക്കുന്നു

ഈ ഘട്ടത്തിൽ, സ്റ്റാൻഡേർഡ് സ്റ്റോക്കാസ്റ്റിക് ഗ്രേഡിയൻ്റ് ഡിസെൻ്റ് പരീക്ഷിക്കും. നടപടിക്രമം 100 തവണ നടത്തപ്പെടും, തുടർന്ന് ശരാശരി കൃത്യത കണക്കാക്കും.

n_experiment = 100

accs = np.zeros(n_experiment)

പരിധിയിലുള്ള k എന്നതിനായി (n_experiment):

മോഡൽ = make_network()

മോഡൽ = sgd(മോഡൽ, X_ട്രെയിൻ, y_ട്രെയിൻ, മിനിബാച്ച്_സൈസ്)

അന്വേഷണം = മുന്നോട്ട് (x, മോഡൽ)

y = np.argmax(പ്രോബ്)

പൂർത്തിയാക്കി ഈ കോഡ്, എനിക്ക് ഇനിപ്പറയുന്ന മൂല്യങ്ങൾ ലഭിച്ചു:

ശരാശരി കൃത്യത: 0.8765040000000001

അതിനാൽ, ശരാശരി എക്സിക്യൂഷൻ കൃത്യത 87% ആണെന്ന് നമുക്ക് നിഗമനം ചെയ്യാം.

3.2 ടെസ്റ്റിംഗ് മൊമെൻ്റം

ഈ ഘട്ടത്തിൽ, മൊമെൻ്റം ഇംപ്ലിമെൻ്റേഷൻ അടിസ്ഥാനമാക്കി സ്റ്റോക്കാസ്റ്റിക് ഗ്രേഡിയൻ്റ് ഡിസെൻ്റ് പരീക്ഷിക്കും. നടപടിക്രമം 100 തവണ നടത്തപ്പെടും, തുടർന്ന് ശരാശരി കൃത്യത കണക്കാക്കും.

ടെസ്റ്റിംഗ് പ്രോഗ്രാം ചുവടെ നൽകിയിരിക്കുന്നു:

n_experiment = 100

accs = np.zeros(n_experiment)

പരിധിയിലുള്ള k എന്നതിനായി (n_experiment):

മോഡൽ = make_network()

മോഡൽ = ആക്കം(മോഡൽ, X_ട്രെയിൻ, y_ട്രെയിൻ, മിനിബാച്ച്_സൈസ്)

y_pred = np.zeros_like(y_test)

i, x in enumerate(X_test):

അന്വേഷണം = മുന്നോട്ട് (x, മോഡൽ)

y = np.argmax(പ്രോബ്)

accs[k] = (y_pred == y_test).sum() / y_test.size

പ്രിൻ്റ്("ശരാശരി കൃത്യത: (), ലഭിച്ച മൂല്യം: ()". ഫോർമാറ്റ്(accs.mean(), accs.std()))

ശരാശരി കൃത്യത:

1) 0.3152, ആൽഫ = 0.5

2) 0.8554666666666666, ആൽഫ = 1e-2

3) 0.8613333333333334, ആൽഫ = 1e-5

അതിനാൽ, പഠന നിരക്കിൻ്റെ താഴ്ന്ന മൂല്യങ്ങളിൽ, നിർവ്വഹണ കൃത്യത ശ്രദ്ധേയമായി ഉയർന്നതാണെന്ന് നമുക്ക് നിഗമനം ചെയ്യാം.

3.3 പരിശോധനഅഡാഗ്രാഡ്

ഈ ഘട്ടത്തിൽ, അഡാഗ്രാഡ് നടപ്പാക്കലിൻ്റെ അടിസ്ഥാനത്തിൽ ഞങ്ങൾ സ്‌റ്റോക്കാസ്റ്റിക് ഗ്രേഡിയൻ്റ് ഡിസെൻ്റ് പരീക്ഷിക്കും. നടപടിക്രമം 100 തവണ നടത്തപ്പെടും, തുടർന്ന് ശരാശരി കൃത്യത കണക്കാക്കും.

ടെസ്റ്റിംഗ് പ്രോഗ്രാം ചുവടെ നൽകിയിരിക്കുന്നു:

n_experiment = 100

accs = np.zeros(n_experiment)

പരിധിയിലുള്ള k എന്നതിനായി (n_experiment):

മോഡൽ = make_network()

മോഡൽ = അഡാഗ്രാഡ് (മോഡൽ, X_ട്രെയിൻ, y_ട്രെയിൻ, മിനിബാച്ച്_സൈസ്)

y_pred = np.zeros_like(y_test)

i, x in enumerate(X_test):

അന്വേഷണം = മുന്നോട്ട് (x, മോഡൽ)

y = np.argmax(പ്രോബ്)

accs[k] = (y_pred == y_test).sum() / y_test.size

പ്രിൻ്റ്("ശരാശരി കൃത്യത: (), ലഭിച്ച മൂല്യം: ()". ഫോർമാറ്റ്(accs.mean(), accs.std()))

ഈ കോഡ് എക്സിക്യൂട്ട് ചെയ്യുന്നതിലൂടെ, ഇനിപ്പറയുന്ന മൂല്യങ്ങൾ ലഭിക്കും:

ശരാശരി കൃത്യത:

1) 0.8754666666666667, ആൽഫ = 0.5

2) 0.8786666666666667, ആൽഫ = 1e-2

3) 0.504, ആൽഫ = 1e-5

അതിനാൽ, പഠന നിരക്കിൻ്റെ വളരെ കുറഞ്ഞ മൂല്യങ്ങളിൽ, നിർവ്വഹണത്തിൻ്റെ കൃത്യത വളരെ കുറയുന്നുവെന്ന് നമുക്ക് നിഗമനം ചെയ്യാം.

3.4 RMSProp പരിശോധിക്കുന്നു

ഈ ഘട്ടത്തിൽ, RMSProp നടപ്പിലാക്കുന്നതിനെ അടിസ്ഥാനമാക്കി സ്റ്റോക്കാസ്റ്റിക് ഗ്രേഡിയൻ്റ് ഡിസെൻ്റ് പരീക്ഷിക്കും. നടപടിക്രമം 100 തവണ നടത്തപ്പെടും, തുടർന്ന് ശരാശരി കൃത്യത കണക്കാക്കും.

ടെസ്റ്റിംഗ് പ്രോഗ്രാം ചുവടെ നൽകിയിരിക്കുന്നു:

n_experiment = 100

accs = np.zeros(n_experiment)

പരിധിയിലുള്ള k എന്നതിനായി (n_experiment):

മോഡൽ = make_network()

മോഡൽ = rmsprop(model, X_train, y_train, minibatch_size)

y_pred = np.zeros_like(y_test)

i, x in enumerate(X_test):

അന്വേഷണം = മുന്നോട്ട് (x, മോഡൽ)

y = np.argmax(പ്രോബ്)

accs[k] = (y_pred == y_test).sum() / y_test.size

പ്രിൻ്റ്("ശരാശരി കൃത്യത: (), ലഭിച്ച മൂല്യം: ()". ഫോർമാറ്റ്(accs.mean(), accs.std()))

ഈ കോഡ് എക്സിക്യൂട്ട് ചെയ്യുന്നതിലൂടെ, ഇനിപ്പറയുന്ന മൂല്യങ്ങൾ ലഭിക്കും:

ശരാശരി കൃത്യത:

1) 0.8506666666666667, ആൽഫ = 0.5

2) 0.8727999999999999, ആൽഫ = 1e-2

3) 0.30693333333333334, ആൽഫ = 1e-5

അതിനാൽ, പഠന നിരക്കിൻ്റെ വളരെ കുറഞ്ഞ മൂല്യങ്ങളിൽ, അഡാഗ്രാഡിന് സമാനമായി അതിൻ്റെ നിർവ്വഹണത്തിൻ്റെ കൃത്യത വളരെ കുറയുന്നുവെന്ന് നമുക്ക് നിഗമനം ചെയ്യാം.

ഉപസംഹാരം

നിന്ന് താരതമ്യ വിശകലനംഒരു വലിയ പഠന നിരക്ക് ഉപയോഗിക്കുമ്പോൾ, അഡാപ്റ്റീവ് ലേണിംഗ് റേറ്റ് ഉള്ള രീതികൾ രീതികളെ മറികടക്കുമെന്ന് വ്യക്തമാണ് സ്ഥിരമായ വേഗതപരിശീലനം.

എന്നിരുന്നാലും, 1e-5 പോലെയുള്ള ഒരു ചെറിയ പഠന നിരക്ക് മൂല്യം ഉപയോഗിക്കുമ്പോൾ വിപരീതമാണ് സംഭവിക്കുന്നത്. വേണ്ടി സ്റ്റാൻഡേർഡ് പതിപ്പ്സ്റ്റോക്കാസ്റ്റിക് ഗ്രേഡിയൻ്റ് ഡിസെൻസും മൊമെൻ്റം രീതിയും, മതിയായ ചെറിയ മൂല്യങ്ങൾ നന്നായി പ്രവർത്തിക്കാൻ അവരെ അനുവദിക്കുന്നു. മറുവശത്ത്, പഠന നിരക്ക് വളരെ ചെറുതാണെങ്കിൽ അത് സാധാരണ നിലയിലാണെങ്കിൽ അഡാപ്റ്റീവ് രീതികൾപഠന നിരക്ക്, ഇത് കൂടുതൽ ചെറുതായിത്തീരുന്നു, ഇത് ഒത്തുചേരലിൻ്റെ വേഗതയെ ബാധിക്കുന്നു. ഇത് പരിശീലനത്തെ വളരെ മന്ദഗതിയിലാക്കുന്നു, കൂടാതെ ഈ രീതികൾ ഒരേ എണ്ണം ആവർത്തനങ്ങളുള്ള സ്റ്റാൻഡേർഡ് സ്‌റ്റോക്കാസ്റ്റിക് ഗ്രേഡിയൻ്റ് ഡിസെൻ്റിനേക്കാൾ മോശമായി പ്രവർത്തിക്കുന്നു.

ഉപയോഗിച്ച ഉറവിടങ്ങളുടെ പട്ടിക

1. മെഷീൻ ലേണിംഗ് - സ്റ്റോക്കാസ്റ്റിക് ഗ്രേഡിയൻ്റ് ഡിസൻ്റ്

2. നിർമ്മിത ബുദ്ധിറഷ്യൻ ഭാഷയിൽ - ഗ്രേഡിയൻ്റ് ഡിസെൻ്റ്സ്

3. വിക്കി ട്യൂട്ടോറിയൽ - അൽഗോരിതങ്ങൾ/ഗ്രേഡിയൻ്റ് ഡിസെൻ്റ് നടപ്പിലാക്കൽ

4. സ്റ്റാൻഫോർഡ് യൂണിവേഴ്സിറ്റി - അഡാപ്റ്റീവ് സബ്ഗ്രേഡിയൻ്റ് രീതികൾ

5. കേംബ്രിഡ്ജ് യൂണിവേഴ്‌സിറ്റി പ്രസ്സ് - ഓൺലൈൻ അൽഗോരിതങ്ങളും സ്റ്റോക്കാസ്റ്റിക് ഏകദേശങ്ങളും

6. സഞ്ജോയ് ദാസ്ഗുപ്തയും ഡേവിഡ് മക്കാലെസ്റ്ററും - പ്രാരംഭ പ്രവർത്തനത്തിൻ്റെയും ആക്കം കൂട്ടുന്നതിൻ്റെയും പ്രാധാന്യത്തെക്കുറിച്ച് ആഴത്തിലുള്ള പഠനം[ഇലക്ട്രോണിക് റിസോഴ്സ്].

Allbest.ru-ൽ പോസ്‌റ്റുചെയ്‌തു

...

സമാനമായ രേഖകൾ

    ഒരു തീവ്രതയ്ക്ക് ആവശ്യമായ വ്യവസ്ഥകൾ. വികസനം മെഷീൻ അൽഗോരിതംയൂണിഫോം സെർച്ച് രീതി ഉപയോഗിച്ച് ഗ്രേഡിയൻ്റ് രീതിക്കായി മൾട്ടിഡൈമൻഷണൽ ഒപ്റ്റിമൈസേഷൻ പ്രോഗ്രാമുകളും. കണ്ടെത്തിയ ഏറ്റവും കുറഞ്ഞ പോയിൻ്റിന് ആവശ്യമായതും മതിയായതുമായ വ്യവസ്ഥകൾ പരിശോധിക്കുന്നു.

    കോഴ്‌സ് വർക്ക്, 09/25/2013 ചേർത്തു

    സോഫ്റ്റ്വെയർ നടപ്പിലാക്കൽകമ്പ്യൂട്ടിംഗ് ആപ്ലിക്കേഷനുകൾ നിർദ്ദിഷ്ട പ്രവർത്തനങ്ങൾ. ഒരു ഫംഗ്‌ഷൻ്റെ മിനിമം കണ്ടെത്തുന്നതിനുള്ള നടപടിക്രമം. പ്രശ്നം പരിഹരിക്കാൻ ഹുക്ക്-ജീവ്സിൻ്റെയും ഗ്രേഡിയൻ്റ് ഡിസെൻ്റ് രീതികളുടെയും പ്രയോഗം. ഒരു അടിസ്ഥാന പോയിൻ്റിന് സമീപമുള്ള ഒരു ഫംഗ്ഷനെക്കുറിച്ചുള്ള പഠനം, അതിൻ്റെ കോർഡിനേറ്റുകൾ നിർണ്ണയിക്കുന്നു.

    ടെസ്റ്റ്, 02/02/2014 ചേർത്തു

    അനീലിംഗ് അൽഗോരിതം ഉപയോഗിച്ച് പ്രശ്ന പരിഹാരത്തിൻ്റെ ഒപ്റ്റിമൈസേഷൻ. ഒപ്റ്റിമൈസേഷൻ സിദ്ധാന്തത്തിൻ്റെ വിശകലനം വസ്തുനിഷ്ഠമായ പ്രവർത്തനം. ഗ്രേഡിയൻ്റ് ഡിസെൻ്റ് രീതി. അനീലിംഗ് അൽഗോരിതത്തിൻ്റെ വേരിയബിളുകളും വിവരണവും. ഒരു ഗ്രാഫിലൂടെ സഞ്ചരിക്കുന്ന സെയിൽസ്മാൻ പ്രശ്നത്തിൻ്റെ പ്രതിനിധാനം. പ്രശ്നം വേരിയബിളുകളിലേക്ക് ചുരുക്കുകയും അത് പരിഹരിക്കുകയും ചെയ്യുന്നു.

    കോഴ്‌സ് വർക്ക്, 05/21/2015 ചേർത്തു

    ഏറ്റവും ലളിതവും ബഹുതലവുമായ കൃത്രിമ ന്യൂറൽ നെറ്റ്‌വർക്കിൻ്റെ പരിശീലനം. പിശക് ഉപരിതലത്തിൽ ഗ്രേഡിയൻ്റ് ഡിസെൻ്റ് തത്വത്തെ അടിസ്ഥാനമാക്കിയുള്ള പെർസെപ്ട്രോൺ പരിശീലന രീതി. ൽ നടപ്പിലാക്കൽ സോഫ്റ്റ്വെയർ ഉൽപ്പന്നംന്യൂറോപ്രോ 0.25. ബാക്ക്‌പ്രൊപഗേഷൻ അൽഗോരിതം ഉപയോഗിക്കുന്നു.

    കോഴ്‌സ് വർക്ക്, 05/05/2015 ചേർത്തു

    നിരവധി വേരിയബിളുകളുടെ പ്രവർത്തനങ്ങൾ പരമാവധിയാക്കുന്നതിനുള്ള ഒരു പ്രശ്നം പരിഹരിക്കുന്നു. ഡൈക്കോട്ടമി രീതിയുടെ വിവരണം, രേഖീയമല്ലാത്ത സമവാക്യങ്ങൾ പരിഹരിക്കുന്നതിനുള്ള അതിൻ്റെ പ്രയോഗം. കോർഡിനേറ്റ് ഡിസെൻ്റ് രീതി ഉപയോഗിച്ച് ഈ പ്രശ്നം പരിഹരിക്കുന്നു. അൽഗോരിതങ്ങൾ വരയ്ക്കുന്നു, പ്രോഗ്രാമുകൾ പട്ടികപ്പെടുത്തുന്നു.

    കോഴ്‌സ് വർക്ക്, 10/01/2009 ചേർത്തു

    ഏറ്റവും കുറഞ്ഞ സ്ക്വയർ രീതി ഉപയോഗിച്ച് ഒബ്ജക്റ്റ് തിരിച്ചറിയൽ. ജോഡി, ഭാഗിക, ഒന്നിലധികം പരസ്പര ബന്ധ ഗുണകങ്ങളുടെ വിശകലനം. ഒരു ലീനിയർ മോഡലിൻ്റെയും വിതരണം ചെയ്ത പാരാമീറ്ററുകളുള്ള ഒരു മോഡലിൻ്റെയും നിർമ്മാണം. തന്നിരിക്കുന്ന ഫംഗ്‌ഷൻ്റെ റൂട്ട് (പൂജ്യം) കണ്ടെത്തുന്നതിനുള്ള ആവർത്തന സംഖ്യാ രീതി.

    കോഴ്‌സ് വർക്ക്, 03/20/2014 ചേർത്തു

    ഉപയോഗ സാങ്കേതികവിദ്യയുടെ അടിസ്ഥാനം സോഫ്റ്റ്വെയർ പാക്കേജ്ലാബ്വ്യൂ, സിസ്റ്റത്തിൻ്റെ ഗുണങ്ങൾ. ഡാറ്റാ ഫ്ലോ ആർക്കിടെക്ചറിനെ അടിസ്ഥാനമാക്കിയുള്ള പ്രോഗ്രാമിംഗ്. തീവ്രത കണ്ടെത്തുന്നതിനുള്ള രീതികൾ. ഒരു ദ്വിമാന ഫംഗ്‌ഷൻ്റെ പരമാവധി കണ്ടെത്തുന്നതിന് Gauss-Seidel രീതി ഉപയോഗിക്കുന്നു.

    ടെസ്റ്റ്, 03/18/2011 ചേർത്തു

    സെർച്ച് എഞ്ചിൻ ഒപ്റ്റിമൈസേഷൻ രീതികളുടെ ഉദ്ദേശ്യവും വർഗ്ഗീകരണവും. കാര്യക്ഷമത തിരയൽ രീതി. സീറോ-ഓർഡർ തിരയൽ രീതികൾ: ഇൻപുട്ടുകൾ, വ്യവസ്ഥകൾ, ദോഷങ്ങൾ, ആപ്ലിക്കേഷനുകൾ. ഗ്രേഡിയൻ്റ് തിരയൽ രീതിയുടെ ഘടന. കുത്തനെയുള്ള ഇറക്കം രീതിയുടെ പ്രധാന ആശയം.

    പ്രഭാഷണം, 03/04/2009 ചേർത്തു

    പ്രശ്നത്തിൻ്റെ പ്രസ്താവനയും അതിൻ്റെ ഔപചാരികതയും. x1, x2 പോയിൻ്റുകളിൽ ഇൻ്റർപോളേഷൻ പോളിനോമിയലിൻ്റെ മൂല്യങ്ങൾ കണ്ടെത്തുന്നു. സെഗ്‌മെൻ്റിൽ F(x) ഫംഗ്‌ഷൻ്റെ ഏറ്റവും കുറഞ്ഞ തുക കണ്ടെത്തുന്നു. രീതികളുടെ ഒത്തുചേരൽ വ്യവസ്ഥകൾ പരിശോധിക്കുന്നു. ടെസ്റ്റിംഗ് സോഫ്റ്റ്വെയർ മൊഡ്യൂളുകൾ. അൽഗോരിതത്തിൻ്റെ വിശദമായ ഡയഗ്രം.

    കോഴ്‌സ് വർക്ക്, 02/04/2011 ചേർത്തു

    നിയന്ത്രണങ്ങളില്ലാത്ത പ്രശ്നങ്ങളിൽ സംഖ്യാ രീതികൾ. ഇറക്കൽ രീതികളുടെ സ്കീം. എഡിറ്റർ പരിസ്ഥിതി വിഷ്വൽ ബേസിക്. ഫോമുകളിൽ ActiveX ഒബ്ജക്റ്റുകൾ ഉപയോഗിക്കുന്നു. സിമുലേഷൻ അൽഗോരിതത്തിൻ്റെ ഫ്ലോചാർട്ട്. ഒരൊറ്റ എക്സ്ട്രീം പോയിൻ്റുള്ള ഡിറ്റർമിനിസ്റ്റിക് ഫംഗ്ഷനുകൾക്കുള്ള ഒപ്റ്റിമൈസേഷൻ പ്രശ്നങ്ങൾ.

അതിനാൽ, ഒരു വീടിൻ്റെ വലുപ്പത്തെ അടിസ്ഥാനമാക്കി അതിൻ്റെ വില പോലെയുള്ള ചില മൂല്യങ്ങൾ പ്രവചിക്കേണ്ട ചുമതല നിങ്ങൾക്കുണ്ട്. അല്ലെങ്കിൽ ഒരു അഭ്യർത്ഥന പ്രോസസ്സ് ചെയ്യുന്നതിന് നിങ്ങളുടെ സിസ്റ്റത്തിന് എടുക്കുന്ന സമയം. നിങ്ങൾക്കറിയില്ല.

നിങ്ങൾ ലീനിയർ റിഗ്രഷൻ ഉപയോഗിക്കാൻ തീരുമാനിച്ചു, നിങ്ങളുടെ മോഡൽ പ്രവചിക്കുന്ന വിലയും വിൽക്കുന്ന വീടുകളുടെ യഥാർത്ഥ വിലയും തമ്മിലുള്ള വ്യത്യാസം ഏറ്റവും കുറവുള്ള ഗുണകങ്ങൾ കണ്ടെത്താൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നു. ഇത് ചെയ്യുന്നതിന്, നിങ്ങൾക്ക് ഇനിപ്പറയുന്ന രീതികളിൽ ഒന്ന് ഉപയോഗിക്കാം:

  1. ബാച്ച് ഗ്രേഡിയൻ്റ് ഡിസൻ്റ്
  2. സ്റ്റോക്കാസ്റ്റിക് ഗ്രേഡിയൻ്റ് ഡിസെൻ്റ്
  3. സാധാരണ സമവാക്യങ്ങൾ
  4. ന്യൂട്ടൻ്റെ രീതി (ന്യൂട്ടൻ്റെ രീതി)

ഇന്ന് നമ്മൾ രണ്ട് തരം ഗ്രേഡിയൻ്റ് ഡിസെൻ്റിനെക്കുറിച്ച് സംസാരിക്കും.

ഗ്രേഡിയൻ്റ് ഡിസൻ്റ്

എന്തായാലും ഗ്രേഡിയൻ്റ് ഡിസെൻ്റ് എന്താണ്?

ചിലത് സങ്കൽപ്പിക്കുക സങ്കീർണ്ണമായ പ്രവർത്തനംഒരു വേരിയബിളിൽ നിന്ന്. അതിന് ചില ഉയർച്ച താഴ്ചകളുണ്ട്. ഈ ഫംഗ്‌ഷൻ്റെ ഓരോ പോയിൻ്റിലും നമുക്ക് ഡെറിവേറ്റീവ് എടുക്കാം:

ഈ സമയത്ത് ഡെറിവേറ്റീവ് പോസിറ്റീവ് ആയിരിക്കുമെന്നും ചുവന്ന വര നെഗറ്റീവ് ആയിരിക്കുമെന്നും പച്ച ലൈൻ കാണിക്കുന്നു.

ഫംഗ്ഷനിലെ ഏതെങ്കിലും പോയിൻ്റ് തിരഞ്ഞെടുക്കുക. ആ പോയിൻ്റിന് ഏറ്റവും അടുത്തുള്ള ഏറ്റവും കുറഞ്ഞതിലേക്ക് "താഴേയ്ക്ക്" പോകാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നു. നിങ്ങളുടെ പോയിൻ്റിലെ ഡെറിവേറ്റീവ് പോസിറ്റീവ് ആണെങ്കിൽ (ഗ്രീൻ ലൈൻ), ഇതിനർത്ഥം മിനിമം "പിന്നിൽ" ആണെന്നാണ്, അതിലേക്ക് പോകുന്നതിന്, നിങ്ങളുടെ പോയിൻ്റിൻ്റെ കോർഡിനേറ്റിൽ നിന്ന് കുറയ്ക്കേണ്ടതുണ്ട്. xനിങ്ങളുടെ ഡെറിവേറ്റീവിൻ്റെ മൂല്യം.

നിങ്ങളുടെ പോയിൻ്റിൽ ഡെറിവേറ്റീവ് നെഗറ്റീവ് ആണെങ്കിൽ (ചുവപ്പ് രേഖ), ഇതിനർത്ഥം ഏറ്റവും കുറഞ്ഞത് നിങ്ങളുടെ മുന്നിൽ "മുന്നിലാണ്" എന്നാണ്, അതിലേക്ക് എത്താൻ, നിങ്ങൾ വീണ്ടും, കോർഡിനേറ്റിൽ നിന്ന് കുറയ്ക്കേണ്ടതുണ്ട് xനിങ്ങളുടെ ഡെറിവേറ്റീവിൻ്റെ മൂല്യം. അതിൻ്റെ മൂല്യം നെഗറ്റീവ് ആണ്, അതിനാൽ, ഒരു നെഗറ്റീവ് മൂല്യം കുറയ്ക്കുന്നതിലൂടെ, നിങ്ങൾ കോർഡിനേറ്റ് വർദ്ധിപ്പിക്കും x.

നന്നായി, ഇറക്കം വേദനാജനകമായ ദൈർഘ്യമോ തെറ്റായ വേഗത്തിലുള്ളതോ ആകാതിരിക്കാൻ, തിരഞ്ഞെടുത്ത പോയിൻ്റിലെ നിങ്ങളുടെ ഡെറിവേറ്റീവിൻ്റെ മൂല്യം ഏതെങ്കിലും ഗുണകം കൊണ്ട് ഗുണിക്കുക.

എന്നാൽ ഫംഗ്ഷൻ ഒരു കോർഡിനേറ്റിനെ ആശ്രയിക്കുമ്പോൾ ഇതെല്ലാം സംഭവിക്കുന്നു. വീടുകൾ വിൽക്കുന്നതിനുള്ള ഞങ്ങളുടെ മോഡലിൻ്റെ കാര്യത്തിൽ, മൂല്യ പ്രവർത്തനം രണ്ട് വേരിയബിളുകളെ ആശ്രയിച്ചിരിക്കുന്നു.

നിങ്ങൾക്ക് ഈ ഫംഗ്‌ഷനെ 3D സ്‌പെയ്‌സിൽ ഒരു "കപ്പ്" ആയി കണക്കാക്കാം:

നിരവധി വേരിയബിളുകളുടെ പ്രവർത്തനങ്ങളുടെ ഡെറിവേറ്റീവിനെ ഗ്രേഡിയൻ്റ് എന്ന് വിളിക്കുന്നു. വെക്‌ടറിൻ്റെ ഓരോ മൂലകവും ഒരു വേരിയബിളിൻ്റെ ഡെറിവേറ്റീവ് ആയ വേരിയബിളുകളുടെ എണ്ണത്തിൻ്റെ അളവുള്ള ഒരു വെക്‌റ്ററാണ് ഗ്രേഡിയൻ്റ്.

ഞങ്ങളുടെ ചെലവ് പ്രവർത്തനം ഇതാണ്:

അതിൻ്റെ ഗ്രേഡിയൻ്റ് ഇനിപ്പറയുന്ന ഫോർമുല ഉപയോഗിച്ച് കണക്കാക്കുകയും കണക്കാക്കുകയും ചെയ്യുന്നു:

ഓരോ ഭാഗിക ഡെറിവേറ്റീവിലും ഞങ്ങൾ അത് ഒരു വേരിയബിളിൻ്റെ ഫംഗ്‌ഷനായി കണക്കാക്കുന്നു. മറ്റെല്ലാ വേരിയബിളുകളും സ്ഥിരാങ്കങ്ങളായി ഞങ്ങൾ കണക്കാക്കുന്നു, അതിനാൽ അവയുടെ ഡെറിവേറ്റീവുകൾ പൂജ്യത്തിന് തുല്യമായിരിക്കും:

അതിനുശേഷം, ഫോർമുല ഉപയോഗിച്ച് ഞങ്ങൾ ഓരോ മൂല്യവും അപ്ഡേറ്റ് ചെയ്യുന്നു:

പാരാമീറ്ററിനെ ലേണിംഗ് റേറ്റ് എന്ന് വിളിക്കുന്നു കൂടാതെ നമ്മൾ എത്ര വേഗത്തിൽ നീങ്ങുമെന്ന് നിർണ്ണയിക്കുന്നു കുറഞ്ഞ മൂല്യംപ്രവർത്തനങ്ങൾ. പാരാമീറ്ററുകളുടെ ഓരോ അപ്‌ഡേറ്റിലും ഞങ്ങൾ ഏറ്റവും കുറഞ്ഞതിലേക്ക് ഒരു ചെറിയ ചുവടുവെപ്പ് നടത്തുന്നു. ഇതിനുശേഷം, ഞങ്ങൾ നടപടിക്രമം ആവർത്തിക്കുന്നു. അതേ സമയം, മുൻ ഘട്ടവുമായി താരതമ്യപ്പെടുത്തുമ്പോൾ കോസ്റ്റ് ഫംഗ്ഷൻ്റെ മൂല്യം എത്രമാത്രം മാറിയെന്ന് ഞങ്ങൾ നോക്കുന്നു. ഈ മാറ്റം വളരെ ചെറുതാകുമ്പോൾ (ഞങ്ങൾ സമയം അടയാളപ്പെടുത്തുന്നു), നമുക്ക് നിർത്തി, ഞങ്ങൾ ഏറ്റവും കുറഞ്ഞ പോയിൻ്റിൽ എത്തിയതായി കണക്കാക്കാം.

കുന്നിറങ്ങി അടുത്തുള്ള താഴ്‌വരയിലേക്ക് നടക്കുന്നത് പോലെ. ഒരു പ്രാദേശിക മിനിമം കണ്ടെത്താൻ ഗ്രേഡിയൻ്റ് ഡിസെൻ്റ് നിങ്ങളെ അനുവദിക്കുന്നു, എന്നാൽ ആഗോളമായ ഒന്നല്ല. ഇതിനർത്ഥം, നിങ്ങളുടെ പ്രവർത്തനം വളരെ കുറവുള്ള നിരവധി പോയിൻ്റുകൾ ഉണ്ടെങ്കിൽ, ഗ്രേഡിയൻ്റ് ഡിസെൻ്റ് നിങ്ങളെ അവയിലൊന്നിലേക്ക് കൊണ്ടുപോകും - ആരംഭ പോയിൻ്റിന് ഏറ്റവും അടുത്തുള്ളത്, പക്ഷേ ആഴത്തിലുള്ള വിള്ളൽ ആവശ്യമില്ല.

ആദ്യ ഘട്ടത്തിന് മുമ്പായി, ഞങ്ങൾ പാരാമീറ്ററുകൾ ക്രമരഹിതമായി നിർണ്ണയിക്കുന്നു, അവ കൃത്യമായി എങ്ങനെ നിർണ്ണയിക്കുന്നു എന്നത് ഞങ്ങൾ ഏത് മിനിമത്തിലേക്ക് വീഴുമെന്ന് നിർണ്ണയിക്കുന്നു:


ഇവിടെ പരാൻതീസിസിൽ മുകളിൽ പറഞ്ഞിരിക്കുന്നത് ഗ്രേഡിയൻ്റ് ഡിസെൻറിനെ സംബന്ധിച്ചുള്ളതാണെന്ന് ശ്രദ്ധിക്കേണ്ടതാണ് പൊതുവായ കാഴ്ച, എന്നാൽ ലീനിയർ റിഗ്രഷനു വേണ്ടി പ്രത്യേകമായി ഗ്രേഡിയൻ്റ് ഡിസെൻറിനെ അഭിസംബോധന ചെയ്യുന്നില്ല. ലീനിയർ റിഗ്രഷൻ കോസ്റ്റ് ഫംഗ്‌ഷൻ കോൺവെക്‌സ് ആണ് കൂടാതെ ഒരു മിനിമം (ഒരു 3D കപ്പിനെക്കുറിച്ച് ചിന്തിക്കുക) മാത്രമേ ഉള്ളൂ, അതിനാൽ ഗ്രേഡിയൻ്റ് ഡിസെൻ്റ് അത് എപ്പോഴും കണ്ടെത്തും.

ചെലവ് ഫംഗ്‌ഷൻ്റെ ഏറ്റവും കുറഞ്ഞ നിരക്കിലേക്ക് നിങ്ങൾ അടുക്കുന്തോറും (പ്രവചിച്ച വിലയും യഥാർത്ഥ വിലയും തമ്മിലുള്ള ചെറിയ വ്യത്യാസം), നിങ്ങളുടെ നേർരേഖ നിങ്ങളുടെ ചരിത്രപരമായ ഡാറ്റയെ മികച്ച രീതിയിൽ വിവരിക്കുന്നു:

ചരിത്രപരമായ നിരവധി ഉദാഹരണങ്ങൾ ഇല്ലാത്തപ്പോൾ, എല്ലാം ശരിയാണ്, പക്ഷേ അവ ദശലക്ഷക്കണക്കിന് ഉള്ളപ്പോൾ, മിനിമം ലക്ഷ്യത്തിലേക്കുള്ള ഓരോ ചെറിയ ചുവടുവയ്പ്പിനും നമ്മൾ ദശലക്ഷക്കണക്കിന് കണക്കുകൂട്ടലുകൾ നടത്തേണ്ടതുണ്ട്, ഇതിന് വളരെയധികം സമയമെടുക്കും.

ഇതിനൊരു ബദൽ ആകാം സ്റ്റോക്കാസ്റ്റിക് ഗ്രേഡിയൻ്റ്ഒരു ഉദാഹരണം എടുത്ത് അതിനെ അടിസ്ഥാനമാക്കി മാത്രം മൂല്യങ്ങൾ അപ്ഡേറ്റ് ചെയ്യുന്ന ഒരു രീതിയാണ് decent. തുടർന്ന് ഞങ്ങൾ ഇനിപ്പറയുന്ന ഉദാഹരണം എടുത്ത് പാരാമീറ്ററുകൾ അപ്ഡേറ്റ് ചെയ്യുക, അതിൽ ശ്രദ്ധ കേന്ദ്രീകരിക്കുക. ഇത്യാദി. ഞങ്ങൾ എല്ലായ്പ്പോഴും കുന്നിൽ നിന്ന് “താഴേയ്‌ക്ക്” പോകുന്നില്ല എന്ന വസ്തുതയിലേക്ക് ഇത് നയിക്കുന്നു, ചിലപ്പോൾ ഞങ്ങൾ ഒരു പടി മുകളിലേക്കോ വശത്തേക്കോ എടുക്കും, എന്നാൽ താമസിയാതെ അല്ലെങ്കിൽ പിന്നീട് ഞങ്ങൾ ആ ഏറ്റവും കുറഞ്ഞതിലെത്തി അതിന് ചുറ്റും വലയം ചെയ്യാൻ തുടങ്ങുന്നു. മൂല്യങ്ങൾ നമുക്ക് അനുയോജ്യമാകാൻ തുടങ്ങുമ്പോൾ (നമുക്ക് ആവശ്യമുള്ള കൃത്യതയിൽ എത്തുന്നു), ഞങ്ങൾ ഇറക്കം നിർത്തുന്നു.

സ്യൂഡോകോഡിൽ, സ്റ്റോക്കാസ്റ്റിക് ഗ്രേഡിയൻ്റ് ഡിസെൻ്റ് ഇതുപോലെ കാണപ്പെടുന്നു:

കോസ്റ്റ് ഫംഗ്‌ഷൻ മാറ്റം ചെറുതാകുന്നതുവരെ: (

j:= 1 മുതൽ m വരെ (

അവസാനമായി, അൽഗോരിതത്തിൻ്റെ കൺവേർജൻസ് സവിശേഷതകൾ: ബാച്ച് ഗ്രേഡിയൻ്റ് ഡിസെൻ്റ് എല്ലായ്പ്പോഴും ഒരു മിനിമം ആയി ഒത്തുചേരുന്നു, ആവശ്യത്തിന് ചെറിയ മൂല്യം ഉപയോഗിച്ചിട്ടുണ്ടെങ്കിൽ. പൊതുവെ സ്‌റ്റോക്കാസ്റ്റിക് ഗ്രേഡിയൻ്റ് ഡിസെൻ്റ് ഒരു മിനിമം ആയി സംയോജിക്കുന്നില്ല, എന്നാൽ ഒത്തുചേരൽ കൈവരിക്കാൻ അനുവദിക്കുന്ന പരിഷ്‌ക്കരണങ്ങളുണ്ട്.