[SCRÂTÂT] [FÂND] [CLIC] DAVID SONTAG: Bine, atunci prelegerea de astăzi va fi despre schimbările setului de date, în special despre cum se poate fi robust la schimbarea setului de date. Acum, acesta este subiectul la care am făcut aluzie de-a lungul semestrului. Și setarea la care vreau să te gândești este după cum urmează. Sunteți un cercetător de date care lucrează la, să spunem, Mass General Hospital și ați fost foarte atent în configurarea sarcinii de învățare automată pentru a vă asigura că datele sunt bine specificate, etichetele pe care încercați să le preziceți sunt bine precizat. Te antrenezi pe un program valid - te antrenezi pe datele tale de antrenament, le testezi pe un set ținut, vezi că modelul se generalizează bine, faci o revizuire a diagramelor pentru a te asigura că ceea ce prezici este de fapt ceea ce crezi că preziceți și chiar faceți implementare potențială în care apoi lăsați algoritmul dvs. de învățare automată să conducă un sprijin pentru deciziile clinice și veți vedea că lucrurile funcționează grozav. Acum ce? Ce se întâmplă după această etapă când treci la implementare? Ce se întâmplă când același model va fi folosit nu doar mâine, ci și săptămâna viitoare, săptămâna următoare, anul următor? Ce se întâmplă dacă modelul tău, care funcționează bine la acest singur spital, dorește apoi să-- atunci există o altă instituție, să zicem, poate Spitalul Brigham și Femei, sau poate UCSF, sau vreun spital rural din Statele Unite dorește să folosească același lucru model, va continua să funcționeze în această perioadă de timp „pe termen scurt spre viitor” sau într-o nouă instituție? Aceasta este întrebarea despre care vom vorbi în prelegerea de astăzi. Și vom vorbi despre cum se poate face față schimbării setului de date din două soiuri diferite. Prima varietate este perturbările adverse ale datelor, iar a doua varietate este datele datorate... datelor care se modifică din motive naturale. Acum, motivul pentru care nu este deloc evident că algoritmul dvs. de învățare automată ar trebui să funcționeze în continuare în setare este pentru că presupunerea numărul unu pe care o facem atunci când facem învățare automată este că distribuția dvs. de antrenament , datele dvs. de antrenament , sunt extrase din aceeași distribuție. ca date de testare. Deci, dacă acum accesați o setare în care distribuția datelor dvs. s-a schimbat, chiar dacă v-ați calculat acuratețea folosind datele păstrate și arată bine, nu există niciun motiv pentru care să continue să arate bine în această nouă setare, în care distribuția datelor s-a schimbat. Un exemplu simplu de ceea ce înseamnă schimbarea unei distribuții de date ar putea fi următorul. Să presupunem că avem date de intrare și că încercăm să prezicem o etichetă, care poate însemna ceva de genul, de ce dacă un pacient are... sau va fi nou diagnosticat cu diabet de tip 2, iar acesta este un exemplu pe care noi... despre care am vorbit când introducem stratificarea riscului, înveți un model pentru a prezice y din x. Și acum să presupunem că mergeți la o nouă instituție în care definiția lor a ceea ce înseamnă diabetul de tip 2 s- a schimbat. De exemplu, poate că de fapt nu au diabet de tip 2 codificat în datele lor, poate că au diabet codificat în datele lor, ceea ce adună atât diabetul de tip 1, cât și diabetul de tip 2, tipul 1 fiind ceea ce este de obicei diabet juvenil și este de fapt o boală foarte distinctă de diabetul de tip 2. Deci acum noțiunea despre ce este diabetul este diferită. Poate că și cazul de utilizare este ușor diferit. Și nu există niciun motiv, evident, că modelul tău, care a fost folosit pentru a prezice diabetul de tip 2, ar funcționa pentru acea nouă etichetă. Acum, acesta este un exemplu de tip foarte - de tip de schimbare a setului de date, care este probabil pentru dvs. evident că nimic nu ar trebui să funcționeze în setare, deoarece aici distribuția lui P a lui y dat x se schimbă, adică chiar dacă aveți aceeași individ, distribuția dvs. P(y) dată de x în, să spunem, distribuția P(0) și distribuția P a lui y dat x și P(1), unde aceasta este, să spunem, o instituție, aceasta este alta, acestea acum sunt două distribuții diferite dacă sensul etichetei s-a schimbat. Deci, pentru aceeași persoană, ar putea exista o distribuție diferită a ceea ce este y. Deci acesta este un tip de transfer de date. Și un tip foarte diferit de schimbare a setului de date este în cazul în care presupunem că acestea două sunt egale. Și astfel, de exemplu, ar exclude acest tip de schimbare a setului de date. Ci mai degrabă ceea ce se schimbă este P de x de la locația 1 la locația - la locația 2. Și acesta este tipul de schimbare a setului de date pe care se va concentra în prelegerea de astăzi. Se numește deplasare covariabilă. Și să ne uităm la două exemple diferite în acest sens. Primul exemplu ar fi al unei perturbări contradictorii. Și așa am... ați văzut cu toții utilizarea rețelelor neuronale convoluționale pentru problemele de clasificare a imaginilor. Aceasta este doar o ilustrare a unei astfel de arhitecturi. Și cu o astfel de arhitectură, s- ar putea încerca apoi să facă tot felul de sarcini diferite de clasificare a obiectelor sau a imaginilor . Puteți lua ca intrare această imagine a unui câine, care este în mod clar un câine. Și l-ai putea modifica doar puțin. Doar adăugați o cantitate foarte mică de zgomot. Ceea ce voi face este acum, voi crea o nouă imagine care este acea imagine originală. Acum, cu fiecare pixel, voi adăuga un epsilon foarte mic în direcția acelui zgomot. Și ceea ce obții este această nouă imagine, la care ai putea să te uiți oricând vrei, nu vei putea să faci diferența. Practic, pentru ochiul uman, acestea două arată exact identice. Cu excepția cazului în care luați clasificatorul de învățare automată, care este antrenat pe date originale neperturbate, și acum îl aplicați acestei noi imagini, acesta este clasificat ca un struț. Și această observație a fost publicată într-o lucrare din 2014 numită „Proprietăți intrigante ale rețelelor neuronale”. Și într-adevăr a declanșat o creștere uriașă a interesului în comunitatea de învățare automată cu privire la perturbările adverse ale învățării automate. Așadar, punând întrebări, dacă ar fi să perturbați intrările doar puțin, cum modifică asta ieșirea clasificatorului dvs.? Și ar putea fi folosit pentru a ataca algoritmii de învățare automată? Și cum se poate apăra împotriva ei? Apropo, ca o parte, acesta este de fapt un domeniu de cercetare foarte vechi. Și chiar și în țara clasificatorilor liniari, aceste întrebări fuseseră studiate. Deși nu voi intra în acest curs. Deci, acesta este un tip de schimbare a setului de date în sensul că ceea ce ne dorim este ca acesta să fie încă clasificat ca un struț - ca un câine. Deci eticheta reală nu s-a schimbat. Ne-am dori ca această distribuție peste etichete, având în vedere perturbații în ea, să fie ușor diferită, cu excepția faptului că acum distribuția intrărilor este puțin diferită, deoarece permitem adăugarea de zgomot la fiecare dintre intrări. Și în acest caz, zgomotul de fapt nu este întâmplător, este adversar. Și spre sfârșitul prelegerii de astăzi, vă voi da un exemplu despre cum se poate genera de fapt imaginea contradictorie, care poate schimba clasificatorul. Acum, motivul pentru care ar trebui să ne pese de aceste tipuri de lucruri în acest curs este pentru că mă aștept ca acest tip de schimbare a setului de date, care nu este deloc natural, este adversar, va începe să apară și în viziunea computerizată și probleme de vedere non-computer în domeniul medical. A existat recent o lucrare frumoasă de Sam Finlayson, Andy Beam și Isaac Kohane, care a prezentat mai multe studii de caz diferite despre unde ar putea apărea cu adevărat aceste probleme în domeniul sănătății. Deci, de exemplu, aici ceea ce ne uităm este o problemă de clasificare a imaginilor care decurge din dermatologie. Vi se oferă ca intrare o imagine. De exemplu, ați dori ca această imagine să fie clasificată ca o persoană care are un anumit tip de afecțiune a pielii, un nev și această altă imagine, melanom. Și ceea ce se poate vedea este că, cu o mică perturbare a intrării, se poate schimba complet eticheta care i-ar fi atribuită de la una la alta. Și în această lucrare, pe care o vom posta ca lecturi opționale pentru cursul de astăzi, ei vorbesc despre modul în care cineva ar putea folosi acești algoritmi pentru beneficii. Deci, de exemplu, imaginați-vă că o companie de asigurări de sănătate decide acum, pentru a rambursa o biopsie costisitoare a pielii unui pacient, un clinician sau o asistentă trebuie să facă mai întâi o fotografie a tulburării și să trimită acea poză împreună cu factura de procedură. . Și imaginați-vă acum că compania de asigurări ar trebui să aibă un algoritm de învățare automată să fie o verificare automată, era această procedură într-adevăr rezonabilă pentru această condiție? Și dacă nu este, ar putea fi semnalat. Acum, un utilizator rău intenționat ar putea perturba intrarea astfel încât, în ciuda faptului că pacientul are o piele cu aspect complet normal , ar putea fi totuși clasificat de un algoritm de învățare automată ca fiind anormal într- un fel și, prin urmare, ar putea fi rambursat prin acest lucru. procedură. Acum, evident, acesta este un exemplu de cadru nefast în care am spera atunci că un astfel de individ va fi prins de poliție, trimis la închisoare. Dar, cu toate acestea, ceea ce ne-am dori să putem face este să construim controale și echilibre în sistem, astfel încât asta nici măcar să nu se întâmple, pentru că unui om este evident că nu ar trebui să poți păcăli-- păcăli pe oricine cu un astfel de perturbare foarte minoră. Deci, cum construiești algoritmi care nu ar putea fi păcăliți la fel de ușor cum nu ar fi urmăriți oamenii? PUBLIC: Pot să pun o întrebare DAVID SONTAG: Da. PUBLIC: Pentru oricare dintre aceste mostre, atacatorul avea nevoie de acces la rețea? Există o modalitate de a [? ataca-l? ?] DAVID SONTAG: Deci întrebarea este dacă atacatorul trebuie să știe ceva despre funcția care este folosită pentru clasificare. Există exemple atât de atacuri numite cutie albă, cât și cutie neagră, în care într-o setare aveți acces la funcție și alte setări nu. Așadar, ambele au fost studiate în literatură și există rezultate care arată că se poate ataca în orice situație. Uneori ar putea fi nevoie să știi puțin mai mult. Ca, de exemplu, uneori trebuie să aveți capacitatea de a interoga funcția de un anumit număr de ori. Deci, chiar dacă nu știți exact care este funcția, ca și cum nu cunoașteți greutățile rețelei neuronale, atâta timp cât o puteți interoga suficient de multe ori, veți putea construi exemple contradictorii. Asta ar fi o abordare. O altă abordare ar fi, o, poate că nu știm funcția, dar știm ceva despre datele de antrenament. Deci, există modalități de a face acest lucru chiar dacă nu cunoașteți perfect funcția. Răspunde asta la întrebarea ta? Deci, ce zici de o perturbare naturală? Deci, această cifră tocmai a fost extrasă din prelegerea 5 când am vorbit despre non-staționaritate în contextul stratificării riscului, asta doar pentru a vă aminti aici axa x este timpul, că axa y reprezintă diferite tipuri de rezultate ale testelor de laborator care ar putea fi comandate. , iar culoarea indică câte dintre acele teste de laborator au fost comandate într-o anumită populație la un moment dat. Deci, ceea ce ne-am aștepta să vedem dacă datele ar fi staționare este că fiecare rând ar fi o culoare omogenă. Dar, în schimb, ceea ce vedem este că există momente în timp, de exemplu, integrale de câteva luni aici, când dintr-o dată se pare că, pentru unele dintre testele de laborator, acestea nu au fost niciodată efectuate. Cel mai probabil, aceasta se datorează unei probleme de date sau poate că s-a pierdut fluxul de date de la acel furnizor de teste de laborator , au existat unele probleme de sistem. Dar vor fi, de asemenea, setări în care, de exemplu, un test de laborator nu este niciodată folosit până când nu este folosit brusc. Și asta ar putea fi pentru că este un nou test care tocmai a fost inventat sau aprobat pentru rambursare la acel moment. Deci acesta este un exemplu de non-staționaritate. Și, desigur, acest lucru ar putea duce, de asemenea, la modificări în distribuția datelor dvs., cum ar fi ceea ce am descris acolo, în timp. Și al treilea exemplu este atunci când treceți prin instituții, în care, bineînțeles, atât limbajul care ar putea fi folosit -- vă puteți gândi la un spital din Statele Unite față de un spital din China, notele clinice vor fi scrise complet diferite limbi, acesta ar fi un caz extrem. Și un caz mai puțin extrem ar putea fi două spitale diferite din Boston, unde acronimele sau prescurtarea pe care o folosesc pentru anumiți termeni clinici ar putea fi de fapt diferite din cauza practicilor locale. Deci ce facem? Toate acestea sunt o configurație. Și pentru restul prelegerii, ceea ce voi vorbi este mai întâi, foarte pe scurt, cum se poate construi verificări la nivel de populație pentru că s-a schimbat ceva. Și apoi, în cea mai mare parte a prelegerii de astăzi, vom vorbi despre cum să dezvoltăm algoritmi de învățare de transfer și despre cum s-ar putea gândi la apărarea împotriva atacurilor adverse. Așa că, înainte să vă arăt primul diapozitiv pentru marcatorul unu, vreau să am o mică discuție. Ați făcut brusc acel lucru de a învăța algoritmul de învățare automată în instituția dvs. și doriți să știți, va funcționa acest algoritm la o altă instituție? Ridică telefonul, îi suni pe oamenii de știință de date colaboratori de la o altă instituție, care sunt întrebările pe care ar trebui să le pui atunci când încercăm să înțelegem, algoritmul tău va funcționa și acolo? Da. PUBLIC: Ce fel de informații despre testele de laborator colectează [INAUDIBIL]. DAVID SONTAG: Deci, ce tip de date au despre pacienții lor și au tipuri de date sau caracteristici similare disponibile pentru populația lor de pacienți? Alte idei, cineva care nu a vorbit în ultimele două prelegeri, poate cineva din spate, oameni care au calculatorul scos. Poate tu cu mâna în gură chiar acolo, da, tu cu ochelarii pe tine. Idei. [Studentul râde] PUBLIC: Îmi pare rău, puteți repeta întrebarea? DAVID SONTAG: Vrei să repet întrebarea? Întrebarea era următoarea. Îți înveți algoritmul de învățare automată la o instituție și vrei să-l aplici acum într-o instituție nouă. Ce întrebări ar trebui să puneți acelei noi instituții pentru a încerca să evaluați dacă algoritmul dumneavoastră se va generaliza în acea nouă instituție? PUBLIC: Bănuiesc că depinde de problema dvs. la care vă uitați, cum ar fi dacă încercați să aflați posibile diferențe în populația dvs., dacă aveți nevoie de date cu o utilizare specială [INAUDIBILĂ]. Așa că mi-aș imagina că ai vrea, cum ar fi mașinile tale calibrate [INAUDIBILE]? Folosesc tehnici pentru a obține datele? DAVID SONTAG: În regulă. Deci haideți să descompunem fiecare dintre răspunsurile pe care le-ați dat. Primul răspuns pe care l-ați dat a fost, există diferențe în populație? Ce ar fi un ex-- altcineva acum, care suntem un exemplu de diferență într-o populație? Da. PUBLIC: Distribuția pe vârstă S-ar putea să ai oameni mai tineri în Boston, comparativ cu un Massachusetts [INAUDIBIL].. DAVID SONTAG: Așa că s- ar putea să ai oameni mai tineri în Boston față de oameni mai în vârstă care sunt în Massachusetts Central. Cum ar putea o schimbare în distribuția vârstei să vă afecteze capacitatea de generalizare a algoritmilor dvs.? Da. PUBLIC: [? Posibil?] modele de sănătate, în care tinerii sunt foarte diferiți de [INAUDIBIL] care au unele boli care sunt în mod clar mai răspândite în populațiile care sunt mai în vârstă [? decât tine. ?] DAVID SONTAG: Mulţumesc. Deci, uneori, ne-am putea aștepta să apară un set diferit de boli pentru o populație mai tânără față de o populație mai în vârstă . Deci, diabet de tip 2, hipertensiune arterială, acestea sunt boli care sunt adesea diagnosticate atunci când pacienții - când indivizii au 40, 50 de ani și mai mult. Dacă aveți oameni care au peste 20 de ani, de obicei nu vedeți acele boli la o populație mai tânără. Și deci ceea ce înseamnă asta este că, dacă modelul tău, de exemplu, a fost instruit pe o populație de indivizi foarte tineri, atunci s-ar putea să nu poată-- și să presupunem că faci ceva de genul prezicerii costurilor viitoare, deci ceva care nu este direct legate de boala în sine, caracteristicile care predică costurile viitoare într-o populație foarte tânără ar putea fi foarte diferite de caracteristicile - pentru predictorii de cost într-o populație mult mai în vârstă din cauza diferențelor de condiții pe care le au acei indivizi. Acum, al doilea răspuns care a fost dat a avut de-a face cu calibrarea instrumentelor. Puteți detalia puțin despre asta? PUBLIC: Da. Deci mă gândeam la [? clar ?] în spaţiul colonoscopiei. Dar dacă colecționezi... deci în acel spațiu, colecționezi videoclipuri cu două puncte. Și astfel puteți avea mașini care sunt calibrate foarte diferit, să spunem expunere la lumină diferită, setări diferite ale camerei. Dar aveți, de asemenea, că GI și medicii au tehnici diferite cu privire la modul în care explorează colonul. Deci datele video în sine vor fi foarte diferite. DAVID SONTAG: Deci exemplul dat a fost de colonoscopii și date care ar putea fi colectate ca parte a acestora. Și datele care ar putea fi... datele care ar putea fi colectate ar putea fi diferite din două motive diferite. Unul, pentru că... pentru că instrumentele reale care colectează datele, de exemplu, datele de imagistică, ar putea fi calibrate puțin diferit. Și un al doilea motiv ar putea fi faptul că procedurile care sunt utilizate pentru a efectua acel test de diagnostic ar putea fi diferite în fiecare instituție. Fiecare va avea ca rezultat prejudicii ușor diferite ale datelor și nu este clar că un algoritm antrenat pe un tip de procedură sau un tip de instrument s-ar generaliza la altul. Deci toate acestea sunt exemple grozave. Și astfel, atunci când cineva citește o lucrare din partea comunității clinice despre dezvoltarea unui nou instrument de stratificare a riscului, ceea ce veți vedea întotdeauna în această lucrare este ceea ce este cunoscut sub numele de „Tabelul 1”. Tabelul 1 arată cam așa. Aici am scos una dintre propriile mele lucrări care a fost publicată în JAMA Cardiology pentru 2016, unde am analizat cum să încercăm să găsim pacienți cu insuficiență cardiacă care sunt internați în spital. Și am de gând să parcurg ce este această masă. Deci, acest tabel descrie populația care a fost utilizată în studiu. În partea de sus, se spune că acestea sunt caracteristicile a 47.000 de pacienți internați. Apoi, ceea ce am făcut este, folosind cunoștințele noastre de domeniu, știm că aceasta este o populație cu insuficiență cardiacă și știm că există o serie de axe diferite care diferențiază pacienții care sunt spitalizați care au insuficiență cardiacă. Așadar, enumeram multe dintre caracteristicile pe care le considerăm esențiale pentru caracterizarea populației și oferim statistici descriptive pentru fiecare dintre aceste caracteristici. Începi întotdeauna cu lucruri precum vârsta, sexul și rasa. Și aici, de exemplu, vârsta medie era de 61 de ani, aceasta a fost, apropo, NYU Medical School, 50,8% femei, 11,2% negre, afro-americane, 17,6% dintre indivizi erau pe Medicaid, care era un stat. - asigurarea de sănătate pentru persoanele cu dizabilități sau cu venituri mai mici. Și apoi ne-am uitat la cantități precum ce tipuri de medicamente erau pacienții. 41% din-- 42% dintre pacienții internați erau tratați cu ceva numit beta-blocante. 31,6% dintre pacienții ambulatori erau tratați cu beta-blocante. Apoi ne-am uitat la lucruri precum rezultatele testelor de laborator. Deci se poate privi la valorile medii ale creatininei, la valorile medii de sodiu ale acestei populații de pacienți. Și în acest fel, a descris care este populația care este studiată. Apoi, când mergeți la noua instituție, acea nouă instituție primește nu doar algoritmul, ci și acest Tabel 1 care descrie o populație în care a fost învățat algoritmul . Și ar putea folosi asta împreună cu unele cunoștințe de domeniu pentru a gândi la întrebări precum ceea ce am obținut -- ceea ce am obținut de la dvs. în discuția noastră, astfel încât să ne putem gândi, este de fapt -- are sens ca acest model să se generalizeze la această nouă instituție? Sunt motivele pentru care s-ar putea să nu? Și ai putea face asta chiar înainte de a face orice evaluare prospectivă asupra noii populații. Așa că aproape toți ar trebui să aveți ceva de genul tabelului 1 în scrierile dvs. de proiect, deoarece aceasta este o parte importantă a oricărui studiu în acest domeniu care descrie, care este populația pe care vă faceți studiul? Ești de acord cu mine, Pete? PETER SZOLOVITS: Da. Aș vrea doar la acel tabel 1, dacă faceți un studiu de caz-control , veți avea două coloane care arată distribuțiile în cele două populații și apoi o valoare p a cât de probabil este ca aceste diferențe să fie semnificative. Și dacă omiteți asta, nu vă puteți publica lucrarea. DAVID SONTAG: Voi repeta răspunsul lui Pete pentru înregistrare. Dacă sunteți... acest tabel este pentru o problemă predictivă. Dar dacă vă gândiți la o problemă de tip inferență cauzală, în care există o noțiune de grupuri de intervenție diferite, atunci ar fi de așteptat să raportați același fel de lucruri, dar atât pentru populația de caz, cât și pentru persoanele care au primit, să spunem , tratamentul unu și populația de control a persoanelor care primesc tratamentul zero. Și apoi ați analiza diferențele dintre acele populații, precum și la nivel de caracteristică individuală, ca parte a statisticilor descriptive pentru acel studiu. Acum, asta... da. PUBLIC: Aceasta este pentru a identifica [? individual?] [ ? între ?] acele popoare? [INAUDIBIL] instituțiile să facă asemenea teste-t pe acele tabele... DAVID SONTAG: Pentru a vedea dacă sunt diferite? Nu, așa că vor fi mereu diferiți. Mergi la o nouă instituție, mereu va arăta diferit. Și așa că doar să văd cum s-a schimbat ceva nu este... răspunsul va fi întotdeauna da. Dar permite unei conversații să se gândească bine, bine, la asta, și apoi s-ar putea să te uiți-- s- ar putea să folosești unele dintre tehnicile despre care Pete va vorbi săptămâna viitoare despre interpretabilitate pentru a înțelege, ei bine, ce folosește de fapt modelul. Apoi ați putea întreba, oh, OK, ei bine, modelul folosește acest lucru, care are sens în această populație, dar s-ar putea să nu aibă sens în altă populație. Și aceste două lucruri împreună fac conversația. Acum, această întrebare a ajuns într-adevăr în prim-plan în ultimii ani, în strânsă legătură cu subiectul pe care l- a discutat Pete săptămâna trecută despre corectitudinea în învățarea automată. Pentru că ați putea întreba dacă un clasificator este construit într-o anumită populație, se va generaliza la o altă populație dacă acea populație care a învățat a fost foarte părtinitoare, de exemplu, ar fi putut fi toți oameni albi. S-ar putea să vă întrebați dacă acel clasificator va funcționa bine într-o altă populație care ar putea include persoane de diferite etnii? Și asta a condus la un concept care a fost publicat recent. Această schiță de lucru din care vă arăt rezumatul s-a numit acum doar câteva săptămâni „Fișe de date pentru seturi de date”. Și scopul aici este de a standardiza procesul de descriere - de a obține informații despre ce este vorba despre setul de date care a jucat cu adevărat în modelul dvs.? Așa că vă voi prezenta pe scurt doar câteva elemente despre cum ar putea arăta un exemplu de set de date pentru o foaie de date. Este prea mic pentru a putea citi, dar voi arunca în aer o secțiune într-o secundă. Deci, aceasta este o foaie de date pentru un set de date numit Studierea recunoașterii faciale într-un mediu neconstrâns. Deci este pentru o problemă de vedere computerizată. Vor exista o serie de chestionare, pe care această lucrare pe care v-o îndrept să le subliniez. Și tu, în calitate de dezvoltator de modele, parcurgeți acel chestionar și completați răspunsurile la acesta, incluzând astfel lucruri despre motivația pentru compoziția creării setului de date și așa mai departe. Așadar, în acest caz particular, acest set de date numit Labeled Faces in the Wild a fost creat pentru a oferi imagini care studiază recunoașterea feței într-o setare [INAUDIBLE] neconstrânsă, unde caracteristicile imaginii, cum ar fi poziția, eliminarea, rezoluția, focalizarea nu pot fi controlate. Deci se dorește să fie setări din lumea reală. Acum, una dintre cele mai interesante secțiuni ale acestui raport pe care ar trebui să o lansăm cu setul de date are de-a face cu modul în care au fost preprocesate sau curățate datele? Deci, de exemplu, pentru acest set de date, parcurge următorul proces. În primul rând, imaginile brute au fost obținute din setul de date și a constat din imagini și subtitrări care au fost găsite împreună cu acea imagine în articole de știri sau pe web. Apoi a existat un detector de fețe care a fost rulat pe setul de date. Iată care au fost parametrii detectorului de față care au fost folosiți. Și apoi amintiți-vă, scopul aici este de a studia detectarea feței. Și așa... deci trebuie să știi, cum au fost... cum au fost determinate etichetele? Și cum s-ar elimina, de exemplu, dacă nu ar exista nicio față în această imagine? Și acolo au descris cum a fost detectată o față și cum a fost determinată o regiune să nu fie o față în cazul în care nu era. Și, în sfârșit, descrie modul în care au fost eliminate duplicatele. Și dacă te gândești la exemplele pe care le-am avut mai devreme în semestru din imagistica medicală, de exemplu în patologie și radiologie, acolo trebuiau făcute construcții similare de seturi de date. De exemplu, cineva ar merge la sistemul PAC unde sunt stocate imaginile radiologice , cineva ar decide ce imagini vor fi scoase, ar merge la rapoartele de radiografie pentru a afla cum extragem rezultatele relevante din acestea. imagine, care ar da etichetele pentru acel predictiv... pentru acea sarcină de învățare. Și fiecare pas de acolo va genera o prejudecată și unele -- pe care trebuie să le descrieți cu atenție pentru a înțelege care ar putea fi părtinirea clasificatorului învățat. Deci nu voi intra în mai multe detalii acum, dar aceasta va fi și una dintre lecturile sugerate pentru cursul de astăzi. Și se citește rapid. Vă încurajez să-l parcurgeți pentru a obține ceva de școlarizare pentru întrebările pe care am putea dori să le punem despre seturile de date pe care le creăm. Și pentru restul acestui semestru-- pentru restul prelegerii de astăzi, acum voi trece la câteva probleme mai tehnice. Deci trebuie să o facem. Învățăm automat acum. Populațiile ar putea fi diferite. Ce facem în privința asta? Putem schimba algoritmul de învățare pentru a spera că algoritmul tău s-ar putea transfera mai bine la o nouă instituție? Sau dacă obținem puține date de la acea nouă instituție, am putea folosi acea cantitate mică de date de la noua instituție sau un punct de timp viitor în viitor pentru a ne reeduca modelul pentru a merge bine în acea distribuție ușor diferită? Deci, acesta este întregul domeniu al învățării prin transfer. Deci aveți date extrase dintr-o distribuție pe p a lui x și y și poate avem puține date extrase dintr-o distribuție diferită q a lui x,y. Și în ipoteza deplasării covariatelor, presupun că q(x,y) este egal cu q de x ori p din y dat x, și anume că distribuția condiționată a lui y dat x nu s-a schimbat. Singurul lucru care s-ar fi putut schimba este distribuția dvs. pe x. Deci asta ar presupune ipoteza deplasării covariate. Deci, să presupunem că avem o cantitate mică de date extrase din noua distribuție q. Cum am putea atunci să folosim asta pentru a ne reeduca clasificatorul pentru a face bine pentru acea nouă instituție? Așa că voi trece prin patru abordări diferite pentru a face acest lucru. Voi începe cu modele liniare, care sunt cel mai simplu de înțeles, apoi voi trece la modele profunde. Prima abordare a ceva ce ai văzut deja de mai multe ori în acest curs. Ne vom gândi la transfer ca la o problemă de învățare cu mai multe sarcini , în care una dintre sarcini are mult mai puține date decât cealaltă sarcină. Deci, dacă vă amintiți când am vorbit despre modelarea progresiei bolii, am introdus această noțiune de regularizare a vectorilor de greutate, astfel încât să poată fi aproape unul de altul. În acel moment, vorbeam despre vectorii de greutate care preziceau progresia bolii în diferite momente de timp în viitor. Am putea folosi exact aceeași idee aici, în cazul în care luați clasificatorul dvs., clasificatorul dvs. liniar care a fost antrenat pe un corpus foarte mare, o să numim asta - o să numesc ponderile acelui clasificator vechi, și apoi voi rezolva o nouă problemă de optimizare, care este reducerea la minimum a greutăților w care minimizează unele pierderi. Deci, aici intervin antrenamentul dvs. - noile date de antrenament. Deci voi presupune că noul antrenament D este extras din distribuția q. Și o să adaug o regularizare care cere ca w să rămână aproape de w vechi. Acum, dacă cantitatea de date pe care o ai-- dacă D, datele de la acea nouă instituție, ar fi foarte mare, atunci nu ai avea deloc nevoie de asta pentru că ai putea doar-- ai putea ignora clasificator pe care l-ați învățat anterior și doar reajustați totul la datele acelei noi instituții. Acolo unde ceva de genul acesta este deosebit de valoros este dacă a existat o cantitate mică de schimbare a setului de date și aveți doar o cantitate foarte mică de date etichetate de la acea nouă instituție, atunci acest lucru v- ar permite să vă schimbați puțin vectorul de greutate. Deci, dacă acest coeficient ar fi foarte mare, s-ar spune că noul w nu poate fi prea departe de vechiul w. Deci, vă va permite să schimbați puțin lucrurile pentru a vă descurca bine cu cantitatea mică de date pe care o aveți. Deci, de exemplu, dacă există o caracteristică care era anterior predictivă, dar acea caracteristică nu mai este prezentă în noul set de date, deci, de exemplu, totul este identic zero, atunci, desigur, noul vector de greutate -- noua pondere pentru acea caracteristică va fi setată la 0 și acea pondere la care te poți gândi ca fiind redistribuită la unele dintre celelalte caracteristici. Are sens asta? Alte intrebari? Deci, aceasta este cea mai simplă abordare pentru a transfera învățarea. Și înainte de a încerca vreodată ceva mai complicat, încearcă întotdeauna asta. Da. Deci, a doua abordare este, de asemenea, cu un model liniar, dar aici nu vom mai presupune că caracteristicile sunt încă utile. Deci s-ar putea... când pleci de la... când pleci de la o... prima ta instituție, să zicem, eu sunt GH în stânga, îți înveți modelul și îl poți aplica la o instituție nouă, să zicem , UCSF în partea dreaptă, s-ar putea să existe o schimbare foarte mare în setul de caracteristici, astfel încât, astfel încât caracteristicile originale să nu fie deloc utile pentru noul set de caracteristici. Și un exemplu extrem de asta ar putea fi setarea pe care am dat-o mai devreme când am spus că modelul tău este instruit în engleză și îl testezi în chineză. Acesta ar fi un exemplu -- dacă folosiți un model de pungă de cuvinte, acesta ar fi un exemplu în care modelul dvs., evident, nu s-ar generaliza deloc, deoarece caracteristicile dvs. sunt complet diferite. Deci ce ai face în acel cadru? Care este cel mai simplu lucru pe care l-ai putea face? Deci luați un clasificator de text învățat în engleză și doriți să îl aplicați într-un cadru în care acea limbă este chineza. Ce ai face? PUBLIC: Antrenează-te pe ei. DAVID SONTAG: Traduceți, ați spus. Și a mai fost un răspuns. PUBLIC: Sau încercați să pregătiți un RN. DAVID SONTAG: Antrenează un RN să facă ce? PUBLIC: Pentru a traduce. DAVID SONTAG: Antrenează un RN-- oh, OK. Deci, presupuneți că aveți o anumită capacitate de a face traducere automată, traduceți din engleză în-- din chineză în engleză. Trebuie să fie această direcție, deoarece clasificatorul original a fost instruit în engleză. Și apoi noua ta funcție este compoziția traducerii și funcția originală, nu? Și apoi vă puteți imagina că faceți niște reglaje fine dacă aveți o cantitate mică de date. Acum, cea mai simplă funcție de traducere ar putea fi doar folosirea unui dicționar. Deci cauți un cuvânt și, dacă acel cuvânt are o analogie într-o altă limbă, spui: OK, aceasta este traducerea. Dar vor fi întotdeauna câteva cuvinte în limba ta care nu au o traducere foarte bună. Și așa s-ar putea să vă imaginați că cea mai simplă abordare ar fi traducerea, dar apoi să renunțați la cuvintele care nu au un analog bun și să vă forțați clasificatorul să lucreze cu, să spunem, doar vocabularul comun. Tot ceea ce vorbim aici este un exemplu de decizie aleasă manual. Deci, vom alege manual o nouă reprezentare pentru date, astfel încât să avem o anumită cantitate de caracteristici partajate între seturile de date sursă și țintă. Deci, să vorbim despre fișa electronică de sănătate 1 și fișa electronică de sănătate 2. Apropo, diapozitivele pe care le voi prezenta aici sunt dintr-o lucrare publicată în KDD de Jan, Tristan, instructorul tău, Pete și John Guttag. Așa că trebuie să mergi două fișe electronice de sănătate , fișă electronică de sănătate 1, fișă electronică de sănătate 2. Cum se pot schimba lucrurile? Ei bine, s-ar putea ca același concept din fișa electronică de sănătate 1 să fie mapat la o codificare diferită, așa că este ca o traducere de tip engleză în spaniolă , în fișa electronică de sănătate 2. Un alt exemplu de schimbare ar putea fi să spunem că unele concepte sunt eliminate, cum ar fi poate aveți rezultate ale testelor de laborator în fișa electronică de sănătate 1, dar nu în fișa electronică de sănătate 2. Deci, de aceea vedeți un avantaj spre nicăieri. O altă schimbare ar putea fi că ar putea exista concepte noi. Deci noua instituție ar putea avea noi tipuri de date pe care vechea instituție nu le avea. Deci ce faci în acel cadru? Ei bine, o abordare am spune: OK, avem o cantitate mică de date din fișa electronică de sănătate 2. Am putea doar să ne antrenăm folosind asta și să aruncăm datele originale din fișa electronică de sănătate 1. Acum, desigur, dacă ați avea doar o cantitate mică de date de la țintă la distribuție, atunci aceasta va fi o abordare foarte slabă, deoarece este posibil să nu aveți suficiente date pentru a învăța de fapt un model suficient de rezonabil. O a doua abordare evidentă ar fi, OK, ne vom instrui doar cu privire la fișa electronică de sănătate 1 și o vom aplica. Și pentru acele concepte care nu mai sunt prezente, așa să fie. Poate lucrurile nu vor merge prea bine. O a treia abordare, la care făceam aluzie înainte când am vorbit despre traducere, ar fi să înveți un model tocmai în intersecția celor două trăsături. Și ceea ce face această lucrare , după cum se spune, vom redefini manual setul de caracteristici pentru a încerca să găsim cât mai multe puncte comune posibil. Și acesta este ceva care implică cu adevărat multe cunoștințe de domeniu. Și voi folosi asta ca un punct de contrast față de ceea ce voi vorbi în 10 sau 15 minute, unde vorbesc despre cum s-ar putea face asta fără acea cunoaștere a domeniului pe care o vom folosi aici. Deci, contextul la care s-au uitat este unul de prognoză a rezultatelor, cum ar fi mortalitatea în spital sau durata șederii. Modelul care va fi folosit ca model de pachet de evenimente. Deci vom lua istoricul longitudinal al pacientului până la momentul predicției. Ne vom uita la diferite evenimente care au avut loc. Și acest studiu a fost făcut folosind PhysioNet. Și MIMIC, de exemplu, evenimentele sunt codificate cu un anumit număr, cum ar fi 5814 ar putea corespunde unei alarme CVP, 1046 ar putea corespunde prezentei dureri, 25 ar putea corespunde medicamentului administrat heparină și așa mai departe. Deci vom crea o caracteristică pentru fiecare eveniment care are un număr - care este codificat cu un anumit număr. Și vom spune doar 1 dacă acel eveniment a avut loc, 0 în caz contrar. Deci aceasta este reprezentarea unui pacient. Acum, pentru că atunci când cineva trece prin această nouă instituție, EHR2, modul în care evenimentele sunt codificate ar putea fi complet diferit. Nu se va putea folosi doar reprezentarea caracteristică originală . Și acesta este exemplul din engleză în spaniolă pe care l-am dat. Dar, în schimb, ceea ce s- ar putea încerca să facă este să vină cu un nou set de caracteristici în care acel set de caracteristici ar putea fi derivat din fiecare dintre diferitele seturi de date. Deci, de exemplu, din moment ce fiecare dintre evenimentele din MIMIC are o descriere text care se însoțește cu el, evenimentul unu corespunde accidentului vascular cerebral ischemic, evenimentului 2, accidentului vascular cerebral hemoragic și așa mai departe, s-ar putea încerca să cartografieze -- folosiți acea descriere în limba engleză a caracteristicii pentru a găsi o modalitate de a o mapa într-o limbă comună. În acest caz, limbajul comun este UMLS, United Medical Language System despre care Pete a vorbit cu câteva prelegeri în urmă. Așa că acum vom spune: OK, avem un set de caracteristici mult mai mare în care acum am codificat AVC ischemic ca acest concept, care este de fapt același AVC ischemic, dar și ca acest concept și acel concept, care sunt mai mult versiuni generale ale celei originale. Deci, acesta este doar un accident vascular cerebral general și ar putea fi mai multe tipuri diferite de accidente vasculare cerebrale. Și speranța este că, chiar dacă în-- chiar dacă modelul nu-- chiar dacă unele dintre acestea mai specifice nu apar în datele noii instituții, poate că unele dintre conceptele mai generale apar acolo. Și atunci ceea ce vei face este să înveți modelul tău acum pe acest vocabular tradus extins și apoi să îl traduci. Și la noua instituție, veți folosi și același model comun de date. Și astfel se speră să existe mult mai multă suprapunere în setul tău de caracteristici. Și astfel, pentru a evalua acest lucru, autorii s-au uitat la două momente diferite de timp în cadrul MIMIC. Un moment a fost când Centrul Medical Beth Israel Deaconess folosea fișa medicală electronică numită CareView. Și al doilea moment a fost când acel spital folosea o altă fișă electronică de sănătate numită MetaVision. Deci acesta este un exemplu de fapt de non-staționaritate. Acum, din cauza utilizării a două dosare de sănătate electronice diferite , codificările au fost diferite. Și de aceea a apărut această problemă. Și așa vom folosi această abordare și apoi vom învăța un model liniar pe deasupra acestei noi codificări pe care tocmai am descris-o. Și vom compara rezultatele uitându-ne la cât de mult s-a pierdut performanța din cauza utilizării acestei noi codificări și cât de bine generalizăm de la unu-- de la unu-- de la sarcina sursă la sarcina țintă. Și iată prima întrebare, care este, cât de mult pierdem folosind această nouă codificare? Deci, ca punct de comparație pentru a analiza predicția mortalității în spital , ne vom uita la care este performanța predictivă dacă doriți doar să utilizați un scor de risc existent, foarte simplu, numit scor SAPS? Și aceasta este această linie roșie în care axa y aici este aria de sub curba ROC, iar axa x este cu cât timp în avans prezici, deci decalajul de predicție. Deci, folosind acest scor foarte simplu, SAPS ajunge undeva între 0,75 și 0,80, zonă sub curba ROC. Dar dacă ar fi să utilizați toate datele despre evenimente, care sunt mult, mult mai bogate decât ceea ce a intrat în acel punctaj SAPS simplu , ați obține curba violet, care este -- curba violet, care este SAPS plus datele despre eveniment, sau curba albastră, care sunt doar datele despre evenimente. Și puteți vedea că puteți obține performanțe predictive substanțial mai bune utilizând acel set de funcții mult mai bogat. Scorul SAPS are avantajul că este mai ușor de generalizat pentru că este atât de simplu, acele elemente caracteristice, s- ar putea traduce trivial în orice EHR nou, fie manual, fie automat, și astfel va fi întotdeauna o rută viabilă. În timp ce această curbă albastră, deși obține o performanță predictivă mai bună , trebuie să vă faceți cu adevărat griji cu privire la aceste întrebări de generalizare. Și aceeași poveste se întâmplă atât în sarcina sursă, cât și în sarcina țintă. Acum, a doua întrebare de pus este, ei bine, cât de mult pierzi când folosești noua reprezentare a datelor? Și aici uitându-ne, din nou, la ambele două -- ambele EHR, ceea ce vedem mai întâi în roșu este aceeași curbură roșie - este aceeași cu curbura albastră de pe diapozitivul precedent. Folosește SAPS plus ID-urile articolului, deci folosește toate datele. Și apoi curba albastră de aici, care este puțin greu de văzut, dar este chiar acolo, este substanțial mai mică. Deci asta se întâmplă dacă acum utilizați această nouă reprezentare. Și vezi că pierzi ceva încercând să găsești un vocabular comun. Performanța este puțin lovită. Dar ceea ce este deosebit de interesant este că atunci când încerci să generalizezi, începi să vezi un schimb. Așa că, dacă acum... așa că acum culorile vor fi destul de asemănătoare. Roșu aici era în vârf înainte. Deci roșu folosește reprezentarea originală a datelor. Înainte era chiar în vârf. Aici este afișată eroarea de instruire la această instituție, CareView. Vedeți, există atât de multe informații bogate în setul de caracteristici original, încât este capabil să aibă o performanță predictivă foarte bună. Dar odată ce încercați să îl traduceți, așa că vă antrenați pe CareView, dar testați pe MetaVision, atunci performanța de testare prezentată aici de această linie roșie continuă este de fapt cea mai proastă dintre toate sistemul. Deci, există o scădere substanțială a performanței, deoarece nu toate aceste caracteristici sunt prezente în noul EHR. Pe de altă parte, când versiunea tradusă, în ciuda faptului că este puțin mai proastă la evaluarea sursă, se generalizează mult mai bine. Și astfel vezi o performanță semnificativ mai bună, care este arătată de această curbă albastră aici, atunci când folosești acest vocabular tradus. Există o întrebare. PUBLIC: Deci te-ai antrena cu funcții complete? Deci, cum aplici [? cu ?] ei dacă celălalt [? complet?] caracteristici sunt-- tu doar [INAUDIBIL].. DAVID SONTAG: Deci, presupui că ai venit cu o mapare a caracteristicilor din ambele EHR-uri la acest vocabular comun al caracteristicilor QE. Iar modul în care această cartografiere va fi făcută în această lucrare se bazează pe textul... al evenimentelor. Deci luați descrierea pe bază de text a evenimentului și veniți cu o mapare deterministă la această nouă reprezentare bazată pe UMLS . Și atunci asta se folosește. Nu există nicio reglare fină în acest exemplu special. Așa că consider că aceasta este o aplicație foarte naivă a transferului. Rezultatele sunt exact ceea ce v-ați aștepta să fie. Și, evident, a fost nevoie de multă muncă pentru a face asta. Și există un pic de creativitate în a te gândi că ar trebui să folosești descrierea în limba engleză a caracteristicilor pentru a veni cu maparea automată, dar povestea se termină aici. Și așadar, o întrebare pe care ați putea să o aveți cu toții este, cum ați putea încerca să faceți automat o astfel de abordare? Cum am putea găsi automat reprezentări - noi reprezentări ale datelor care sunt susceptibile să se generalizeze de la, să spunem, o distribuție sursă la o distribuție țintă? Și, așadar, pentru a vorbi despre asta, vom începe acum să ne gândim la abordări bazate pe învățarea reprezentării, de care modelele profunde sunt deosebit de capabile. Așadar, cea mai simplă abordare pentru a încerca să învățați prin transfer în contextul, să zicem, al rețelelor neuronale profunde, ar fi să tăiați o parte din rețea și să reutilizați aceasta - o reprezentare internă a datelor în această nouă locație. Deci imaginea arată puțin așa. Deci, datele s-ar putea alimenta în partea de jos. Ar putea exista un număr de straturi convoluționale, unele straturi complet conectate. Și ceea ce decideți să faceți este că veți lua acest model care este instruit într-o singură instituție, îl tăiați la un anumit strat, ar putea fi, de exemplu, înainte de ultimul strat complet conectat, și apoi veți luați asta-- luați noua reprezentare a datelor dvs., acum reprezentarea datelor este ceea ce ați obține după ce faceți niște convoluții urmate de un singur strat complet conectat și apoi veți lua datele distribuției dvs. țintă , care s-ar putea să ai doar o cantitate mică de și vei învăța un model simplu pe deasupra acelei noi reprezentări. Deci, de exemplu, ați putea învăța un clasificator superficial folosind o mașină vectorială de suport pe deasupra acelei noi reprezentări. Sau s-ar putea să adăugați mai multe -- încă câteva straturi ale unei rețele neuronale profunde și apoi să reglați totul de la capăt la capăt. Deci toate acestea au fost încercate. Și în unele cazuri, unul funcționează mai bine decât altul. Și am văzut deja un exemplu al acestei noțiuni în acest curs. Și atunci Adam Yala a vorbit în prelegerea 13 despre cancerul de sân și mamografie, unde în abordarea sa a spus că a încercat atât să ia un clasificator inițializat aleatoriu, cât și să compare asta cu ceea ce s- ar întâmpla dacă ai inițializa cu un bine-cunoscut bazat pe ImageNet. rețea neuronală profundă pentru problemă. Și a avut o poveste cu adevărat interesantă pe care a oferit-o. În cazul lui, avea suficiente date pe care de fapt nu avea nevoie să le inițialeze folosind acest model pre-antrenat de la ImageNet. Dacă tocmai ar fi făcut o inițializare aleatorie, în cele din urmă-- și această axa x, nu-mi amintesc, ar putea fi ore de antrenament sau epoci, nu-mi amintesc, este timpul-- în cele din urmă inițializarea corectă ajunge la un performanță foarte asemănătoare. Dar pentru cazul său particular , dacă ar fi să faceți o inițializare cu ImageNet și apoi o reglare fină, veți ajunge acolo mult, mult mai repede. Și, din motive de calcul, a găsit-o utilă. Dar în multe alte aplicații în imagistica medicală, aceleași trucuri devin esențiale pentru că pur și simplu nu ai suficiente date în noul caz de testare. Și astfel se folosește, de exemplu, filtrele pe care le învață din sarcina unui ImageNet, care este dramatic diferită de problemele de imagistică medicală, și apoi folosind aceleași filtre împreună cu un nou strat superior, un set de straturi superioare pentru a reglați-l fin pentru problema la care vă pasă. Deci acesta ar fi cel mai simplu mod de a încerca să sperăm la o reprezentare comună pentru transfer într-o arhitectură profundă. Dar s-ar putea să vă întrebați cum ați face același lucru cu datele temporale, nu cu datele imaginilor, poate date care provin din limbă sau date din serii cronologice de cereri de asigurare de sănătate? Și pentru asta chiar vrei să te gândești la rețelele neuronale recurente. Deci, doar pentru a vă reaminte, rețeaua neuronală recurentă este o arhitectură recurentă în care luați ca intrare un vector. De exemplu, dacă faceți modelare lingvistică, acel vector ar putea fi codificare, doar o codificare a ceea ce este cuvântul în acea locație. Deci, de exemplu, acest vector ar putea fi toate zerouri, cu excepția celei de-a patra dimensiuni, care este un 1, care indică faptul că acest cuvânt este cuvântul, citatul, „clasa”. Și apoi este introdus într- o unitate recurentă, care preia starea ascunsă anterioară, o combina cu intrarea curentă și vă oferă o nouă stare ascunsă. Și în acest fel, citiți în-- codificați întreaga intrare. Și apoi ați putea prezice -- faceți o clasificare bazată pe starea ascunsă din ultima dată [? Etapa. ?] Asta ar fi o abordare comună. Și aici ar fi un exemplu foarte simplu de unitate recurentă. Aici folosesc S pentru a desemna într-o stare. Adesea veți vedea H folosit pentru a desemna starea ascunsă. Acesta este un exemplu deosebit de simplu, în care există doar o singură neliniaritate. Deci iei starea ta ascunsă anterioară, o lovești cu o matrice Ws,s și o adaugi la intrarea fiind lovită de o matrice diferită. Acum aveți o combinație de intrare plus starea ascunsă anterioară. Aplicați non-liniaritate la asta și scoateți noua stare ascunsă. Deci acesta ar fi un exemplu de unitate recurentă tipică, o unitate recurentă foarte simplă. Acum, motivul pentru care trec prin aceste detalii este să subliniez că dimensiunea acelei matrice Ws,x este dimensiunea stării ascunse, deci dimensiunea lui s, după dimensiunea vocabularului dacă utilizați una -codarea la cald a intrarii. Deci, dacă aveți un vocabular uriaș, acea matrice, Ws,x, va fi, de asemenea, la fel de mare. Iar provocarea pe care o prezintă asta este că ar duce la supraadaptarea cuvintelor rare foarte rapid. Și, deci, aceasta este o problemă care ar putea fi rezolvată folosind în schimb o reprezentare de rang scăzut a acelei matrice Ws,x. În special, v-ați putea gândi la introducerea unui blocaj de dimensiuni inferioare, pe care în această imagine îl denumesc xt prim, care este intrarea dumneavoastră xt originală , care este codificarea one-hot, înmulțită cu o nouă matrice We. Și apoi unitatea ta recurentă primește doar intrări ale acelei dimensiuni ascunse-- ale acelei dimensiuni prime xt , care este k, care ar putea fi dramatic mai mică decât v. Și te poți gândi chiar la fiecare coloană a acelei reprezentări intermediare, Noi, ca un cuvânt încorporat. . Este o modalitate de-- și acesta este ceva despre care Pete a vorbit destul de mult când ne gândeam la limbajul natural-- când vorbeam despre procesarea limbajului natural. Și mulți dintre voi ați fi auzit despre asta în contextul unor lucruri precum Word2Vec. Deci, dacă cineva a vrut să ia o setare, de exemplu, datele unei instituții în care ai avut o cantitate imensă de date, să înveți fiecare rețea neuronală actuală din datele acelei instituții și apoi să o generalizezi la o nouă instituție, un mod de a încerca să faci asta , dacă te gândești, care este lucrul pe care îl tai, un răspuns ar putea fi, tot ce faci este să păstrezi încorporarea cuvântului. Așa că ați putea spune, OK, voi păstra We's, o voi traduce înapoi în noua mea instituție. Dar voi lăsa parametrii unității recurenți-- parametrii recurenți, de exemplu, pe care le puteți permite să fie reînvățați pentru fiecare instituție nouă. Și asta ar putea fi o abordare a modului în care să folosim aceeași idee pe care am avut-o de la rețelele feed forward într-un cadru recurent. Acum, toate acestea sunt foarte generale. Și ceea ce vreau să fac în continuare este să o instanțiez puțin în contextul asistenței medicale. Deci, de când Pete a prezentat extensiile Word2Vec, cum ar fi BERT și ELMo, și nu am de gând să-- Nu voi intra în ele acum, dar puteți reveni la prelegerea lui Pete de acum câteva săptămâni. ca să vă amintiți care au fost acestea, de când a prezentat acea prelegere, există de fapt trei lucrări noi care au încercat de fapt să aplice acest lucru în contextul asistenței medicale, dintre care unul a fost de la MIT. Și astfel toate aceste lucrări au același tip de idee. Vor lua niște seturi de date... și toate aceste documente folosesc MIMIC. Ei vor lua acele date de text, vor învăța niște înglobări de cuvinte sau niște reprezentări cu dimensiuni reduse ale tuturor cuvintelor din vocabular. În acest caz, ei nu învață o reprezentare statică pentru fiecare cuvânt. În schimb, aceste abordări BERT și ELMo vor fi învățate - ei bine, vă puteți gândi la ele ca reprezentări dinamice. Ele vor fi o funcție a cuvântului și a contextului lor din partea stângă și din dreapta. Și apoi ceea ce vor face este că vor lua acele reprezentări și vor încerca să le folosească pentru o sarcină complet nouă. Aceste noi sarcini ar putea fi pe datele MIMIC. Deci, de exemplu, aceste două sarcini sunt probleme de clasificare pe MIMIC. Dar ar putea fi și pe date non-MIMIC. Deci aceste două sarcini provin din probleme de clasificare pe text clinic care nici măcar nu au venit de la MIMIC. Deci este într-adevăr un exemplu de traducere a ceea ce ați învățat de la o instituție la alta. Aceste două seturi de date erau foarte mici. De fapt, toate aceste seturi de date erau foarte, foarte mici în comparație cu dimensiunea originală a MIMIC. Deci ar putea exista o oarecare speranță că cineva ar putea învăța ceva care îmbunătățește cu adevărat generalizarea. Și într-adevăr, asta se joacă. Deci, toate aceste sarcini se uită la o sarcină de detectare a conceptului. Având o notă clinică, identificați segmentele de text dintr-o notă care se referă, de exemplu, la o tulburare, la un tratament sau la altceva, pe care apoi, într-o a doua etapă, le puteți normaliza la UMLS. Deci, ceea ce este cu adevărat surprinzător la aceste rezultate este ceea ce se întâmplă când mergi de la coloana din stânga la dreapta , pe care o voi explica într-o secundă, și ce se întâmplă când mergi de sus în jos în fiecare dintre aceste sarcini diferite. Deci, coloana din stânga sunt rezultatele. Și aceste rezultate sunt un scor F, rezultatele, dacă ar fi să utilizați înglobări antrenate pe un set de date non-clinice , sau spus cu siguranță, nu pe MIMIC, ci pe un alt set de date mai general. A doua coloană este ce s-ar întâmpla dacă i-ai instrui pe cei care se încorporează într-un set de date clinice, în acest caz, MIMIC. Și vedeți îmbunătățiri destul de mari de la înglobările generale la înglobările bazate pe MIMIC. Ceea ce este și mai izbitor sunt îmbunătățirile care au loc pe măsură ce obțineți încorporare din ce în ce mai bune. Deci, primul rând sunt rezultatele dacă ar fi să utilizați doar înglobări Word2Vec. Și astfel, de exemplu, pentru I2B2 Challenge din 2010, obțineți 82,65 F scor folosind încorporarea Word2Vec. Și dacă utilizați o încorporare BERT foarte mare, obțineți 90,25 F scor-- măsura F, care este substanțial mai mare. Și aceleași constatări au fost găsite din nou și din nou în diferite sarcini. Acum, ceea ce mi se pare cu adevărat uimitor la aceste rezultate este că am încercat multe dintre aceste lucruri în urmă cu câțiva ani , nu folosind BERT sau ELMo, ci folosind Word2Vec, GloVe și fastText. Și ceea ce am descoperit este că utilizarea abordărilor de încorporare a cuvintelor pentru aceste probleme nu a făcut-- chiar dacă ați introdus asta ca caracteristici suplimentare peste alte abordări de ultimă generație ale acestei probleme de extracție a conceptului, nu a îmbunătățit predicția. performanță peste stadiul actual al tehnicii. Cu toate acestea, în această lucrare, aici ei folosesc cel mai simplu algoritm posibil. Ei au folosit o rețea neuronală recurentă alimentată într-un câmp aleator condiționat în scopul clasificării fiecărui cuvânt în fiecare dintre aceste categorii. Și caracteristica reprezintă... caracteristicile pe care le-au folosit sunt doar aceste caracteristici de încorporare. Deci, cu doar caracteristicile de încorporare Word2Vec, performanța este o prostie. Nu te apropii nicăieri de starea artei. Dar cu încorporarea mai bună, ei obțin de fapt - de fapt, au îmbunătățit stadiul tehnicii pentru fiecare dintre aceste sarcini. Și asta fără nicio inginerie manuală a caracteristicilor pe care am folosit-o în domeniu în ultimul deceniu. Așa că mi se pare extrem de promițător. Acum ați putea întreba, ei bine, aceasta este o problemă, care este clasificarea conceptelor sau identificarea conceptelor. Dar pentru o problemă predictivă? Deci, o altă lucrare publicată, de asemenea, în ce lună este acum, mai, deci luna trecută, în aprilie, a analizat o problemă prezisă de predicție de readmisie pe 30 de zile folosind rezumate de descărcare. Acest lucru a fost evaluat și pe MIMIC. Și evaluarea lor a analizat zona de sub curba ROC a două abordări diferite. Prima abordare, care folosește un model de pachete de cuvinte, ca ceea ce ați făcut în temele pentru acasă, și a doua abordare, care este rândul de sus acolo, care utilizează încorporarea BERT, pe care ei o numesc BERT clinic. Și acesta, din nou, este un lucru pe care l-am abordat de mult timp. Așa că am lucrat la aceste tipuri de probleme de readmisie. Și modelul „bag-of-words” este foarte greu de învins. De fapt, a reușit vreunul dintre voi la temele pentru acasă? Dacă vă amintiți, a existat o întrebare suplimentară, care este, oh, ei bine, poate dacă am folosi o abordare bazată pe învățarea profundă pentru această problemă, poate ați putea obține performanțe mai bune. A avut cineva performanțe mai bune? Nu. Câți dintre voi au încercat-o de fapt? Ridică mâna. Bine, deci unul... câțiva oameni cărora le este frică să spună, dar da. Deci câțiva oameni care au încercat, dar nu mulți. Dar cred că motivul pentru care este foarte dificil să te descurci mai bine cu, să zicem, o rețea neuronală recurentă față de un model de pachete de cuvinte este pentru că există-- o mare parte a subtilității în înțelegerea textului este în ceea ce privește înțelegerea contextul textului. Și asta este ceva la care folosirea acestor înglobări mai noi este de fapt foarte bună, deoarece pot obține-- ar putea folosi contextul cuvintelor pentru a reprezenta mai bine ceea ce înseamnă de fapt fiecare cuvânt. Și văd o îmbunătățire substanțială a performanței folosind această abordare. Dar pentru datele non-text? Așa că s-ar putea să întrebați, când avem cereri de asigurare de sănătate, avem date longitudinale de-a lungul timpului. Nu există limbaj în asta. Este un set de date în serie de timp. Aveți coduri ICD-9 în fiecare moment, poate aveți rezultate ale testelor de laborator , înregistrări ale medicamentelor. Și aceasta este foarte asemănătoare cu datele de scanare a pieței pe care le-ați folosit în temele pentru acasă. S- ar putea învăța încorporarea pentru acest tip de date, care este util și pentru transfer? Deci, un scop ar putea fi să spunem, OK, să luăm fiecare cod ICD-9, ICD-10, fiecare medicament, fiecare rezultat al testelor de laborator și să încorporăm acele tipuri de evenimente într- un spațiu dimensional inferior. Și deci iată un exemplu de încorporare. Și vezi cum-- aceasta este doar o schiță, apropo-- vezi cum ai putea spera că codurile de diagnostic pentru afecțiunile autoimune ar putea fi toate aproape unele de altele într-un spațiu dimensional inferior, codurile de diagnostic pentru medicamentele care tratează unele afecțiuni ar trebui fiți unul lângă celălalt și așa mai departe. Deci ați putea spera că o astfel de structură ar putea fi descoperită de un algoritm de învățare nesupravegheat care ar putea fi apoi utilizat într-o abordare de învățare prin transfer. Și într-adevăr, asta am găsit. Așa că am scris o lucrare despre asta în 2015/16. Și iată unul dintre rezultatele din acea lucrare. Deci, aceasta este doar o privire la cei mai apropiați vecini pentru a vă oferi o idee dacă încorporarea captează de fapt structura datelor. Așa că ne-am uitat la cei mai apropiați vecini ai diagnosticului ICD-9 codul de diagnostic 710.0, care este lupus. Și ceea ce găsiți este că un alt cod de diagnostic, tot pentru lupus, este primul rezultat cel mai apropiat, urmat de tulburarea țesutului conjunctiv sau sindromul Sicca, care este boala Sjogren, sindromul Raynaud și alte afecțiuni autoimune. Deci asta are mult sens. De asemenea, puteți parcurge tipuri de date, cum ar fi să întrebați care este cel mai apropiat vecin de la acest cod de diagnosticare până la testele de laborator? Și din moment ce am încorporat teste de laborator și coduri de diagnostic, toate în același spațiu, puteți obține un răspuns la asta. Și ceea ce vedeți este că aceste teste de laborator, care, apropo, sunt exact teste de laborator care sunt utilizate în mod obișnuit pentru a înțelege progresia în această afecțiune autoimună, sunt cei mai apropiați vecini. În mod similar, puteți pune aceeași întrebare despre droguri și așa mai departe. Și, apropo, am făcut toate aceste înglobări disponibile public pe GitHub al laboratorului meu. Și de când am scris această lucrare, au existat o serie de alte lucrări, cărora le citez în partea de jos aici, abordând o problemă foarte asemănătoare. Acesta din urmă a pus și embedding-uri disponibile public și este mult mai mare decât cel pe care l-am avut. Așa că aceste lucruri, cred, ar fi, de asemenea, foarte utile, deoarece cineva începe să se gândească la modul în care se poate transfera cunoștințele învățate de la o instituție către o altă instituție. unde s-ar putea să aveți mult mai puține date decât acea altă instituție. Așa că, în sfârșit, vreau să mă întorc la întrebarea pe care am ridicat-o la punctul doi aici, în care ne-am uitat la un model liniar cu o reprezentare aleasă manual și ne-am întrebat dacă am putea... în loc să tăiem naiv rețeaua neuronală profundă la un nivel și apoi reglaj fin, ar fi putut cineva să învețe o reprezentare a datelor dvs. special în scopul de a încuraja o bună generalizare la o nouă instituție? Și a existat o muncă cu adevărat interesantă în acest domeniu, care poartă numele de Adaptare nesupravegheată a domeniului . Deci, setarea care este luată în considerare aici este de unde aveți date - aveți date de la mai întâi o instituție, care este x virgulă y. Dar atunci vrei să faci predicții de la o nouă instituție la care tot ceea ce ai acces la timpul antrenamentului este x. Deci, spre deosebire de setările de transfer despre care am vorbit mai devreme, acum, pentru această nouă instituție, s- ar putea să aveți o mulțime de date neetichetate. Pe când înainte vorbeam despre a avea doar o cantitate mică de date pe etichetă, dar nu am vorbit niciodată despre posibilitatea de a avea o cantitate mare de date neetichetate. Și așa s-ar putea să vă întrebați, cum ați putea folosi acea cantitate mare de date neetichetate de la a doua instituție pentru a învăța reprezentarea care încurajează de fapt asemănările de la o soluție la alta? Și asta este exact ceea ce vor face aceste abordări de antrenament adversar de domeniu . Ceea ce fac ei este să adauge un al doilea termen la ultima funcție. Deci, ei vor minimiza - intuiția este că veți minimiza - veți încerca să învățați parametrii care vă reduc la minimum funcția de pierdere evaluată pe setul de date 1. Dar intuitiv, veți întreba asta există și o mică distanță, pe care o voi nota ca d aici, între D1 și D2. Așa că sunt puțin liber cu notația aici, dar când calculez distanța aici, mă refer la distanță în spațiul de reprezentare. Așa că vă puteți imagina că luați stratul de mijloc al rețelei dvs. neuronale profunde , deci luând, să zicem, acest strat, pe care îl vom numi stratul de caracteristici sau stratul de reprezentare și veți spune: vreau asta datele mele din prima instituție ar trebui să arate foarte asemănătoare cu datele din a doua instituție. Așadar, primele câteva straturi ale rețelei tale neuronale profunde vor încerca să egalizeze cele două seturi de date, astfel încât să arate similar cu altul, cel puțin în spațiul x. Și vom încerca să găsim reprezentări ale modelului dvs. care să obțină performanțe predictive bune pe setul de date pentru care aveți de fapt etichetele și pentru care reprezentările induse, să spunem, stratul mijlociu arată foarte asemănător între cele două seturi de date. . Și o modalitate de a face asta este doar să încerci să prezici pentru fiecare - acum obțineți un - pentru fiecare punct de date, ați putea spune de fapt , ei bine, din ce set de date provine, setul de date 1 sau setul de date 2? Și ceea ce doriți este ca modelul dvs. să nu poată distinge din ce set de date provine. Deci, asta este ceea ce scrie, stratul invers de gradient pe care doriți să îl puteți face -- doriți să vă asigurați că, prezicând din ce set de date provin acele date, doriți să faceți prost funcțiile de pierdere. Este ca și cum ai lua minusul acestei pierderi. Și așa că nu vom intra în detalii, dar am vrut doar să vă dau o referință la această abordare în partea de jos. Și ceea ce vreau să fac este să petrec doar un minut la sfârșit vorbind acum despre apărarea împotriva atacurilor adverse. Și din punct de vedere conceptual, acest lucru este foarte simplu. Și de aceea o pot face într-un minut. Așa că am vorbit despre cum se poate modifica cu ușurință o imagine pentru a transforma predicția de la, să spunem, porc la avion de linie. Dar cum am putea să-ți schimbăm algoritmul de învățare pentru a ne asigura că, în ciuda faptului că faci această perturbare, încă scoți predicția corectă, porcușule? Ei bine, ca să ne gândim la asta, trebuie să ne gândim, cum facem învățarea automată? Ei bine, o abordare tipică a învățării automate este de a învăța câțiva parametri theta care au redus la minimum pierderea empirică. Adesea folosim rețele neuronale profunde, care arată puțin așa. Și facem coborâre în gradient în care încercăm să minimizăm pierderile apărute la suprafață, găsim câțiva parametri teta au pierderi cât mai mici posibil. Acum, când te gândești la un exemplu adversar și de unde provin, de obicei, se găsește un exemplu contradictoriu în felul următor. Luați aceeași funcție de pierdere, acum pentru o anumită intrare x, și încercați să găsiți o perturbare delta la x o perturbare aditivă, de exemplu, astfel încât să creșteți pierderea cât mai mult posibil în raport cu eticheta corectă y. Și așadar, dacă ați crescut pierderea față de eticheta corectă y, intuitiv atunci când încercați să vedeți, ei bine, ce ar trebui să preziceți pentru această nouă intrare perturbată, va exista o pierdere mai mică pentru o etichetă alternativă, care Acesta este motivul pentru care predicția -- clasa care este prezisă se schimbă de fapt. Deci acum se poate încerca să găsească aceste exemple adverse folosind același tip de algoritmi de învățare bazați pe gradient pe care îl folosești pentru învățare în primul rând. Dar ceea ce se poate face este că poți folosi acum o metodă de coborâre în gradient -- în loc de coborâre în gradient, urcare în gradient. Deci, luați această problemă de optimizare pentru o anumită intrare x și încercați să maximizați acea pierdere pentru acea intrare x cu acest vector delta, iar acum faceți o ascensiune cu gradient. Și deci ce tipuri de deltă ar trebui să luați în considerare? Vă puteți imagina mici perturbări, de exemplu, delta care au valori maxime foarte mici. Acesta ar fi un exemplu de normă L-infinit. Sau ați putea spune că suma perturbațiilor , să spunem, toate dimensiunile trebuie să fie mici. Aceasta ar corespunde cu o normă L1 sau L2 legată de ceea ce ar trebui să fie delta. Așa că acum avem tot ce ne trebuie să ne gândim la apărarea împotriva acestui tip de perturbație adversă. Deci, în loc să minimizăm pierderile empirice tipice, ceea ce vom face este să încercăm să minimizăm o funcție de pierdere robustă adversară. Ceea ce vom face este să spunem, OK, vrem să fim siguri că indiferent de perturbația care adaugă intrarea, adevărata etichetă y are încă pierderi reduse. Așadar, doriți să găsiți parametrii theta care minimizează această nouă cantitate. Așa că spun că ar trebui să ne descurcăm bine chiar și în cazul celui mai rău caz de perturbare adversară. Și acum acesta ar fi următorul nou obiectiv de învățare, în care vom minimiza peste theta în raport cu maximul deltei noastre. Și trebuie să restricționați familia în care ar putea trăi aceste perturbări, așa că dacă acea delta pe care o maximizați este setul gol, veți reveni la problema de învățare inițială. Dacă lăsați să fie, să spunem, toate perturbațiile L-infinite mărginite cu dimensiunea maximă de 0,01, atunci spuneți că vom permite o cantitate foarte mică de perturbații. Iar algoritmul de învățare va găsi parametrii theta astfel încât pentru fiecare intrare, chiar și cu o mică perturbare a acesteia, aleasă în mod advers, să obțineți încă o performanță predictivă bună. Și aceasta este acum o nouă problemă de optimizare pe care o poate rezolva. Și acum am redus problema găsirii unui model robust advers la o nouă problemă de optimizare. Și ceea ce a făcut domeniul în ultimii doi ani este să vină cu noi abordări de optimizare pentru a încerca să rezolve rapid aceste probleme. Deci, de exemplu, această lucrare a publicat un ICML în 2018 de către Zico Kolter și studentul său -- Zico tocmai a vizitat MIT acum câteva săptămâni -- ceea ce a făcut este că a spus, vom folosi o relaxare convexă la liniarul rectificat. unitate, care este utilizată în multe arhitecturi de rețele neuronale profunde. Și ce va face va spune, OK, ne vom gândi la modul în care o mică perturbare a intrării s- ar propaga în ceea ce privește obținerea cât de mult ar putea schimba de fapt rezultatul. Și dacă cineva ar putea fi legat la fiecare strat cu strat cât de mult o mică perturbare afectează ieșirea acelui strat, atunci s- ar putea propaga din partea de jos până la funcția de pierdere a vârfului pentru a încerca să limiteze cât de mult funcția de pierdere. se schimbă în sine. Și o imagine a ceea ce v- ați aștepta este următoarea. În partea stângă aici, aveți un punct de date, roșu și albastru, și limita de decizie care este învățată dacă nu ați făcut acest algoritm de învățare robust. În dreapta, aveți acum... veți observa un mic pătrat în jurul fiecărui punct de date. Aceasta corespunde unei perturbări maxime de o cantitate limitată. Și acum observați cum granița de decizie nu traversează niciunul dintre acele pătrate. Și asta ar fi găsit prin acest algoritm de învățare. Interesant este că se pot privi filtrele care sunt învățate de rețeaua neuronală convoluțională folosind acest nou algoritm de învățare. Și găsești că sunt mult mai rare. Și deci acesta este un domeniu în mișcare foarte rapidă. De fiecare dată când apare un nou atac adversar... de fiecare dată când apare un nou mecanism de apărare adversar, cineva vine cu un alt tip de atac, care îl distruge. Și de obicei asta din unul din cele două motive. Unul, pentru că mecanismul de apărare nu este demonstrabil și s-ar putea încerca să vină cu o teoremă care să spună: OK, atâta timp cât nu perturbi mai mult de o anumită cantitate, acestea sunt rezultatele la care ar trebui să te aștepți. Cealaltă întoarcere a monedei este, chiar dacă vii cu o garanție dovedibilă, ar putea exista și alte tipuri de atacuri. Deci, de exemplu, v-ați putea imagina o rotație la intrare în loc de o normă limitată de L-infinit pe care o adăugați. Și astfel, pentru fiecare tip nou de model de atac, trebuie să vă gândiți la noi mecanisme de apărare. Și așa ar trebui să vă așteptați să vedeți o iterație în spațiu. Și există un site web numit robust-ml.org, unde multe dintre aceste atacuri și apărări sunt publicate pentru a permite comunității academice să facă progrese aici. Și cu asta, voi termina prelegerea de astăzi.