Vienetas 4 / 11

Simbolinis skaičiavimas: dirbtinio intelekto valdymas naudojant SymPy

Pelnas:

  • Gebėjimas atpažinti pagrindines „SymPy“ galimybes (supaprastinimas, faktorizavimas, lygčių sprendimas, išvestinė, integralas, riba) ir naudoti jį dirbtinio intelekto išvesties patvirtinimui.
  • Gebėjimas gauti deterministinius ir tikslius rezultatus spausdinant SymPy kodą dirbtiniam intelektui ir paleidžiant patį kodą; Supraskite, kad dirbtinio intelekto nuspėjamo kodo išvestis nėra patvirtinimas
  • Kai dirbtinio intelekto rezultatas neatitinka SymPy išvesties, galimybė naudoti SymPy kaip pagrindą klaidos vietai nustatyti ir rankiniu būdu pridėti subtilybių, pvz., domenų.

Pats praktiškiausias ir galingiausias šio modulio įrankis yra šiame bloke: simbolinis skaičiavimas ir jo Python biblioteka SymPy. Simbolinis skaičiavimas – tai tiksli matematika ne su skaičiais, o su simboliais (kintamaisiais, tokiais kaip x, y ir kt.): paimamas integralas su tikslia formule, išsprendžiama lygtis raidėmis, supaprastinama išraiška. „SymPy“ yra atvirojo kodo, nemokama ir deterministinė „Python“ biblioteka, kuri tai daro – tai reiškia, kad ji visada pateikia tą patį tikslų teisingą rezultatą į tą pačią įvestį. Dėl to jis idealiai tinka AI išvesties patvirtinimui: AI suteikia greitį ir įžvalgą, o „SymPy“ – tikslumą.

Pagrindinė šio įrenginio idėja yra tokia: AI atliktų skaičiavimus, bet SymPy patvirtintų rezultatą. Dar geriau: leiskite dirbtiniam intelektui parašyti SymPy kodą, paleiskite kodą ir gausite galutinį rezultatą. Taigi jūs pašalinate AI haliucinacijų riziką naudodami SymPy determinizmą.

Dar vienas apibrėžimas: CAS (Computer Algebra System) yra bendras programinės įrangos, kuri atlieka simbolinę matematiką, pavadinimas; SymPy yra CAS. Komerciniai pavyzdžiai yra „Mathematica“ ir „Maple“, tačiau „SymPy“ yra nemokama ir prieinama, nes veikia „Python“.

Pagrindinės „SymPy“ galimybės

SymPy tiksliai atlieka šiuos veiksmus:

  • Supaprastinimas: supaprastinti(išreiškimas) sumažina išraišką iki paprasčiausios formos.
  • Faktoringas / išplėtimas: faktorius() ir išplėsti().
  • Lygties sprendimas: spręskite(lygtis, x) pateikia tikslias lygties šaknis.
  • Išvestinė: diff(išreikšm., x).
  • Integralas: integruoti(ekspr, x) (neapibrėžtas) arba integruoti(ekspr, (x, a, b)) (apibrėžtas).
  • Riba: riba (išraiška, x, taškas).
  • Serija reiškia: series(išraiška, x, 0, n).
  • Matricos operacijos, lygčių sistemos, diferencialinės lygtys ir kt.

Žingsnis po žingsnio: AI + SymPy patvirtinimo darbo eiga

1. Leiskite AI išspręsti problemą. Gaukite žingsnis po žingsnio sprendimą ir galutinį rezultatą.

2. Leiskite AI parašyti SymPy kodą tai pačiai problemai spręsti. Pasakykite „Rašykite kodą, patvirtinantį šį rezultatą su SymPy“.

3. Paleiskite kodą patys. Neleiskite AI „numatyti“ kodo išvesties – tai būtų haliucinacijos. Vykdykite kodą tikroje Python aplinkoje.

4. Palyginkite du rezultatus. Jei AI ir „SymPy“ išvesties rezultatai sutampa, pasitikėjimas padidėja; jei skiriasi, gedimas yra AI (pasitiki SymPy).

5. Jei yra skirtumas, suraskite klaidą. Pasakykite AI: „SymPy davė tai, jūsų rezultatas kitoks; surask savo klaidą“.

Dėmesio: jei paimsite kodą iš AI ir paklausite „ką šis kodas sukuria? Prašymas dirbtinio intelekto NĖRA patvirtinimas, nes AI taip pat gali sudaryti kodo išvestį. Būtinai paleiskite kodą tikroje Python aplinkoje (vietinis diegimas, Jupyter arba internetinė Python runner). SymPy galia atsiskleidžia ją paleidus.

AI rankinis sprendimas ir tt SymPy – palyginimas

funkcija

AI rankinis sprendimas

SymPy

greitis

labai greitai

greitai

tikslumas

Nėra garantijos (haliucinacijos)

Deterministinis, tikras

Paaiškinkite žingsnius

geras

Silpnas (orientuotas į rezultatą)

Intuicija/strategija

geras

Nėra

Tinkamumas patikrinti

ne

Taip

Geriausias derinys: AI paaiškinimui ir strategijai, SymPy tikslumui.

trys mini dėklai

1 atvejis. Integralų neatitikimas. Studentas paklausė AI ∫ x/(x²+1) dx. YZ davė (1/2)·ln(x²+1) + C. Mokinys paleido integrate(x/(x**2+1), x); „SymPy“ grąžino žurnalą (x**2 + 1)/2. Jie buvo vienodi – visiškas pasitikėjimas. Tada išvestinė kontrolė taip pat buvo atlikta su diff; Grįžta į x/(x²+1). Trigubas patvirtinimas, 3 minutės.

2 atvejis – supaprastinimo klaida. Mokytojas turėjo AI supaprastinti išraišką (x²−1)/(x−1); YZ pasakė x+1 (teisinga, bet neįtraukė sąlygos x≠1). SymPy simplify((x**2-1)/(x-1)) taip pat davė x+1, bet mokytojas rankiniu būdu pridėjo domeno apribojimą (neapibrėžtas ties x=1). Pamoka: net SymPy kartais nepabrėžia domeno subtilumo; žmogus prideda matematinį kontekstą.

3 atvejis. Lygčių sistema. Inžinierius AI išsprendė tiesinių lygčių sistemą su 3 nežinomaisiais ir padarė klaidą viename kintamajame. SymPy su solve([lygybės], [x, y, z]) davė tikslų sprendimą; AI z reikšmė buvo neteisinga. Inžinierius paėmė SymPy rezultatą ir leido dirbtiniam intelektui surasti klaidą: ženklo klaidą. Tai buvo išspręsta per 4 minutes.

Keturi kopijuojami šablonai

1) „SymPy“ patvirtinimo kodo užklausa iš YZ:

Išsprendėte šią problemą: [problema], jūsų rezultatas yra [rezultatas]. Dabar parašykite SymPy vykdomąjį kodą, kuris PATIKRINA šį rezultatą. Leiskite kodui apibrėžti simbolius, apskaičiuoti rezultatą ir atspausdinti. Neatspėkite kodo išvesties; Aš jį paleisiu.

2) Sprendimas nuo nulio naudojant SymPy:

Parašykite Python kodą, kuris išspręstų šią SymPy problemą: [problema]. Pridėkite reikiamus importus, simbolių apibrėžimus ir spaudinius. Parašykite, ką sukuria kodas; Tiesiog duok man kodą ir aš jį paleisiu. Prie kiekvienos kodo eilutės pridėkite trumpą komentarą.

3) Pataisykite AI naudodami „SymPy“ išvestį:

Jūs pasakėte [rezultatas], bet SymPy davė štai ką: [SymPy output]. Abu skirtingi. Kadangi SymPy yra deterministinis, priimkite jį kaip teisingą. Išsiaiškinkite, KURĮ žingsnį suklydote savo sprendime ir parodykite tai.

4) Išvestinis / vientisas kryžminio patikrinimo kodas:

Jūs paėmėte tokį integralą: ∫ [f(x)] dx = [F(x)]. Norėdami tai patikrinti, SymPy parašykite kodą, kuris paima F(x) IŠVEDINĮ ir patikrina, ar jis lygus f(x) (supaprastina(diff(F)-f) == 0 logika). Tiesiog duok kodą.

Silpnas raginimas / Stiprus raginimas

Silpna: "Kas yra ∫ sin²(x) dx? Taip pat patikrinkite su SymPy ir parašykite išvestį."
Rezultatas: AI atitinka ir atsakymą, ir „SymPy išvestį“; Abu atrodo nuoseklūs, tačiau nė vienas nebuvo patvirtintas. Netikras pasitikėjimas.
Stiprus: "Parašykite vykdomąjį SymPy kodą, skirtą ∫ sin²(x) dx (importuoti, simbolizuoti, integruoti, spausdinti). Nerašote išvesties – aš paleisiu ir pamatysiu. Taip pat pridėkite eilutę, kuri tikrina, kad atskirtų rezultatą ir grąžintų jį į sin²(x)."
Rezultatas: paleidžiate kodą ir matote tikslią SymPy išvestį; patikrinimas tampa tikru.

Dažnos klaidos

  • AI nuspėja kodo išvestį. Tai nėra patvirtinimas; AI taip pat gali pritaikyti išvestį. Jūs paleidžiate kodą.
  • SymPy rezultato priėmimas jo neperskaičius. SymPy išvesties formatas kartais būna neįprastas (pvz., log = natūralusis logaritmas); Žinokite, kaip interpretuoti.
  • Pamiršus domeną. SymPy supaprastinimas ne visada pabrėžia tokius apribojimus kaip x≠1; žmogus prideda konteksto.
  • Neteisingas simbolio apibrėžimas. Jei x = simboliai('x') pamirštamas, kodas neveiks; prielaidos (teigiamos, tikros) turi įtakos rezultatui (simboliai ('x', teigiamas = tiesa)).
  • Importo trūkumas. Dažna klaida pamirštama importuoti iš sympy import * arba būtinas funkcijas.
Patarimas: norint patikrinti lygybės teisingumą SymPy, labai naudinga išraiška supaprastinti(left_side - right_side) == 0: dvi išraiškos yra identiškos, jei skirtumas supaprastėja iki nulio. Tai yra švariausias būdas patikrinti tapatybę arba AI sukurtą supaprastinimą.

SymPy prielaidos: ta pati išraiška, skirtingas rezultatas

Subtili, bet svarbi SymPy savybė yra jos prielaidų sistema. Apibrėždami simbolį galite suteikti jam savybių: simboliai('x', teigiamas=Tiesa) rodo, kad x yra teigiamas, real=True rodo, kad jis tikras. Šios prielaidos gali pakeisti rezultatą. Pavyzdžiui, išraiška √(x²) išlieka sqrt(x**2), jei nėra prielaidų apie x (nes SymPy atsižvelgia į tai, kad x gali būti neigiamas ir žino, kad jis turi būti |x|); Bet jei x apibrėžiamas kaip teigiamas, rezultatas yra tiesiogiai x. Tai ne klaida, o matematinis griežtumas: √(x²) = |x|, o ne x = x.

Generuodamas SymPy kodą AI dažnai praleidžia šias prielaidas arba daro jas neteisingai. Dėl to AI sukurtas kodas gali neatlikti tokio supaprastinimo, kokio „tikėtės“ – ir tai iš tikrųjų reiškia, kad „SymPy“ veikia tiksliau. Taigi, kai atrodo, kad supaprastinimas „neveikia“, pirmiausia apsvarstykite tikrąsias matematines problemos sąlygas (ar x teigiamas? ar tai realu? ar ji nėra lygi nuliui?) ir pridėkite šias prielaidas prie kodo. Teisingas prielaidas ne tik užtikrina, kad „SymPy“ pateiks teisingą rezultatą, bet ir verčia susimąstyti apie problemos sritį – tai yra matematinio tikslumo dalis.

Atsargiai: SymPy nesugebėjimas „supaprastinti“ išraiškos dažnai yra ne trūkumas, o matematinis griežtumas: kadangi nėra pateiktos reikiamos prielaidos (pozityvumas, tikroviškumas), SymPy turi bendriausią, saugiausią rezultatą. Jei nematote supaprastinimo, kurio tikėjotės, pirmiausia peržiūrėkite simbolių prielaidas.

Apibendrinant

„SymPy“ yra idealus deterministinis įrankis matematinei AI išvesties patvirtinimui. Galingiausia darbo eiga: AI strategija ir aprašymas, SymPy tikslumas. Paprašykite dirbtinio intelekto „SymPy“ kodo, tačiau būtinai paleiskite išvestį patys – AI leidžia manyti, kad kodo išvestis nėra patvirtinama. Jei rezultatai nesutampa, pasitikėkite „SymPy“ ir leiskite dirbtiniam intelektui surasti klaidą. Sutikrinkite tapatybes su supaprastinti(skirtumas) == 0 ir integralus su skirtumu.

Taikymo užduotis

Pasirinkite integralą, lygties sprendimą ir išraiškos supaprastinimą (trys atskiros problemos). Kiekvienam iš jų AI parašykite sprendimą rankiniu būdu, tada SymPy kodą. Vykdykite kodus tikroje Python aplinkoje (vietinis diegimas arba internetinė programa). Palyginkite SymPy išvestis su AI rankiniais rezultatais. Pabandykite rasti bent vieną neatitikimą; Jei radote, tegul AI suras savo klaidą. Atkreipkite dėmesį į procesą.

kontrolinis sąrašas

  • [ ] Kiekvienai problemai gavau ir AI sprendimą, ir SymPy kodą.
  • [ ] SymPy kodą paleidau tikroje Python aplinkoje.
  • [ ] Palyginau rankinį YZ rezultatą su SymPy išvestimi.
  • [ ] Su SymPy patikrinau išvestinę/integralinę atvirkštinę vertę.
  • [ ] Domeną ir prielaidas (teigiamas / tikras) pridėjau rankiniu būdu.
  • [ ] Ginčo metu pasikliaudavau „SymPy“ ir leisdavau dirbtiniam intelektui surasti savo klaidą.