Единица 4 / 11

Симболична пресметка: Контрола на вештачка интелигенција со SymPy

Добивки:

  • Способност да се препознаат основните способности на SymPy (поедноставување, факторизација, решавање равенки, извод, интеграл, ограничување) и да се користи за да се потврди излезот на вештачка интелигенција
  • Способност да се добијат детерминистички и прецизни резултати со печатење на SymPy код на вештачка интелигенција и извршување на самиот код; Разберете дека ако вештачката интелигенција го предвидува излезот на кодот не е потврда
  • Кога резултатот од вештачката интелигенција не се совпаѓа со излезот на SymPy, можноста да се користи SymPy како основа за лоцирање на грешката и рачно додавање суптилности како што се домени.

Најпрактичната и најмоќната алатка на овој модул е ​​во оваа единица: симболичко пресметување и нејзината библиотека Python SymPy. Симболичкото сметање е правење точна математика не со бројки, туку со симболи (променливи како x, y итн.): земање интеграл со неговата точна формула, решавање на равенка со букви, поедноставување на израз. SymPy е библиотека со отворен код, бесплатна и детерминистичка Python која го прави ова - што значи дека секогаш го дава истиот точен точен резултат на истиот влез. Ова го прави идеален за потврдување на излезот со вештачка интелигенција: ВИ дава брзина и увид, SymPy дава прецизност.

Централната идеја на оваа единица е следна: вештачката интелигенција да направи математика, но SymPy да го потврди резултатот. Уште подобро: нека вештачката интелигенција го напише кодот SymPy, ќе го извршите кодот и ќе го добиете конечниот резултат. Така, го елиминирате ризикот од халуцинација на вештачката интелигенција со детерминизмот на SymPy.

Уште една дефиниција: CAS (Computer Algebra System) е општото име дадено на софтверот што изведува симболична математика; SymPy е CAS. Комерцијални примери се Mathematica и Maple, но SymPy е бесплатен и достапен бидејќи работи во Python.

Основните способности на SymPy

SymPy точно го прави следново:

  • Поедноставување: поедноставување (израз) го намалува изразот до неговата наједноставна форма.
  • Факторирање / проширување: фактор () и проширување ().
  • Решавање на равенка: solve(равенка, x) ги дава точните корени на равенката.
  • Извод: diff(expr, x).
  • Интеграл: integrate(expr, x) (неопределен) или integrate(expr, (x, a, b)) (definite).
  • Ограничување: ограничување (израз, x, точка).
  • Серијата значи: серија (израз, x, 0, n).
  • Матрични операции, системи на равенки, диференцијални равенки и друго.

Чекор по чекор: Работен тек за валидација на AI + SymPy

1. Вештачката интелигенција нека го реши проблемот. Добијте чекор по чекор решение и конечен резултат.

2. Нека AI го напише SymPy кодот за истиот проблем. Кажете „Напишете код што го потврдува овој резултат со SymPy“.

3. Извршете го кодот сами. Не дозволувајте вештачката интелигенција да го „предвиди“ излезот на кодот - тоа би било халуцинација. Стартувај го кодот во вистинска Python околина.

4. Споредете ги двата резултати. Ако резултатот пронајден рачно од AI и излезот SymPy се исти, довербата се зголемува; ако е различно, грешката е во AI (доверете го SymPy).

5. Ако има разлика, пронајдете ја грешката. Кажете му на вештачката интелигенција: „SymPy го даде ова, вашиот резултат е различен; најдете ја вашата грешка“.

Внимание: Ако земете код од вештачката интелигенција и прашате „што произведува овој код? Прашањето за вештачката интелигенција“ НЕ е потврда - затоа што вештачката интелигенција може да го сочинува и излезот на кодот. Погрижете се да го извршите кодот во вистинска околина на Python (локална инсталација, Jupyter или онлајн тркач на Python). Моќта на SymPy се открива кога ќе се изврши.

Рачно решение за вештачка интелигенција итн. SymPy — споредба

карактеристика

Рачно решение со вештачка интелигенција

SymPy

брзина

многу брзо

брзо

прецизност

Без гаранција (халуцинации)

Детерминистички, сигурно

Објаснете ги чекорите

добро

Слаб (ориентиран кон резултати)

Интуиција/стратегија

добро

Никој

Подобност за верификација

бр

Да

Најдобра комбинација: ВИ за објаснување и стратегија, SymPy за прецизност.

три мини футроли

Случај 1 - Интегрално несовпаѓање. Еден ученик праша AI ∫ x/(x²+1) dx. YZ даде (1/2)·ln(x²+1) + C. Ученикот истрча integrate(x/(x**2+1), x); SymPy го врати дневникот (x**2 + 1)/2. Тие беа исти - целосна доверба. Тогаш контролата на изводите беше направена и со diff; Се врати на x/(x²+1). Тројна потврда, 3 минути.

Случај 2 - Грешка при поедноставување. Наставникот имал ВИ да го поедностави изразот (x²−1)/(x−1); YZ рече x+1 (точно, но го изостави условот x≠1). SymPy simplify((x**2-1)/(x-1)) исто така даде x+1, но наставникот рачно го додаде ограничувањето на доменот (недефинирано на x=1). Лекција: Дури и SymPy понекогаш не ја нагласува финесата на доменот; човекот додава математички контекст.

Случај 3 — Систем на равенки. Еден инженер му наложил на вештачката интелигенција да реши систем на линеарни равенки со 3 непознати и направил грешка во една променлива. SymPy со solve([равенки], [x, y, z]) го даде точното решение; З вредноста на вештачката интелигенција беше погрешна. Инженерот го зеде резултатот од SymPy и побара од вештачката интелигенција да ја најде грешката: грешка во знакот. Се реши за 4 минути.

Четири шаблони за копирање

1) Барање код за потврда на SymPy од YZ:

Го решивте следниот проблем: [проблем], вашиот резултат е [резултат]. Сега напишете извршна шифра на SymPy што ГО ПОВЕРДИ овој резултат. Нека кодот ги дефинира симболите, пресметајте го резултатот и испечатете го. Не го погодувајте излезот од кодот; Јас ќе го водам.

2) Решение од нула со SymPy:

Напишете Python код кој го решава следниот проблем со SymPy: [проблем]. Додадете ги потребните увезувања, дефиниции на симболи и отпечатоци. Напишете што произведува кодот; Само дај ми го кодот и јас ќе го стартувам. Додадете краток коментар на секоја линија код.

3) Поправете ја вештачката интелигенција со излезот SymPy:

Рековте [резултат], но SymPy го даде ова: [SymPy излез]. Двете се различни. Бидејќи SymPy е детерминистички, прифатете го како точен. Откријте КОЈ чекор сте згрешиле во вашето решение и покажете го.

4) Извод/интегрален код за вкрстена проверка:

Го земавте следниот интеграл: ∫ [f(x)] dx = [F(x)]. За да го потврдите ова, напишете код во SymPy кој го зема ДЕРИВАТОТ на F(x) и проверува дали е еднаков на f(x) (со логиката на simplify(diff(F)-f) == 0). Само дајте го кодот.

Слаб промпт / Силен промпт

Слабо: "Што е ∫ sin²(x) dx? Проверете и со SymPy и напишете го излезот."
Резултат: AI одговара и на одговорот и на „излезот SymPy“; И двете изгледаат конзистентни, но ниту едно не е потврдено. Лажна самодоверба.
Силно: "Напиши извршна SymPy код за ∫ sin²(x) dx (увези, симбол, интегрира, печати). Не го пишуваш излезот - ќе го извршам и ќе видам.
Резултат: го извршувате кодот и го гледате точниот излез на SymPy; верификацијата станува реална.

Вообичаени грешки

  • Имајќи ја вештачката интелигенција да го предвиди излезот на кодот. Ова не е валидација; ВИ може да одговара и на излезот. Ја извршуваш шифрата.
  • Прифаќање на резултатот SymPy без да го прочитате. Излезниот формат на SymPy понекогаш е невообичаен (на пр. log = природен логаритам); Знајте да толкувате.
  • Заборавајќи го доменот. Поедноставувањето на SymPy не секогаш ги нагласува ограничувањата како што се x≠1; човекот додава контекст.
  • Неточна дефиниција на симболот. Ако x = симболи ('x') се заборави, кодот нема да работи; претпоставките (позитивни, реални) влијаат на резултатот (симболи('x', позитивно=Точно)).
  • Недостаток на увоз. Честа грешка е да заборавите да внесете од sympy import * или неопходни функции.
Совет: За да се провери точноста на еднаквоста во SymPy, изразот simplify(left_side - right_side) == 0 е многу корисен: два изрази се идентични ако разликата се поедностави на нула. Ова е најчистиот начин да се потврди идентитетот или поедноставувањето произведено од вештачката интелигенција.

Претпоставки на SymPy: ист израз, различен резултат

Суптилна, но важна карактеристика на SymPy е неговиот систем за претпоставки. Кога дефинирате симбол, можете да му дадете својства: симболите('x', positive=True) означува дека x е позитивен, real=True означува дека е реален. Овие претпоставки може да го променат исходот. На пример, изразот √(x²) останува sqrt(x**2) ако нема претпоставки за x (бидејќи SymPy зема предвид дека x може да биде негативен и знае дека мора да биде |x|); Но, ако x се дефинира како позитивен, резултатот е директно x. Ова не е грешка, туку математичка строгост: √(x²) = |x|, не x = x.

Вештачката интелигенција често ги испушта или погрешно ги претпоставува овие претпоставки кога генерира SymPy код. Како резултат на тоа, кодот што го произведува вештачката интелигенција можеби нема да го направи поедноставувањето што го „очекувате“ - и тоа всушност значи дека SymPy се однесува попрецизно. Значи, кога се чини дека поедноставувањето „не функционира“, прво земете ги во предвид вистинските математички услови на проблемот (дали x е позитивен? дали е реално? дали е ненула?) и додајте ги тие претпоставки во кодот. Правилните претпоставки не само што гарантираат дека SymPy го враќа точниот резултат, туку и ве принудува да размислувате за доменот на проблемот - што е дел од математичката точност.

Внимание: Неуспехот на SymPy да „поедностави“ израз често не е недостаток, туку прашање на математичка строгост: бидејќи не се дадени неопходните претпоставки (позитивност, реализам), SymPy го има најопштиот, најбезбедниот резултат. Ако не го гледате поедноставувањето што го очекувате, прво прегледајте ги претпоставките за симболот.

Сумирано

SymPy е идеална детерминистичка алатка за потврдување на математичкиот излез на вештачката интелигенција. Најмоќниот работен тек: стратегија и опис на вештачката интелигенција, прецизност на SymPy. Прашајте ја вештачката интелигенција за SymPy код, но не заборавајте да го извршите излезот сами - правејќи ја вештачката интелигенција да погоди дека излезот на кодот не е валидација. Ако резултатите не се совпаѓаат, верувајте во SymPy и оставете ја вештачката интелигенција да ја пронајде грешката. Вкрстете ги идентитетите со поедноставување(разлика) == 0 и интеграли со diff.

Задача за апликација

Изберете интеграл, решение за равенка и поедноставување на изразот (три посебни задачи). За секој, нека вештачката интелигенција рачно го напише решението, а потоа кодот SymPy. Стартувај ги кодовите во вистинска Python околина (локална инсталација или онлајн тркач). Споредете ги излезите на SymPy со рачните резултати на вештачката интелигенција. Обидете се да најдете барем едно несовпаѓање; Ако го најдете, нека вештачката интелигенција ја најде својата грешка. Забележете го процесот.

листа за проверка

  • [ ] Го добив и решението за вештачка интелигенција и кодот SymPy за секој проблем.
  • [ ] Го извршив кодот SymPy во вистинска Python околина.
  • [ ] Го споредив рачниот резултат YZ со излезот SymPy.
  • [ ] Вкрстено го проверив дериватот/интегралниот инверзен со SymPy.
  • [ ] Рачно ги додадов доменот и претпоставките (позитивни/реални).
  • [ ] Во спорот, се потпирав на SymPy и вештачката интелигенција ја најде својата грешка.