JAX, kuris reiškia „Just Another XLA“, yra „Google Research“ sukurta „Python“ biblioteka, kuri suteikia didelio našumo mašininio mokymosi tyrimų ekosistemą. Jis specialiai sukurtas palengvinti pagreitintos tiesinės algebros (XLA) operacijų naudojimą GPU, TPU ir CPU. JAX siūlo daugybę funkcijų, įskaitant automatinį diferencijavimą, kuris yra svarbus daugelio mašininio mokymosi algoritmų komponentas.
JAX kontekste palaikomi du pagrindiniai diferenciacijos režimai: diferencijavimas į priekį ir diferencijavimas atvirkštiniu režimu. Šie režimai skiriasi savo skaičiavimo charakteristikomis ir yra tinkami įvairiems scenarijams.
1. Pirmyn režimo diferencijavimas:
Pirminio režimo diferencijavimas, dar žinomas kaip tiesioginis kaupimas arba liestinės tiesinis režimas, yra metodas, apskaičiuojantis funkcijos išvestinę, atsekdamas nedidelių įvesties kintamųjų pokyčių poveikį išėjimui. Tai daroma papildydama skaičiavimą papildomais „liestiniais“ kintamaisiais, kurie atspindi išvestinę kiekvieno įvesties kintamojo atžvilgiu. Šie liestinės kintamieji atnaujinami kartu su pradiniu skaičiavimu, todėl galima kaupti išvestines.
Norėdami tai iliustruoti, panagrinėkime paprastą pavyzdį. Tarkime, kad turime funkciją f(x) = sin(x). Į priekį režimo diferenciacija įvestume liestinės kintamąjį, tarkime t, ir apskaičiuotume funkcijos reikšmę f(x) ir išvestinę f'(x) = df/dx duotame taške x. Skaičiavimas vyktų taip:
t = 1 # liestinės kintamasis, reiškiantis išvestinę
f = sin(x) # pradinis funkcijos įvertinimas
df_dx = cos(x) * t # išvestinis apskaičiavimas naudojant liestinės kintamąjį
Atnaujinę tangentinį kintamąjį t pagal kiekvienos paskesnės operacijos išvestinę, išvestinę galime kaupti viso skaičiavimo metu. Šis režimas yra efektyvus funkcijoms su nedideliu įvesties kintamųjų skaičiumi, tačiau gali būti brangus funkcijoms, turinčioms daug įvesties.
2. Atvirkštinio režimo diferencijavimas:
Atvirkštinio režimo diferencijavimas, taip pat žinomas kaip atvirkštinis kaupimas arba jungtinis režimas, yra metodas, kuriuo funkcijos išvestinė apskaičiuojama pirmiausia apskaičiuojant funkcijos reikšmę, o paskui išvestinę informaciją iš išvesties į įvesties kintamuosius. Tai ypač naudinga, kai funkcija turi daug įvesties kintamųjų, bet palyginti nedaug išėjimų.
Norėdami tai parodyti, panagrinėkime sudėtingesnį pavyzdį. Tarkime, kad turime funkciją f(x, y) = x^2 + sin(y^2). Atvirkštinio režimo diferencijavimo atveju apskaičiuotume ir funkcijos reikšmę f(x, y), ir f išvestinę kiekvieno įvesties kintamojo, ty df/dx ir df/dy, atžvilgiu. Skaičiavimas vyktų taip:
f = x2 + sin(y2) # originalus funkcijos įvertinimas
df_dx, df_dy = jax.grad(f, (x, y)) # išvestinis skaičiavimas naudojant atvirkštinio režimo diferenciaciją
Naudodami JAX atvirkštinio režimo diferenciacijos galimybes, galime efektyviai apskaičiuoti funkcijų išvestis su daugybe įvesties kintamųjų.
JAX palaiko du diferenciacijos režimus: diferencijavimą pirmyn ir atvirkštinio režimo diferenciaciją. Režimo pasirinkimas priklauso nuo konkrečių nagrinėjamos problemos reikalavimų, tokių kaip įvesties kintamųjų skaičius ir norimas skaičiavimo efektyvumas.
Kiti naujausi klausimai ir atsakymai apie EITC/AI/GCML „Google Cloud Machine Learning“:
- Ar mašininio mokymosi procese galima taikyti daugiau nei vieną modelį?
- Ar mašininis mokymasis gali pritaikyti, kurį algoritmą naudoti, priklausomai nuo scenarijaus?
- Koks yra paprasčiausias būdas visiškai pradedančiajam, neturinčiam programavimo patirties, žingsnis po žingsnio apmokyti ir įdiegti pagrindinį didaktinio dirbtinio intelekto modelį „Google“ dirbtinio intelekto platformoje, naudojant nemokamą bandomąją versiją/GUI konsolę?
- Kaip praktiškai apmokyti ir diegti paprastą dirbtinio intelekto modelį „Google Cloud AI Platform“ platformoje naudojant GCP konsolės grafinę sąsają žingsnis po žingsnio vadove?
- Kokia yra paprasčiausia, nuosekli paskirstyto dirbtinio intelekto modelio mokymo „Google Cloud“ sistemoje procedūra?
- Koks yra pirmasis modelis, su kuriuo galima dirbti, pateikiant keletą praktinių pasiūlymų pradžiai?
- Ar algoritmai ir prognozės yra pagrįsti žmogaus pateikta informacija?
- Kokie yra pagrindiniai natūralios kalbos apdorojimo modelio kūrimo reikalavimai ir paprasčiausi metodai? Kaip sukurti tokį modelį naudojant turimus įrankius?
- Ar norint naudotis šiais įrankiais, reikia mėnesinės ar metinės prenumeratos, ar yra tam tikras nemokamo naudojimo kiekis?
- Kas yra epocha mokymo modelio parametrų kontekste?
Peržiūrėkite daugiau klausimų ir atsakymų EITC/AI/GCML Google Cloud Machine Learning