GPT-3

Was ist GPT-3?

Bei GPT-3 (Generative Pretrained Transformer 3) handelt es sich um ein Sprachmodul der dritten Generation, welches von OpenAI entwickelt wurde und auf Natural Language Processing (NLP)-Modellen basiert.

Das Unternehmen, welches vom Tesla-CEO Elon Musk mitgegründet wurde, beschäftigt sich mit der Entwicklung von Open-Source-Lösungen im Bereich der künstlichen Intelligenz und hat sich zum Ziel gesetzt, die Vorteile dieser für die Menschheit herauszuarbeiten. Denn für die Gründer sowie einigen Wissenschaftlern ist die Gefahr des Übertreffens bzw. des Ersetzens von menschlicher Intelligenz durch künstliche Intelligenz gegeben.

Gegenüber seinen Vorgängern GPT-1 und GPT-2 konnte die aktuelle Version, das im Mai 2020 vorgestellt wurde, einige Verbesserungen erzielen. Bei der ersten Version GPT-1 handelt es sich um ein NLP-Modell, welches im Gegensatz zum bisherigen Stand der Technik nicht speziell für eine bestimmte Aufgabe trainiert werden musste, sondern nur sehr wenige Beispiele für eine qualitativ hochwertige Sprachausgabe benötigt. Mitarbeiter von OpenAI entwickelten dieses Modell weiter, indem sie den dahinterliegenden Datensatz erweiterten, mehr Parameter hinzufügten und schufen somit GPT-2.

Dieses Sprachmodul hat zudem die Fähigkeit, Anweisungen als solche zu verstehen, um beispielsweise Texte automatisch per Textanweisung zu übersetzen. Während GPT-1 und GPT-2 als Open-Source-Software frei verfügbar sind, fand mit dem Sprachmodell GPT-3 eine Kommerzialisierung des Produkts statt. OpenAI argumentiert diesen Schritt damit, dass eine freie Weitergabe der neuen Version aufgrund der starken Leistung eine zu große Gefahr für die Verbreitung von Fehlinformation und Spam oder dem betrügerischen Verfassen von akademischen Aufsätzen besteht.

Wie funktioniert das Sprachmodell?

Gegenüber dem Vorgänger berücksichtigt die dritte Version hundertmal mehr Parameter und greift auf fünf Datensätze (Common Crawl, WebText2, Books1, Books2 und Wikipedia) zurück, während GPT-1 (Book Corpus) und GPT-2 (WebText) nur auf jeweils einen Trainingsdatensatz zugreift.

Die Grundidee von vielen Sprachmodulen bei der Generierung von Texten besteht darin, mithilfe statistischen Modellen die Vorhersage der nächsten Worte eines Textes zu ermitteln, sodass der Text grammatikalisch und sprachlich Sinn ergibt. Dabei arbeitet sie KI-Software GPT-3 nicht mit Worten oder Buchstaben, sondern mit sogenannten Token. Hierbei handelt es sich grundsätzlich gesprochen um eine zusammengehörige Zeichenabfolge. Damit schafft es die Sprach-KI GPT-3 Varianz in die Sprachausgabe zu bringen, welche mit der Betrachtung von ganzen Wörtern schwieriger darzustellen wäre.

Das Sprachmodul wendet für die Analyse und Generierung von Texten folgende Modelle (sogenannte Engines) an: Davinci, Curie, Babbage und Ada. Jedes bietet für bestimmte Anwendungsbereiche Vor- und Nachteile. Während sich Davinci für die Analyse von komplexen Texten eignet, bietet sich Curie für die Nutzung eines Service-Chatbots an. Der Nutzer gibt diesen sowie einige weitere Parameter für die Ermittlung der Ausgabe an. Solche Parameter sind beispielsweise die Kreativität des ausgegebenen Texts sowie dessen Länge.

Die Sprach-KI GPT-3 wurde für die englische Sprache entwickelt und kann derzeit auch nur in dieser ihr vollständiges Potenzial entfalten, auch wenn sie Übersetzungsmöglichkeiten anbietet.

In welcher Software wird GPT-3 genutzt?

Grundsätzlich kann GPT-3 aktuell mittels API-Schnittstelle und entsprechender Bezahlung genutzt werden. Microsoft hat sich hingegen die exklusive Lizenz zum Quellcode von GPT-3 gesichert, um das Sprachmodul in eigene Produkte einzubinden und weiterzuentwickeln. So kombiniert beispielsweise Microsoft Azure OpenAI die Sprach-KI mit den Microsoft-Serviceleistungen Sicherheit, Zugriffsmanagement und Skalierungskapazität. Diese Gesamtlösung soll vor allem für Unternehmen von Interesse sein.

Darüber hinaus lässt sich GPT-3 beispielsweise auch in Chatbots einsetzen, sodass die Software dabei unterstützt, Konversationen zu führen und Hilfestellungen anzubieten. Darüber hinaus wird sie auch in der Spielentwicklung eingesetzt, um automatische Dialoge und Handlungsstränge in Computerspielen zu erstellen. Aufgrund der Engine-Parametrisierung können auf Basis weniger Informationen beispielsweise auch ganze Marketingtexte, Landingpages oder Newsletter erstellt und umgesetzt werden.

Generische Programmierung

Was ist eine generische Programmierung?

Das Wort generisch stammt aus dem Lateinischen (genus – Gattung, Geschlecht) und beschreibt im Grunde verschiedene Eigenschaften eines vorhandenen Objekts. Hierbei finden auch Mengen, Klassen oder Gattungen unterschiedlicher Art Anwendung. Bei der generischen Programmierung, welche bei Software Bibliotheken eine sinnvolle Anwendung findet, geht es darum, Funktionen im allgemeinen Bereich zu entwerfen. Ziel ist es hier, verschiedene Datenstrukturen sowie Typen von Daten zu kreieren.

Grundsätzliches

Der Einbau und das Integrieren bei diversen Programmiersprachen erfolgt durch Templates oder auch generischen Typen. Eine Folge ist, dass so Programmiersprachen entstehen, welche dynamisch gestaltet sind. Die verwendeten Algorithmen, werden hier nicht gezielt für ganz bestimmte Typen von Daten erschaffen, sondern stellen nur gezielte Funktionsanforderungen an die Datentypen.

Viele nutzen in dem Zusammenhang auch den Begriff parametrische Polymorphie. Anschaulich erklären und sehen lässt sich das an einer Standardbibliothek der C++ Programmiersprache. Dort werden Strukturen von Daten und verwendeten Algorithmen getrennt voneinander behandelt, so gut es natürlich geht, da sie unabhängig arbeiten sollen.

C# Programmiersprache

Im Bereich generische Programmierung findet auch die C# Programmiersprache Anwendung, welche ähnliche Templates benutzt, wie sie auch bei C++ zu finden sind. Es werden unter anderem Klassen und Befehle verwendet, welche bereits bekannt sind, darunter auch List, Dictionary oder Hashset. Zu erwähnen ist auch, dass in C++ stets Klammern verwendet werden, welche spitz sind. Ziel ist es dabei eine Deklaration von Klassen hervorzuheben und sichtbar zu machen.

Java

Im Javabereich wird generische Programmierung seit der Version 1.5 angeboten und verwendet. Es geht hier darum, für vorhandene Typen und Daten die ein oder andere neue Variable zu implementieren. Wenn beispielsweise Klassen verwendet werden, ersetzen konkretisierte Typen wiederum andere Variablen. Man könnte es auch als eine Art Neuschöpfung sehen. Auf diesem Weg soll eine Programmierung, welche typspezifisch ist, meistens ermöglicht werden.

Künstliche Intelligenz

Künstliche Intelligenz sowie generische Programmierung hängen immer zusammen und bedingen so einander. Neuronale Netze ahmen grob zusammengefasst das menschliche Gehirn nach und kopieren Verhaltensweisen und Ausführungen ihrer biologischen Pendants. Bei der Erschaffung neuronaler Netze erhält die generische Programmierung stets eine Daseinsberechtigung. Verschiedene Befehle, Klassen und Strukturen sind neben Algorithmen notwendig, um eine künstliche Intelligenz zu erschaffen. Je umfangreicher und vielfältiger eine künstliche Intelligenz sein soll, umso detaillierter und ausgefeilter findet generisches Programmieren eine Anwendung.

Zukunftstauglichkeit

Der technologische Fortschritt im Zuge einer fortschreitenden Globalisierung ist unaufhaltbar. Aufgrund wachsender Ansprüche beispielsweise im Wirtschaftsbereich, an der Börse oder Industrie müssen immer wieder neue Lösungen her. In diesem Zusammenhang wird auch die generische Programmierung immer komplexer, somit jedoch auch fehleranfälliger, sofern keine ständigen Updates von Soft- und Hardware erfolgen.

Prinzipiell ist der IT-Sektor einer der wenigen, wo Arbeitsplätze zukünftig sicher sein werden, da Spezialisten in dem Bereich immer gebraucht werden. Weiterbildungen in der generischen Programmierung sowie Schulungen auf diesem Gebiet gewinnen immer mehr an Bedeutung. Dies ist auch wichtig, um mit anderen Industrienationen weltweit zukünftig standhalten sowie konkurrieren zu können.

Genetischer Algorithmus

Was ist ein genetischer Algorithmus?

Der genetische Algorithmus wurden durch John H. Holland salonfähig. Problemanzeigen im Binärbereich bilden hier die Basis, aus diesem Grund findet ein Genotyp Phänotyp Mapping Anwendung. Das heißt nichts anderes, als dass binäre Kandidaten im Lösungsbereich zuallererst umgewandelt und verändert werden müssen.

Ziel ist es, eine Evaluation mit der vorhandenen Fitnessfunktion sicherzustellen. Aufgrund dieser Eigenart bilden sie eine Parallele zum biologischen Pendant. Unser Erbgut ähnelt quasi binären Zahlen aufgrund von 4 codierten vorhandenen Nukleinsäuren. Rekombination und Mutationen sind so problemlos möglich.

Der Phänotyp (Erscheinungsbild) entsteht durch Prozesse und Abläufe, welche aus vielen Schritten bestehen. Genotyp Phänotyp Mapping läuft hier quasi ähnlich ab. Binäre Repräsentationen sind zur rasanten Verarbeitung in komplexen Computersystemen klar geeignet. Grob zusammengefasst kann man also sagen, dass genetische Algorithmen das Grundprinzip von biologischer Evolution in irgendeiner Form kopieren sowie nachahmen wollen.

Anwendung des genetischen Algorithmus

Wenn es um das Lösen von Problemen geht, kann ein genetischer Algorithmus sinnvoll sein. Beim Bau von Brücken kann ein genetischer Algorithmus die Formgebung, das Gewicht von Bestandteilen oder auch die Lage dieser optimieren. Bei neuronalen Netzen finden diese ebenfalls eine optimale Anwendungsmöglichkeit, beispielsweise beim Justieren des vorhandenen Schellenpotenzialvektors.

Wissenswertes

Bei diversen Ausgangssituationen geht es stets darum, dass man mithilfe von genetischen Algorithmen irgendwann zu einem gewünschten Ergebnis gelangt, was durch ständiges Aussortieren und Selektieren sowie Verändern von Informationen realisiert wird. Doch die Ergebnisse, welche so erzielt werden, sind nicht immer optimal und auf das genaue Problem zugeschnitten, es gibt manchmal Abweichungen.

Grund hierfür ist, dass die jeweiligen Veränderungen und Selektionen unter Umständen nicht stark genug ausgeprägt stattfanden, schuld daran sind die Operationen, welche genetisch sind. Statt optimale Lösungen zu präsentieren, werden somit suboptimale Ergebnisse erzeugt. Es gibt zudem einen weiteren Nachteil. Ein genetischer Algorithmus erzeugt stets einen großen Rechenaufwand, somit auch eine längere Laufzeit. Durch Optimierung kann dieser jedoch reduziert sowie minimiert werden.

Wirtschaft und Alltägliches

Wenn es um evolutionäre, effektive Mechanismen geht, fällt immer wieder auch der Begriff genetische Algorithmen. Diese nehmen seit Jahrzehnten immer mehr an Bedeutung zu, da sie beispielsweise im Bankensektor oder Börsenhandel eine sinnvolle Verwendung finden.

Gerade wenn es um Entscheidungen im Bereich Hedging oder Bewertungen von Portfolios unterschiedlicher Art geht, sind genetische Algorithmen gefragt, wie nie. Auch in den großen Bereichen wie Medizin, digitalen Gesundheitsversorgung und Forschung werden diese stets verwendet.

Was bringt die Zukunft?

Aufgrund immer komplexer werdende Verarbeitungsvorgänge innerhalb von IT-Systemen werden auch die genetischen Algorithmen immer umfangreicher. Somit kann es also passieren, dass sich fehlerhafte Mutationen einschleichen und unbrauchbare Populationen entstehen.

Somit ist es wichtig, dass die Vorgänge dieser Art von Evolution weiterhin optimiert werden, damit beispielsweise Wirtschaftsunternehmen oder der Forschungsbereich, welche Algorithmen derart im Alltag verwenden, keine Nachteile erleiden. Im Endeffekt sind genetische Algorithmen eine gute Sache. Sie machen Vorgänge effizient, schneller und sorgen für einen möglichst reibungslosen Betriebsablauf. Komplexe Berechnungen derart könnten nie manuell von Menschenhand erfolgen, genetische Algorithmen ermöglichen diese jedoch.

Generative Adversarial Network (GAN)

Was ist Generative Adversarial Network?

Viele Bilder, die Sie im Internet sehen, sind oftmals gefälschte computergenerierte Bilder. Im wirklichen Leben gibt es kein solches Bild von einem Hund, Schmetterling oder Pilz. Sie haben in letzter Zeit viele Beispiele dieser Art gesehen; menschliche Gesichter, Stimmen, Gemälde, Schriften usw., die von der Realität nicht zu unterscheiden sind. Die meisten dieser Studien werden mit einem künstlichen neuronalen Netz (künstliches neuronales Netz)-Modell namens Generative Adversarial Network GAN durchgeführt.

Generative Adversarial Network – die Entstehung

Die Idee zu Generative Adversarial Network GAN entstand 2014 während eines Gesprächs von Ian Goodfellow mit seinen Freunden auf einer Party und wurde anschließend als Artikel veröffentlicht. Dieser Artikel, der nach seiner Veröffentlichung populär wurde, hat in 5 Jahren mehr als 15000 Zitate erhalten, und die Anzahl der Artikel, die auf wichtigen Konferenzen in diesem Bereich veröffentlicht wurden, übersteigt 500 pro Jahr.


Wenn Sie dem Generative Adversarial Network GAN – Modell eine ausreichende Anzahl von Samples aus den zu erzeugenden Daten geben, können Sie neue Samples desselben Datentyps erzeugen lassen. Wenn Sie dem System Tausende von Vogelfotos geben, lernt das System, wie ein Vogel aussehen sollte und generiert neue Vogelfotos. Es gibt 2 verschiedene künstliche neuronale Netze, die in GANs miteinander in Konflikt stehen.

Diese werden Generator- und Diskriminatornetzwerke genannt. Das Generative Netzwerk produziert neue Daten, die wie die Realität aussehen (Bilder, Töne, Modelle usw.), während das Diskriminierungsnetzwerk versucht, zwischen gefälschten und echten Daten zu unterscheiden. Da diese beiden neuronalen Netze miteinander konkurrieren, beginnt das Diskriminierungsnetz allmählich besser zwischen echten und gefälschten Bildern zu unterscheiden.

Das generative Netzwerk erzeugt realistischere gefälschte Bilder. Wir können diesen Befehl mit einem Fälscher und einem Polizisten vergleichen. Im Laufe der Zeit wird die Polizei immer besser darin, gefälschte Münzen zu fangen, um Fälscher zu finden. Der Fälscher beginnt, realistischere gefälschte Münzen zu produzieren, um die Polizei zu schlagen.

Ist die Sicherstellung der Authentizität möglich?

Das diskriminierende Netzwerk berechnet die Wahrscheinlichkeiten, dass die empfangenen Bilder real sind, und weist ihnen einen Wert zwischen 0 und 1 zu. Ein echtes Bild sollte eine Wahrscheinlichkeit von 1 haben und ein gefälschtes Bild 0. Das Diskriminanznetz wird mit dem Verlustwert trainiert, der die Differenz zwischen den von ihm angegebenen Wahrscheinlichkeitswerten und den Werten ist, die es sein sollte.

Wenn beispielsweise das Distinctive-Netzwerk einem realen Bild den Wert 0,7 lieferte, machte es einen Fehler von 1 bis 0,7 = 0,3. Im Gegenteil, er gab einem falschen Bild einen Wert von 0,7, machte aber einen Fehler von 0,7–0 = 0,7. Die Werte des Diskriminanznetzes werden bei jeder Iteration während des Trainings aktualisiert, um diese Fehlerwerte auf 0 zu reduzieren. Im Gegenteil, das Produzentennetzwerk möchte, dass die von ihm produzierten Fake-Bilder der Wahrheit entsprechen, also mit 1 bewertet werden.

Wenn das selbsterzeugte Bild das Unterscheidungsnetz mit 0,6 bewertete, machte das erzeugende Netz einen Fehler von 1 bis 0,6 = 0,4. Das generierende Netzwerk möchte diesen Fehler auch bei jeder Iteration auf 0 reduzieren. Auf diese Weise wird das Unterscheidungsnetzwerk mit fortschreitendem Trainingsprozess erfolgreicher beim Unterscheiden zwischen echten und gefälschten Bildern. Das generative Netzwerk erzeugt realistischere gefälschte Bilder.