211service.com
Een nieuw neuraal netwerk kan computers helpen zichzelf te coderen
mevrouw Tech
Computerprogrammeren is nog nooit zo eenvoudig geweest. De eerste programmeurs schreven programma's met de hand, krabbelden symbolen op ruitjespapier en zetten ze om in grote stapels ponskaarten die door de computer konden worden verwerkt. Eén merkteken niet op zijn plaats en het hele ding moet mogelijk opnieuw worden gedaan.
Tegenwoordig gebruiken codeurs een reeks krachtige tools die een groot deel van het werk automatiseren, van het opsporen van fouten tijdens het typen tot het testen van de code voordat deze wordt geïmplementeerd. Maar op andere manieren is er weinig veranderd. Een domme fout kan nog steeds een heel stuk software laten crashen. En naarmate systemen steeds complexer worden, wordt het opsporen van deze bugs steeds moeilijker. Het kan soms dagen duren voordat teams van codeurs een enkele bug hebben opgelost, zegt Justin Gottschlich, directeur van de onderzoeksgroep machineprogrammering bij Intel.
Daarom vinden sommige mensen dat we machines gewoon zelf moeten laten programmeren. Geautomatiseerde codegeneratie is al een aantal jaren een populair onderzoeksonderwerp. Microsoft bouwt basiscodegeneratie in zijn veelgebruikte softwareontwikkelingstools, Facebook heeft een systeem gemaakt met de naam Geur dat kleine programma's automatisch aanvult, en DeepMind heeft een neuraal netwerk ontwikkeld dat kan komen met efficiëntere versies van eenvoudige algoritmen dan die bedacht door mensen. Zelfs het GPT-3-taalmodel van OpenAI kan maak eenvoudige stukjes code , zoals webpaginalay-outs, van prompts in natuurlijke taal.
Gottschlich en zijn collega's noemen dit machineprogrammering . In samenwerking met een team van Intel, MIT en het Georgia Institute of Technology in Atlanta heeft hij een systeem ontwikkeld met de naam: Machine afgeleide code-overeenkomst , of MISIM, dat de betekenis van een stukje code kan extraheren - wat de code de computer vertelt te doen - op vrijwel dezelfde manier als NLP-systemen (Natural Language Processing) een paragraaf kunnen lezen die in het Engels is geschreven.
MISIM kan dan andere manieren voorstellen waarop de code kan worden geschreven, met correcties en manieren om het sneller of efficiënter te maken. Dankzij het vermogen van de tool om te begrijpen wat een programma probeert te doen, kan het andere programma's identificeren die soortgelijke dingen doen. In theorie zou deze benadering kunnen worden gebruikt door machines die hun eigen software schreven, voortbouwend op een lappendeken van reeds bestaande programma's met minimaal menselijk toezicht of inbreng.
MISIM werkt door codefragmenten te vergelijken met miljoenen andere programma's die het al heeft gezien, afkomstig uit een groot aantal online opslagplaatsen. Eerst vertaalt het de code in een vorm die vastlegt wat het doet, maar negeert hoe het is geschreven, omdat twee programma's die op heel verschillende manieren zijn geschreven soms hetzelfde doen. MISIM gebruikt vervolgens een neuraal netwerk om andere code te vinden met een vergelijkbare betekenis. In een voordruk , melden Gottschlich en zijn collega's dat MISIM 40 keer nauwkeuriger is dan eerdere systemen die dit proberen, waaronder Aroma.
MISIM is een opwindende stap voorwaarts, zegt Veselin Raychev, CTO bij het in Zwitserland gevestigde bedrijf DeepCode, wiens tools voor het opsporen van bugs - een van de meest geavanceerde op de markt - neurale netwerken gebruiken die zijn getraind op miljoenen programma's om verbeteringen voor te stellen aan coders terwijl ze schrijven .
Maar machine learning is nog steeds niet zo goed in het voorspellen of iets een bug is of niet, zegt Raychev. Dat komt omdat het moeilijk is om een neuraal netwerk te leren wat wel of geen fout is, tenzij het door een mens als zodanig is bestempeld.
Er wordt veel interessant onderzoek gedaan naar diepe neurale netwerken en het oplossen van bugs, zegt hij, maar praktisch gezien zijn ze er nog niet, met een zeer grote marge. Doorgaans produceren AI-tools voor het opsporen van bugs veel valse positieven, zegt hij.
MISIM omzeilt dit door machine learning te gebruiken om overeenkomsten tussen programma's te ontdekken in plaats van bugs direct te identificeren. Door een nieuw programma te vergelijken met een bestaand stuk software waarvan bekend is dat het correct is, kan het de codeur waarschuwen voor belangrijke verschillen die fouten kunnen zijn.
Intel is van plan de tool te gebruiken als een code-aanbevelingssysteem voor interne ontwikkelaars, en suggereert alternatieve manieren om sneller of efficiënter code te schrijven. Maar omdat MISIM niet gebonden is aan de syntaxis van een specifiek programma, kan het potentieel veel meer doen. Het kan bijvoorbeeld worden gebruikt om code die in een oude taal als COBOL is geschreven, te vertalen naar een modernere taal als Python. Dit is van belang omdat veel instellingen, waaronder de De regering van de Verenigde Staten , vertrouwen nog steeds op software die is geschreven in talen waarvan maar weinig programmeurs weten hoe ze deze moeten onderhouden of bijwerken.
Uiteindelijk denkt Gottschlich dat dit idee kan worden toegepast op natuurlijke taal. In combinatie met NLP zou de mogelijkheid om met de betekenis van code los van de tekstuele representatie ervan te werken, mensen op een dag in staat kunnen stellen software te schrijven door simpelweg te beschrijven wat ze willen doen in woorden, zegt hij.
Het bouwen van kleine apps voor je telefoon of dat soort dingen die je dagelijks leven zullen helpen - ik denk dat die niet ver weg zijn, zegt Gottschlich. Ik zou graag zien dat 8 miljard mensen software maken op de manier die voor hen het meest natuurlijk is.