AI-For-Beginners/translations/lt/lessons/3-NeuralNetworks/04-OwnFramework
localizeflow[bot] 132c5c3f8f chore(i18n): sync translations with latest source changes (chunk 1/1, 201 changes) 2026-01-30 02:51:30 +00:00
..
lab chore(i18n): sync translations with latest source changes (chunk 1/1, 201 changes) 2026-01-30 02:51:30 +00:00
OwnFramework.ipynb 🌐 Update translations via Co-op Translator 2025-08-31 14:13:46 +00:00
README.md chore(i18n): sync translations with latest source changes (chunk 1/1, 201 changes) 2026-01-30 02:51:30 +00:00

README.md

Įvadas į neuroninius tinklus. Daugiasluoksnis perceptronas

Ankstesniame skyriuje sužinojote apie paprasčiausią neuroninio tinklo modelį vienasluoksnį perceptroną, kuris yra linijinis dviejų klasių klasifikavimo modelis.

Šiame skyriuje išplėsime šį modelį į lankstesnę sistemą, kuri leis:

  • atlikti daugiaklasę klasifikaciją be dviejų klasių
  • spręsti regresijos problemas be klasifikavimo
  • atskirti klases, kurios nėra linijiškai atskiriamos

Taip pat sukursime savo modulinę sistemą Python kalba, kuri leis konstruoti įvairias neuroninių tinklų architektūras.

Prieš paskaitą testas

Mašininio mokymosi formalizavimas

Pradėkime nuo mašininio mokymosi problemos formalizavimo. Tarkime, turime mokymo duomenų rinkinį X su žymėmis Y, ir mums reikia sukurti modelį f, kuris pateiktų kuo tikslesnes prognozes. Prognozių kokybė matuojama pagal nuostolių funkciją . Dažniausiai naudojamos šios nuostolių funkcijos:

  • Regresijos problemoms, kai reikia prognozuoti skaičių, galime naudoti absoliutinę paklaidąi|f(x(i))-y(i)| arba kvadratinę paklaidąi(f(x(i))-y(i))2
  • Klasifikavimui naudojame 0-1 nuostolį (kuris iš esmės yra tas pats, kas modelio tikslumas) arba logistinį nuostolį.

Vienasluoksniame perceptrone funkcija f buvo apibrėžta kaip linijinė funkcija f(x)=wx+b (čia w yra svorių matrica, x įvesties požymių vektorius, o b poslinkio vektorius). Skirtingose neuroninių tinklų architektūrose ši funkcija gali būti sudėtingesnė.

Klasifikavimo atveju dažnai pageidaujama, kad tinklo išvestis būtų atitinkamų klasių tikimybės. Norint paversti bet kokius skaičius į tikimybes (pvz., normalizuoti išvestį), dažnai naudojame softmax funkciją σ, ir funkcija f tampa f(x)=σ(wx+b).

Apibrėžime f aukščiau, w ir b vadinami parametrais θ=⟨w,b⟩. Turėdami duomenų rinkinį ⟨X,Y⟩, galime apskaičiuoti bendrą klaidą visam duomenų rinkiniui kaip funkciją nuo parametrų θ.

Neuroninio tinklo mokymo tikslas yra sumažinti klaidą keičiant parametrus θ

Gradientinio nusileidimo optimizavimas

Yra gerai žinomas funkcijų optimizavimo metodas, vadinamas gradientiniu nusileidimu. Jo idėja yra ta, kad galime apskaičiuoti nuostolių funkcijos išvestinę (daugiamatėje erdvėje vadinamą gradientu) pagal parametrus ir keisti parametrus taip, kad klaida sumažėtų. Tai galima formalizuoti taip:

  • Inicializuokite parametrus atsitiktinėmis reikšmėmis w(0), b(0)
  • Kartokite šiuos veiksmus daug kartų:
    • w(i+1) = w(i)-η∂ℒ/∂w
    • b(i+1) = b(i)-η∂ℒ/∂b

Mokymo metu optimizavimo žingsniai turėtų būti skaičiuojami atsižvelgiant į visą duomenų rinkinį (prisiminkite, kad nuostoliai skaičiuojami kaip suma per visus mokymo pavyzdžius). Tačiau realiame gyvenime imame mažas duomenų rinkinio dalis, vadinamas minipartijomis, ir skaičiuojame gradientus remdamiesi duomenų pogrupiu. Kadangi pogrupis kiekvieną kartą imamas atsitiktinai, toks metodas vadinamas stochastiniu gradientiniu nusileidimu (SGD).

Daugiasluoksniai perceptronai ir atgalinis sklidimas

Vienasluoksnis tinklas, kaip matėme aukščiau, gali klasifikuoti linijiškai atskiriamas klases. Norėdami sukurti turtingesnį modelį, galime sujungti kelis tinklo sluoksnius. Matematiškai tai reikštų, kad funkcija f turėtų sudėtingesnę formą ir būtų skaičiuojama keliais etapais:

  • z1=w1x+b1
  • z2=w2α(z1)+b2
  • f = σ(z2)

Čia α yra ne linijinė aktyvavimo funkcija, σ yra softmax funkcija, o parametrai θ=<w1,b1,w2,b2>.

Gradientinio nusileidimo algoritmas išliktų toks pat, tačiau gradientų skaičiavimas būtų sudėtingesnis. Remiantis grandinės diferencijavimo taisykle, galime apskaičiuoti išvestines taip:

  • ∂ℒ/∂w2 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂w2)
  • ∂ℒ/∂w1 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂α)(∂α/∂z1)(∂z1/∂w1)

Grandinės diferencijavimo taisyklė naudojama nuostolių funkcijos išvestinėms pagal parametrus apskaičiuoti.

Atkreipkite dėmesį, kad kairiausia visų šių išraiškų dalis yra ta pati, todėl efektyviai galime apskaičiuoti išvestines, pradedant nuo nuostolių funkcijos ir einant "atgal" per skaičiavimo grafiką. Todėl daugiasluoksnio perceptrono mokymo metodas vadinamas atgaliniu sklidimu arba 'backprop'.

skaičiavimo grafikas

TODO: paveikslėlio citata

Atgalinį sklidimą išsamiau aptarsime mūsų užrašų knygelės pavyzdyje.

Išvada

Šioje pamokoje sukūrėme savo neuroninio tinklo biblioteką ir panaudojome ją paprastai dviejų dimensijų klasifikavimo užduočiai.

🚀 Iššūkis

Pridedamoje užrašų knygelėje įgyvendinsite savo sistemą daugiasluoksnių perceptronų kūrimui ir mokymui. Galėsite detaliai pamatyti, kaip veikia šiuolaikiniai neuroniniai tinklai.

Pereikite prie OwnFramework užrašų knygelės ir ją išnagrinėkite.

Po paskaitos testas

Apžvalga ir savarankiškas mokymasis

Atgalinis sklidimas yra dažnai naudojamas algoritmas AI ir ML srityse, verta jį išsamiau išnagrinėti.

Užduotis

Šioje laboratorijoje jūsų prašoma panaudoti sistemą, kurią sukūrėte šioje pamokoje, MNIST ranka rašytų skaitmenų klasifikavimo užduočiai spręsti.