ABONAMENTE VIDEO REDACȚIA
RO
EN
Numărul 139 Numărul 138 Numărul 137 Numărul 136 Numărul 135 Numărul 134 Numărul 133 Numărul 132 Numărul 131 Numărul 130 Numărul 129 Numărul 128 Numărul 127 Numărul 126 Numărul 125 Numărul 124 Numărul 123 Numărul 122 Numărul 121 Numărul 120 Numărul 119 Numărul 118 Numărul 117 Numărul 116 Numărul 115 Numărul 114 Numărul 113 Numărul 112 Numărul 111 Numărul 110 Numărul 109 Numărul 108 Numărul 107 Numărul 106 Numărul 105 Numărul 104 Numărul 103 Numărul 102 Numărul 101 Numărul 100 Numărul 99 Numărul 98 Numărul 97 Numărul 96 Numărul 95 Numărul 94 Numărul 93 Numărul 92 Numărul 91 Numărul 90 Numărul 89 Numărul 88 Numărul 87 Numărul 86 Numărul 85 Numărul 84 Numărul 83 Numărul 82 Numărul 81 Numărul 80 Numărul 79 Numărul 78 Numărul 77 Numărul 76 Numărul 75 Numărul 74 Numărul 73 Numărul 72 Numărul 71 Numărul 70 Numărul 69 Numărul 68 Numărul 67 Numărul 66 Numărul 65 Numărul 64 Numărul 63 Numărul 62 Numărul 61 Numărul 60 Numărul 59 Numărul 58 Numărul 57 Numărul 56 Numărul 55 Numărul 54 Numărul 53 Numărul 52 Numărul 51 Numărul 50 Numărul 49 Numărul 48 Numărul 47 Numărul 46 Numărul 45 Numărul 44 Numărul 43 Numărul 42 Numărul 41 Numărul 40 Numărul 39 Numărul 38 Numărul 37 Numărul 36 Numărul 35 Numărul 34 Numărul 33 Numărul 32 Numărul 31 Numărul 30 Numărul 29 Numărul 28 Numărul 27 Numărul 26 Numărul 25 Numărul 24 Numărul 23 Numărul 22 Numărul 21 Numărul 20 Numărul 19 Numărul 18 Numărul 17 Numărul 16 Numărul 15 Numărul 14 Numărul 13 Numărul 12 Numărul 11 Numărul 10 Numărul 9 Numărul 8 Numărul 7 Numărul 6 Numărul 5 Numărul 4 Numărul 3 Numărul 2 Numărul 1
×
▼ LISTĂ EDIȚII ▼
Numărul 123
Abonament PDF

Machine Learning și cariera clasică în dezvoltarea software

Lucian Cristea
Team Lead Machine Learning @ Centrul de Inginerie Bosch Cluj



MANAGEMENT


Vă începeți ziua verificându-vă notificările pe Facebook unde primiți recomandări generate automat prin metode Machine Learning despre produsele pe care ați vrea să le cumpărați sau despre oamenii pe care poate îi cunoașteți, toate special customizate pentru voi. Ieșind din casă, faceți o poză unei flori proaspăt înflorite, în timp ce algoritmii Deep Learning de la Apple augmentează floarea cu culori mai vii și cu contraste de lumină mai bine decât o poate face camera fizică a telefonului vostru. Apoi, vă urcați în mașină, unde sistemele Deep Learning de conducere automată dezvoltate de Bosch vă țin în siguranță în timp ce conduceți și vă grăbiți la birou.

Nu există niciun dubiu. Machine Learning a cucerit lumea tehnologiei încet, dar sigur. A reușit însă să cucerească și domeniul dezvoltării software?

Cum diferă dezvoltarea unei soluții bazate pe Machine Learning de dezvoltarea unei soluții software clasice? Este necesar ca fiecare programator să fie concomitent și programator Machine Learning? Poate orice programator să devină programator Machine Learning dacă își dorește?

Haideți să aflăm împreună.

Profilul programatorului "clasic"

Dezvoltarea software, fie că vorbim de C/C++ pentru sisteme embedded, Java/JavaScript pentru aplicații web, C# pentru aplicații și jocuri sau altele necesită câteva abilități și activități cheie. Un programator experimentat știe:

Accentul cade pe scrierea corectă de cod (modular, extensibil, curat) care să se potrivească în sistemul curent de cod și care să respecte toate standardele, aspecte pentru care este nevoie de foarte multă experiență. Un punct esențial este ca scopul funcțional al codului să fie cunoscut de la început (adică ce face codul din punct de vedere logic sau funcțional). De exemplu, trebuie să scriem cod pentru a crea un site web care să afișeze niște știri. Logic, pare destul de evident ce este de făcut. Ai un text (scris de cineva) și trebuie să îl afișezi pe ecran astfel încât să fie navigabil, de exemplu un articol după altul. Chiar și o persoană care nu este programator poate înțelege acest lucru, dar nu va putea să îl transpună în cod. De fapt, această nouă funcționalitate (care trebuie transpusă în cod) este o cerință a clientului care nu are de obicei cunoștințe tehnice complexe pentru a înțelege sistemul logic și funcțional.

Astfel, programatorul software este preocupat să scrie cod potrivit care să poată îndeplini o funcție cunoscută sau o acțiune cunoscută.

Profilul programatorului Machine Learning

Pe de altă parte, pentru programatorul Machine Learning, accentul este cu totul diferit de la bun început, deoarece programatorul nu cunoaște funcția sau acțiunea pe care codul trebuie să le îndeplinească. Prin urmare, accentul cade pe modul în care este gândită și formalizată funcția sau acțiunea pe care codul trebuie le efectueze. Iată un exemplu. Să presupunem că vrem să construim un sistem care să învețe să identifice vehiculele dintr-o imagine, marcând vehiculul cu un chenar. Neluând în calcul implementarea efectivă a codului, cum am putea face acest lucru în mod logic? Cum poți determina un calculator "să înțeleagă" care pixeli din imagine reprezintă o mașină și care reprezintă alte entități precum drumul, pietonii, semaforul și altele? Cum poți scrie cod pentru acest lucru dacă nu știi ce ar trebui să facă acel cod? Nu este la fel de banal sau logic precum construirea unui site web pentru știri.

Aici intervine Machine Learning. Pe scurt, Machine Learning (și ramura sa celebră "Deep Learning") descrie cum se implementează un algoritm care estimează o funcție necunoscută, în cazul exemplului nostru fiind vorba de cum putem transforma o listă de pixeli într-o imagine și de cum putem încadra vehiculele identificate.

Astfel, programatorul ML este preocupat să dezvolte algoritmul potrivit prin care să efectueze o funcție sau o acțiune, ca ulterior să o transpună pe aceasta în cod.

Transpunerea efectivă în cod este la fel de provocatoare precum scrierea de cod a unui programator clasic, deoarece se aplică aceleași principii de calitate și integritate. Dezvoltarea algoritmului (ceea ce codul ar trebui să facă funcțional) adaugă un nivel suplimentar de complexitate care nu există în dezvoltarea clasică de software. În plus, manipularea unor seturi mari de date (găzduire, pre-procesare, filtrare, generarea statisticilor, identificarea tendințelor, pe scurt "big data") necesare pentru antrenarea algoritmilor adaugă încă un nivel de complexitate la cele menționate deja.

Prin urmare, programatorul ML are nevoie de abilități suplimentare în completarea celor deținute de un programator clasic. Acesta trebuie:

Intersecții și colaborări între domenii

În acest punct, ar trebui deja să fie evident unde se întâlnesc cele două domenii. Ambele domenii (dezvoltare software clasică și dezvoltare Machine Learning) necesită abilități excelente de scriere de cod pentru a transforma o funcție știută sau neștiută (pentru care trebuie implementat un algoritm) în cod propriu-zis. Statistic vorbind, programatorii clasici vor fi mai abili în această privință, deoarece acesta este obiectivul lor principal. Cu toate acestea, le vor lipsi experiența și informația necesare pentru a implementa soluții Machine Learning care nu sunt specificate funcțional (pas cu pas).

Pentru a progresa în carieră și a ieși din zona de confort, este de așteptat ca:

Lucrul în echipă între un programator clasic și unul specializat în Machine Learning este soluția cea mai bună, deoarece pot învăța unul de la altul, dobândind experiență în fiecare domeniu. În cele din urmă, totul se rezumă la dorința de a învăța și la capacitățile fiecărui individ.

În concluzie și în perspectivă

Dezvoltarea clasică de software este asimilată din ce în ce mai mult în cadrul domeniului Machine Learning, așteptarea fiind ca din ce în ce mai mulți programatori să se orienteze spre Machine Learning. Identificarea codului potrivit va fi direct legată de identificarea algoritmului de Machine Learning potrivit pentru a atinge un obiectiv specific.

NUMĂRUL 138 - Maps & AI

Sponsori

  • Accenture
  • BT Code Crafters
  • Accesa
  • Bosch
  • Betfair
  • MHP
  • Connatix
  • BoatyardX
  • .msg systems
  • Yardi
  • Colors in projects

INTERVIURI VIDEO

Lucian Cristea a mai scris