Kitengo 4 / 11

Hesabu ya Alama: Kudhibiti Akili Bandia kwa SymPy

Faida:

  • Uwezo wa kutambua uwezo wa msingi wa SymPy (kurahisisha, uanzishaji, utatuzi wa equation, derivative, muhimu, kikomo) na utumie kuhalalisha pato la AI.
  • Uwezo wa kupata matokeo ya kuamua na sahihi kwa kuchapisha msimbo wa SymPy kwa akili ya bandia na kuendesha msimbo yenyewe; Elewa kuwa kuwa na matokeo ya nambari iliyotabiriwa na akili ya bandia sio uthibitishaji
  • Wakati matokeo ya akili bandia hayalingani na matokeo ya SymPy, uwezo wa kutumia SymPy kama msingi wa kupata hitilafu na kuongeza hila mwenyewe kama vile vikoa.

Zana ya vitendo na yenye nguvu zaidi ya moduli hii iko katika kitengo hiki: hesabu ya ishara na maktaba yake ya Python SymPy. Hesabu ya ishara inafanya hesabu halisi si kwa nambari bali kwa alama (vigeu kama x, y, n.k.): kuchukua muunganisho na fomula yake halisi, kutatua mlingano na herufi, kurahisisha usemi. SymPy ni maktaba ya Python ya chanzo-wazi, ya bure, na ya kuamua ambayo hufanya hivi - ikimaanisha kuwa kila wakati hutoa matokeo sawa sawa kwa ingizo sawa. Hii inafanya kuwa bora kwa kuhalalisha pato la AI: AI inatoa kasi na ufahamu, SymPy inatoa usahihi.

Wazo kuu la kitengo hiki ni hili: fanya AI ifanye hesabu, lakini SymPy ithibitishe matokeo. Bora zaidi: Acha AI aandike nambari ya SymPy, unaendesha nambari na kupata matokeo ya mwisho. Kwa hivyo unaondoa hatari ya kuona ya AI na uamuzi wa SymPy.

Ufafanuzi mmoja zaidi: CAS (Mfumo wa Aljebra wa Kompyuta) ni jina la jumla linalopewa programu ambayo hufanya hisabati ya ishara; SymPy ni CAS. Mifano ya kibiashara ni Mathematica na Maple, lakini SymPy ni bure na inapatikana kwa sababu inaendeshwa katika Python.

Uwezo wa msingi wa SymPy

SymPy hufanya yafuatayo kwa usahihi:

  • Kurahisisha: kurahisisha(maneno) hupunguza usemi kwa umbo lake rahisi zaidi.
  • Kuunda / kupanua: sababu () na kupanua ().
  • Kutatua equation: solve(equation, x) inatoa mizizi halisi ya equation.
  • Nyingine: diff(expr, x).
  • Muunganisho: unganisha(expr, x) (isiyojulikana) au unganisha(expr, (x, a, b)) (dhahiri).
  • Kikomo: kikomo (maneno, x, nukta).
  • Mfululizo unasimama kwa: mfululizo (maneno, x, 0, n).
  • Operesheni za matrix, mifumo ya milinganyo, milinganyo tofauti na zaidi.

Hatua kwa hatua: Mtiririko wa uthibitishaji wa AI + SymPy

1. Kuwa na AI kutatua tatizo. Pata suluhisho la hatua kwa hatua na matokeo ya mwisho.

2. Kuwa na AI kuandika code SymPy kwa tatizo sawa. Sema "Andika msimbo unaothibitisha matokeo haya kwa SymPy."

3. Endesha msimbo mwenyewe. Usiruhusu AI "kutabiri" matokeo ya nambari - hiyo itakuwa ndoto. Endesha msimbo katika mazingira halisi ya Python.

4. Linganisha matokeo mawili. Ikiwa matokeo yanayopatikana kwa mikono na AI na pato la SymPy ni sawa, ujasiri huongezeka; ikiwa ni tofauti, kosa liko kwenye AI (trust SymPy).

5. Ikiwa kuna tofauti, pata kosa. Mwambie AI, "SymPy alitoa hii, matokeo yako ni tofauti; pata kosa lako."

Tahadhari: Ikiwa unachukua nambari kutoka kwa AI na kuuliza "msimbo huu hutoa nini?" Kuuliza AI ​​“ SI uthibitishaji — kwa sababu AI inaweza pia kutengeneza msimbo wa kutoa. Hakikisha kuwa umetumia msimbo katika mazingira halisi ya Chatu (usakinishaji wa ndani, Jupyter, au kikimbiaji cha Chatu mtandaoni). Nguvu ya SymPy hufichuliwa inapoendeshwa.

Ufumbuzi wa mwongozo wa AI nk. SymPy - kulinganisha

kipengele

Suluhisho la mwongozo la AI

SymPy

kasi

haraka sana

haraka

usahihi

Hakuna dhamana (hallucination)

Kuamua, hakika

Eleza hatua

nzuri

Dhaifu (matokeo yanayoelekezwa)

Intuition/mkakati

nzuri

Hakuna

Kustahiki kwa uthibitishaji

hapana

Ndiyo

Mchanganyiko bora: AI kwa maelezo na mkakati, SymPy kwa usahihi.

kesi tatu ndogo

Kesi ya 1 - Kutolingana kabisa. Mwanafunzi aliuliza AI ∫ x/(x²+1) dx. YZ alitoa (1/2)·ln(x²+1) + C. Mwanafunzi alikimbia kuunganisha(x/(x**2+1), x); SymPy ilirejesha kumbukumbu (x**2 + 1)/2. Walikuwa sawa - uaminifu kamili. Kisha udhibiti wa derivative pia ulifanyika na tofauti; Imerudi kwa x/(x²+1). Uthibitisho mara tatu, dakika 3.

Kesi ya 2 - Hitilafu ya kurahisisha. Mwalimu aliwezesha AI kurahisisha usemi (x²−1)/(x-1); YZ alisema x+1 (sahihi lakini aliacha hali x≠1). SymPy kurahisisha((x**2-1)/(x-1)) pia ilitoa x+1, lakini mwalimu aliongeza kikwazo cha kikoa (kisichobainishwa katika x=1). Somo: Hata SymPy wakati mwingine haisisitizi faini ya kikoa; binadamu huongeza muktadha wa hisabati.

Kesi ya 3 - Mfumo wa milinganyo. Mhandisi alikuwa na AI kusuluhisha mfumo wa hesabu za mstari na 3 zisizojulikana na alifanya makosa katika kutofautisha moja. SymPy with solve([equations], [x, y, z]) ilitoa suluhisho kamili; Thamani ya z ya AI haikuwa sahihi. Mhandisi alichukua matokeo ya SymPy na kufanya AI ipate mdudu: kosa la ishara. Ilitatuliwa kwa dakika 4.

Violezo vinne vinavyoweza kunakiliwa

1) Kuomba nambari ya uthibitishaji ya SymPy kutoka kwa YZ:

Ulitatua tatizo lifuatalo: [tatizo], matokeo yako ni [matokeo]. Sasa andika msimbo wa kutekelezwa wa SymPy ambao UNATHIBITISHA matokeo haya. Hebu msimbo ufafanue alama, uhesabu matokeo na uchapishe. Usikisie matokeo ya nambari; Nitaiendesha.

2) Suluhisho kutoka mwanzo na SymPy:

Andika msimbo wa Python ambao unasuluhisha shida ifuatayo na SymPy: [tatizo]. Ongeza uagizaji unaohitajika, ufafanuzi wa alama na vichapisho. Andika nini kanuni hutoa; Nipe tu nambari na nitaiendesha. Ongeza maoni mafupi kwa kila mstari wa msimbo.

3) Rekebisha AI na pato la SymPy:

Ulisema [matokeo], lakini SymPy alitoa hii: [SymPy output]. Wawili hao ni tofauti. Kwa kuwa SymPy ni ya kuamua, ikubali kama sahihi. Jua ni hatua gani ulikosea katika suluhisho lako na uionyeshe.

4) Nambari ya ukaguzi ya derivative/muhimu:

Ulichukua kiungo kifuatacho: ∫ [f(x)] dx = [F(x)]. Ili kuthibitisha hili, andika msimbo katika SymPy ambao unachukua DERIVATIVE ya F(x) na uangalie ikiwa ni sawa na f(x) (pamoja na mantiki ya kurahisisha(diff(F)-f) == 0). Toa tu nambari.

Mwongozo dhaifu / Mwongozo thabiti

Dhaifu: "∫ sin²(x) dx ni nini? Pia angalia na SymPy na uandike matokeo."
Matokeo: AI inafaa jibu na "SymPy pato"; Zote mbili zinaonekana kuwa sawa, lakini hakuna hata mmoja ambaye amethibitishwa. Kujiamini bandia.
Imara: "Andika msimbo wa SymPy unaoweza kutekelezeka kwa ∫ sin²(x) dx (kuagiza, ishara, kuunganisha, kuchapisha). Huandiki matokeo - nitaiendesha na nione. Pia ongeza mstari unaoangalia ili kutofautisha matokeo na kuyarudisha kwa sin²(x)."
Matokeo: Unaendesha nambari na kuona matokeo halisi ya SymPy; uthibitishaji unakuwa halisi.

Makosa ya kawaida

  • Kuwa na AI kutabiri matokeo ya nambari. Huu sio uthibitisho; AI pia inaweza kutoshea pato. Unaendesha msimbo.
  • Kukubali matokeo ya SymPy bila kuisoma. Umbizo la pato la SymPy wakati mwingine si la kawaida (k.m. logi = logarithm asili); Jua jinsi ya kutafsiri.
  • Kusahau kikoa. Urahisishaji wa SymPy hausisitizi vizuizi kila wakati kama vile x≠1; binadamu huongeza muktadha.
  • Ufafanuzi wa ishara usio sahihi. Ikiwa x = alama('x') zimesahauliwa, msimbo hautafanya kazi; dhana (chanya, halisi) huathiri matokeo (alama('x', chanya=Kweli)).
  • Ukosefu wa kuagiza. Ni kosa la kawaida kusahau kuagiza kutoka kwa sympy import * au vitendaji muhimu.
Kidokezo: Ili kuangalia usahihi wa usawa katika SymPy, usemi simplify(left_side - right_side) == 0 ni muhimu sana: misemo miwili inafanana ikiwa tofauti itarahisisha hadi sifuri. Hii ndiyo njia safi zaidi ya kuthibitisha utambulisho au kurahisisha zinazozalishwa na AI.

Mawazo ya SymPy: usemi sawa, matokeo tofauti

Kipengele cha hila lakini muhimu cha SymPy ni mfumo wake wa kudhani. Unapofafanua ishara, unaweza kuipa sifa: symbols('x', positive=True) inaonyesha kuwa x ni chanya, real=True inaonyesha kuwa ni halisi. Mawazo haya yanaweza kubadilisha matokeo. Kwa mfano, usemi √(x²) hubaki sqrt(x**2) ikiwa hakuna dhana kuhusu x (kwa sababu SymPy inazingatia kwamba x inaweza kuwa hasi na inajua lazima iwe |x|); Lakini ikiwa x inafafanuliwa kuwa chanya, matokeo yake ni x moja kwa moja. Hili si kosa, lakini ukali wa kihesabu: √(x²) = |x|, si x = x.

AI mara nyingi huacha au kudhani kimakosa mawazo haya wakati wa kutoa msimbo wa SymPy. Kama matokeo, nambari ambayo AI inazalisha inaweza isifanye urahisishaji "unaotarajia" - na hii inamaanisha kuwa SymPy inatenda kwa usahihi zaidi. Kwa hivyo wakati kurahisisha kunaonekana kuwa "haifanyi kazi," kwanza fikiria hali halisi ya hisabati ya tatizo (ni x chanya? ni kweli? ni nonzero?) na uongeze mawazo hayo kwenye msimbo. Kupata mawazo sawa hakuhakikishi tu kwamba SymPy inarejesha matokeo sahihi, lakini pia hukulazimu kufikiria kuhusu kikoa cha tatizo—ambacho ni sehemu ya usahihi wa kihesabu.

Tahadhari: Kushindwa kwa SymPy "kurahisisha" usemi mara nyingi sio upungufu, lakini suala la ukali wa hisabati: kwa kuwa mawazo muhimu (chanya, uhalisi) hayapewi, SymPy inashikilia matokeo ya jumla zaidi, salama zaidi. Ikiwa huoni kurahisisha unayotarajia, kwanza kagua mawazo ya ishara.

Kwa muhtasari

SymPy ni zana bora ya kubainisha ya kuthibitisha matokeo ya hisabati ya AI. Mtiririko wa kazi wenye nguvu zaidi: mkakati na maelezo kwa AI, usahihi wa SymPy. Uliza AI msimbo wa SymPy, lakini hakikisha unaendesha towe mwenyewe - kufanya AI kudhani kuwa matokeo ya nambari sio uthibitisho. Ikiwa matokeo hayalingani, amini SymPy na uruhusu AI itafute hitilafu. Angalia vitambulisho kwa kurahisisha(tofauti) == 0 na viambajengo vyenye tofauti.

Jukumu la maombi

Chagua muunganisho, suluhu la mlinganyo, na kurahisisha usemi (matatizo matatu tofauti). Kwa kila moja, AI iandike suluhisho kwa mikono, kisha msimbo wa SymPy. Endesha nambari katika mazingira halisi ya Python (usakinishaji wa ndani au mkimbiaji mkondoni). Linganisha matokeo ya SymPy na matokeo ya mwongozo ya AI. Jaribu kupata angalau tofauti moja; Ukiipata, acha AI itafute makosa yake. Kumbuka mchakato.

orodha ya ukaguzi

  • [ ] Nilipokea suluhisho la AI na msimbo wa SymPy kwa kila tatizo.
  • [ ] Niliendesha msimbo wa SymPy katika mazingira halisi ya Python.
  • [ ] Nililinganisha matokeo ya mwongozo ya YZ na matokeo ya SymPy.
  • [ ] Nilikagua kinyume chenye derivative/muhimu na SymPy.
  • [ ] Niliongeza kikoa na mawazo (chanya/halisi) kwa mikono.
  • [ ] Katika mzozo huo, nilitegemea SymPy na kufanya AI ipate makosa yake.