Toate lecțiileLecția 1 · Setup și ce e AI▾
Firesc, prima întrebare e ce înseamnă mai exact inteligența artificială. Cu atâta confuzie în jurul termenului, e important să clarificăm întâi asta și abia apoi să pregătim mediul de lucru.
Ce e AI și unde se folosește
La bază, inteligența artificială înseamnă orice tehnologie care simulează funcții umane. De cele mai multe ori, în loc să urmeze reguli stricte, îi arăți mai multe exemple și o lași să găsească singură regulile, prin diverși algoritmi. Nu e ceva magic, ChatGPT nu „gândește". Partea asta, de învățat din exemple, se numește machine learning și reprezintă aproape tot ce faci la olimpiadă.
În sfera AI merită menționată și o anumită terminologie. Data science înseamnă să scoți informație utilă din date, cu ajutorul matematicii (mai ales al statisticii) și al informaticii. Matematica e baza și se folosește în absolut tot ce vom face, dar nu trebuie neapărat învățată în detaliu ca să rezolvi probleme sau să faci proiecte. Anumiți algoritmi clasici de informatică sunt și ei folosiți, BFS și DFS de exemplu, în anumite arii ale AI-ului. Machine learningul, menționat mai sus, se împarte la rândul lui în mai multe categorii: învățare supervizată, nesupervizată, reinforcement learning și, uneori, self-supervised.
Poate ajuta câteva exemple. Ca să deosebești un email spam de unul normal cu reguli scrise de mână, ar trebui să scrii sute de condiții de tipul „dacă conține cuvântul X". Cu machine learning, îi dai câteva mii de emailuri deja marcate ca spam sau nu, iar modelul învață singur ce combinații de cuvinte prezic spamul. Câteva taskuri clasice de AI includ, dar nu se limitează la:
- Clasificare: pui o etichetă (spam sau nu, ce cifră e în imagine, pentru ce boală sunt specifice simptomele).
- Regresie: prezici un număr (prețul unei case, temperatura de mâine).
- Clustering: găsești structura din date fără etichete (ce clienți seamănă între ei).
Importante mai sunt și conceptele de overfitting, underfitting, bias și varianță. Un model care a învățat pe de rost datele de antrenament, inclusiv zgomotul din ele, merge aproape perfect pe ce a văzut și slab pe date noi: asta e overfitting. La capătul opus, un model prea simplu pentru problemă nu prinde nici măcar tiparul real și greșește peste tot, și pe antrenament, și pe test: asta e underfitting.
Cele două se explică prin bias și varianță. Biasul e eroarea din presupuneri prea simple, cum ar fi să tragi o dreaptă prin date care descriu de fapt o curbă. Varianța e sensibilitatea la datele exacte pe care s-a antrenat: schimbi puțin setul de antrenament și modelul dă cu totul alte predicții. Bias mare înseamnă underfitting, varianță mare înseamnă overfitting, iar scăderea unuia îl crește de obicei pe celălalt. Tot ce faci la olimpiadă, de la cât de complex alegi modelul până la cât de mult îl antrenezi, e de fapt căutarea punctului de echilibru dintre ele.
Ce e Python și de ce el
Python e limbajul standard în care se scrie cod de inteligență artificială. Nu pentru că ar fi cel mai rapid, ci pentru că e puternic abstractizat și are deja scrise bibliotecile pe care le vrei, eventual în limbaje mai rapide: NumPy pentru calcul numeric, Pandas pentru tabele, scikit-learn pentru modele clasice, PyTorch pentru rețele neuronale.
O bibliotecă e cod scris de altcineva, pe care îl imporți și îl folosești. La taskuri de AI scopul nu e să înveți pe de rost cum se scriu algoritmii sau modelele, ci să le înțelegi, să știi când se folosesc și să le adaptezi la problema respectivă, împreună cu alte metode.
Mediul de lucru: Python, pip și Jupyter Lab
Înainte să scrii cod, ai nevoie de trei lucruri instalate pe calculator: Python, pip (care vine automat cu el) și Jupyter Lab. Jupyter Lab, VS Code și Google Colab sunt medii în care poți scrie notebookuri de Python, care îți permit să scrii codul pe bucăți și să îl execuți modular.
- Windows: intră pe python.org/downloads, descarcă versiunea 3.11 și rulează instalatorul. La primul ecran bifează „Add python.exe to PATH" înainte de Install Now, altfel terminalul nu va găsi Python după instalare.
- macOS: descarcă tot de pe python.org/downloads fișierul .pkg și parcurge instalatorul. Dacă ai deja Homebrew, merge la fel de bine
brew install python@3.11. - Linux (Ubuntu/Debian): deschide un terminal și rulează
sudo apt update && sudo apt install python3 python3-pip python3-venv.
Pip vine inclus cu Python începând din versiunea 3.4, deci nu-l instalezi separat. Ca să confirmi că merg amândouă, deschide un terminal (Command Prompt sau PowerShell pe Windows, Terminal pe macOS și Linux) și rulează:
python --version
pip --versionPe Windows, dacă python nu e recunoscut, încearcă py --version; dacă nici pip nu răspunde, încearcă pip3 sau python -m pip --version.
Cu Python instalat, treci la mediul de lucru propriu-zis. Un mediu virtual e o cutie separată pentru bibliotecile unui proiect, ca să nu se bată cap în cap cu altele instalate global. Îl creezi o dată pe proiect și lucrezi mereu în el.
- 01Deschide un terminal în folderul unde lucrezi.
- 02Creează mediul virtual cu
python -m venv .venv, apoi activează-l:.venv\Scripts\activatepe Windows,source .venv/bin/activatepe macOS și Linux. Activarea o repeți de fiecare dată când deschizi un terminal nou. - 03Scrie
pip install jupyterlabși apasă Enter. - 04Scrie
jupyter labși apasă Enter: ți se deschide automat un tab de browser cu interfața.
La concurs
La olimpiadă lucrezi pe calculatoarele centrului de concurs, cu Windows, JupyterLab, Python 3.11 și Firefox. În sală nu ai voie cu notițe sau cărți, iar pe internet ai acces doar la platforma de concurs și la documentația oficială a limbajului și a pachetelor permise, de exemplu docs.python.org, numpy.org/doc, pandas.pydata.org/docs sau scikit-learn.org. Lista exactă o anunță comisia.
De asta merită să te obișnuiești de acum să cauți în documentație, nu pe Google. Ai ajutor și direct în notebook: scrii numele unei funcții urmat de ?, de exemplu pd.read_csv?, sau apeși Shift+Tab între parantezele ei și vezi ce argumente primește.
- Prima submisie pe MLCompete
- Caută în documentația pandas ce face argumentul sep din read_csv, fără Google