Vienība 4 / 11

Simbolisks aprēķins: mākslīgā intelekta kontrole ar SymPy

Ieguvumi:

  • Spēja atpazīt SymPy galvenās iespējas (vienkāršošana, faktorizācija, vienādojumu risināšana, atvasinājums, integrālis, ierobežojums) un izmantot to, lai apstiprinātu AI izvadi
  • Spēja iegūt deterministiskus un precīzus rezultātus, izdrukājot SymPy kodu mākslīgajam intelektam un palaižot pašu kodu; Saprotiet, ka mākslīgā intelekta prognozētā koda izvade nav pārbaude
  • Ja mākslīgā intelekta rezultāts neatbilst SymPy izvadei, iespēja izmantot SymPy kā pamatu, lai atrastu kļūdu un manuāli pievienotu smalkumus, piemēram, domēnus.

Vispraktiskākais un jaudīgākais šī moduļa rīks ir šajā vienībā: simboliskā aprēķins un tā Python bibliotēka SymPy. Simboliskais aprēķins ir precīzas matemātikas veikšana nevis ar skaitļiem, bet ar simboliem (mainīgiem, piemēram, x, y utt.): ņem integrāli ar tā precīzu formulu, atrisina vienādojumu ar burtiem, vienkāršo izteiksmi. SymPy ir atvērtā pirmkoda, bezmaksas un deterministiska Python bibliotēka, kas to dara — tas nozīmē, ka tā vienmēr sniedz vienu un to pašu precīzu rezultātu vienai un tai pašai ievadei. Tas padara to ideāli piemērotu AI izvades apstiprināšanai: AI nodrošina ātrumu un ieskatu, SymPy nodrošina precizitāti.

Šīs vienības galvenā ideja ir šāda: AI veic aprēķinu, bet SymPy apstiprina rezultātu. Vēl labāk: lieciet AI ierakstīt SymPy kodu, jūs palaist kodu un iegūstiet gala rezultātu. Tātad jūs novēršat AI halucināciju risku, izmantojot SymPy determinismu.

Vēl viena definīcija: CAS (Computer Algebra System) ir vispārīgs nosaukums programmatūrai, kas veic simbolisku matemātiku; SymPy ir CAS. Komerciālie piemēri ir Mathematica un Maple, bet SymPy ir bezmaksas un pieejams, jo tas darbojas Python.

SymPy galvenās iespējas

SymPy precīzi veic šādas darbības:

  • Vienkāršošana: vienkāršot(izteiksme) samazina izteiksmi tās vienkāršākajā formā.
  • Faktorings/paplašināšana: factor() un expand().
  • Vienādojuma atrisināšana: atrisināt(vienādojums, x) sniedz precīzas vienādojuma saknes.
  • Atvasinājums: diff(ekspr, x).
  • Integrāls: integrēt(ekspr, x) (nenoteikts) vai integrēt(ekspr, (x, a, b)) (noteikts).
  • Ierobežojums: ierobežojums (izteiksme, x, punkts).
  • Series apzīmē: sērija(izteiksme, x, 0, n).
  • Matricas operācijas, vienādojumu sistēmas, diferenciālvienādojumi un daudz kas cits.

Soli pa solim: AI + SymPy validācijas darbplūsma

1. Lieciet AI atrisināt problēmu. Iegūstiet soli pa solim risinājumu un gala rezultātu.

2. Lieciet AI rakstīt SymPy kodu tai pašai problēmai. Sakiet "Write code, kas verificē šo rezultātu, izmantojot SymPy".

3. Palaidiet kodu pats. Neļaujiet AI "paredzēt" koda izvadi - tas būtu halucinācijas. Palaidiet kodu reālā Python vidē.

4. Salīdziniet abus rezultātus. Ja AI un SymPy izvades manuāli atrastais rezultāts ir vienāds, pārliecība palielinās; ja atšķiras, kļūda ir AI (uzticieties SymPy).

5. Ja ir atšķirība, atrodiet kļūdu. Pastāstiet AI: "SymPy deva to, jūsu rezultāts ir atšķirīgs; atrodiet savu kļūdu."

Uzmanību: ja paņemat kodu no AI un jautājat "ko šis kods rada?" AI jautāšana NAV verifikācija, jo AI var arī izveidot koda izvadi. Noteikti palaidiet kodu reālā Python vidē (lokālā instalācija, Jupyter vai tiešsaistes Python runner). SymPy jauda tiek atklāta, kad tas tiek palaists.

AI manuālais risinājums utt. SymPy — salīdzinājums

funkciju

AI manuāls risinājums

SymPy

ātrumu

ļoti ātri

ātri

precizitāte

Nav garantijas (halucinācijas)

Deterministiski, noteikti

Izskaidrojiet darbības

labi

Vājš (orientēts uz rezultātiem)

Intuīcija/stratēģija

labi

Nav

Tiesības verifikācijai

Labākā kombinācija: AI skaidrojumam un stratēģijai, SymPy precizitātei.

trīs mini futrāļi

1. gadījums — integrālā neatbilstība. Students jautāja AI ∫ x/(x²+1) dx. YZ deva (1/2)·ln(x²+1) + C. Students palaida integrate(x/(x**2+1), x); SymPy atgrieza žurnālu(x**2 + 1)/2. Viņi bija vienādi - pilnīga uzticēšanās. Tad arī atvasinājuma kontrole tika veikta ar diff; Tas ir atpakaļ uz x/(x²+1). Trīskāršs apstiprinājums, 3 minūtes.

2. gadījums — vienkāršošanas kļūda. Skolotājs lika AI vienkāršot izteiksmi (x²−1)/(x−1); YZ teica x+1 (pareizi, bet izlaida nosacījumu x≠1). SymPy simplify((x**2-1)/(x-1)) arī deva x+1, bet skolotājs manuāli pievienoja domēna ierobežojumu (nedefinēts pie x=1). Nodarbība: pat SymPy dažreiz neuzsver domēna smalkumu; cilvēks pievieno matemātisko kontekstu.

3. gadījums — vienādojumu sistēma. Inženieris lika AI atrisināt lineāru vienādojumu sistēmu ar 3 nezināmajiem un pieļāva kļūdu vienā mainīgajā. SymPy ar solve([vienādojumi], [x, y, z]) sniedza precīzu risinājumu; AI z vērtība bija nepareiza. Inženieris paņēma SymPy rezultātu un lika AI atrast kļūdu: zīmes kļūdu. Tas tika atrisināts 4 minūtēs.

Četras kopējamas veidnes

1) SymPy verifikācijas koda pieprasīšana no YZ:

Jūs atrisinājāt šādu problēmu: [problēma], jūsu rezultāts ir [rezultāts]. Tagad uzrakstiet SymPy izpildāmo kodu, kas PĀRBAUDI šo rezultātu. Ļaujiet kodam definēt simbolus, aprēķināt rezultātu un izdrukāt to. Neuzmini koda izvadi; Es to vadīšu.

2) Risinājums no nulles ar SymPy:

Uzrakstiet Python kodu, kas atrisina šādu problēmu ar SymPy: [problēma]. Pievienojiet nepieciešamos importus, simbolu definīcijas un izdrukas. Uzrakstiet, ko kods rada; Vienkārši iedodiet man kodu, un es to izpildīšu. Katrai koda rindiņai pievienojiet īsu komentāru.

3) Labojiet AI ar SymPy izvadi:

Jūs teicāt [rezultāts], bet SymPy sniedza šo: [SymPy izvade]. Tie divi ir atšķirīgi. Tā kā SymPy ir deterministisks, pieņemiet to kā pareizu. Noskaidro, KURĀ solī esi kļūdījies savā risinājumā un parādi to.

4) Atvasinātais/integrālais savstarpējās pārbaudes kods:

Jūs izmantojāt šādu integrāli: ∫ [f(x)] dx = [F(x)]. Lai to pārbaudītu, ierakstiet kodu SymPy, kas ņem F(x) ATvasinājumu un pārbauda, ​​vai tas ir vienāds ar f(x) (ar loģiku vienkāršot(diff(F)-f) == 0). Vienkārši dodiet kodu.

Vāja uzvedne / spēcīga uzvedne

Vāji: "Kas ir ∫ sin²(x) dx? Pārbaudiet arī ar SymPy un ierakstiet izvadi."
Rezultāts: AI atbilst gan atbildei, gan "SymPy izvadei"; Abi šķiet konsekventi, taču neviens no tiem nav apstiprināts. Viltus pārliecība.
Strong: "Rakstiet izpildāmu SymPy kodu ∫ sin²(x) dx (importēt, simbols, integrēt, drukāt). Jūs nerakstiet izvadi — es to izpildīšu un redzēsim. Pievienojiet arī rindiņu, kas pārbauda, ​​lai atšķirtu rezultātu un atgrieztu to sin²(x)."
Rezultāts: palaižat kodu un redzat precīzu SymPy izvadi; pārbaude kļūst reāla.

Biežas kļūdas

  • Liekot AI paredzēt koda izvadi. Tā nav apstiprināšana; AI var arī pielāgot izvadi. Jūs palaižat kodu.
  • SymPy rezultāta pieņemšana, to neizlasot. SymPy izvades formāts dažkārt ir neparasts (piemēram, log = dabisks logaritms); Zināt, kā interpretēt.
  • Aizmirstot domēnu. SymPy vienkāršošana ne vienmēr uzsver ierobežojumus, piemēram, x≠1; cilvēks pievieno kontekstu.
  • Nepareiza simbola definīcija. Ja x = simboli ('x') ir aizmirsts, kods nedarbosies; pieņēmumi (pozitīvs, reāls) ietekmē rezultātu (simboli ('x', pozitīvs = patiess)).
  • Importa trūkums. Izplatīta kļūda ir aizmirst importēt no sympy import * vai nepieciešamās funkcijas.
Padoms. Lai pārbaudītu SymPy vienādības pareizību, ļoti noderīga ir izteiksme vienkāršot(left_side - right_side) == 0: divas izteiksmes ir identiskas, ja atšķirība vienkāršojas līdz nullei. Tas ir tīrākais veids, kā pārbaudīt AI radīto identitāti vai vienkāršojumu.

SymPy pieņēmumi: viena un tā pati izteiksme, atšķirīgs rezultāts

Smalka, bet svarīga SymPy iezīme ir tās pieņēmumu sistēma. Definējot simbolu, varat piešķirt tam īpašības: simboli ('x', pozitīvs = True) norāda, ka x ir pozitīvs, real=True norāda, ka tas ir reāls. Šie pieņēmumi var mainīt rezultātu. Piemēram, izteiksme √(x²) paliek sqrt(x**2), ja nav pieņēmumu par x (jo SymPy ņem vērā, ka x var būt negatīvs un zina, ka tam jābūt |x|); Bet, ja x ir definēts kā pozitīvs, rezultāts ir tieši x. Tā nav kļūda, bet gan matemātiska stingrība: √(x²) = |x|, nevis x = x.

AI bieži izlaiž vai nepareizi pieņem šos pieņēmumus, ģenerējot SymPy kodu. Rezultātā mākslīgā intelekta radītais kods var neatbilst jūsu gaidītajam vienkāršojumam, un tas faktiski nozīmē, ka SymPy darbojas precīzāk. Tātad, ja šķiet, ka vienkāršošana "nedarbojas", vispirms apsveriet problēmas faktiskos matemātiskos nosacījumus (vai x ir pozitīvs? vai tas ir reāls? vai tas nav nulle?) un pievienojiet šos pieņēmumus kodam. Pareizi pieņēmumi nodrošina ne tikai to, ka SymPy atgriež pareizo rezultātu, bet arī liek domāt par problēmas jomu, kas ir daļa no matemātiskās precizitātes.

Uzmanību: SymPy nespēja "vienkāršot" izteiksmi bieži vien nav trūkums, bet gan matemātiskas stingrības jautājums: tā kā nav sniegti nepieciešamie pieņēmumi (pozitivitāte, reālisms), SymPy ir vispārīgākais un drošākais rezultāts. Ja neredzat gaidīto vienkāršojumu, vispirms pārskatiet simbolu pieņēmumus.

Rezumējot

SymPy ir ideāls deterministisks rīks AI matemātiskās izvades apstiprināšanai. Jaudīgākā darbplūsma: stratēģija un apraksts AI, precizitāte SymPy. Jautājiet AI SymPy kodu, taču noteikti palaidiet izvadi pats — liekot AI uzminēt, ka koda izvade nav validācija. Ja rezultāti nesakrīt, uzticieties SymPy un ļaujiet AI atrast kļūdu. Salīdziniet identitātes ar vienkāršotu(atšķirību) == 0 un integrāļus ar atšķirību.

Lietojumprogrammas uzdevums

Izvēlieties integrāli, vienādojuma risinājumu un izteiksmes vienkāršošanu (trīs atsevišķas problēmas). Katram no tiem AI rakstiet risinājumu manuāli, pēc tam SymPy kodu. Palaidiet kodus reālā Python vidē (lokālā instalācija vai tiešsaistes skrējējs). Salīdziniet SymPy izvades ar AI manuālajiem rezultātiem. Mēģiniet atrast vismaz vienu neatbilstību; Ja jūs to atrodat, ļaujiet AI atrast savu kļūdu. Ievērojiet procesu.

kontrolsaraksts

  • [ ] Katrai problēmai es saņēmu gan AI risinājumu, gan SymPy kodu.
  • [ ] Es palaižu SymPy kodu reālā Python vidē.
  • [ ] Es salīdzināju YZ manuālo rezultātu ar SymPy izvadi.
  • [ ] Es salīdzināju atvasinājumu/integrāļa apgriezto vērtību ar SymPy.
  • [ ] Es pievienoju domēnu un pieņēmumus (pozitīvus/reālus) manuāli.
  • [ ] Strīdā es paļāvos uz SymPy un liku AI atrast savu kļūdu.