In der Regel hat ein Datenwissenschaftler eine vage Vorstellung von der mobilen Entwicklung, und Entwickler mobiler Anwendungen beschäftigen sich nicht mit maschinellem Lernen.
Andrei Volodin , Ingenieur bei Prisma AI, lebt an der Schnittstelle dieser beiden Welten und erzählte den Podcast-Moderatoren von Podlodka, wie es sich anfühlt.
Stas Tsyganov (Tutu.ru) und Gleb Novik (Tinkoff Bank) nutzten den Moment und machten zunächst ein für alle Mal klar, dass
niemand neuronale Netze auf Mobilgeräten trainiert . Und auch herausgefunden, dass es beim maschinellen Lernen leider keine Zauberer gibt; diskutierten moderne Techniken wie
Deep Learning, Enforcement Learning und Kapsel-Netzwerke.
Da Podlodka eine Audioshow über die mobile Entwicklung ist, kamen sie zu ihr und fanden heraus, wie das alles für mobile Geräte funktioniert.
Als nächstes folgt die Textversion dieser Konversation, und der Podcast-Eintrag befindet sich
hier .
Über Andrei Volodin, cocos2d und Fiber2d
GLEB: Bitte erzähl uns etwas über dich. Was machst du?
ANDREW: Ich bin ein mobiler Entwickler, aber ich mache sehr wenig in der klassischen iOS-Entwicklung. Zu meinen Aufgaben gehört praktisch nicht die Arbeit mit UIKit. Ich bin der Hauptentwickler der sehr beliebten Cocos2d-Game-Engine auf GitHub. Im Moment bin ich GPU-Ingenieur bei Prisma. Zu meinen Aufgaben gehören die Integration neuronaler Netze in Grafikkarten und die Arbeit mit Augmented Reality, insbesondere mit dem VR-Kit.
GLEB: Cool! Besonders interessant über cocos2d. Soweit ich weiß, ist dieser Rahmen vor langer Zeit erschienen.
ANDREW: Ja, um 2009 herum.
GLEB: Du hast es von Anfang an benutzt?
ANDREW: Nein. Ich wurde erst 2015 der Hauptentwickler. Zuvor war ich ein Core-Mitarbeiter. Apportable, das die Entwicklung finanzierte, ging bankrott, die Leute, die das Geld für die Entwicklung erhielten, gingen und ich wurde der Anführer. Jetzt bin ich Administrator im Forum und helfe Neulingen bei einigen Problemen. Die letzten Versionen wurden von mir veröffentlicht. Das heißt, ich bin im Moment der Hauptbetreuer.
GLEB: Aber lebt cocos2d noch?
ANDREW: Höchstwahrscheinlich nicht, hauptsächlich aufgrund der Tatsache, dass es in Objective-C geschrieben ist und es viel Vermächtnis gibt. Zum Beispiel unterstütze ich einige alte Spielzeuge, die mit ihrer Verwendung geschrieben wurden, andere Entwickler - meine Legacy-Projekte. Von den aktuellen Motoren konnte man über Fiber2d hören. Dies ist auch mein Projekt.
Fiber2d ist die erste Swift-Game-Engine, die auf Android portiert wurde. Wir haben ein Spiel gestartet, das vollständig in Swift für iOS und Android geschrieben wurde. Auch darüber finden Sie auf Github. Dies ist der nächste Meilenstein in der Entwicklung der cocos2d-Community.
Über maschinelles Lernen an den Fingern
GLEB: Beginnen wir heute allmählich mit unserem Thema. Heute werden wir
über maschinelles Lernen und alles um es herum sprechen - verbunden und unverbunden mit Mobiltelefonen. Lassen Sie uns zunächst herausfinden, worum es beim maschinellen Lernen geht. Wir werden versuchen, so viel wie möglich an den Fingern zu erklären, da nicht alle Entwickler von Mobilgeräten damit vertraut sind. Können Sie uns sagen, was es ist?
ANDREW: Basierend auf der klassischen Definition ist
maschinelles Lernen eine Suche nach Mustern in einem Datensatz . Ein klassisches Beispiel sind neuronale Netze, die heute sehr beliebt sind. Unter ihnen gibt es Netzwerke, die sich auf die Klassifizierung beziehen. Ein einfaches Beispiel für die Klassifizierungsaufgabe besteht darin, zu bestimmen, was auf dem Bild gezeigt wird: Es gibt eine Art Bild, und wir möchten verstehen, was es ist: ein Hund, eine Katze oder etwas anderes.
Das Schreiben mit Standardcode ist sehr schwierig, da unklar ist, wie dies zu tun ist. Daher werden mathematische Modelle verwendet, die als maschinelles Lernen bezeichnet werden. Sie basieren auf der Tatsache, dass bestimmte Gesetze aus einer großen Anzahl von Beispielen extrahiert werden. Mit diesen Gesetzen ist es dann möglich, Vorhersagen mit einiger Genauigkeit für neue Beispiele zu treffen, die nicht im ursprünglichen Datensatz enthalten waren. Dies ist auf den Punkt gebracht.
GLEB: Lernen Sie dementsprechend eine Geschichte über das Ändern eines Modells mithilfe eines Trainingsdatensatzes?
ANDREW: Während des Trainings bleibt das Modell in der Regel konstant. Das heißt, Sie wählen eine Art Architektur und lernen sie. Wenn wir zum Beispiel neuronale Netze nehmen, die nicht auf alles maschinelle Lernen beschränkt sind, dann sind anfangs grob gesagt alle Gewichte Nullen oder andere identische Werte. Während wir unsere Daten dem Lernrahmen zuführen, ändern sich die Gewichte mit jedem neuen Beispiel ein wenig und am Ende fließen sie in eine trainierte Maschine.
STAS: Der ultimative Zweck dieses Modells ist es, schnell einige Daten bereitzustellen, die nicht aus dem Trainingsmuster stammen. Erhalten Sie schnell das Ergebnis?
ANDREW: Ja, aber es geht nicht nur um Geschwindigkeit. Beispielsweise konnten einige Aufgaben nicht anders gelöst werden - beispielsweise ist das Klassifizierungsbeispiel sehr nicht trivial. Bevor die Klassifizierungsnetze abgefeuert wurden, gab es keine Lösungen, um zu verstehen, was auf dem Bild gezeigt wird. Das heißt, in einigen Bereichen ist dies eine direkt revolutionäre Technologie.
Über Handarbeit und maschinelles Lernen
STAS: Ich habe meiner Großmutter kürzlich gesagt, was maschinelles Lernen ist. Sie dachte anfangs, dass maschinelles Lernen ist, wenn eine Maschine jemanden unterrichtet. Ich begann ihr zu erklären, dass wir im Gegenteil versuchen, die Maschine so zu unterrichten, dass sie dann eine Aufgabe ausführt.
Ich stellte die Probleme vor, die maschinelles Lernen löst. Die meisten von ihnen wurden vor dem Auslösen des maschinellen Lernens von Menschen durchgeführt. Darüber hinaus wurde dies nicht als gering qualifizierte Arbeit angesehen, sondern als nicht zu hochtechnologisch. Dies sind die einfachsten Operationen, die eine Person weitgehend ausführen kann. Können Sie sich das vorstellen?
ANDREW: Das kann man auch sagen. Tatsächlich sind solche Arbeiten jetzt noch erforderlich, jedoch nur, um Datensätze für das maschinelle Lernen vorzubereiten. In einigen Bereichen, beispielsweise in der Medizin, ermöglicht maschinelles Lernen, Routineaufgaben ein wenig zu glätten und den Prozess ein wenig zu vereinfachen. Aber nicht immer. Ich würde nicht sagen, dass sich maschinelles Lernen darauf konzentriert, dummes Arbeiten zu ermöglichen. Manchmal macht es einen ziemlich intellektuellen Job.
STAS: Können Sie ein Beispiel für eine solche intellektuelle Arbeit geben?
ANDREW: Zum Beispiel unsere Prisma-Anwendung - viele haben sie wahrscheinlich verwendet (dies ist keine Werbung!). Es kann nicht gesagt werden, dass dies intellektuelle Arbeit ist und die Leute das Bild oft in Bilder umzeichnen, und das neuronale Netzwerk macht es - Sie geben ihm ein normales Bild und
erhalten etwas Neues . Weiter kann man darüber streiten, ob es schön ist oder nicht, aber die Tatsache ist unbestreitbar, dass es etwas ist, was eine Person nicht tun kann, oder es dauert enorm viel Zeit.
Über die Geschichte
GLEB: Ja, ich denke das ist ein großartiges Beispiel. Wahrscheinlich einen kleinen Blick auf die Geschichte wert. Wie lange ist dieses Thema schon entwickelt? Es scheint mir, dass fast von den Anfängen der Programmierung, zumindest sehr, sehr lange her.
ANDREW: Ja, im Allgemeinen wurden die meisten Konzepte, die jetzt angewendet werden, bereits in den 90er Jahren entwickelt. Natürlich sind jetzt neue Algorithmen erschienen, und die Qualität der damaligen Algorithmen hat sich verbessert. Und obwohl das Gefühl besteht, dass aus dem Nichts ein plötzliches Interesse an maschinellem Lernen entstanden ist, haben sich die Menschen schon lange dafür interessiert.
Fortschritte in den frühen Stadien waren auf die Tatsache zurückzuführen, dass es sich hauptsächlich um mathematische Modelle handelt und die Mathematik in Bezug auf Entdeckungen seit langem stabilisiert ist.
Die derzeitige Explosion ist ausschließlich auf die Tatsache zurückzuführen,
dass die Eisenkapazitäten um uns herum erheblich gestiegen sind , hauptsächlich aufgrund der Verwendung von Grafikkarten. Aufgrund der Tatsache, dass wir heute in der Lage sind, große parallele Berechnungen durchzuführen, sind neue Technologien aufgetaucht - maschinelles Lernen, Kryptowährung usw.
Das aktuelle Interesse und allgemein die aktuelle Welle hängen größtenteils damit zusammen, dass
es gerade erst möglich wurde . Diese Berechnungen könnten früher durchgeführt werden, aber katastrophal lang. Jetzt brauchen sie eine vernünftige Zeit, und so haben alle angefangen, sie zu benutzen.
Über Eisen
STAS: Ich mache gerade einen Kurs und dort muss ich auch alle Arten von Modellen trainieren. Ich trainiere einige davon auf meinem funktionierenden MacBook. Ja, in einigen Fällen müssen Sie warten, vielleicht 5 Minuten, und die Modelle sind nicht die besten, die durchschnittliche Genauigkeit liegt bei 85%, aber Hauptsache, sie funktionieren. Es ist klar, dass Sie diesen Prozentsatz im Kampf besser haben wollen und vielleicht für die Produktion nicht ganz geeignet sind.
ANDREW: Ja, solche Modelle sind wahrscheinlich nicht sehr interessant. Dies ist höchstwahrscheinlich auf die einfachsten Vorhersagen usw. zurückzuführen. In der Realität kann beispielsweise eine Trainingsprobe 90 GB wiegen, und das Erlernen kann eine Woche dauern. Unternehmen wie Nvidia geben an, dass sie jetzt eine neue spezielle Tesla-Grafikkarte herausgebracht haben und Sie Inception V3 in 24 Stunden trainieren können! Dies wird als direkter Durchbruch angesehen, da es zuvor mehrere Wochen gedauert hat.
Je mehr Datensätze und je komplexer die Struktur des Modells ist, desto länger dauert das Lernen . Die Leistung ist jedoch nicht das einzige Problem. Wenn Sie es wirklich brauchen, können Sie im Prinzip einen Monat warten. Das Problem hängt mit der Inferenz zusammen - wie kann man dieses neuronale Netzwerk später anwenden? Es ist notwendig, dass es während seiner Verwendung auch gute Ergebnisse in Bezug auf die Leistung zeigt.
STAS: Insbesondere möchte ich, dass alles auf mobilen Geräten funktioniert und schnell funktioniert.
ANDREW: Ich glaube nicht, dass es sich ursprünglich mit Blick auf die Arbeit an mobilen Anwendungen entwickelt hat. Ein solcher Boom begann irgendwo im Jahr 2011, und trotzdem waren dies Desktop-Lösungen. Jetzt wird das wahre Interesse der Community durch die Tatsache gestützt, dass es auf iPhones, einschließlich, möglich geworden ist, Netzwerke zu starten, die in Echtzeit funktionieren.
GLEB: Stas, Sie sagten, dass das Endergebnis davon abhängt, wie leistungsfähig Ihre Grafikkarte ist und im Allgemeinen das System. Das heißt, es funktioniert nicht anders?
ANDREW: Das ist nicht so, aber ich bin nicht sicher, ob das Modell auf einer Maschine mit geringem Stromverbrauch trainiert wird.
GLEB: Übrigens, ich erinnere mich, vor 5 Jahren, als es nur einen Boom in neuronalen Netzen gab, sagten unsere Lehrer, dass alles Neue nur gutes altes Vergessen ist. Es war alles schon in den 70-80ern und es wird nicht funktionieren, seitdem hat es nicht mehr funktioniert. Wahrscheinlich haben sie sich immer noch geirrt.
ANDREW: Ja. Für einige Aufgaben hat das maschinelle Lernen jetzt sehr schwer geschossen. Objektiv kann gesagt werden, dass sie funktionieren.
Über tiefes Lernen
GLEB: Es gibt so etwas Modisches - tiefes Lernen. Was ist der Unterschied zu dem, worüber wir gesprochen haben?
ANDREW: Ich würde nicht sagen, dass es Unterschiede gibt. Es gibt nur einige Untergruppen des maschinellen Lernens, und es gibt eine große Anzahl von ihnen. Sie müssen verstehen, dass das, was als
tiefes Lernen bezeichnet wird, der Teil des maschinellen Lernens ist, der üblicherweise als neuronale Netze bezeichnet wird . Es wird tief genannt, weil es in neuronalen Netzen viele Schichten gibt, und je mehr Schichten, desto tiefer das neuronale Netz. Daraus entstand der Name.
Es gibt aber auch andere Arten des maschinellen Lernens. Beispielsweise wurde baumbasiertes maschinelles Lernen bisher erfolgreich für die Gesichtsverfolgung eingesetzt, da es viel schneller als Neuronen ist. Es wird auch zum Ranking, Anzeigen von Anzeigen und mehr verwendet.
Das heißt, tiefes Lernen ist nichts anderes. Dies ist eigentlich eine Teilmenge des maschinellen Lernens, die eine Menge von allem beinhaltet. Nur tiefes Lernen ist heute am beliebtesten geworden.
Über die Theorie der neuronalen Netze
STAS: Ich wollte ein wenig über die Theorie der neuronalen Netze sprechen, ich werde es einfacher versuchen. Sie sagten, dass sie viele Schichten haben. Wenn wir eine Ebene haben und sich einige Objekte auf der Ebene befinden, können wir diese Ebene theoretisch mit Hilfe einer Ebene tatsächlich in zwei Teile teilen, oder?
ANDREW: Nein, nicht wirklich.
STAS: Was gibt uns eine große Anzahl von Schichten, wenn an den Fingern?
ANDREW: Was ist ein neuronales Netzwerk? Lassen Sie es uns klarstellen. Dies ist nur eine mathematische Funktion, die eine Reihe von Zahlen als Eingabe und eine Reihe von Zahlen als Ausgabe verwendet - das ist alles.
Was ist drin? Am beliebtesten sind nun Faltungsnetzwerke, in denen Faltung stattfindet - es gibt einfach viele Matrixmultiplikationen untereinander, die Ergebnisse werden addiert, diese Operationen werden in jeder Schicht ausgeführt. Außerdem befindet sich zwischen den Schichten die sogenannte Aktivierung, die es den neuronalen Netzen nur ermöglicht, tief zu sein.
Da die Kombination von linearen Transformationen eine lineare Transformation ist, können sie nach dem Erstellen von 10 linearen Schichten immer noch als eine lineare Schicht dargestellt werden. Damit die Ebenen nicht kollabieren, gibt es zwischen ihnen bestimmte mathematische Aktionen, die die Funktion nichtlinear machen. Dies ist notwendig, um die Anzahl der Parameter zu erhöhen.
Grob gesagt ist ein neuronales Netzwerk nur eine riesige Anzahl von Zahlen, die dann irgendwie auf unsere Daten zutreffen, zum Beispiel auf ein Bild. Aber ein Bild - auch eine Reihe von Zahlen - ist nur eine Reihe von Pixeln. Wenn wir das Netzwerk trainieren, berücksichtigen wir beispielsweise 15 Millionen Parameter (jede Zahl ist ein separater Parameter), die mithilfe einiger Heuristiken leicht nach links und ein wenig nach rechts verschoben werden können. Dank einer so großen Anzahl von Parametern werden so coole Ergebnisse erzielt.
Tiefes Training ist genau erforderlich, damit es viele dieser Parameter gibt und nicht alles zu einer Schicht zusammenfällt.
GLEB: Es scheint mehr oder weniger klar zu sein.
ANDREW: Deep Learning ist eine Teilmenge des maschinellen Lernens. Aber aus irgendeinem Grund kam ein Hype zu diesem Thema auf - besonders vor einiger Zeit, von all den Rissen, ich denke, man konnte etwas über tiefes Lernen hören. Ich weiß nicht, ob es gerechtfertigt ist oder nicht.
GLEB: Ich denke, dass eine solche Popularität auf die Tatsache zurückzuführen ist, dass sie beeindruckende Ergebnisse liefert.
Über Aufgaben
STAS: Mit Hilfe neuronaler Netze können Sie die meisten Probleme des maschinellen Lernens lösen, oder?
ANDREW: Ja.
STAS: Sprechen wir dann darüber, welche Aufgaben mit Methoden des maschinellen Lernens gelöst werden können.
ANDREW: Eigentlich ist dies ein heikles Thema, denn in Wirklichkeit muss man aufhören, das Geschehen zu idealisieren und zu romantisieren. Wie gesagt, dort gibt es keine künstliche Intelligenz.
Dies ist ein rein mathematisches Modell und eine mathematische Funktion , die etwas multipliziert usw.
Von der Seite scheint es, dass das maschinelle Lernen bei bestimmten Kategorien von Aufgaben etwas ins Stocken geraten ist. Dies ist zum Beispiel die Klassifizierung (ein Beispiel, über das wir gleich zu Beginn gesprochen haben), die Verfolgung von Objekten und ihre Segmentierung. Der letzte befindet sich in unserer Sticky AI-Anwendung - er wählt eine Person aus und der Hintergrund wird entfernt. Es gibt auch eine biologische medizinische Segmentierung, wenn beispielsweise Krebszellen nachgewiesen werden. Es gibt generative Netzwerke, die aus Zufallszahlen lernen und dann etwas Neues schaffen können. Es gibt Style Transfer-Aufgaben und andere.
Derzeit gibt es jedoch keine bequeme Plattform und Infrastruktur für die Nutzung des maschinellen Lernens. Zum Beispiel haben Sie ein Problem, das Sie als Person leicht lösen können, aber als Programmierer können Sie es aufgrund seiner Komplexität und weil Sie nicht einfach einen imperativen Algorithmus schreiben können, nicht lösen. Gleichzeitig ist es aber auch nicht möglich, ein neuronales Netzwerk zu trainieren, vor allem, weil es ein Problem mit Datenmangel gibt. Um ein Neuron zu trainieren, benötigen Sie große Datensätze mit vielen Beispielen, außer sehr formalisierten, in einer bestimmten Verordnung beschriebenen usw. Außerdem benötigen Sie die Architektur dieses neuronalen Netzwerks.
Das heißt, zuerst müssen
Sie die Eingabedaten in Form von Zahlen formalisieren, die Modellarchitektur selbst erstellen, dann die Ausgabedaten in Form von Zahlen formalisieren und sie irgendwie interpretieren. Dazu benötigen Sie einen ziemlich leistungsfähigen mathematischen Apparat und im Allgemeinen ein Verständnis dafür, wie alles funktioniert. Daher scheint es mir jetzt, dass die Verwendung von Neuronen außerhalb spezialisierter Unternehmen wie unseres etwas nachlässt.
Einige Aufgaben, die vorher nicht gelöst wurden, lernten Neuronen sehr cool zu lösen. Aber es gibt keine Neuronen, die das gesamte Spektrum ungelöster Probleme gelöst haben.
GLEB: In welchen Bereichen sehen Sie globale Probleme, für die neuronale Netze im Allgemeinen nicht geeignet sind?
ANDREW: Es ist schwer, sofort zu antworten. Wir stehen vor Aufgaben, an denen wir arbeiten und an denen es nicht möglich ist, ein neuronales Netzwerk zu trainieren. Zum Beispiel ist die Spielebranche jetzt sehr am Lernen interessiert, und sogar einige Neuronen haben künstliche Intelligenz. Zum Beispiel wird dies in AAA-Spielen noch nicht verwendet, da es im Moment dennoch unmöglich ist, die künstliche Intelligenz eines abstrakten Soldaten so zu trainieren, dass sie sich wie eine Person verhält, so dass sie natürlich aussieht. Es ist schwer.
Über Dota
STAS: Haben Sie gehört, dass künstliche Intelligenz in Dota bereits gewinnt?
ANDREW: Ja, aber es ist immer noch ein bisschen anders. Dota ist ein ziemlich mathematisches Spiel, es kann beschrieben werden. Ich möchte niemanden beleidigen, aber das ist in der Tat wie bei Dame - das Spiel ist ein und dasselbe. Es gibt bestimmte Regeln, nach denen Sie einfach spielen.
Gleichzeitig gibt es immer noch Schwierigkeiten, ein natürliches Verhalten zu erzeugen, das hauptsächlich mit einer kleinen Datenmenge und einer kleinen Anzahl von Ingenieuren verbunden ist, die dies tun können.
Bei Google verwenden Ingenieure beispielsweise neuronale Netze, um ein menschliches 3D-Modell für das Gehen zu trainieren - nur um es in Bewegung zu setzen. Es sieht immer schrecklich aus, die Leute gehen nicht so.
Über TensorFlow
STAS: Sie sagten, dass es derzeit keinen einfachen und billigen Weg gibt, Probleme des maschinellen Lernens zu lösen, ohne das maschinelle Lernen überhaupt zu verstehen. In jedem Fall stellt sich heraus, dass dies gefummelt werden muss. Ich würde gerne etwas über TensorFlow erfahren. Es scheint, dass Google versucht sicherzustellen, dass auch Leute, die sich damit nicht auskennen und keinen sehr großen Hintergrund haben, einige einfache Probleme lösen können. Sag mir, was TensorFlow ist und wie denkst du, ist es möglich?
ANDREW: Komm schon in Ordnung.
TensorFlow ist eigentlich nicht die einfachste Sache von allen . Dies ist eines der beliebtesten sogenannten Lern-Frameworks - ein universelles Lern-Framework, nicht unbedingt ein Neuron. Dies ist nicht das höchste verfügbare Framework. Es gibt zum Beispiel Keras, eine übergeordnete Abstraktion in TensorFlow. Dort können Sie dasselbe mit viel weniger Code tun.
Typische Aufgaben werden ganz einfach gelöst, insbesondere weil Github bereits viele Beispiele und Repositories enthält. Wenn Ihr Unternehmen eine Bildersuche nach einem Buchladen durchführt, ist im Prinzip alles in Ordnung für Sie. Sie gehen zu Github, es gibt Beispiele, wie Sie Funktionen des Bildes aufnehmen können, Sie schreiben eine Suche nach Funktionen - Sie sind fertig!
Tatsächlich ist dies bei einer großen Anzahl von Aufgaben der Fall. , . - , , , , , , TensorFlow — . , .
: , Google , ?
: , , , . , , , . , , .
: , . ? -, .
: . — « , , ». , .
: , , , , . ? , , 15 - iOS , - . , . , .
: — , , - . — — . . , , R&D , : «, !» — - , , , 0,5%: «, , !» . , .
: , , - , , . ? . , — , 70%. , , . , . , , .
: , , , . , . , - , . .
: , .
: , . .
: , ? , , , — ?
: , , . , .
-, ,
. , computer science. , .
. , 500 Python, . . . , . , , .
, . - , . , .
: , Python - , , C++? , .
: , . - learning , , TensorFlow, TensorFlow. ,
— , TensorFlow. TensorFlow — 1 — , , .
. , iOS . , learning , , Caffe, Torch, TensorFlow ., .
, , , . R&D - , . . () : « !» — , . C++.
:
: . , , .
: , ? , ?
: , . , — . : , , : «, , — », - . , , -, - . , . .
. , , , .
: Google , Google Street Maps. , .
: , - .
Data Scientist
: . , — , , ?
: , .
: , , , , data scientist'. , - . . , , . — !
, . , -, . .
: hype train.
: , , data scientist . , .
: , . - data scientist'?
: . , . , , , Git- . Data scientist - , . , code review, unit- — . , .
: , , .
: , , - , , Kaffe 2, PyTorch — ! : « Data scientist TensorFlow».
GPU-
. , , , Swift, UI-kit, . , , .
, - , . , . , , . enterprise.
- , , , . , , . , .
: , . GPU - . , — . , Junior GPU . , , .
: — .
: , ?
: , , - .
: — ?
: , , -, - .
: , ?
: . , , , , . Macbook Air. — - , , .
, Nvidia Titan , . , .
: ? , Nvidia , . , , . ?
: print , . NIPS, , , . , , . - , — , .
. ONNX , . . , . , , . , - ,
. .
: , . , , , ?
: , . , . , . , — , ..
, . , . — , , . . , , . , , .
reinforcement training
: . , , , , AlphaGo. , , , reinforcement training.
: Reinforcement training — . , . , , , . , , . , . Reinforcement training , , , , : « !»
,
AlphaGo — , . , . , , . , . AlphaGo , reinforcement training, , .
, , , , .
: , 10
170 — . , AlphaGo . , . , , , . — , - !
, , , . , , . , !
STAS: Ich möchte nach genetischen Algorithmen fragen. Der Beschreibung zufolge können genetische Algorithmen auch dem verstärkten Lernen zugeschrieben werden. Wie ich mir vorstelle, gibt es eine Generation, wir nehmen jedes einzelne Thema in einer Generation auf, es führt eine Aufgabe aus, wir bewerten seine Handlungen und wählen dann basierend auf diesen Schätzungen das beste aus. Dann kreuzen wir ihre spezifischen Eigenschaften, erstellen eine neue Generation, fügen ein wenig Mutation hinzu und jetzt haben wir eine neue Generation. Und wir wiederholen diese Operationen und versuchen, den endgültigen Nutzen jedes einzelnen Mitglieds dieser Generation zu erhöhen. Das scheint sinnvoll zu sein. Wird dies als Verstärkungstraining angesehen oder nicht?
ANDREW: Nein, genetische Algorithmen sind immer noch etwas anders.
STAS: Beziehen sie sich auf maschinelles Lernen?
ANDREW: Das würde ich nicht sagen. Ich werde es jetzt nicht nehmen, aber wir haben die genetischen Algorithmen an der Universität wie alle anderen bestanden, und es scheint mir, dass diese Sache etwas einfacher und unregulierter ist oder so - kurz gesagt, zwingend. Das heißt, es ist im Voraus bekannt, dass das, was eingegeben wird, so ausgegeben wird. Beim maschinellen Lernen sind die Dinge jedoch etwas anders - es gibt eine gewisse Wahrscheinlichkeit, Genauigkeit der Vorhersagen und alles in diesem Sinne.
Vielleicht werde ich von Leuten korrigiert, die die Terminologie besser verstehen als ich, aber
von oben würde ich nein sagen.
STAS: Es stellt sich heraus, dass genetische Algorithmen nicht zur Lösung der meisten realen Probleme verwendet werden.
ANDREW: Ja, sie sind meistens algorithmischer und in der Praxis habe ich sie selten getroffen.
Über Kapselnetzwerke
GLEB: Es gibt noch eine andere Untergruppe des maschinellen Lernens - die sogenannten Kapselnetzwerke. Gehen wir noch einmal nicht zu tief. Sagen Sie mir kurz und bündig, was es ist und warum es diesen Trend jetzt gibt?
ANDREW: Dies ist ein wirklich super neues Thema, es ist nur ein paar Monate alt. Jeffrey Hinton veröffentlichte einen Artikel und sagte, dass aktuelle Faltungsnetzwerke ein Weg ins Nirgendwo sind, und wir bieten eine neue Vision, wie sich dies entwickeln wird. Die Community akzeptierte diese Aussage mehrdeutig und teilte sie in zwei Lager auf: Einige sagen, dass es ein Überhype ist, andere - eine große Sache und all das.
Aber wenn Sie direkt an den Fingern erklären, wie funktionieren Faltungsnetzwerke? Nehmen wir zum Beispiel Neuronen, die mit Bildern arbeiten. Es gibt eine Faltung - eine Spalte von Matrizen, die mit einem Schritt durch das Bild läuft, als würde sie es scannen. Bei jeder Iteration eines solchen Schritts wird all diese Faltung auf dieses Stück angewendet, und jede Faltung wird zu einem neuen bedingten Pixel, aber von einer viel größeren Dimension wird diese Operation für alle Gitter wiederholt.
Das Problem bei Faltungsnetzwerken ist jedoch, dass alle Daten, die in die erste Schicht gelangen, das Ende erreichen - vielleicht nicht vollständig, aber sie wirken sich alle aus und erreichen alle das Endstadium. Wenn Sie einen Teil des Bildes bestimmen müssen, z. B. eine Katze, müssen Sie grob gesagt nicht das gesamte Bild scannen. Es reicht aus, irgendwann die Zone zu lokalisieren, in der sich die Katze höchstwahrscheinlich befindet, und nur sie zu betrachten, wie es eine Person tut.
So funktionieren Kapselnetzwerke. Ich werde mich nicht verpflichten, ihre Innenseiten fachmännisch zu erklären, sondern nach meinem Verständnis: Es gibt bestimmte Bäume innerhalb der Kapselnetzwerke, und jede nachfolgende Kapsel erhält nur die relevanten Daten für die Eingabe. Das heißt, durch sie wird nicht alles weitergegeben, was wir ursprünglich für die Eingabe akzeptiert haben, und mit jeder neuen Schicht (ich weiß nicht, wie es in der Terminologie von Kapselnetzwerken gesagt werden kann) werden nur die Daten verarbeitet, die wirklich benötigt werden - nur wichtige Daten . Dies ist der Hauptunterschied zwischen Faltungs- und Kapselnetzwerken.
GLEB: Es klingt interessant, aber ich verstehe nicht ganz - geht es nur um die fraglichen Bilder?
ANDREW: Nein, das war's auch schon. Ich habe die Bilder nur zur Erklärung verwendet. Die Schlüsselidee lautet: Lassen Sie uns nicht alle Daten und Funktionen steuern, sondern nur diejenigen, die für die nächste Ebene relevant sind.
Mehr über Spiele
STAS: Hast du gehört, dass die AlphaGo-Jungs alle in StarCraft besiegen werden?
ANDREW: Ich bin gezwungen dich zu enttäuschen, aber ich folge dem nicht wirklich. Es ist nicht so, dass eSports für mich interessant war, aber es wird bereits klar, worin die Zukunft liegt. Zum Beispiel gibt es bereits Startups, die für das Spielen von Dota ausgebildet sind. Als Personal Trainer analysieren sie, wie Sie spielen, und sagen, wo Sie nicht gut genug sind, haben sie ihre eigenen Daten, die in E-Sport-Spielen trainiert wurden. Es gibt Startups für Wetten, die vorhersagen, wer gewinnen wird, und vieles mehr.
In diesem Bereich arbeiten derzeit viele Menschen, vor allem, weil sich dort viel Geld dreht. Aber persönlich ist es für mich einfach völlig uninteressant, daher verfolge ich die Nachrichten und Trends leider nicht.
STAS: Was ist Ihrer Meinung nach die Schwierigkeit, eine gute künstliche Intelligenz speziell für strategische Spiele zu entwickeln? Verstehe ich richtig, dass dies im Grunde eine sehr große Anzahl von Optionen ist?
ANDREW: Ja. Tatsächlich haben wir diesen Punkt bereits besprochen, als ich erklärte, dass künstliche Intelligenz in AAA-Spielen immer noch nicht verwendet wird, aber gleichzeitig in AlphaGo und möglicherweise woanders.
Das Go-Spiel mit all seiner Komplexität besteht darin, dass Sie bei jedem Schritt einfach einen Chip einsetzen, um einen Stein zu skizzieren, und das Spiel StarCraft ist eine sehr komplexe Sache. Dort können Sie Ihre Einheiten entlang einer praktisch unbegrenzten Anzahl von Trajektorien senden, verschiedene Sätze Ihrer Konstruktionen erstellen usw. All dies ist ein Parameter.
Die Schwierigkeit liegt außerdem darin, dass neuronale Netze nicht immer wie eine Person denken. Wenn wir zum Beispiel eine Einheit bauen, erinnern wir uns daran. Aber jedes Mal laufen viele Neuronen. Natürlich gibt es rekursive Netzwerke, die sich an ihre bisherigen Erfolge erinnern können. Sie werden insbesondere für Übersetzungs- und Textinformationen verwendet, wenn das Neuron beim Generieren des Satzes immer mehr Daten verwendet.
Es gibt große Schwierigkeiten mit der Tatsache, dass die gesamte Menge an Informationen und Optionen formalisiert werden muss, dh um einen Datensatz für das Training zu finden, damit er irgendwie angemessen auf die Aktionen Ihres Gegners reagiert, die im Gegensatz zum Spielen eines Spiels auch eine Million sein können oder Schach.
STAS: Ich verstehe - es gibt viele Parameter.
GLEB: Aber ich verstehe nicht, es ist klar, dass DotA weniger Parameter hat, aber es ist immer noch ungefähr gleich in dem Sinne, dass es irgendwohin gesendet wurde usw.
STAS: Hier hat sich Andrei darauf reduziert, dass Sie erstens eine Einheit haben und die Anzahl der Optionen viel geringer ist.
ANDREW: Um ehrlich zu sein, ich habe noch nie in meinem Leben einen zweiten Dota gespielt, aber im Original ist dies, soweit ich weiß, ein super deterministisches Spiel. Es gibt 3 Korridore und Türme, die zerstört werden müssen.
GLEB: Ja, aber in StarCraft gibt es, obwohl ich überhaupt nicht spiele, auch einige Möglichkeiten und die gleichen Einheiten. Sie sagen, dass es viele von ihnen gibt, aber höchstwahrscheinlich werden sie immer in Chargen gefahren. Das heißt, ungefähr das Gleiche stellt sich heraus.
STAS: Sie müssen jede Einheit während des Kampfes immer noch korrekt anordnen. In dem Moment, in dem sie nicht in einer Packung aufgenommen werden, sondern zu arrangieren beginnen, gibt es sofort mehr Parameter.
ANDREW: Ihr Problem ist, dass Sie in diesen Kategorien denken: Setzen Sie eine Einheit usw., aber Sie vergessen immer wieder, dass ein Neuron nur eine Matrix ist - Zahlen, die sich multiplizieren. Dort müssen Sie beispielsweise Aufgaben formalisieren. Nehmen wir an, es gibt eine Karte für StarCraft und eine Aufgabe - es spielt keine Rolle, ob Sie einen Spieler oder etwas anderes besiegen. All dies muss in Form von mathematischen Grundelementen dargestellt werden, und dies ist genau das Schwierigste.
Wenn es wirklich künstliche Intelligenz wäre, wäre die Lücke zwischen Dota und StarCraft minimal. StarCraft mag in der Mechanik etwas komplizierter sein, aber immer noch ungefähr gleich. Aufgrund der Tatsache, dass wir mit Zahlen arbeiten, ist es jedoch schwieriger zu formalisieren.
Über gegenseitige Lernnetzwerke
STAS: Ich habe die letzte Frage, die ich stellen möchte, bevor wir zu unserem Handy gehen. Ich weiß nicht, wie es richtig heißt, aber es gibt eine Möglichkeit, wie ein neuronales Netzwerk im Wesentlichen einem anderen folgt und versucht, Muster zu finden.
ANDREW: Ich werde mich nicht verpflichten, jetzt zu erklären, wie es funktioniert, aber ich weiß mit Sicherheit, dass es supercoole Algorithmen gibt, von denen ich manchmal bei der Arbeit höre, wenn zwei neuronale Netze auf Kosten des anderen lernen. Dieses Fachgebiet ist für mich bereits völlig unzugänglich, aber es klingt alles cool. Soweit ich weiß, wird dies für generative Netzwerke verwendet. Mehr kann ich leider nicht sagen.
STAS: Gut. Sie haben die wichtigsten Schlüsselwörter angegeben, der Rest ist Gleb und die Leser werden leicht googeln.
Über Mobiltelefone (Apple)
GLEB: Gehen wir weiter zu den Handys, die wir schon lange haben. Was können wir tun, wenn wir über maschinelles Lernen auf Mobilgeräten sprechen?
ANDREW: Hast du übrigens einen Podcast für iOS-Entwickler?
GLEB: Wir sind kein iOS-Podcast. Ja, Stas?
STAS: Ja, für mobile Entwickler. Warum die Frage?
ANDREW: Nur weil die Situation ganz anders ist. Apple ist aufgrund der Tatsache, dass es schon immer gut in der Integration von Software und Hardware war und dafür bekannt ist, sehr elegant in einen maschinengeschulten Hype-Zug eingebunden.
Im Jahr 2014 führte Apple die Metal-Grafik-API ein. Darin wurden Dinge eingenäht, zum Beispiel Computer-Shader usw. All dies ermöglichte es mit dem Aufkommen von iOS 10, viele Ebenen, Aktivierungen und andere Operatoren aus neuronalen Netzen, insbesondere Faltungs-Neuronale Netze, in das Metal Performance Shaders-Framework aufzunehmen.
Es hat nur einen enormen Schub gegeben, da Berechnungen auf einer Grafikkarte in der Regel um ein Vielfaches schneller sind als auf einem Zentralprozessor. Als Apple die Möglichkeit erhielt, schnell auf mobilen Grafikkarten zu lesen, war es nicht erforderlich, eigene mathematische Operatoren usw. zu schreiben. Es schoss direkt sehr hart. Und ein Jahr später veröffentlichten sie CoreML (wir werden etwas später darüber sprechen).
Apple hatte eine sehr gute Grundlage. Ich weiß nicht, ob sie eine solche Vision hatten oder so zusammenfielen, aber sie sind jetzt objektiv führend in der Branche des maschinellen Lernens auf Mobilgeräten.
Über Mobiltelefone (Android)
Was unter iOS in Echtzeit relativ cool und großartig funktioniert, funktioniert unter Android leider nicht so cool. Dies liegt nicht nur daran, dass Android scheiße ist. Es gibt noch andere Faktoren - vor allem die Tatsache, dass Android über eine sehr vielfältige Infrastruktur verfügt: Es gibt schwache Geräte, es gibt starke - Sie können nicht alles unter Kontrolle bringen.
Wenn Metal auf allen iOS-Geräten unterstützt wird, ist es auf Android bereits komplizierter - irgendwo wird OpenGL in einer Version unterstützt, irgendwo anders, irgendwo wird es überhaupt nicht unterstützt. Irgendwo ist Vulkan, irgendwo nicht. Alle Hersteller haben ihre eigenen Treiber, die natürlich in keiner Weise optimiert sind, sondern den Standard nur minimal unterstützen. Es kommt sogar vor, dass Sie einige neuronale Netze unter Android auf der GPU ausführen und diese genauso schnell arbeiten wie auf der CPU, da die Arbeit mit gemeinsam genutztem Speicher sehr ineffizient ist.
Unter Android sind die Dinge momentan schlecht. Dies ist ziemlich überraschend, da Google einer der führenden Anbieter ist, in dieser Hinsicht jedoch ein wenig nachlässt. Unter Android mangelt es eindeutig an einer qualitativ hochwertigen Implementierung der Funktionen des modernen maschinellen Lernens.
Für uns zum Beispiel funktionieren selbst in der Anwendung nicht alle Funktionen gleich. Was unter iOS schnell funktioniert, ist unter Android langsamer, selbst auf Flaggschiffgeräten mit vergleichbarer Leistung. In diesem Sinne sinkt Android als Plattform derzeit.
Über CoreML
STAS: Da sie über CoreML gesprochen haben, wäre es wahrscheinlich richtig, über TensorFlow Lite zu sprechen.
ANDREW: CoreML ist eigentlich ein dunkles Pferd. Als er letztes Jahr herauskam, sagten alle zuerst: "Wow, cool!" Aber dann wurde klar, dass dies nur eine kleine Hülle über Metal ist. Unternehmen, die sich ernsthaft mit maschinellem Lernen beschäftigen, einschließlich unserer, haben seit langem ihre eigenen Lösungen. Zum Beispiel zeigten unsere Testlösungen bessere Ergebnisse als CoreML in Bezug auf Geschwindigkeit und andere Parameter.
Das Hauptproblem bei CoreML war jedoch, dass es nicht angepasst werden konnte. Manchmal kommt es vor, dass Sie eine komplexe Schicht in einem neuronalen Netzwerk benötigen, die sich beispielsweise nicht in Metal befindet, und Sie müssen sie selbst schreiben. In CoreML war es nicht möglich, Ihre Ebenen einzubetten. Daher mussten Sie ein Downgrade auf Metal auf die untere Ebene durchführen und alles selbst schreiben.
Vor kurzem hat CoreML dies hinzugefügt, und jetzt ist dieses Framework interessanter geworden. Wenn Sie ein Entwickler sind, der im Unternehmen oder in der Anwendung überhaupt nichts mit maschinellem Lernen zu tun hat, können Sie ein Neuron direkt in zwei Zeilen ausführen und es schnell auf der GPU ausführen. Die Ergebnisse, die Leistungstests für CoreML zeigen, sind vergleichbar mit kundenspezifischen Lösungen und Bare Metal.
Das heißt, CoreML funktioniert ganz gut. Es ist ein bisschen feucht, es hat Fehler, aber jeden Monat wird es besser. Apple führt aktiv Updates ein - nicht so, wie wir es gewohnt sind, dass Updates von Apple Frameworks einmal im Jahr oder auf Semi-Major-Versionen von iOS veröffentlicht werden. CoreML wird aktiv aktualisiert, in diesem Sinne ist alles großartig.
TensorFlow Lite bietet einen Konverter in CoreML, CatBoost unterstützt auch einen Konverter in CoreML. Kurz gesagt, Apple hat alles wieder richtig gemacht. Sie veröffentlichten einen Open-Source-Konverter und sagten: "Schreiben wir alle Konverter in CoreML" - und viele Lern-Frameworks unterstützten dies.
Anfangs gab es einige Skepsis gegenüber CoreML, beim letzten WWDC war die häufigste Frage für CoreML-Entwickler: „Warum erlauben Sie nicht das Herunterladen von Modellen aus dem Internet? Warum lässt du sie nicht verschlüsseln? " Es war möglich, diese Modelle zu bekommen und, wie sich herausstellte, geistiges Eigentum zu stehlen.
Jetzt wurde alles repariert, zusätzliche Funktionen hinzugefügt, und im Moment ist CoreML definitiv die führende Plattform in diesem Sinne.
STAS: Können Sie genauer darüber sprechen? Es stellt sich heraus, dass Sie das Modell jetzt nicht mehr speichern können, sondern nur von irgendwoher laden können?
ANDREW: Ja, das ist schon möglich. Zuvor, als wir danach fragten, lächelten die Entwickler und sagten: "Schauen Sie sich nur die Überschriften an." Es gab wirklich Designer, die Dateien übertragen konnten und alles würde zusammenkommen.
Aber die CoreML-Modelle im Inneren sind ziemlich interessant. Es handelt sich eigentlich um gewöhnliche Binärdateien, in denen Gewichte gespeichert werden. Außerdem werden schnelle Dateien generiert, die dann implizite Klassen erstellen. Sie verwenden diese Klassen in Ihrer Anwendung, und Compiler kompilieren dieses Modell in einige Dateien.
Mit bestimmten Hacks und Ansätzen ist es nun möglich, dieses Modell portabel zu machen. Sie können Ihr geistiges Eigentum durch Verschlüsselung schützen und das Gewicht der Anwendung verringern.
Im Allgemeinen bewegt sich CoreML jetzt in die richtige Richtung. Aus Sicht von App Review kann nicht alles legal durchgeführt werden, nicht alles kann problemlos ohne Hacks durchgeführt werden, aber es fällt auf, wie Entwickler das Framework verbessern.
STAS: Cool! Ich wollte hinzufügen, dass CoreML wie eine typische Lösung aussieht. Relativ gesehen ist es praktisch, wenn Sie mit maschinellem Lernen in Ihrer Anwendung etwas Einfaches tun möchten. Wenn dies eine typische Aufgabe ist, hat Apple anscheinend versucht, diese gesamte Route so einfach wie möglich zu gestalten, wenn Sie ein fertiges Modell, einen Datensatz und mehr finden. Dies ist nur eine Geschichte über ein typisches Problem, denn für sie ist wahrscheinlich bereits alles fertig.
ANDREW: Für typische Aufgaben ist das im Allgemeinen super! Ohne Übertreibung - es werden wirklich zwei Codezeilen benötigt, um das Modell auszuführen. In diesem Sinne ist es sehr cool, insbesondere für Indie-Entwickler oder Unternehmen, die keine Forschungs- und Entwicklungsabteilung haben, aber auch etwas Cooles hinzufügen möchten.
Dies ist jedoch nicht so interessant, da die typischen Aufgaben auf Github und mit Metal gelöst wurden - Sie können diesen Code einfach in sich selbst kopieren und auf die Farm stellen - wenn auch etwas komplizierter.
Es ist wichtig, dass sich dieser Rahmen jetzt nicht nur in Richtung klassischer Alltagsaufgaben bewegt, sondern auch in Richtung integrierter Lösungen. Das ist echt cool!
Über das Training auf Mobiltelefonen
GLEB: Sie sagen, dass es nach dem Aufkommen von Metal möglich wurde, Modelle auf Mobiltelefonen zu trainieren?
ANDREW: Nein, ein Training auf Mobiltelefonen war nie möglich. Es macht keinen Sinn, Sie können es nur ausführen. Wenn ich das sagte, machte ich eine Reservierung. Auf Handys unterrichtet natürlich niemand etwas.
STAS: Ich habe auch nichts über das Training auf einem Handy gehört.
GLEB: Ich habe es auch nicht gehört, aber ich habe darüber nachgedacht. Natürlich scheint es intuitiv, dass dies eine seltsame Sache ist. Aber es gibt definitiv keine interessanten Aufgaben, wann wäre dies relevant?
ANDREW: Es ist schwer sich das vorzustellen. Wenn es so etwas gibt, dann nur verteiltes Lernen. Es gibt sogar wissenschaftliche Artikel darüber, aber wie ich es verstehe, fragen Sie sich, wie Sie aus den auf demselben Telefon gesammelten Daten lernen können? Es ist nur so, dass selbst wenn Sie so viel sammeln (was nicht passieren wird), es so lange dauern wird, bis Sie erfahren, dass es niemals enden wird und niemand den Trainingscode auf mobile Plattformen portieren wird. Warum?
Das Training findet immer auf Servern und die Inferenz auf Geräten statt.STAS: Aber letztendlich stellt sich das so heraus. Wenn Sie ein Unternehmen sind, möchten Sie so etwas haben, benötigen Sie Daten und können diese von Ihren Benutzern sammeln, dh regelmäßig selbst laden.
ANDREW: Ja, aber es funktioniert ein bisschen anders. Sie sammeln Daten von allen Benutzern an einem Ort auf Ihrem Hot Server, trainieren dort und senden das fertige Modell zurück. Aber nicht, damit jeder zu Hause etwas lehrte.
STAS: Andererseits würde sich das Handy aufwärmen - und im Winter wäre es relevant, aber für eine sehr, wahrscheinlich lange Zeit.
Über Handys und die Zukunft
GLEB: Gibt es noch andere interessante Dinge in Bezug auf die Anwendung von maschinellem Lernen auf mobile Geräte? Wir haben darüber gesprochen, was wir jetzt schon haben. Es wäre interessant, ein wenig in die Zukunft zu schauen - damit wir generell auf unseren mobilen Plattformen einige Superfoods, Superlösungen erhalten möchten.
: , , performance — , , . , - , .
. , style- , . .
CoreML . , , . , , : , , — , Android, iOS, . , , iOS Android.
, , , , — Android, iOS, Github . - — Uber , Horovod. Apple — , . , , , , — .
, . , , , — , , - . , .
: , , ? , , ? .
: , — (M. Bishop. Pattern Recognition and Machine Learning. Christopher. Springer. 2006), - . , , 3D , , - . . , — , — .
, , , . , -, , Andrew Ng Coursera. , .
, , , — MNIST. Hello World, .
, , , , - , . - , , , .
: ?
: advanced- Andrew Ng! , , Kaggle, , . , , — Data Scientist.
— , , , . , — R&D . , . . , , .
. , Kaggle, - — 90% .
Zusammenfassung
: . , , , , .
- , — . , , — .
- .
- .
- - .
- , , , .
- , . , , , - - !
- — , , CoreML — , .
, .
, AppsConf 2018 , 8 9 .
80 , Call for Papers — 3 . , , .