Intelligente Algorithmen und künstliche Intelligenz. Künstliche Intelligenz

Zunächst einmal: Was ist künstliche Intelligenz? KI bezeichnet eine Reihe von Algorithmen und eine Forschungsrichtung zur Automatisierung von Aufgaben, die das menschliche Gehirn löst, sowie zur Simulation von Aktivitäten menschliches Gehirn um die Lösung von Rechenproblemen zu verbessern. Zum Beispiel:

  • Mustererkennung, Analyse visueller Informationen.
  • Erkennung fundierter Informationen.
  • Argumentation, Entscheidungsfindung.
  • Kreativität, Intuition.

Die Grundidee ist, dass das Gehirn viele Probleme besser löst als ein Computer. Daher ist es sinnvoll, beim Programmieren denselben Ansatz zu verwenden, den unser Gehirn zur Lösung von Problemen verwendet. Dank dieses Ansatzes wurde beispielsweise einem Computer „beigebracht“, Schach zu spielen und sogar berühmte Großmeister zu schlagen, obwohl diese Aufgabe zunächst ein schwieriges Problem darstellte: Die Anzahl der Kombinationen in einem Schachspiel ist so groß, dass der Computer dazu nicht in der Lage ist Zählen Sie sie für die gesamte Existenz des Universums. Das Problem wurde mit der Erfindung heuristischer Algorithmen gelöst. Der Kern der Heuristik besteht darin, dass wir nicht alle Optionen berechnen; wir wählen irgendwie aus, welche Optionen analysiert werden sollen.

Nun zu einigen typischen Bereichen der KI.

  • Beherrschen Sie die Grundprinzipien des Einsatzes künstlicher Intelligenz Computerspiele.
  • Betrachten Sie Algorithmen der künstlichen Intelligenz, die in Spielen anwendbar sind
  • Erstellen Sie ein Computerspiel mit den Prinzipien der künstlichen Intelligenz

Überblick über Ansätze zur Entwicklung eines KI-Systems

Thema Künstliche Intelligenz ( künstliche Intelligenz, AI, AI) begeistert viele unerfahrene Programmierer, Entwickler und Computerspielliebhaber. KI erscheint vielen als etwas überraschend Komplexes, Interessantes und Geheimnisvolles. Tatsächlich zwingen KI-Technologien Spielcharaktere dazu, intelligent zu handeln. Allerdings gibt es an der KI nichts Geheimnisvolles. Im Laufe der jahrzehntelangen Entwicklung dieses Wissensgebiets wurde eine Vielzahl von Algorithmen entwickelt, die in den unterschiedlichsten Tätigkeitsfeldern anwendbar sind. Und Computerspiele sind nur ein relativ kleines Feld für Technologien der künstlichen Intelligenz.

Es ist sehr schwierig, ein Computerspiel zu finden, das keine KI hat. Ein klassisches Beispiel für „intelligente“ Spiele sind Programme zum Spielen von Dame, Schach und anderen Brettspielen. Jedes Spiel, bei dem der Computer gegen den Benutzer spielt, ist mit KI ausgestattet.

Spiel-KI kann in erster Näherung in zwei Typen unterteilt werden. Der erste – und offensichtlichste – ist die Intelligenz der einzelnen Spielcharaktere. Beispielsweise versucht jeder Panzer im einst beliebten Konsolenspiel Battle City, zur Basis des Spielers zu gelangen und diese und seinen Panzer zu zerstören. Die Panzer im Spiel agieren unkoordiniert, sie sind nicht besonders schlau, aber es ist interessant zu spielen – der springende Punkt ist, dass diese Art von KI für dieses Spiel durchaus geeignet ist. Es macht das Spiel nicht langweilig.

Die zweite Ebene der KI ist die Gruppenintelligenz. Denken Sie zum Beispiel an StarCraft. Der Spieler ist gezwungen, gegen eine computergesteuerte Armee zu kämpfen. Es stellt sich heraus, dass der Computer eine große Anzahl von Einheiten steuert (von der englischen Einheit – Einheit). Aber es ist leicht zu erkennen, dass jede Kreatur, die in StarCraft von der Gruppen-KI kontrolliert wird, ihren eigenen „Geist“ hat. Beispielsweise kann die Gruppen-KI eine bestimmte Gruppe von Einheiten aussenden, um das Gebiet zu patrouillieren. Wenn sie unterwegs jedoch auf einen Feind stoßen, ist ihre eigene KI für ihre Aktionen verantwortlich.

Wenn die Aktionen der Armee in StarCraft in keiner Weise kontrolliert würden und die KI nur auf der Ebene einer einzelnen Einheit vorhanden wäre, würde das Spiel zu einer langweiligen Suche und Zerstörung von Feinden werden. Und StarCraft bleibt trotz seines beachtlichen Alters (ca. 10 Jahre) ein spannendes Spiel. Selbst in einer Einzelspieler-Kampagne ist StarCraft in der Lage, den Spieler sehr „in die Länge zu ziehen“, ganz zu schweigen von Online-Kämpfen.

Übrigens ist es leicht zu erkennen, dass im selben StarCraft vom Benutzer gesteuerte Einheiten auch über eine individuelle KI verfügen. Beispielsweise führt derselbe vom Benutzer gegebene „Patrouillen“-Befehl dazu, dass eine StarCraft-Kreatur gehorsam den angegebenen Pfad entlanggeht. Wenn jedoch ein Hindernis auf dem Weg auftaucht (zum Beispiel baut der Spieler dort ein Gebäude, das den Weg versperrt), entscheidet die Einheit selbst, was zu tun ist. Ebenso wird er selbstständig zum Angriff entscheiden, wenn Feinde in seinem Sichtfeld auftauchen.

In Computerspielen verwendete KI-Systeme können in zwei Haupttypen unterteilt werden. Erstens handelt es sich dabei um sogenannte deterministische Systeme. Sie zeichnen sich durch die Vorhersehbarkeit der Handlungen des Charakters aus. Und zweitens handelt es sich um nicht deterministische Systeme – ein von einer solchen KI gesteuerter Charakter kann unvorhersehbar handeln und unerwartete Entscheidungen treffen.

Wie wir bereits gesagt haben, spielt die KI einzelner Einheiten im Vergleich zur Gruppen-KI eine untergeordnete Rolle. Kann die KI einer einzelnen Einheit das Spiel als Ganzes beeinflussen? Vielleicht - für den Fall, dass die Erfolge einer einzelnen Einheit auf alle ähnlichen Einheiten verteilt werden. Beispielsweise stand eine Einheit einem starken Feind gegenüber und ging auf wundersame Weise als Sieger aus der Schlacht hervor. Diese Einheit hat Erfahrungen gesammelt, die dank der Gruppen-KI auf andere Einheiten übertragen werden können. Diese. Wenn eine Einheit etwas gelernt hat, können andere dank der Gruppen-KI neue Fähigkeiten daraus übernehmen. Somit sind Einzel- und Gruppen-KI miteinander verbunden und in einigen Fällen voneinander abhängig.

Ein mit nichtdeterministischer KI ausgestatteter Charakter zeichnet sich durch Unvorhersehbarkeit des Verhaltens und größere „Lebendigkeit“ aus. Gegen solche Charaktere zu spielen ist meist viel interessanter als gegen starr entschlossene. Beliebt in In letzter Zeit Eine Möglichkeit, nichtdeterministische KI zu implementieren, ist die neuronale Netzwerktechnologie. Es ermöglicht Ihnen, Charaktere mit sehr viel Aufwand zu erstellen schwieriges Verhalten. Darüber hinaus verfügen neuronale Netze über die Fähigkeit zu lernen. Das heißt, die Spielfiguren verhalten sich nicht nur intelligent, sondern lernen auch aus ihren Fehlern.

In der Praxis kommen sowohl deterministische als auch nicht-deterministische Arten der KI zum Einsatz. Normalerweise agieren sie gemeinsam. Um beispielsweise einige einfache, eindeutige Aktionen auszuführen (z. B. das Aufrollen bei Annäherung an eine Wand), können einfache und schnelle deterministische Algorithmen verwendet werden. In komplexeren Fällen (z. B. ob Aktien des Unternehmens Es werden komplexe nichtdeterministische Algorithmen verwendet. Teilweise deterministisch (wenn sich ein Charakter beispielsweise einer Wand nähert, hat er eine 50-prozentige Chance, nach links abzubiegen, eine 30-prozentige Chance, nach rechts abzubiegen und eine 20-prozentige Chance, sich umzudrehen und zurückzugehen) werden in Spielen ebenfalls häufig verwendet.

Implementierung des Verfolgungsalgorithmus

Lassen Sie uns ein Spiel mit einem Verfolgungsalgorithmus implementieren. Die Essenz dieses Algorithmus ist wie folgt. Das verfolgende Objekt vergleicht seine Koordinaten in der Spielwelt mit den Koordinaten des Opferobjekts und passt seine Koordinaten so an, dass es näher an das Opfer herankommt. Im einfachsten Fall erfolgt die Verfolgung im freien Gelände.

Erstellen wir ein neues Spielprojekt P8_1 basierend auf Projekt P5_1. Wir werden zwei Objekte verwenden – den Verfolger und das Opfer. Der Verfolger bewegt sich mit einer um 1 geringeren Geschwindigkeit als das Opfer auf das Opfer zu. Wenn die Gegenstände kollidieren, wird das Opfer zerstört.

In Abb. 12.1. Fenster angezeigt Lösungsforscher Spielprojekt P8_1.


Reis. 12.1.

Wir verwenden eine Basisklasse namens gBaseClass, eine Klasse für das Verfolgerobjekt (Enemy), eine Klasse für das Opferobjekt (Me) und eine Klasse für das Wandobjekt. Wir benötigen die Objektklasse „Wand“, um das Verhalten eines Objekts zu untersuchen, das den Verfolgungsalgorithmus implementiert, wenn es auf dem Weg zum Opfer auf ein unüberwindbares Hindernis stößt. Wir haben den Klassencode des ursprünglichen P5_1-Projekts erheblich geändert, sodass Sie unten den vollständigen Code für die Klassen des Spiels finden. In Listing 12.1. Sie finden den Code für die Klasse Game1.

Verwenden des Systems; mit System.Collections.Generic; mit Microsoft.Xna.Framework; mit Microsoft.Xna.Framework.Audio; mit Microsoft.Xna.Framework.Content; unter Verwendung von Microsoft.Xna.Framework.GamerServices; mit Microsoft.Xna.Framework.Graphics; mit Microsoft.Xna.Framework.Input; unter Verwendung von Microsoft.Xna.Framework.Net; mit Microsoft.Xna.Framework.Storage; Namensraum P8_1 ( ///

/// Dies ist der Haupttyp für Ihr Spiel ///öffentliche Klasse Game1: Microsoft.Xna.Framework.Game ( GraphicsDeviceManagergraphics; SpriteBatch spriteBatch; Texture2D txtBackground; Texture2D txtEnemy; Texture2D txtMe; Texture2D txtWall; //Array zum Erstellen des Levels public int[,] Layer; Rechteck recBackround = neues Rechteck( 0 , 0, 640, 512); Rechteck recSprite = new Rechteck(0, 0, 64, 64); public Game1() ( Graphics = new GraphicsDeviceManager(this); Content.RootDirectory = "Content"; ) protected override void Initialize ( ) ( // TODO: Fügen Sie hier Ihre Initialisierungslogik hinzu Layer = new int ( ( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), ( 0, 0, 0, 0, 1, 0 , 0, 0, 0, 0 ), ( 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 ), ( 0, 0, 0, 0, 1, 6, 0, 0, 0 , 0 ), ( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), ( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), ( 0 , 0, 0, 0, 0, 0, 0, 0, 5, 0 ), ( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), ); //Legen Sie die Auflösung fest des Spielfensters //640x512 Graphics.PreferredBackBufferWidth = 640; Graphics.PreferredBackBufferHeight = 512; Graphics.ApplyChanges(); base.Initialize(); ) protected override void LoadContent() ( // Erstellt einen neuen SpriteBatch, der zum Zeichnen von Texturen verwendet werden kann. spriteBatch = new SpriteBatch(GraphicsDevice); Services.AddService(typeof(SpriteBatch), spriteBatch); txtBackground = Content.Load ("Hintergrund"); txtEnemy = Content.Load ("Feind"); txtMe = Content.Load ("Mich"); txtWall = Content.Load ("Wand"); //Rufen Sie die Prozedur zum Anordnen von Objekten im Spielfenster auf AddSprites(); // TODO: Benutze this.Content, um deinen Spielinhalt hier zu laden ) //Prozedur zum Anordnen von Objekten im Spielfenster void AddSprites() ( //Variablen zum temporären Speichern der Adresse //des Spielerobjekts int a = 0, b = 0; / /Durchsuchen Sie die Array-Ebene nach (int i = 0; i< 8; i++) { for (int j = 0; j < 10; j++) { //Если элемент с индексом (i,j) равен 1 - //устанавливаем в соответствующую позицию элемент с //номером 1, то есть - стену if (Layer == 1) Components.Add(new GameObj.Wall(this, ref txtWall, new Vector2(j, i), recSprite)); if (Layer == 5) Components.Add(new GameObj.Enemy(this, ref txtEnemy, new Vector2(j, i), new Rectangle(0, 0, 32, 32))); //Если обнаружен объект игрока - запишем его координаты if (Layer == 6) { a = i; b = j; } } } //Последним установим объект игрока - так он гарантированно //расположен поверх всех остальных объектов Components.Add(new GameObj.Me(this, ref txtMe, new Vector2(b, a), new Rectangle(0, 0, 32, 32))); } protected override void UnloadContent() { } protected override void Update(GameTime gameTime) { base.Update(gameTime); } protected override void Draw(GameTime gameTime) { spriteBatch.Begin(); //выведем фоновое изображение spriteBatch.Draw(txtBackground, recBackround, Color.White); //Выведем игровые объекты base.Draw(gameTime); spriteBatch.End(); } } } Auflistung 12.1. Spiel1-Klassencode

In diesem Artikel werde ich meine Erfahrungen mit der Entwicklung der einfachsten künstlichen Intelligenz (KI) mithilfe eines genetischen Algorithmus teilen und auch über den Mindestsatz an Befehlen sprechen, der erforderlich ist, um Verhalten zu erzeugen.

Das Ergebnis der Arbeit war, dass die KI, ohne die Regeln zu kennen, das Spiel Tic-Tac-Toe selbstständig beherrschte und die Schwächen der Bots fand, die dagegen spielten. Aber ich begann mit einer noch einfacheren Aufgabe.

Befehlssatz

Alles begann mit der Vorbereitung einer Reihe von Befehlen, die die KI haben könnte. Sprachen hohes Level enthalten Hunderte verschiedener Operatoren. Um das erforderliche Minimum hervorzuheben, habe ich mich für die Assemblersprache entschieden. Es stellte sich jedoch heraus, dass es auch viele Befehle enthält.

Ich brauchte die KI, um Daten lesen und ausgeben, mit dem Speicher arbeiten, Berechnungen und logische Operationen durchführen sowie Übergänge und Schleifen durchführen zu können. Ich bin auf die Brainfuck-Sprache gestoßen, die nur 8 Befehle enthält und jede beliebige Berechnung durchführen kann (d. h. sie ist Turing-vollständig). Im Prinzip ist es für die genetische Programmierung geeignet, ich bin aber noch weiter gegangen.

Ich habe mich gefragt: Wie viele Befehle sind mindestens erforderlich, um einen Algorithmus zu implementieren? Wie sich herausstellte, gab es nur einen!

Der URISC-Prozessor enthält nur eine Anweisung: Subtrahieren und Überspringen der nächsten Anweisung, wenn der Subtrahend größer als der Minuend war. Dies reicht aus, um einen beliebigen Algorithmus zu erstellen.

Oleg Mazonka ging sogar noch weiter: Er entwickelte den BitBitJump-Befehl und bewies, dass er Turing-vollständig ist. Der Befehl enthält drei Adressen, kopiert ein Bit von der ersten in die zweite Speicheradresse und überträgt die Steuerung an die dritte Adresse.

Um die Arbeit zu vereinfachen, habe ich Olegs Ideen übernommen und den Befehl SumIfJump entwickelt. Der Befehl enthält vier Operanden: A, B, C, D und führt Folgendes aus: Zur Zelle an der Adresse B fügt er Daten aus der Zelle an der Adresse A hinzu. Wenn der Wert größer als der angegebene Wert* ist, geht er zur Adresse C, andernfalls geht es an Adresse D.

Notiz

*In diesem Fall wurde 128 verwendet – die halbe Länge des Genoms.


Wenn Operand A auf den Speicherplatz N0 zugreift, erfolgt eine Dateneingabe, und wenn Operand A auf den Speicherplatz N1 zugreift, erfolgt eine Datenausgabe.

Unten finden Sie den SumIfJump-Code in FreePascal (ein kostenloses Analogon von Delphi).

Prozedur RunProg(s: TData); var a, b, c, d: TData; begin Inc(NStep); Wenn NStep > MaxStep, dann beginne ProgResult:= "MaxStep"; Ausfahrt; Ende; a:= s; b:= s + 1; c:= s + 2; d:= s + 3; a:= Prog[a]; b:= Prog[b]; c:= Prog[c]; d:=Prog[d]; wenn a = 0, dann begin ProgResult:= "Input"; Ausfahrt; Ende; if a = 1 then begin ProgResult:= "Output"; Ausfahrt; Ende; Prog[b] := Prog[b] + Prog[a]; wenn Prog[b]< ProgLength div 2 then RunProg(c) else RunProg(d); end;
SumIfJump implementiert selbstmodifizierenden Code. Kann alle in einer herkömmlichen Programmiersprache verfügbaren Algorithmen ausführen. Der Code ist leicht änderbar und hält jeder Manipulation stand.

Einfache Aufgabe

Unsere KI hat also nur einen Befehl. Bisher ist Tic-Tac-Toe ein sehr schwieriges Spiel für ihn, also habe ich mit einem einfacheren angefangen.

Der Bot erzeugt eine Zufallszahl und die KI muss die Daten lesen und eine Antwort geben. Wenn die Zahl größer als der Durchschnitt (des Bereichs der Zufallszahlen) ist, sollte die KI eine Zahl erzeugen, die kleiner als der Durchschnitt ist und umgekehrt.

Das Genom unserer KI besteht aus 256 Zellen mit Werten von 0 bis 255. Jeder Wert ist ein Gedächtnis, ein Code und eine Adresse. Die Anzahl der Codeausführungsschritte ist auf 256 begrenzt. Die Operanden werden nacheinander gelesen.

Das Genom wird zunächst durch eine Reihe von Zufallszahlen generiert, sodass die KI nicht weiß, was sie spielen muss. Darüber hinaus weiß er nicht, dass er Daten nacheinander eingeben und ausgeben muss, wenn er auf den Bot antwortet.

Population und Selektion

Die erste Population besteht aus 256 KIs, die beginnen, mit dem Bot zu spielen. Wenn die KI die richtigen Aktionen ausführt, zum Beispiel Daten zur Eingabe anfordert und dann etwas ausgibt, dann erhält die KI Punkte. Je mehr richtige Aktionen, desto mehr Punkte.

Die 16 KIs, die die meisten Punkte erzielen, bringen jeweils 15 Nachkommen hervor und nehmen weiterhin am Spiel teil. Ein Nachkomme ist ein Mutant. Eine Mutation erfolgt durch Ersetzen einer zufälligen Zelle in einer Kopie des übergeordneten Elements durch einen zufälligen Wert.

Wenn in der ersten Population keine KI Punkte erzielt, wird die nächste Population gebildet. Und so weiter, bis eine der KIs beginnt, die richtigen Aktionen auszuführen und den „richtigen“ Nachwuchs hervorzubringen.

Evolution


Zwischen bedeutenden Ereignissen fanden Tausende von Generationswechseln statt. Das Programm wurde in mehreren Threads auf einem Core i7 ausgeführt. Die Berechnungen dauerten etwa 15 Minuten.

  1. Als der KI-„Anführer“ einen zufälligen Fehler machte und nicht genügend Punkte erzielte, begann sich die Bevölkerung zu verschlechtern, weil Nachkommen wurden aus „sekundären“ Eltern gebildet.
  2. Es kam vor, dass in einem Stream mit Außenseitern, die auf Zeit waren, eine erfolgreiche Mutation stattfand, die zu einem explosionsartigen Anstieg der gewonnenen Punkte führte. Danach wurde dieser Strom zum Anführer.
  3. Manchmal kam es lange Zeit zu keinen erfolgreichen Mutationen, und selbst 500.000 Generationen reichten nicht aus, um die Selektion abzuschließen.

Abschluss

Schließlich habe ich dasselbe mit dem Tic-Tac-Toe-Spiel gemacht. Die verwendete Genomgröße war dieselbe wie im ersten Fall. Die Anzahl der Schritte wurde auf 1024 und die Populationsgröße auf 64 erhöht (zur schnelleren Berechnung). Die Berechnung dauerte etwas länger. Alles geschah nach ungefähr dem gleichen Szenario.

Zunächst spielte die KI gegen einen „Randomizer“. So habe ich den Bot genannt, der zufällig läuft. Ziemlich schnell begann die KI ihn zu schlagen und füllte eine Zeile aus. Als nächstes habe ich die Aufgabe verkompliziert, indem ich dem Zufallsgenerator ein wenig Intelligenz hinzugefügt habe: Besetzen Sie die Linie, wenn möglich, oder verteidigen Sie sie. In diesem Fall entdeckte die KI jedoch die Schwächen des Bots und begann, ihn zu besiegen. Vielleicht ist eine Geschichte dazu ein Thema für einen separaten Artikel.

Mein Sohn bat mich, ein Programm zu schreiben, damit die KIs untereinander spielen und nicht mit einem Bot. Es gab Ideen, das Gleiche auch für das Dame- oder Go-Spiel zu tun, allerdings hatte ich nicht mehr genug Zeit dafür.

Die einzige Methode, die ich verwendet habe, um neue Individuen zu gewinnen, ist die Mutation. Sie können auch Crossover und Inversion verwenden. Vielleicht beschleunigen diese Methoden das Erreichen des gewünschten Ergebnisses.

Am Ende war eine Idee geboren: KI die Möglichkeit zu geben, alle Prozesse auf einem PC zu verwalten und um Computerressourcen zu konkurrieren. Verbinden Sie Ihren PC mit dem Internet und nutzen Sie einen Pool alter Bitcoin-Farmen als Rechenleistung ...

Wie der Blogger sagte, als er ein ähnliches Experiment durchführte

Künstliche Intelligenz: Wie und wo man studieren kann – Experten antworten

„Ich möchte KI machen. Was lohnt sich zu studieren? Welche Sprachen sollte ich verwenden? In welchen Organisationen sollte ich studieren und arbeiten?

Wir haben uns zur Klärung an unsere Experten gewandt und stellen Ihnen die erhaltenen Antworten zur Verfügung.

Es kommt auf deine Grundausbildung an. Zunächst benötigen Sie eine mathematische Kultur (Kenntnisse in Statistik, Wahrscheinlichkeitstheorie, diskreter Mathematik, linearer Algebra, Analysis usw.) und die Bereitschaft, schnell viel zu lernen. Bei der Implementierung von KI-Methoden ist eine Programmierung (Algorithmen, Datenstrukturen, OOP usw.) erforderlich.

Unterschiedliche Projekte erfordern Kenntnisse verschiedener Programmiersprachen. Ich würde empfehlen, mindestens Python, Java und jede funktionale Sprache zu kennen. Erfahrungen mit verschiedenen Datenbanken und verteilten Systemen sind hilfreich. Um schnell die Best Practices der Branche zu erlernen, sind Englischkenntnisse erforderlich.

Ich empfehle ein gutes Studium Russische Universitäten! Beispielsweise verfügen MIPT, MSU und HSE über entsprechende Abteilungen. Auf Coursera, edX, Udacity, Udemy und anderen MOOC-Plattformen ist eine Vielzahl thematischer Kurse verfügbar. Einige führende Organisationen verfügen über eigene Schulungsprogramme im Bereich KI (zum Beispiel die School of Data Analysis bei Yandex).

Durch KI-Methoden gelöste Anwendungsprobleme finden sich an den unterschiedlichsten Stellen. Banken, Finanzsektor, Beratung, Einzelhandel, E-Commerce, Suchmaschinen, Postdienste, die Spielebranche, die Sicherheitssystembranche und natürlich Avito – sie alle benötigen Spezialisten mit unterschiedlichen Qualifikationen.

Herabstufen fördern

Wir haben ein Fintech-Projekt im Zusammenhang mit maschinellem Lernen und Computer Vision, bei dem der erste Entwickler alles in C++ schrieb, dann kam ein Entwickler und schrieb alles in Python um. Sprache ist hier also nicht das Wichtigste, denn Sprache ist in erster Linie ein Werkzeug und es liegt an Ihnen, wie Sie es nutzen. Es ist nur so, dass Probleme in manchen Sprachen schneller gelöst werden können, in anderen langsamer.

Es ist schwer zu sagen, wo man studieren soll – alle unsere Jungs haben alleine gelernt, zum Glück gibt es das Internet und Google.

Herabstufen fördern

Ich kann Ihnen raten, sich von Anfang an darauf vorzubereiten, dass Sie viel lernen müssen. Unabhängig davon, was mit „KI machen“ gemeint ist – mit Big Data oder neuronalen Netzen arbeiten; Entwicklung von Technologie oder Unterstützung und Schulung eines bestimmten bereits entwickelten Systems.

Nehmen wir der Einzelheiten halber den Trendberuf des Datenwissenschaftlers. Was macht diese Person? Im Allgemeinen werden große Datenmengen gesammelt, analysiert und für die Nutzung aufbereitet. Dies sind diejenigen, auf denen die KI wächst und trainiert. Was sollte ein Data Scientist wissen und können? Statische Analyse und mathematische Modellierung sind Standard und auf dem Niveau der Sprachkompetenz. Sprachen – sagen wir R, SAS, Python. Es wäre auch schön, etwas Entwicklungserfahrung zu haben. Nun, im Allgemeinen sollte ein guter Datenwissenschaftler mit Datenbanken, Algorithmen und Datenvisualisierung vertraut sein.

Das heißt nicht, dass ein solches Wissen an jeder zweiten technischen Universität des Landes erworben werden könnte. Großunternehmen die die KI-Entwicklung im Vordergrund haben, verstehen dies und entwickeln für sich entsprechende Schulungsprogramme – da gibt es zum Beispiel die School of Data Analysis von Yandex. Sie müssen sich jedoch darüber im Klaren sein, dass dies nicht die Skala ist, in der Sie „von der Straße“ zu den Kursen kommen, sondern diese als fertiger Junior verlassen. Die Schichtung ist groß und es macht Sinn, eine Disziplin zu studieren, wenn die Grundlagen (Mathematik, Statistik) zumindest im Rahmen des Universitätsstudiums bereits vermittelt wurden.

Ja, es wird einige Zeit dauern. Aber das Spiel ist es wert, denn ein guter Data Scientist ist vielversprechend. Und sehr teuer. Es gibt noch einen weiteren Punkt. Künstliche Intelligenz ist einerseits nicht mehr nur ein Hype-Objekt, sondern eine Technologie, die das Stadium der Produktivität vollständig erreicht hat. Andererseits befindet sich die KI noch in der Entwicklung. Diese Entwicklung erfordert viele Ressourcen, viele Fähigkeiten und viel Geld. Bisher ist dies das Major-League-Niveau. Ich möchte jetzt das Offensichtliche sagen, aber wenn Sie an der Spitze des Angriffs stehen und den Fortschritt mit Ihren eigenen Händen vorantreiben wollen, sollten Sie Unternehmen wie Facebook oder Amazon ins Visier nehmen.

Gleichzeitig wird die Technologie bereits in zahlreichen Bereichen eingesetzt: im Bankwesen, in der Telekommunikation, bei großen Industrieunternehmen und im Einzelhandel. Und sie brauchen bereits Menschen, die es unterstützen können. Gartner prognostiziert, dass bis 2020 20 % aller Unternehmen in Industrieländer werde einstellen besondere Mitarbeiter um die in diesen Unternehmen verwendeten neuronalen Netze zu trainieren. Es bleibt also noch ein wenig Zeit zum selbstständigen Lernen.

Herabstufen fördern

KI entwickelt sich derzeit aktiv weiter und es ist schwierig, zehn Jahre im Voraus vorherzusagen. In den nächsten zwei bis drei Jahren werden Ansätze auf Basis neuronaler Netze und GPU-Computing dominieren. Spitzenreiter in diesem Bereich ist Python mit der interaktiven Umgebung Jupyter und den Bibliotheken Numpy, Scipy und Tensorflow.

Es gibt viele Online-Kurse, die ein grundlegendes Verständnis dieser Technologien vermitteln allgemeine Grundsätze KI, zum Beispiel der Kurs von Andrew Ng. Und was die Vermittlung dieses Themas angeht, ist Russland derzeit am effektivsten Selbstbildung oder in einer lokalen Interessengruppe (ich weiß zum Beispiel, dass es in Moskau mindestens ein paar Gruppen gibt, in denen Menschen Erfahrungen und Wissen austauschen).

Herabstufen fördern

Herabstufen fördern

Der am schnellsten fortschreitende Teil der künstlichen Intelligenz sind heute vielleicht neuronale Netze.
Das Studium neuronaler Netze und KI sollte mit der Beherrschung zweier Zweige der Mathematik beginnen – der linearen Algebra und der Wahrscheinlichkeitstheorie. Dies ist ein zwingendes Minimum, die unerschütterlichen Säulen der künstlichen Intelligenz. Bewerber, die die Grundlagen der KI verstehen wollen, sollten meiner Meinung nach bei der Hochschulwahl auf Fakultäten mit einer starken Mathematikschule achten.

Der nächste Schritt besteht darin, die Probleme des Problems zu untersuchen. Es gibt eine große Menge an Literatur, sowohl Bildungs- als auch Fachliteratur. Die meisten Veröffentlichungen zum Thema Künstliche Intelligenz und neuronale Netze sind auf Englisch verfasst, es werden jedoch auch russischsprachige Materialien veröffentlicht. Nützliche Literatur finden Sie beispielsweise in der öffentlichen digitalen Bibliothek arxiv.org.

Wenn wir über Tätigkeitsbereiche sprechen, können wir hier das Training angewandter neuronaler Netze und die Entwicklung völlig neuer Versionen neuronaler Netze hervorheben. Ein markantes Beispiel: Es gibt mittlerweile eine so sehr beliebte Spezialität – „Data Scientist“ (Data Scientist). Hierbei handelt es sich um Entwickler, die in der Regel bestimmte Datensätze untersuchen und aufbereiten, um neuronale Netze in bestimmten Anwendungsbereichen zu trainieren. Zusammenfassend möchte ich betonen, dass jede Spezialisierung einen eigenen Vorbereitungsweg erfordert.

Herabstufen fördern

Bevor Sie mit Spezialkursen beginnen, müssen Sie lineare Algebra und Statistik studieren. Ich würde empfehlen, Ihr Eintauchen in die KI mit dem Lehrbuch „Machine Learning“ zu beginnen. „The Science and Art of Building Algorithms That Extract Knowledge from Data“ ist eine gute Einführung für Anfänger. Auf Coursera lohnt es sich, die Einführungsvorlesungen von K. Vorontsov (ich betone, dass sie gute Kenntnisse der linearen Algebra erfordern) und den Kurs „Machine Learning“ an der Stanford University anzuhören, der von Andrew Ng, Professor und Leiter von Baidu AI, unterrichtet wird Gruppe/Google Brain.

Der Großteil ist in Python geschrieben, gefolgt von R und Lua.

Wenn wir darüber reden Bildungsinstitutionen, ist es besser, sich in Lehrveranstaltungen der Fachbereiche Angewandte Mathematik und Informatik einzuschreiben, dort gibt es entsprechende Studiengänge. Um Ihre Fähigkeiten zu testen, können Sie an Kaggle-Wettbewerben teilnehmen, bei denen große Weltmarken ihre Hüllen anbieten.

Herabstufen fördern

In jedem Unternehmen wäre es gut, sich vor Beginn von Projekten eine theoretische Grundlage zu verschaffen. Es gibt viele Orte, an denen Sie in diesem Bereich einen formellen Master-Abschluss erwerben oder Ihre Qualifikationen verbessern können. Skoltech bietet beispielsweise Masterstudiengänge in den Bereichen „Computational Science and Engineering“ und „Data Science“ an, darunter Kurse in „Machine Learning“ und „Natural Language Processing“. Erwähnenswert sind auch das Institut für Intelligente Kybernetische Systeme der Nationalen Forschungskernuniversität MEPhI, die Fakultät für Computermathematik und Kybernetik der Moskauer Staatlichen Universität und die Abteilung für Intelligente Systeme des MIPT.

Wenn Sie bereits über eine formale Ausbildung verfügen, stehen Ihnen auf verschiedenen MOOC-Plattformen zahlreiche Kurse zur Verfügung. EDx.org bietet beispielsweise Kurse für künstliche Intelligenz von Microsoft und der Columbia University an, wobei letztere ein Mikro-Master-Programm zu einem vernünftigen Preis anbietet. Besonders hervorheben möchte ich, dass Sie die Kenntnisse selbst in der Regel kostenlos erwerben können; für das Zertifikat zahlen Sie nur dann, wenn es für Ihren Lebenslauf benötigt wird.

Wenn Sie „tiefer in das Thema eintauchen“ möchten, bieten einige Unternehmen in Moskau einwöchige Intensivkurse mit praktischem Unterricht und sogar Ausrüstung für Experimente an (z. B. newprolab.com), allerdings sind die Preise für solche Kurse hoch beginnt bei mehreren Zehntausend Rubel.

Unter den Unternehmen, die künstliche Intelligenz entwickeln, kennen Sie wahrscheinlich Yandex und Sberbank, aber es gibt viele andere unterschiedlicher Größe. Beispielsweise hat das Verteidigungsministerium diese Woche in Anapa das ERA Military Innovation Technopolis eröffnet, dessen Thema unter anderem die Entwicklung von KI für militärische Zwecke ist.

Herabstufen fördern

Bevor wir uns mit künstlicher Intelligenz befassen, müssen wir eine grundlegende Frage klären: Sollen wir die rote oder die blaue Pille nehmen?
Die rote Pille soll zum Entwickler werden und in die grausame Welt der statistischen Methoden, Algorithmen und des ständigen Verständnisses des Unbekannten eintauchen. Andererseits muss man sich nicht gleich ins „Kaninchenloch“ stürzen: Man kann Manager werden und zum Beispiel als Projektmanager KI erschaffen. Das sind zwei grundsätzlich unterschiedliche Wege.

Das erste ist großartig, wenn Sie sich bereits entschieden haben, Algorithmen für künstliche Intelligenz zu schreiben. Dann müssen Sie mit der heute beliebtesten Richtung beginnen – maschinellem Lernen. Dazu müssen Sie die klassischen statistischen Methoden der Klassifizierung, Clusterung und Regression kennen. Es wird auch nützlich sein, sich mit den wichtigsten Maßstäben zur Beurteilung der Qualität einer Lösung, ihrer Eigenschaften ... und allem, was Ihnen in den Weg kommt, vertraut zu machen.

Erst wenn die Basis beherrscht ist, lohnt es sich, spezialisiertere Methoden zu studieren: Entscheidungsbäume und deren Ensembles. In dieser Phase müssen Sie sich eingehend mit den grundlegenden Methoden zum Erstellen und Trainieren von Modellen befassen – sie verbergen sich hinter den kaum anständigen Worten „betteln“, „Boosten“, „Stacking“ oder „Blending“.

Es lohnt sich auch, etwas über Methoden zur Steuerung der Modellumschulung zu lernen (ein weiteres „ing“ – Überanpassung).

Und schließlich ein sehr Jedi-Niveau – der Erwerb hochspezialisierten Wissens. Beispielsweise erfordert Deep Learning die Beherrschung grundlegender Gradientenabstiegsarchitekturen und -algorithmen. Wenn Sie sich für Probleme bei der Verarbeitung natürlicher Sprache interessieren, empfehle ich das Studium wiederkehrender neuronaler Netze. Und zukünftige Entwickler von Algorithmen zur Verarbeitung von Bildern und Videos sollten sich genauer mit Faltungs-Neuronalen Netzen befassen.

Die beiden letztgenannten Strukturen sind die Bausteine ​​heutiger populärer Architekturen: Adversarial Networks (GANs), relationale Netzwerke und Mesh-Netzwerke. Daher ist es sinnvoll, sie zu studieren, auch wenn Sie nicht vorhaben, dem Computer das Sehen oder Hören beizubringen.

Ein völlig anderer Ansatz zum Studium der KI – auch bekannt als die „blaue Pille“ – beginnt damit, sich selbst zu finden. Künstliche Intelligenz bringt eine Reihe von Aufgaben und ganzen Berufen hervor: vom KI-Projektmanager bis zum Dateningenieur, der in der Lage ist, Daten aufzubereiten, zu bereinigen und skalierbare, ausgelastete und fehlertolerante Systeme aufzubauen.

Bei einem „managementorientierten“ Ansatz sollten Sie also zunächst Ihre Fähigkeiten und Ihren Hintergrund beurteilen und erst dann entscheiden, wo und was Sie studieren möchten. So können Sie beispielsweise auch ohne mathematisches Verständnis KI-Schnittstellen und Visualisierungen für intelligente Algorithmen entwerfen. Aber machen Sie sich bereit: In fünf Jahren wird die künstliche Intelligenz anfangen, Sie zu trollen und Sie einen „Humanisten“ zu nennen.

Die wichtigsten ML-Methoden werden in Form vorgefertigter Bibliotheken implementiert, die zur Anbindung verfügbar sind verschiedene Sprachen. Die beliebtesten Sprachen in ML sind heute: C++, Python und R.

Es gibt viele Kurse sowohl auf Russisch als auch auf Russisch Englische Sprachen, wie zum Beispiel die Kurse Yandex School of Data Analysis, SkillFactory und OTUS. Aber bevor Sie Zeit und Geld in spezielle Schulungen investieren, lohnt es sich meiner Meinung nach, „sich mit dem Thema auseinanderzusetzen“: Sehen Sie sich auf YouTube offene Vorträge von DataFest-Konferenzen der letzten Jahre an und nehmen Sie an kostenlosen Kursen von Coursera und Habrahabr teil.

mob_info