Mag je een kunstmatige intelligentie klonen via zijn API?

aapje-api.pngHet stelen van een AI is eenvoudiger dan je denkt, las ik bij Wired. Hoewel de algoritmes voor zelfdenkende en -lerende systemen uiteraard als supergeheim en bizar waardevol gezien worden, blijkt het mogelijk de werking vrijwel exact te repliceren. Mag dat?

De basis van vrijwel alle zelflerende systemen is in principe hetzelfde. Je voert het systeem een hoop trainingsinvoer, waarbij je meteen aangeeft wat de gewenste uitvoer is. Deze bak met mails is spam, deze mails zijn legitiem, het ding kauwt een tijdje en weet vervolgens nieuwe mails keurig als spam of legitiem te classificeren. Van tijd tot tijd moet je dat bijsturen, want wellicht zat er iets geks in je trainingsset. Zo kreeg ik een tijdlang geen mails uit China meer omdat in mijn trainingsset de spam voor 40% uit China kwam en mijn legitieme mail nul.

Het stelen van een AI gebeurt eigenlijk op dezelfde manier. Je kunt zo’n AI meestal via internet aanroepen (via zijn API). Dus wat je doet, is simpel: stuur een stapel data uit je trainingsset met die API en kijk wat de originele AI zegt. De antwoorden stop je in je eigen AI in zijn trainingsfase, waarmee je dus je eigen AI precies leert te denken als de originele AI.

Is dat legaal? Op het eerste gezicht wel. Hooguit als je zegt, de Terms of Service van die API verbieden het aanroepen met als doel het klonen van de AI en/of het extraheren van alle informatie. Maar dat is alleen maar contractbreuk, daar kun je niet zo veel mee.

In Europa is er misschien nog een optie: het databankenrecht. Wij kennen sinds eind jaren negentig aparte bescherming voor databanken met waardevolle informatie, los van het auteursrecht. Een databank is beschermd als hij het resultaat is van een substantiële investering in tijd, geld of moeite. Iets preciezer, een databank is:

een verzameling van werken, gegevens of andere zelfstandige elementen die systematisch of methodisch geordend en afzonderlijk met elektronische middelen of anderszins toegankelijk zijn en waarvan de verkrijging, de controle of de presentatie van de inhoud in kwalitatief of kwantitatief opzicht getuigt van een substantiële investering;

Met enige goede wil is een zelflerende AI prima in deze definitie te passen volgens mij. De brokjes kennis zijn “zelfstandige elementen”, die geordend zijn Hooguit kun je je afvragen of die blokjes kennis apart op te vragen zijn, maar als een AI een uitlegmodule heeft (“dit is spam want het komt uit China en bevat spelfouten in de titel”) dan lijkt me ook daar wel aan voldaan.

Onder het databankenrecht is het verboden een databank te kopiëren, maar ook het herhaald en systematisch opvragen van stukjes inhoud is verboden als je daarmee de normale exploitatie van de databank verhindert. En dat is volgens mij wel het geval als je een AI-databank kloont met deze truc.

Bewijzen lijkt me alleen buitengewoon ingewikkeld (tenzij je zo dom bent alles vanaf één IP-adres te doen) want je hebt in feite te maken met twee zwarte dozen die dezelfde uitvoer leveren bij dezelfde invoer. Maar je moet bewijzen dat de wérking daarvan hetzelfde is. Ik heb geen idee hoe je dát voor elkaar gaat krijgen. Dus praktisch gezien zie ik weinig manieren om juridisch wat te doen tegen het klonen van je AI.

Arnoud

20 reacties

  1. Bij physieke mechanismen gast het om implementatie (beschermbaar) versus specificatie (niet). Ik mag dus een paperclip niet precies namaken maar als ik op een andere manier ‘papier op elkaar klemmen’implementeer (dubbelgevouern lipje metaal) mag dat best. Als je een black box reverse engineert, maak je eigenlijk alleen inbreuk als je een toevalstreffer hebt… Zou ik, de lerk, denken

  2. Ik vind het nogal eens stap om de AI een database te noemen. Volgens mij zijn het namelijk juist géén zelfstandige elementen maar gaat het juist om de samenhang van al die elementen. Daarnaast, als je het netjes doet, verhinder je ook niet de normale werking van de databank als je veel opvraagt of deze kloont. De AI blijft namelijk gewoon werken.

    Tot slot, als je die twee zwarte dozen open maakt dan is de kans dat deze 100% identiek zijn vrijwel nihil. Het enige wat je met deze methode doet is het kopieren van de trainingsdata en daar zie ik echt niets mis mee.

    1. Even advocaat van de duivel spelend: er is wel iets mis met het kopiëren van de trainingsdata. Meestal is er erg veel moeite gaan zitten in de trainingsdata: iemand heeft handmatig de data zitten classificeren. Door je training uit te besteden aan een AI die al door iemand anders is gemaakt, maak je veel minder kosten dan die ander, en krijg je een oneerlijk verkregen voordeel t.o.v. die ander.

      Ik denk dat dat argument wat anders wordt als die ander, vanwege een bijzondere positie, de gelegenheid heeft om veel goedkoper trainingsdata te classificeren. Denk bijvoorbeeld aan Google, die dit via Captcha’s en op andere manieren goed kan uitbesteden aan het algemene publiek. Je zou kunnen argumenteren dat, als wij met z’n allen bijdragen aan die trainingsdata, we ook met z’n allen moeten kunnen profiteren van het resultaat.

      Ik denk wel dat, zolang je set trainingsdata niet exact het zelfde is als de set waarmee de oorspronkelijke AI is getraind, je een imperfecte kopie krijgt. Na meerdere generaties zal het resultaat steeds slechter worden, net zoals bij het kopiëren van cassettebandjes, of bij papieren fotokopieën.

    2. Je kopieert de trainingsdata helemaal niet. Je creëert je eigen trainingsdata. Het enige waar je de andere databank bij gebruikt is het classificeren van je eigen trainingsdata, iets wat je ook met de hand zou kunnen doen. Je eigen trainingsdataset is/wordt geen kopie van de trainingsdataset van de API, omdat de inhoud van de e-mails anders is.

  3. Je kopieert niet de inhoud van de zwarte doos. In die doos kun je tensorflow stoppen of Caffe, Neon, TensorFlow, Theano of Torch (copy paste internet dus geen idee of dat echt zo is 😉 Als je deep learning oplossing wekt dan zouden ze allemaal soort van tot de zelfde conclusie moeten komen op basis van gelijke inputs.

    De waarde/inspanning is in het “ja dat is een kat” “dat is geen kat” “kat” “geen kat” om te komen tot een oplossing die een kat kan herkennen. een verzameling van “wel of geen kat” die systematisch of methodisch (met tensorflow) geordend en afzonderlijk met elektronische middelen of anderszins toegankelijk (via https://cloud.google.com/vision/) zijn en waarvan de verkrijging, de controle of de presentatie van de inhoud in kwalitatief of kwantitatief opzicht getuigt van een substantiële investering (hele dagen “kat” “geen kat” zitten swipen);

  4. Beschermen van trainingsdata zou misschien kunnen, beperken van gebruik van de orginele AI zou wellicht kunnen, maar het beschermen van de “kopie AI” zelf klinkt als moreel bizar. Dit is gewoon “intelligentie” die iedereen kan opbouwen, eventueel zelfs in eigen brein. Het opbouwen van intelligentie wil je toch niemand verbieden?

    Overigens mag je volgens het databanken recht toch ook gewoon zelf een databank opbouwen, zelfs als de inhoud uiteindelijk gelijk blijkt aan een andere databank?Bijvoorbeeld, als je jarenlang elke dag de sportuitslagen uit de krant in je eigen database opslaat, maak je toch geen inbreuk omdat je dezelfde data als de uitgever van de krant in je database hebt staan?

    1. Intelligentie is een red herring. Zie AI meer als Advanced Informatics: Een verzameling wiskunde-sommetjes die slechts geinspireerd zijn op biologische intelligentie.

      De vraag kan simpel zijn: Mag je de werking van een slim boekhoudprogramma kopieren, door de input-output map te achterhalen? Indien niet (ik ben geen softwarerechten expert), dan mag het kopieren van een classificatie-model ook niet. Ook al gebruik je een andere programmeertaal.

      1. AI is m.i. breder dan een verzameling wiskunde sommetjes, een begrensde i/o map of een andere programmeertaal. Uiteindelijk is het fundamenteel wel gerelateerd, maar conceptueel is een artificieel neuraal netwerk beter te vergelijken met een biologisch neuraal netwerk: aan de individuele (artificiele) neuronen is geen zinvolle betekenis toe te kennen zoals dat bij de individuele regels van een traditioneel computerprogramma of de individuele vergelijkingen van een wiskundige beschrijving wel kan.

        Een wiskundige beschrijving of een traditioneel computer programma kun je pas maken als je de i/o relatie “begrijpt”; voor ai is dat net als bij biologische “intelligentie” niet nodig: zulke intelligentie kan “aanvoelen” wanneer er een bepaalde situatie is/ontstaat (een onveilige situatie, een grote kans op succes, …) zonder precies te begrijpen welke combinaties van “waarnemingen” daaraan ten grondslag liggen. Of “advanced informatics” daar een goede term voor is kun je je afvragen (het gebruik van dit soort AI kun je n.l. ook als een zwaktebod zien).

        T.a.v. je voorbeeld: wat stel je je voor bij de input-output map van een slim boekhoud programma? De regels voor veel vormen van boekhouden zijn openbaar en liggen redelijk vast, dus de kern kun je gewoon implementeren. De user interactie en grafische delen vormen de input-output map en die kan wel snel auteursrechtelijk beschermd zijn. Voor de delen waar de input-output map niet is beschermd, zou ik het erg vreemd vinden om de AI versie te verbieden. In auteursrecht zie ik dan weinig grond:

        1. Het trainen van een neuraal netwerk is niet creatief.
        2. De interne opbouw van de AI versie zal waarschijnlijk heel anders zijn dan het orgineel. Daar zul je dus niet snel van een kopie kunnen spreken.

        Het lijkt me daarom dat een “AI kopie” onder AR (in praktijk) alleen te verbieden is als de trainingsdata (de specificatie ) zelf inbreuk maakt. Software patent zou misschien nog kunnen, maar daarbij zie ik zo snel ook geen reeel voorbeeld voor me.

        1. maar conceptueel is een artificieel neuraal netwerk beter te vergelijken met een biologisch neuraal netwerk

          Nee, conceptueel is een NN net als een computer met poorten. De vergelijking met een biologisch neuraal netwerk is zeer geforceerd, en leid vaak tot verwarring. Een pionier van de recente deep learning hype (Facebook’s Yann LeCun) noemt daarom zijn netwerken zonder het woord “neuraal”. NN’s zijn slechts losjes geinspireerd op de natuur, zoals de naald geinspireerd is op de angel. Backpropagation (de ruggegraat van NN’s) is niets meer dan een praktische invulling van de Chain Rule https://en.wikipedia.org/wiki/Chain_rule . Er is wel onderzoek gaande om de vergelijking met biologische neurale netwerken sterker te maken, maar dat staat nog in de kinderschoenen: https://arxiv.org/abs/1502.04156

          aan de individuele (artificiele) neuronen is geen zinvolle betekenis toe te kennen

          Recent onderzoek toont aan dat dit wel mogelijk is. Bijvoorbeeld: http://cs231n.github.io/understanding-cnn/ voor een overzicht.

          wat stel je je voor bij de input-output map van een slim boekhoud programma?

          Misschien niet het beste voorbeeld. Ik kan ook geen Nederlandse rechtszaken hierover vinden. Gerelateerd vond ik wel: http://blog.iusmentis.com/2012/09/06/clean-room-softwareontwikkeling-versus-het-auteursrecht/

          Bij het klonen van een model/programma is geen sprake van clean-room softwareontwikkeling. Dat het trainen van een neuraal netwerk geen creativiteit vergt ben ik het niet mee eens. Vooral bij NN’s is het niet plug-en-play, maar wordt zeer zorgvuldig meerdere architecturen uitgetest.

          1. Nee, conceptueel is een NN net als een computer met poorten.

            Ik zie niet waarom dat een betere vergelijking zou zijn: een standaard computer met poorten is niet eens zelf-lerend en ik zie dan ook niet wat dat zou verduilijken. Natuurlijk zijn artificiele neurale netwerken niet hetzelfde als biologische; enkele redenen om ze daar toch mee te vergelijken is dat de “neuronen” conceptueel parallel werken en de kennis/intelligentie niet zozeer in de “neuronen” zelf zit, maar meer in de aantallen en gewichten van de verbindingen daartussen.

          2. Dat het trainen van een neuraal netwerk geen creativiteit vergt ben ik het niet mee eens. Vooral bij NN’s is het niet plug-en-play, maar wordt zeer zorgvuldig meerdere architecturen uitgetest.

            Het ontwerp van een goede architectuur zal vast nog wel een verschil maken, maar de langere termijn belofte voor AI is toch dat die architectuur ook sneller automatisch kan worden bepaald? Ik ging er eigenlijk ook vanuit dat de creativiteit vooral nog in de architectuur van het netwerk zit, maar begrijp ik je goed dat dit evengoed voor de trainingsset zelf geldt? Kun je een voorbeeld geven (op wat voor soort ontwerpbeslissingen doel je dan nog)?

            1. maar de langere termijn belofte voor AI is toch dat die architectuur ook sneller automatisch kan worden bepaald?

              Juist. Er is bijvoorbeeld NEAT: https://en.wikipedia.org/wiki/Neuroevolution_of_augmenting_topologies dat automatisch de architectuur bepaald, en er is recent onderzoek door Google Deepmind dat neurale netwerken gebruikt om de optimalisatie van neurale netwerken te optimaliseren (erg meta…): https://arxiv.org/abs/1606.04474

              begrijp ik je goed dat dit evengoed voor de trainingsset zelf geldt?

              Ja, het opbouwen van een goede trainingsset vergt erg veel energie en exploratie.

              Kun je een voorbeeld geven (op wat voor soort ontwerpbeslissingen doel je dan nog)?

              Bijvoorbeeld, het aantal lagen, de breedte van de lagen, de soort laag, hoeveel dropout ( https://www.quora.com/Why-has-Google-filed-patent-applications-on-several-commonly-used-machine-learning-techniques-about-which-plenty-of-prior-art-exist-What-do-they-want-to-achieve ), wat voor activatie-functie, hoe de features te presenteren en te pre-processen, de leersnelheid, de initialisatie van de gewichten, de optimalisatie functie/update regel, de evaluatie/verlies-functie, en de netwerktopologie zelf (zie https://indico.io/blog/wp-content/uploads/2016/02/inception_cleaned.png voor een ongangbaar specifiek voorbeeld)

              1. Bedankt voor je links, je zit er nogal diep in. Ik zoek eigenlijk vooral nog verduidelijking van:

                Dat het trainen van een neuraal netwerk geen creativiteit vergt ben ik het niet mee eens.

                Ik ging ervan uit dat het (na keuze van de architectuur/design van het netwerk) vooral een kwestie was van zoveel mogelijk input/output data verzamelen over het gehele domein, en dan maar domweg trainen; maar uit bovenstaande kreeg ik de indruk dat er tegenwoordig nog veel meer achter het trainen zelf zit? Maar wellicht ook heb ik je verkeerd begrepen en doel je op een iteratieve aanpak?

  5. De kern van AI is dat je niet data wil memorizeren, zoals een database dat wel doet. Je wil nieuwe dingen kunnen voorspellen/classificeren, dingen die je nog nooit hebt gezien tijdens het trainen. Je kan een enorm groot neuraal netwerk bouwen, met voor elk object een gespecialiseerd neuron, dat alleen vuurt bij een enkel specifiek object. Je hebt dan een enorm inefficiente database. Gerelateerd aan dit, is het cryptografische concept van differentiele privacy: Hoe kun je een database zo bouwen dat queries nooit persoons-identificerende data opleveren? https://en.wikipedia.org/wiki/Differential_privacy

    De werking is ook ambigue in deze. Als het functioneel precies hetzelfde is, maakt het dan nog uit hoe het intern werkt? Maakt het echt uit of je een database kopieert, maar in een ander formaat opslaat? De invoer (query) levert dezelfde output op (lijst met resultaten), maar de werking is anders: Het ene gebruikt nosql en de ander gebruikt Postgres.

    Als de input-output map precies hetzelfde is, zelfs voor compleet random gegenereerde data, dan kun je daarmee bewijzen dat de zwarte dozen precies hetzelfde “werken”. Anderzijds kun je, net als mapmakers, zeer onwaarschijnlijke voorspellingen / classificaties inbouwen. Als een ander model dan precies dezelfde input-output mapping oplevert is het kopieren bewezen.

    Anders dan de input-output mapping, is enkel de input ook interessant. Mag je een neural netwerk trainen op auteursrechtelijk beschermd werk? Als het functioneel een database is, waarschijnlijk niet (je kan het origineel dan opvragen/genereren, men kopieerd in effect de (mogelijk beschermde) training database). Maar het is slechts een verzameling van gewichtjes, getallen in een rij. Misschien is een AI model gewoon data, en data zelf is niets.

    1. Dat 2 zwarte dozen bij dezelfde input dezelfde output leveren lijkt me op zich geen enkel probleem: dat doen rekenmachines als het goed is allemaal. Als de dozen meer auteursrechtelijk beschermd materiaal opleveren (output) dan je erin stopt (input), dan lijkt me aannemelijk dat de doos dat extra materiaal “bevat” en daarmee inbreuk maakt (dat extra materiaal moet dan wel creatief zijn). Het formaat van dat extra materiaal zal daarbij inderdaad weinig uitmaken.

      Ik vermoed verder dat je een neuraal netwerk in principe wel mag trainen met AR beschermde data (ianal), maar bij een netwerk van een bepaald formaat kun je verwachten dat het netwerk “kopieen” van (delen van) de input zal gaan bevatten en daarmee niet meer verspreid zou kunnen worden zonder toestemming van de rechthebbenden.

      @Arnoud: Zijn er eigenlijk regels over hoeveel je mag sampelen uit AR-beschermde werken (muziek, foto’s, tekst)? Je kunt tegenwoordig bij iets wat in een regulier formaat minder dan X bytes opslag kost toch niet meer volhouden dat het nog creatief is ( anders wordt er in de digitale wereld wel heel veel inbreuk gemaakt)?

      1. Er zijn geen getalsmatige regels ben ik bang. Het gaat om de mate van creativiteit die je overneemt. Een rechttoe rechtaan zakelijk nieuwsberichtje zal niet per se beschermd zijn ook al zijn het twee alinea’s, maar een goeie dichter kan in zes woorden wellicht iets superknaps samenstellen (“For sale: baby shoes, never worn.” is een bekende) dat dan ondanks kortheid toch beschermd is.

        1. Als je die dan citeert moet je er dan niet de bron en auteur bij vermelden, en er inhoudelijk iets over zeggen, zodat het niet slechts ter “versiering” van je eigen verhaal dient? (Je neemt het auteursrecht toch wel serieus 🙂 )

  6. De API van een schaakcomputer is simpel. Input (het bord met stukken) leidt tot output (de zet). Dat maakt het nog niet gemakkelijk om een goede schaakcomputer na te maken. De trainingsdata is publiekelijk beschikbaar (duizenden online databases met publieke wedstrijden) en de regels van het spel zijn ook bekend. Toch is het nog niet makkelijk om een goede schaakcomputer te maken, laat staan een bestaande perfect na te bootsen. Ook niet als je direct de output van een schaakcomputer gebruikt als trainingsdata.

    Hoe complexer het probleemdomein hoe moeilijker het wordt. Schaken, Go, en zo verder.

    1. Mooi voorbeeld. Ik heb de indruk dat de ontwikkeling van artificiele neurale netwerken (ANN) de afgelopen 20 jaar de wet van Moore niet heeft kunnen volgen en nogal achter is gebleven bij de verwachtingen (in ieder bij de mijne…). (Ergens maar goed ook, want ik geloof niet dat we klaar zijn voor (te) intelligente netwerken die we zelf niet begrijpen )

      Blijkbaar is intelligentie toch nog steeds erg lastig over te brengen naar een computer en is er nog erg veel hand (denk) werk en creativiteit nodig om zinvolle ANN’s op te bouwen. Misschien kun je het opzetten van een ANN voorlopig ook beter als een kunst zien en is het ook beter de ANN’s voorlopig te zien als hulpmiddel/tussenstap om de ‘echte logica’ te achterhalen. Ik mis in ieder geval een duidelijk raamwerk, stappenplan, e.d. voor de ontwikkeling van een ANN (of kopie ANN).

      Ik vermoed dan ook dat het (kunnen) kopieren van een (zinvolle) AI op de in wired beschreven wijze veel minder makkelijk en minder snel zal gebeuren dan gesuggereerd. Maar misschien staan we wel aan de vooravond van een AI doorbraak en komt er een denkspel ANN dat onoverwinnelijk is, wordt deze vervolgens ‘gekopieerd’, en zal vanaf dan ieder denkspel tussen computers in remise eindigen of een wedstrijd in harware performance worden, waarmee we dan eindelijk van een denksport kunnen spreken.

Geef een reactie

Handige HTML: <a href=""> voor hyperlinks, <blockquote> om te citeren, <UL>/<OL> voor lijsten, en <em> en <strong> voor italics en vet.