Codul generat cu inteligență artificială (AI) poate fi testat pe date fictive, înainte de a fi folosit local cu informații sensibile. Pentru cercetătorii care lucrează cu tabele clinice sau rezultate experimentale, această abordare permite dezvoltarea analizei fără încărcarea valorilor reale într-un model public. Separarea codului în funcții mici și păstrarea datelor brute într-un director protejat ajută, la rândul lor, la corectarea erorilor și la evitarea suprascrierii fișierelor.
Modelul primește structura tabelului, fără valorile reale
Pregătirea începe cu descrierea datelor. Modelului i se transmit numele coloanelor, tipurile de valori așteptate și dimensiunile tabelului. Tipurile pot fi numere întregi, șiruri de caractere sau numere cu zecimale. Nicio valoare reală nu trebuie inclusă în această descriere.
Pe baza acestor informații, se construiește un set de date fictive cu aceeași structură ca setul original. Modelului i se cere să scrie codul de analiză, să îl testeze și să îi corecteze erorile folosind exclusiv acest înlocuitor. După ce funcționează, codul se copiază într-un mediu local securizat, unde este rulat pe datele protejate.
Precauția răspunde unui risc descris de clinicianul-cercetător într-un articol publicat de Nature (nature.com), pornind din propria experiență de programare. Modelele publice sunt adesea antrenate pe informațiile introduse de utilizatori. Datele sensibile ale pacienților trimise unui model lingvistic găzduit în cloud, adică pe servere externe, ar putea, teoretic, să fie reproduse ulterior într-un răspuns către alt utilizator.
Despre separarea dintre testarea pe date fictive și rularea locală pe cele reale, autorul explică: „Modelul lingvistic nu vede niciodată informațiile sensibile, iar protecția datelor rămâne intactă.”
Metoda de analiză se alege înainte de generarea codului
Instrucțiunea către model trebuie să pornească de la întrebarea științifică. Cercetătorul are nevoie să cunoască metodele disponibile, să înțeleagă în linii mari cum funcționează și să știe când sunt potrivite. Memorarea exactă a sintaxei, regulile după care se scriu instrucțiunile, nu mai este principala dificultate, în experiența autorului.
Exemplele sale sunt gruparea ierarhică a datelor și reorganizarea unui tabel folosind pandas, o bibliotecă de instrumente pentru analiza datelor în limbajul Python. Documentația funcțiilor explică ce operații pot realiza acestea; modelul poate genera instrucțiunile necesare folosirii lor.
La întrebarea dacă mai este necesară învățarea programării, clinicianul-cercetător răspunde: „Răspunsul, după părerea mea, este un «da» categoric. Dar felul în care învățăm trebuie să se schimbe.”
El descrie o schimbare a responsabilității: cercetătorii aflați la început ajung să supravegheze, să evalueze critic și să îmbunătățească un rezultat produs de altcineva, sarcini rezervate în mod tradițional inginerilor software cu experiență. În acest caz, colaboratorul este un asistent automat.
Autorul învățase să programeze pentru a lega observațiile experimentale de analiza computațională. Petrecea ore căutând o virgulă lipsă sau o paranteză nepotrivită și răsfoind forumuri pline de jargon. După ani dedicați funcțiilor pentru combinarea seturilor de date, realizarea figurilor și analiza statistică, folosirea AI îi provocase teama că își va pierde abilitățile.
Potrivit experienței sale, modelele lingvistice avansate și agenții autonomi de inteligență artificială pot genera în câteva secunde analize statistice și vizualizări adaptate datelor. Procesele complexe de prelucrare necesitau altfel zile sau săptămâni de depanare. Despre rolul celui care coordonează construcția analizei, el spune: „Gândind ca un arhitect de sisteme, puteam îndruma sistemul AI către soluții robuste, reproductibile, fără să mă împotmolesc în detalii de sintaxă.”
Funcțiile mici permit izolarea unei erori
Un model capabil să scrie instantaneu sute de linii de cod poate primi cererea de a produce un singur script care preia datele brute, le curăță, calculează statisticile și livrează figura pregătită pentru publicare. Autorul a constatat însă că această construcție este fragilă și greu de depanat.
Schimbarea unei variabile sau inventarea de către model a unui pas intermediar poate compromite întregul proces. Eroarea trebuie apoi căutată într-un bloc mare de cod. Alternativa recomandată este împărțirea lucrului în funcții independente, fiecare cu o sarcină precisă:
- O funcție preia și formatează datele brute.
- O altă funcție normalizează valorile.
- O funcție separată generează reprezentarea vizuală a datelor.
Dacă o transformare eșuează, funcția responsabilă poate fi izolată, examinată și corectată fără a pune în pericol restul procesului. Blocurile independente pot fi refolosite în alte proiecte. Autorul spune că astfel și-a construit o bibliotecă personală de instrumente generate cu AI, pe care se poate baza.
Datele brute se păstrează separat, cu acces doar pentru citire
Generarea mai rapidă a codului înseamnă și acumularea mai rapidă de scripturi, versiuni și rezultate. În proiectele autorului, directoarele deveniseră greu de parcurs, cu fișiere denumite inclusiv analysis_final_v3_really_final.py. Într-un proiect, a suprascris accidental datele brute; avea însă o copie de rezervă.
Exemplul de organizare recomandat este Cookiecutter Data Science, un cadru care separă componentele proiectului:
- Datele brute și primare, precum fișierele de secvențiere sau tabelele clinice, sunt păstrate într-un director cu acces strict doar pentru citire.
- Scripturile de analiză active sunt păstrate într-un alt director.
- Toate rezultatele sunt trimise într-un al treilea director.
Separarea fișierelor de intrare de codul executat și de rezultatele lui urmărește să împiedice un script generat cu AI să suprascrie sau să corupă seturile de date primare.
