Ist die Blase des maschinellen Lernens geplatzt oder ist es der Beginn einer neuen Ära?

Kürzlich veröffentlicht Beitrag, was einen guten Trend beim maschinellen Lernen in den letzten Jahren zeigt. Kurz gesagt: Die Zahl der Machine-Learning-Startups ist in den letzten zwei Jahren stark zurückgegangen.

Ist die Blase des maschinellen Lernens geplatzt oder ist es der Beginn einer neuen Ära?
Und was. Schauen wir uns an, „ob die Blase geplatzt ist“, „wie man weiterlebt“ und darüber, woher dieser Kringel überhaupt kommt.

Lassen Sie uns zunächst darüber sprechen, was der Auslöser dieser Kurve war. Woher kam sie? Sie werden sich wahrscheinlich an alles erinnern Sieg maschinelles Lernen im Jahr 2012 beim ImageNet-Wettbewerb. Immerhin ist dies die erste globale Veranstaltung! Aber in Wirklichkeit ist dies nicht der Fall. Und das Wachstum der Kurve beginnt etwas früher. Ich würde es in mehrere Punkte aufteilen.

  1. Im Jahr 2008 tauchte der Begriff „Big Data“ auf. Echte Produkte begannen erscheinen seit 2010. Big Data steht in direktem Zusammenhang mit maschinellem Lernen. Ohne Big Data ist der stabile Betrieb der damals existierenden Algorithmen nicht möglich. Und das sind keine neuronalen Netze. Bis 2012 waren neuronale Netze einer marginalen Minderheit vorbehalten. Doch dann begannen ganz andere Algorithmen zu funktionieren, die es schon seit Jahren oder sogar Jahrzehnten gab: SVM(1963,1993), Zufälliger Wald (1995) AdaBoost (2003),... Startups dieser Jahre werden vor allem mit der automatischen Verarbeitung strukturierter Daten in Verbindung gebracht: Kassen, Benutzer, Werbung, vieles mehr.

    Ein Derivat dieser ersten Welle ist eine Reihe von Frameworks wie XGBoost, CatBoost, LightGBM usw.

  2. Im Jahr 2011-2012 Faltungs-Neuronale Netze gewann eine Reihe von Bilderkennungswettbewerben. Ihr tatsächlicher Einsatz verzögerte sich etwas. Ich würde sagen, dass im Jahr 2014 äußerst bedeutungsvolle Startups und Lösungen entstanden sind. Es dauerte zwei Jahre, um zu verstehen, dass Neuronen noch funktionieren, um praktische Frameworks zu schaffen, die in angemessener Zeit installiert und gestartet werden konnten, und um Methoden zu entwickeln, die die Konvergenzzeit stabilisieren und beschleunigen würden.

    Faltungsnetzwerke ermöglichten die Lösung von Computer-Vision-Problemen: Klassifizierung von Bildern und Objekten im Bild, Objekterkennung, Erkennung von Objekten und Personen, Bildverbesserung usw. usw.

  3. 2015-2017. Der Boom von Algorithmen und Projekten, die auf wiederkehrenden Netzwerken oder deren Analoga (LSTM, GRU, TransformerNet usw.) basieren. Es sind gut funktionierende Sprach-zu-Text-Algorithmen und maschinelle Übersetzungssysteme erschienen. Sie basieren teilweise auf Faltungsnetzwerken, um grundlegende Merkmale zu extrahieren. Teilweise aufgrund der Tatsache, dass wir gelernt haben, wirklich große und gute Datensätze zu sammeln.

Ist die Blase des maschinellen Lernens geplatzt oder ist es der Beginn einer neuen Ära?

„Ist die Blase geplatzt? Ist der Hype überhitzt? Sind sie als Blockchain gestorben?“
Ansonsten! Morgen wird Siri aufhören, an Ihrem Telefon zu arbeiten, und übermorgen wird Tesla den Unterschied zwischen einem Turn und einem Känguru nicht mehr kennen.

Neuronale Netze funktionieren bereits. Sie stecken in Dutzenden von Geräten. Sie ermöglichen es Ihnen wirklich, Geld zu verdienen, den Markt und die Welt um Sie herum zu verändern. Hype sieht etwas anders aus:

Ist die Blase des maschinellen Lernens geplatzt oder ist es der Beginn einer neuen Ära?

Nur sind neuronale Netze nichts Neues mehr. Ja, viele Menschen haben hohe Erwartungen. Doch viele Unternehmen haben gelernt, Neuronen zu nutzen und darauf basierende Produkte herzustellen. Neuronen bieten neue Funktionen, ermöglichen den Abbau von Arbeitsplätzen und senken die Kosten für Dienstleistungen:

  • Fertigungsunternehmen integrieren Algorithmen zur Analyse von Produktionsliniendefekten.
  • Tierhaltungsbetriebe kaufen Systeme zur Kontrolle von Kühen.
  • Automatische Mähdrescher.
  • Automatisierte Callcenter.
  • Filter in SnapChat. (Na ja, zumindest etwas Nützliches!)

Aber die Hauptsache und nicht die offensichtlichste: „Es gibt keine neuen Ideen mehr, sonst bringen sie kein sofortiges Kapital.“ Neuronale Netze haben Dutzende Probleme gelöst. Und sie werden noch mehr entscheiden. Aus all den offensichtlichen Ideen entstanden viele Startups. Aber alles, was an der Oberfläche war, war bereits eingesammelt. In den letzten zwei Jahren ist mir keine einzige neue Idee für den Einsatz neuronaler Netze begegnet. Kein einziger neuer Ansatz (na ja, es gibt ein paar Probleme mit GANs).

Und jedes weitere Startup wird immer komplexer. Es sind nicht mehr zwei Leute erforderlich, die ein Neuron mithilfe offener Daten trainieren. Es erfordert Programmierer, einen Server, ein Team von Markierern, komplexe Unterstützung usw.

Dadurch gibt es weniger Startups. Aber es gibt mehr Produktion. Müssen Sie eine Kennzeichenerkennung hinzufügen? Es gibt Hunderte von Spezialisten mit einschlägiger Erfahrung auf dem Markt. Sie können jemanden einstellen und in ein paar Monaten wird Ihr Mitarbeiter das System erstellen. Oder fertig kaufen. Aber ein neues Startup gründen? Verrückt!

Sie müssen ein Besucherverfolgungssystem erstellen – warum sollten Sie für eine Reihe von Lizenzen bezahlen, wenn Sie in 3–4 Monaten Ihr eigenes System erstellen und es für Ihr Unternehmen optimieren können?

Jetzt gehen neuronale Netze den gleichen Weg, den Dutzende andere Technologien eingeschlagen haben.

Erinnern Sie sich, wie sich das Konzept des „Website-Entwicklers“ seit 1995 verändert hat? Der Markt ist noch nicht mit Spezialisten gesättigt. Es gibt nur sehr wenige Fachkräfte. Aber ich kann wetten, dass es in 5-10 Jahren keinen großen Unterschied zwischen einem Java-Programmierer und einem Entwickler neuronaler Netze geben wird. Von beiden Spezialisten wird es genug auf dem Markt geben.

Es wird einfach eine Klasse von Problemen geben, die von Neuronen gelöst werden können. Es ist eine Aufgabe entstanden: Stellen Sie einen Spezialisten ein.

"Was kommt als nächstes? Wo ist die versprochene künstliche Intelligenz?“

Aber hier gibt es ein kleines, aber interessantes Missverständnis :)

Der heutige Technologie-Stack wird uns offenbar nicht zur künstlichen Intelligenz führen. Ideen und ihre Neuheit haben sich weitgehend erschöpft. Lassen Sie uns darüber sprechen, was den aktuellen Entwicklungsstand darstellt.

Einschränkungen

Beginnen wir mit selbstfahrenden Autos. Es scheint klar, dass es mit der heutigen Technologie möglich ist, vollständig autonome Autos zu bauen. Aber in wie vielen Jahren dies geschehen wird, ist unklar. Tesla geht davon aus, dass dies in ein paar Jahren passieren wird –


Es gibt viele andere Experten, die es auf 5-10 Jahre schätzen.

Meiner Meinung nach wird sich die Infrastruktur der Städte in 15 Jahren höchstwahrscheinlich so verändern, dass die Entstehung autonomer Autos unvermeidlich wird und zu ihrer Fortsetzung wird. Dies kann jedoch nicht als Intelligenz angesehen werden. Der moderne Tesla verfügt über eine sehr komplexe Pipeline zum Filtern, Suchen und Umschulen von Daten. Dies sind Regeln-Regeln-Regeln, Datenerfassung und Filter darüber (hier). hier Ich habe etwas mehr darüber geschrieben, oder schau es dir an diese Markierungen).

Erstes Problem

Und hier sehen wir erstes grundsätzliches Problem. Große Daten. Genau das hat die aktuelle Welle neuronaler Netze und maschinellen Lernens hervorgebracht. Heutzutage braucht man viele Daten, um etwas Komplexes und Automatisches zu erledigen. Nicht nur viel, sondern sehr, sehr viel. Für deren Erfassung, Kennzeichnung und Nutzung benötigen wir automatisierte Algorithmen. Wir möchten, dass das Auto die der Sonne zugewandten Lastwagen sieht – wir müssen zunächst eine ausreichende Anzahl davon sammeln. Wir wollen, dass das Auto nicht durchdreht, wenn ein Fahrrad am Kofferraum verschraubt ist – weitere Beispiele.

Darüber hinaus reicht ein Beispiel nicht aus. Hunderte? Tausende?

Ist die Blase des maschinellen Lernens geplatzt oder ist es der Beginn einer neuen Ära?

Zweites Problem

Zweites Problem — Visualisierung dessen, was unser neuronales Netzwerk verstanden hat. Dies ist eine sehr nicht triviale Aufgabe. Bisher verstehen nur wenige Menschen, wie man sich das vorstellt. Diese Artikel sind sehr aktuell, dies sind nur einige Beispiele, wenn auch weit entfernt:
Visualisierung Obsession mit Texturen. Es zeigt gut, worauf sich das Neuron konzentriert und was es als Ausgangsinformation wahrnimmt.

Ist die Blase des maschinellen Lernens geplatzt oder ist es der Beginn einer neuen Ära?
Visualisierung Achtung bei Übersetzungen. Tatsächlich lässt sich Anziehung oft genau dazu nutzen, zu zeigen, was eine solche Netzwerkreaktion ausgelöst hat. Ich habe solche Dinge sowohl beim Debuggen als auch bei Produktlösungen gesehen. Es gibt viele Artikel zu diesem Thema. Doch je komplexer die Daten sind, desto schwieriger ist es zu verstehen, wie eine robuste Visualisierung erreicht werden kann.

Ist die Blase des maschinellen Lernens geplatzt oder ist es der Beginn einer neuen Ära?

Nun ja, der gute alte Satz „Sehen Sie, was sich in dem Netz befindet.“ Filter" Diese Bilder waren vor 3-4 Jahren beliebt, aber jeder merkte schnell, dass die Bilder schön waren, aber keine große Bedeutung hatten.

Ist die Blase des maschinellen Lernens geplatzt oder ist es der Beginn einer neuen Ära?

Ich habe Dutzende anderer Gadgets, Methoden, Hacks und Forschungen zur Darstellung des Inneren des Netzwerks nicht erwähnt. Funktionieren diese Tools? Helfen sie Ihnen, das Problem schnell zu verstehen und das Netzwerk zu debuggen? ... Holen Sie sich das letzte Prozent? Nun, es ist ungefähr das Gleiche:

Ist die Blase des maschinellen Lernens geplatzt oder ist es der Beginn einer neuen Ära?

Sie können jeden Wettbewerb auf Kaggle verfolgen. Und eine Beschreibung, wie Menschen endgültige Entscheidungen treffen. Wir haben 100-500-800 Modelleinheiten gestapelt und es hat funktioniert!

Ich übertreibe natürlich. Diese Ansätze liefern jedoch keine schnellen und direkten Antworten.

Wenn Sie über genügend Erfahrung verfügen und verschiedene Optionen ausprobiert haben, können Sie ein Urteil darüber abgeben, warum Ihr System eine solche Entscheidung getroffen hat. Es wird jedoch schwierig sein, das Verhalten des Systems zu korrigieren. Installieren Sie eine Krücke, verschieben Sie den Schwellenwert, fügen Sie einen Datensatz hinzu und nehmen Sie ein anderes Backend-Netzwerk.

Drittes Problem

Drittes Grundproblem – Raster lehren Statistiken, nicht Logik. Statistisch gesehen ist das so Person:

Ist die Blase des maschinellen Lernens geplatzt oder ist es der Beginn einer neuen Ära?

Logischerweise ist es nicht sehr ähnlich. Neuronale Netze lernen nichts Komplexes, es sei denn, sie werden dazu gezwungen. Sie lehren immer die einfachsten Zeichen, die möglich sind. Hast du Augen, eine Nase, einen Kopf? Das ist also das Gesicht! Oder nennen Sie ein Beispiel, bei dem Augen kein Gesicht bedeuten. Und noch einmal – Millionen von Beispielen.

Dort unten ist viel platz

Ich würde sagen, dass es diese drei globalen Probleme sind, die derzeit die Entwicklung neuronaler Netze und maschinellen Lernens einschränken. Und wo diese Probleme es nicht einschränken, wird es bereits aktiv genutzt.

Dies ist das Ende? Sind neuronale Netze aktiv?

Unbekannt. Aber das hoffen natürlich alle.

Es gibt viele Ansätze und Richtungen zur Lösung der grundlegenden Probleme, die ich oben hervorgehoben habe. Aber keiner dieser Ansätze hat es bisher ermöglicht, etwas grundlegend Neues zu tun, etwas zu lösen, das noch nicht gelöst wurde. Bisher basieren alle grundlegenden Projekte auf stabilen Ansätzen (Tesla) oder bleiben Testprojekte von Instituten oder Unternehmen (Google Brain, OpenAI).

Grob gesagt besteht die Hauptrichtung darin, eine Darstellung der Eingabedaten auf hoher Ebene zu erstellen. In gewissem Sinne „Erinnerung“. Das einfachste Beispiel für Erinnerung sind verschiedene „Einbettungen“ – Bilddarstellungen. Nun, zum Beispiel alle Gesichtserkennungssysteme. Das Netzwerk lernt, von einem Gesicht eine stabile Darstellung zu erhalten, die nicht von Drehung, Beleuchtung oder Auflösung abhängt. Im Wesentlichen minimiert das Netzwerk die Metrik „verschiedene Gesichter sind weit entfernt“ und „identische Gesichter sind nah“.

Ist die Blase des maschinellen Lernens geplatzt oder ist es der Beginn einer neuen Ära?

Für eine solche Schulung werden Zehntausende und Hunderttausende Beispiele benötigt. Das Ergebnis weist jedoch einige Ansätze des „One-Shot-Learning“ auf. Jetzt brauchen wir nicht mehr Hunderte von Gesichtern, um uns an eine Person zu erinnern. Nur ein Gesicht und das ist alles, was wir sind Lass es uns herausfinden!
Es gibt nur ein Problem: Das Raster kann nur relativ einfache Objekte lernen. Beim Versuch, nicht Gesichter, sondern beispielsweise „Menschen anhand der Kleidung“ zu unterscheiden (Aufgabe Neuidentifizierung) – die Qualität sinkt um viele Größenordnungen. Und das Netzwerk kann keine ziemlich offensichtlichen Winkeländerungen mehr lernen.

Und das Lernen aus Millionen von Beispielen macht auch Spaß.

Es wird daran gearbeitet, die Zahl der Wahlen deutlich zu reduzieren. Man kann sich zum Beispiel sofort an eines der ersten Werke erinnern OneShot-Lernen von Google:

Ist die Blase des maschinellen Lernens geplatzt oder ist es der Beginn einer neuen Ära?

Es gibt zum Beispiel viele solcher Werke 1 oder 2 oder 3.

Es gibt einen Nachteil: Normalerweise funktioniert das Training anhand einiger einfacher „MNIST“-Beispiele gut. Und wenn Sie mit komplexen Aufgaben fortfahren, benötigen Sie eine große Datenbank, ein Objektmodell oder irgendeine Art von Magie.
Generell ist die Arbeit am One-Shot-Training ein sehr interessantes Thema. Man findet viele Ideen. Aber größtenteils beeinträchtigen die beiden von mir aufgeführten Probleme (Vortraining bei einem großen Datensatz / Instabilität bei komplexen Daten) das Lernen erheblich.

Andererseits nähern sich GANs – generative kontradiktorische Netzwerke – dem Thema Einbettung. Sie haben wahrscheinlich eine Reihe von Artikeln zu diesem Thema auf Habré gelesen. (1, 2,3)
Ein Merkmal von GAN ist die Bildung eines internen Zustandsraums (im Wesentlichen die gleiche Einbettung), mit dem Sie ein Bild zeichnen können. Es kann sein Personen, kann sein Aktionen.

Ist die Blase des maschinellen Lernens geplatzt oder ist es der Beginn einer neuen Ära?

Das Problem bei GAN besteht darin, dass es umso schwieriger ist, es in der „Generator-Diskriminator“-Logik zu beschreiben, je komplexer das generierte Objekt ist. Daher sind die einzigen wirklichen Anwendungen von GAN, von denen man hört, DeepFake, das wiederum Gesichtsdarstellungen manipuliert (wofür es eine große Basis gibt).

Ich habe nur sehr wenige andere nützliche Verwendungsmöglichkeiten gesehen. Normalerweise handelt es sich um eine Art Trick, bei dem es darum geht, Zeichnungen von Bildern fertigzustellen.

Und wieder. Niemand hat eine Ahnung, wie uns dies in eine bessere Zukunft führen wird. Die Darstellung von Logik/Raum in einem neuronalen Netzwerk ist gut. Aber wir brauchen eine große Anzahl von Beispielen, wir verstehen nicht, wie das Neuron dies an sich darstellt, wir verstehen nicht, wie wir das Neuron dazu bringen können, sich an eine wirklich komplexe Idee zu erinnern.

Verstärkung lernen - das ist ein Ansatz aus einer ganz anderen Richtung. Sicherlich erinnern Sie sich daran, wie Google alle in Go besiegt hat. Aktuelle Siege in Starcraft und Dota. Aber hier ist alles andere als so rosig und vielversprechend. Er spricht am besten über RL und seine Komplexität dieser Artikel.

Um kurz zusammenzufassen, was der Autor geschrieben hat:

  • Modelle aus der Verpackung passen in den meisten Fällen nicht bzw. funktionieren schlecht
  • Praktische Probleme lassen sich leichter auf andere Weise lösen. Boston Dynamics verwendet RL aufgrund seiner Komplexität/Unvorhersehbarkeit/Rechenkomplexität nicht
  • Damit RL funktioniert, benötigen Sie eine komplexe Funktion. Es ist oft schwierig zu erstellen/schreiben
  • Schwierig zu trainierende Modelle. Man muss viel Zeit aufwenden, um aufzupumpen und aus den lokalen Optima herauszukommen
  • Dadurch ist es schwierig, das Modell zu wiederholen, das Modell ist bei kleinsten Änderungen instabil
  • Überpasst oft einige Zufallsmuster, sogar einen Zufallszahlengenerator

Der entscheidende Punkt ist, dass RL noch nicht in der Produktion funktioniert. Google hat einige Experimente ( 1, 2 ). Aber ich habe kein einziges Produktsystem gesehen.

Memory. Der Nachteil von allem, was oben beschrieben wurde, ist die mangelnde Struktur. Einer der Ansätze, dies alles in Ordnung zu bringen, besteht darin, dem neuronalen Netzwerk Zugriff auf einen separaten Speicher zu gewähren. Damit sie dort die Ergebnisse ihrer Schritte festhalten und umschreiben kann. Dann kann das neuronale Netzwerk anhand des aktuellen Speicherzustands ermittelt werden. Dies ist klassischen Prozessoren und Computern sehr ähnlich.

Das bekannteste und beliebteste Beitrag — von DeepMind:

Ist die Blase des maschinellen Lernens geplatzt oder ist es der Beginn einer neuen Ära?

Es scheint, dass dies der Schlüssel zum Verständnis von Intelligenz ist? Aber wahrscheinlich nicht. Für das Training benötigt das System immer noch große Datenmengen. Und es funktioniert hauptsächlich mit strukturierten Tabellendaten. Darüber hinaus, wenn Facebook entschieden Wenn sie ein ähnliches Problem hatten, schlugen sie den Weg ein: „Scheiß aufs Gedächtnis, mach das Neuron einfach komplizierter und gib mehr Beispiele – und es wird von selbst lernen.“

Entwirrung. Eine andere Möglichkeit, ein bedeutungsvolles Gedächtnis zu schaffen, besteht darin, dieselben Einbettungen zu übernehmen, aber während des Trainings zusätzliche Kriterien einzuführen, die es Ihnen ermöglichen würden, „Bedeutungen“ darin hervorzuheben. Wir wollen zum Beispiel ein neuronales Netzwerk trainieren, um menschliches Verhalten in einem Geschäft zu unterscheiden. Wenn wir dem Standardpfad folgen würden, müssten wir ein Dutzend Netzwerke erstellen. Der eine sucht nach einer Person, der zweite bestimmt, was er tut, der dritte nach seinem Alter, der vierte nach seinem Geschlecht. Eine separate Logik betrachtet den Teil des Ladens, in dem sie dafür ausgebildet ist/ist. Der Dritte bestimmt seine Flugbahn usw.

Oder wenn es eine unendliche Datenmenge gäbe, wäre es möglich, ein Netzwerk für alle möglichen Ergebnisse zu trainieren (ein solches Datenfeld kann natürlich nicht erfasst werden).

Der Entflechtungsansatz sagt uns: Trainieren wir das Netzwerk so, dass es selbst zwischen Konzepten unterscheiden kann. Es würde also eine Einbettung basierend auf dem Video entstehen, bei der ein Bereich die Aktion bestimmen würde, einer würde die Position auf dem Boden in der Zeit bestimmen, einer würde die Größe der Person bestimmen und einer würde das Geschlecht der Person bestimmen. Gleichzeitig möchte ich im Training das Netzwerk mit solchen Schlüsselbegriffen fast nicht anregen, sondern Bereiche hervorheben und gruppieren. Es gibt eine ganze Reihe solcher Artikel (einige davon 1, 2, 3) und im Allgemeinen sind sie ziemlich theoretisch.

Aber diese Richtung sollte, zumindest theoretisch, die eingangs aufgeführten Probleme abdecken.

Ist die Blase des maschinellen Lernens geplatzt oder ist es der Beginn einer neuen Ära?

Bildzerlegung nach den Parametern „Wandfarbe/Bodenfarbe/Objektform/Objektfarbe/etc.“

Ist die Blase des maschinellen Lernens geplatzt oder ist es der Beginn einer neuen Ära?

Zerlegung eines Gesichts nach den Parametern „Größe, Augenbrauen, Ausrichtung, Hautfarbe usw.“

andere

Es gibt viele andere, nicht so globale Bereiche, die es Ihnen ermöglichen, die Datenbank irgendwie zu reduzieren, mit heterogeneren Daten zu arbeiten usw.

Aufmerksamkeit. Es macht wahrscheinlich keinen Sinn, dies als separate Methode herauszutrennen. Einfach ein Ansatz, der andere bereichert. Viele Artikel sind ihm gewidmet (1,2,3). Der Sinn von Attention besteht darin, die Reaktion des Netzwerks speziell auf wichtige Objekte während des Trainings zu verbessern. Oft durch eine externe Zielbezeichnung oder ein kleines externes Netzwerk.

3D-Simulation. Wenn Sie eine gute 3D-Engine erstellen, können Sie damit oft 90 % der Trainingsdaten abdecken (ich habe sogar ein Beispiel gesehen, bei dem fast 99 % der Daten von einer guten Engine abgedeckt wurden). Es gibt viele Ideen und Hacks, wie man ein auf einer 3D-Engine trainiertes Netzwerk mit echten Daten zum Laufen bringen kann (Feinabstimmung, Stilübertragung usw.). Aber oft ist die Herstellung eines guten Motors um mehrere Größenordnungen schwieriger als das Sammeln von Daten. Beispiele für die Herstellung von Motoren:
Robotertraining (Google, Gehirngarten)
Ausbildung Erkennung Waren im Laden (aber in den beiden Projekten, die wir gemacht haben, konnten wir problemlos darauf verzichten).
Ausbildung bei Tesla (wieder das Video oben).

Befund

Der gesamte Artikel ist gewissermaßen eine Schlussfolgerung. Die wichtigste Botschaft, die ich vermitteln wollte, war wahrscheinlich: „Die Werbegeschenke sind vorbei, Neuronen bieten keine einfachen Lösungen mehr.“ Jetzt müssen wir hart arbeiten, um komplexe Entscheidungen zu treffen. Oder arbeiten Sie hart an der Durchführung komplexer wissenschaftlicher Forschung.

Generell ist das Thema umstritten. Vielleicht haben die Leser weitere interessante Beispiele?

Source: habr.com

Kommentar hinzufügen