With the advancement of technology and the gradually increasing use of artificial intelligence, new markets are developed. One of such is the market of Voice AI which became a commercial success with voice bots such as Alexa or Siri. They were mainly used as digital assistants who could answer questions, set reminders and they could generally tap into various databases to provide the aid and service that they were ask to provide. Although the popular use case seems to be primarily domestic, we have long since experienced other applications for Voice AI in areas such as UI speech control, voice recognition and replication and in use within entertainment media.
Faced with the ever-present but ever-growing interest in artificial intelligence which continue to further their influence on society, industry and the commercial landscape, my post will strive to demonstrate and inspect the technologies surrounding the application of Voice AI but also the concurrent obstacles it needs to overcome. However, before we can dive deeper into the topic, it is important to introduce the concept of Voice AI and its general technological workings.
AI and Scaling the Compute becomes more relevant as the strive for larger language models and general purpose AI continues. The future of the trend is unknown as the rate of doubling the compute outpaces Moore’s Law rate of every two year to a 3.4 month doubling.
AI models have been rapidly growing in complexity and sophistication, requiring increasingly powerful computing resources to train and operate effectively. This trend has led to a surge of interest in scaling compute for AI, with researchers exploring new hardware architectures and distributed computing strategies to push the limits of what is possible. Figure 1 depicts the scale of compute required to train language models for the last ten years.
Figure 1: Computation used to train notable artificial intelligence systems [1]
The evolution of AI models has been driven by advances in deep learning, which allows models to learn from vast amounts of data and make predictions or decisions with remarkable accuracy. However, the sheer size and complexity of these models require an unprecedented amount of compute power to train and operate, presenting significant challenges for hardware designers and data center operators. Despite these challenges, progress has been impressive, with new breakthroughs in hardware and software helping to unlock the full potential of AI. Specialized hardware, such as GPUs (Graphics Processing Units) and TPUs (Tensor Processing Units) have emerged as powerful tools for training AI models, while distributed computing architectures are being developed to allow multiple machines to work together seamlessly. As AI models continue to grow in complexity, the need for scalable and efficient compute resources will only continue to grow. Researchers and engineers will need to work together to develop new hardware and software solutions that can keep pace with the rapid evolution of AI, unlocking new possibilities for intelligent automation, predictive analytics and other transformative applications.
Requiring compute beyond Moore’s Law
As explained in [2] the training of AI systems can be categorized in two distinct Eras, the First Era and the Modern Era. The First Era of compute usage in training AI systems, starting with the perceptron, lasted from the 1950s to the late 2000s and relied on limited computational resources and simple algorithms. In contrast, the Modern Era began around 2012 with the rise of deep learning and the availability of powerful hardware such as GPUs and TPUs, allowing for the training of increasingly complex models with millions or even billions of parameters. [3] even suggests three Eras with the current one being the “Large Scale Era” starting with AlphaGo around 2016.
Figure 2: AlexNet to AlphaGo Zero: 300,000x increase in compute [2]
Increase in AI computation
Figure 2 depicts the increase in computational resources needed to train AI systems over time, which is evident by the rise of GPUs and TPUs and the transition from Moore’s Law’s 2-year doubling of compute to a 3.4-month doubling. This increase in compute demand is exemplified by the difference between AlexNet and AlphaGo Zero, where the latter requires 300,000 times more computational resources to train than the former.
With the rise of large language models like GPT, more recently known due to the publicly available ChatGPT, the question arose on how the trend on computing such models will continue. As seen in Figure 3 the amount of parameters to be learned are increasing rapidly and thus the amount of data and compute required for the models.
Figure 3: Amount of Parameters for Large Language Models [4]
The new Moore’s Law
Moore’s law is the observation that the number of transistors in a dense integrated circuit doubles about every two year [5]. As Moore’s Law has a physical constraint on how many transistors can be placed on an integrated circuits, which will cease to apply, a new trend in compute seems to emerge in the field of AI. As stated in [4] the increase of the size of the language model and in regard of the 3.4-month doubling time stated in [2] we seem to establish a new “Moore’s Law for AI” for compute, which can only be achieved with massive parallelization techniques.
Scaling AI computation
An earlier blogpost [6] already handled the explanation on how deep learning models can be parallelized with the different computation paradigms single instance single device (SISD), multi-instance single device (MISD), single-instance multi-device (SIMD) and multi-instance multi-device (MIMD). Furthermore, the concepts of Model and Data parallelization are explained in that post in more detail.
GPT-3 Example
If we take GPT-3 for example it was scaled up in several ways to enable it to handle its massive size and complexity. Here are some of the key techniques that were used [7]:
Distributed training: GPT-3 was trained using a distributed training approach that involved multiple GPUs and TPUs working together in parallel. The training data was partitioned across the multiple devices and the model parameters were updated using a process called gradient descent, where each device calculated a portion of the gradient and then combined them to update the parameters.
Model parallelism: Because GPT-3 has so many parameters (up to 175 billion), it was not possible to store the entire model on a single device. Instead, the model was split across multiple devices using a technique called model parallelism, where each device stores a portion of the model parameters and computes a portion of the model’s output.
Pipeline parallelism: To further scale up training, GPT-3 also used a technique called pipeline parallelism, where the model is divided into multiple stages and each stage is run on a separate set of devices in parallel. This enables the model to handle much larger batch sizes and process more data in less time.
Mixed precision training: GPT-3 used mixed precision training, which involves using both 16-bit and 32-bit floating-point numbers to represent the model parameters and compute gradients. This can significantly speed up training and reduce the memory requirements of the model.
Adaptive optimization: Finally, GPT-3 used an adaptive optimization algorithm called AdamW that adjusts the learning rate and weight decay of the model dynamically during training. This helps to avoid overfitting and achieve better performance on the validation set.
In summary, the training of GPT-3 was scaled up using a combination of distributed training, model parallelism, pipeline parallelism, mixed precision training and adaptive optimization. These techniques allowed the model to handle its massive size and complexity.
Distributed training, but how?
In order to train a large AI model, scaling across multiple GPUs, TPUs, and machines is necessary. However, achieving this becomes more complex when using a compute cluster, as distributing tasks and aggregating results requires careful consideration of several points. Specifically, when training a large model at scale using a cluster of machines, the following factors must be taken into account [8][9]:
Communication overhead: Distributed training involves exchanging gradients and model updates between different machines, which can introduce significant communication overhead. Optimizing communication and reducing the frequency of communication can help reduce the overhead and speed up training.
Load balancing: Distributing the workload across multiple machines requires careful load balancing to ensure that each machine has a similar workload. Imbalanced workloads can lead to underutilization of some machines and slower training overall.
Fault tolerance: When using clusters of machines, it is important to consider fault tolerance, as failures in one or more machines can interrupt training. Strategies for fault tolerance include checkpointing, replication of model parameters, and the use of redundant compute nodes.
Network topology: The topology of the network connecting the machines can affect the performance of distributed training. For example, using a network with high bandwidth and low latency can reduce communication overhead and speed up training.
Scalability: The ability to scale up the number of machines used for training is important to accommodate largermodels anddatasets. Ensuringthatthetrainingprocess is scalablerequires careful consideration of the communication patterns and load balancing across a large number of machines.
The trend continues
Taking a look at an even larger language model, the Megatron-Turing NLG [10], we can see that the trend continues. Such large models therefore are required to train on large-scale infrastructure with special software and hardware design optimized for system throughput for large datasets. In [10] the tradeoffs for some techniques are mentioned. Only the combination of several techniques and the use of a supercomputer powered by 560 DGX 100 servers using each eight NVIDIA A100 80GB Tensor Core GPUs allowed NVIDIA to use scale up to thousand of GPUs and train the model in an acceptable time.
Conclusion and outlook
The trend for more compute is expected to continue as AI applications become more complex and require larger datasets and more sophisticated algorithms. To keep up with this demand, we can expect continued improvements in specialized hardware and software optimization techniques, such as neural architecture search, pruning and quantization. Scaling aspects of both software and hardware are critical to meet the increasing demand for computing power and to make AI more efficient and accessible to a wider range of applications. In contrast to chasing even larger models another approach would be to focus more on specific tasks than general purpose models. As language models continue to grow in size, researchers are beginning to see diminishing returns in terms of their performance improvements. While larger language models have shown impressive capabilities in natural language processing tasks, the computational and financial resources required to train and run them have also increased exponentially. Therefore, [4] proposes a more practical approach which might be more cost and environment friendly than the next big general purpose AI. As for now we can continue to observe large tech companies joining together for the next big AI model, using supercomputers, cloud infrastructure and every compute they have to build even more impressive AI and thus develop even more sophisticated software and hardware architectures to facilitate the massive amounts of data and computation required to train such models.
[7] Tom B. Brown et al. “Language Models are Few-Shot Learners”. In: CoRR abs/2005.14165 (2020). arXiv: 2005.14165. URL: https://arxiv.org/abs/2005.14165.
In den letzten Jahren hat sich die Welt der künstlichen Intelligenz (KI) rasend schnell entwickelt. Eine der spannendsten Entwicklungen in diesem Bereich ist die Einführung von Sprachmodellen, die menschenähnliche Gespräche führen können. Eines der bekanntesten und leistungsfähigsten Sprachmodelle ist ChatGPT. ChatGPT basiert auf dem Modell GPT-3, das von der Firma OpenAI entwickelt wurde. Microsoft hat mehrere Milliarden in OpenAI investiert, um Zugang zu diesem und anderen KI-Modellen zu erhalten. In nur zwei Monaten seit seiner Veröffentlichung hat ChatGPT bereits 100 Millionen Benutzer erreicht, von denen die meisten regelmäßige Nutzer sind. Täglich nutzen etwa 13 Millionen Menschen ChatGPT. Diese Zahlen zeigen, wie schnell ChatGPT an Bedeutung gewinnt und wie nützlich es für die Entwicklung von KI-basierten Anwendungen sein kann.
Die Qualität der von ChatGPT generierten Texte ist besonders beeindruckend. Sie sind häufig kaum noch von menschengeschriebenen Texten zu unterscheiden. Der vorherige Abschnitt wurde zum Beispiel vollständig von ChatGPT geschrieben, was Ihnen vermutlich nicht aufgefallen ist. Neben dem Generieren von Texten kann ChatGPT auch für viele weitere Aufgaben genutzt werden. Zum Beispiel für die Beantwortung von Fragen, oder auch für das Schreiben und die Fehlersuche in Code. Es kann auch Bezug auf bereits generierte Texte genommen werden und ChatGPT kann diese umschreiben, übersetzen oder im Stil verändern. Bittet man ChatGPT z.B. darum, den oberen Abschnitt auf Englisch zu übersetzen und als Gedicht umzuformulieren, erhält man die folgende Ausgabe:
In the world of AI, advances are rife
Language models can now talk like human life
ChatGPT is one that's made a great leap
Built on GPT-3, OpenAI's star keep
Microsoft invested billions in the AI game
To access the power of models that became
ChatGPT, in particular, has made waves
In the workplace, where it helps to save
With conversations like a human touch
ChatGPT finds uses in tasks that clutch
Repetitive work, like customer support
It automates and saves time, that's its forte forte
So whether it's sales, marketing, or journalism too
ChatGPT can do it all, with responses anew
The future's bright, and there's more to come
From AI advancements, where possibilities hum.
ChatGPT kann als Meilenstein in der Entwicklung von Sprachmodellen und im Bereich Machine Learning generell gesehen werden, auch wenn die Texte, wie im Gedicht zu erkennen, noch nicht ganz fehlerfrei sind.
In den folgenden Kapiteln erklären wir die technischen Grundlagen, die zum Verständnis der Funktionsweise von ChatGPT nötig sind. Es wird das Konzept der Self-Attention erklärt, welches eine der relevantesten Entwicklung im Bereich von Sprachmodellen ist. Wir gehen auf das Fine-Tuning beim Training von ChatGPT ein. Zusätzlich wird ein Überblick über verschiedene GPT-Modelle gegeben. Da bei Sprachmodellen ein Trend zu immer größeren Modellen existiert, möchten wir auch auf die Skalierung großer Sprachmodelle eingehen und diesen Trend bewerten.
Grundlagen
Sprachmodelle
Das von ChatGPT genutzte Modell GPT-3 ist ein Sprachmodell. Sprachmodelle können für verschiedene Anwendungen eingesetzt werden, z.B. zur automatischen Vervollständigung von Sucheingaben oder zur Textgenerierung. Grundsätzlich werden unter Sprachmodellen Modelle verstanden, die mithilfe verschiedener probabilistischer Techniken Wahrscheinlichkeiten von Wortsequenzen in Sätzen bestimmen, indem sie Textdaten analysieren. Dabei lernt ein Modell Merkmale und Eigenschaften der Sprache und nutzt diese, um neue Sätze zu verstehen oder zu produzieren. Je nach Komplexität der Aufgabe werden unterschiedliche Modelltypen verwendet. GPT-3 ist zum Beispiel ein neuronales Sprachmodell. Diese repräsentieren Wörter als Vektoren auf Grundlage von Gewichten in neuronalen Netzen, diese Vektoren werden als Word-Embeddings bezeichnet. Word-Embeddings werden vor allem bei komplexen Modellen mit großen Datenmengen eingesetzt, hier existieren einzelne Wörter, die selten in Texten vorkommen. Bei einfachen probabilistischen Modelltypen kann es dabei zu Problemen kommen [1]. Da der Blog-Beitrag ChatGPT behandelt, beschäftigen wir uns nur mit neuronalen Sprachmodellen. Ein Überblick weiterer Modelltypen wird in [1] gegeben.
Wie bereits erwähnt, wird ChatGPT zur Textgenerierung eingesetzt. Dabei wird aus einer Sequenz von Word-Embeddings als Eingabe eine Wahrscheinlichkeitsverteilung über Ausgabewörter eines Textkorpus bestimmt. In Texten bestehen dabei zwischen den Word-Embeddings der Eingabesequenz Abhängigkeiten, weshalb Architekturen genutzt werden, die diese Abhängigkeiten berücksichtigen. In den ersten neuronalen Sprachmodellen wurden dafür z.B. rekurrente neuronale Netze (RNNs) verwendet. RNNs sind neuronale Netze, bei denen die Ausgabe eines Neurons im nächsten Zeitschritt Teil der Eingabe in dasselbe Neuron ist. Bei der Textverarbeitung bedeutet dies, dass zusätzlich alle vorherigen Wörter in die Berechnung der Ausgabe mit einfließen und das ein Wort pro Zeitschritt prozessiert wird. RNNs in Sprachmodellen besitzen jedoch zwei entscheidende Nachteile. Zum einen haben sie Schwierigkeiten, Informationen über Wörter, die am Anfang eines langen Textes stehen, in die Verarbeitung von Wörtern am Ende des Textes einzubeziehen. Zum anderen können RNNs nur sequenziell trainiert werden, weshalb kein effizienteres Training durch die Nutzung mehrerer GPUs ermöglicht werden kann.
Durch die Vorstellung einer weiteren Modellarchitektur in dem Paper „Attention is all you need“, wurde eine neue Architektur zur Berücksichtigung von Abhängigkeiten zwischen Eingaben eingeführt. Der als Transformer bezeichnete Modelltyp verwendet dabei sogenannte Self-Attention und gilt als Meilenstein im Bereich Natural Language Processing [2].
Self-Attention
Self-Attention bezeichnet eine Methode, mit der der Einfluss anderer Wörter auf das aktuell zu verarbeitende Wort berücksichtigt wird. Für den folgenden Beispielsatz:
„The animal didn't cross the street because it was too tired.“
Wird durch Self-Attention zum Beispiel der Einfluss der Wörter animal und street auf das Wort it gelernt, Self-Attention sollte dabei dafür sorgen, dass der Einfluss von animal größer ist als von street. Für einen Menschen scheint dies ein triviales Problem zu sein, während es für einen Algorithmus ein deutlich komplizierteres Problem ist. Bei Self-Attention werden für jedes Wort Attention-Koeffizienten zu allen anderen Eingabewörtern berechnet. Diese definieren die Beziehungsstärken zwischen den Word-Embeddings der Eingabewörter. In einem ersten Schritt werden mithilfe des Word-Embeddings eines Eingabewortes Query, Key und Value Matrizen berechnet. Dies erfolgt durch die Gewichtsmatrizen Wq, Wk und Wv. Die Parameter dieser Gewichtsmatrizen sind veränderbar und werden während des Trainingsprozesses gelernt.
Query, Key und Value haben dabei die folgenden Funktionen:
Query: Die Query qi der i-ten Eingabe wird verwendet, um den Einfluss aller Eingaben auf die Eingabe an Stelle i zu berechnen.
Key: Der Key kj wird von Queries qi genutzt, um den Einfluss des Elements an der Stelle j für das Element an der Stelle i zu bestimmen.
Value: Der Value vj wird für die Berechnung des Gesamtergebnisses zusammen mit dem Attention-Koeffizienten aij verwendet.
Es wird auch die Query auf einen Key der gleichen Eingabe angewandt, um für eine Eingabe den eigenen Einfluss zu bestimmen. Durch Betrachtung des oberen Beispiels wird deutlich, warum dies relevant ist. Bei Verarbeitung des Wortes it ist zum Beispiel der Einfluss von animal größer als das Wort it selbst.
Nach der Berechnung von Query, Key und Value werden die Attention-Koeffizienten aij durch das Skalarprodukt von Query qi und Key kj gebildet. Diese werden normalisiert, anschließend wird die Softmax-Aktivierungsfunktion darauf angewandt. Die Ausgabe yi bei Eingabe xi unter Berücksichtigung der restlichen Eingaben in der Sequenz kann dann durch die Linearkombination der Attention-Koeffizienten mit den jeweiligen Value-Werten berechnet werden [3].
In Abbildung 1 ist die Berechnung für die erste Eingabe abgebildet, dabei werden die Einflüsse aller weiterer Eingaben auf das erste Eingabeelement berücksichtigt.
Abbildung 1: Self-Attention in einem Single-Head eines Transformers [8]
In der obigen Abbildung wird eine sogenannte Single-Head Attention abgebildet. Das heißt, für jedes Paar von Eingaben wird ein einzelner Attention-Koeffizient berechnet. In Modellen wie GPT wird Multi-Head Attention verwendet. Das heißt, für Paare von Eingaben werden mehrere Attention-Koeffizienten in sogenannten Heads berechnet. In jedem Head werden dabei unterschiedliche Gewichtsmatrizen zur Berechnung von Query, Key und Value verwendet, wobei die Startgewichte zufällig initialisiert werden. Alle Ergebnisse der verschiedenen Heads werden verkettet und durch eine erneute lernbare Gewichtsmatrix auf ein Ergebnis projiziert. Die Verwendung von Multi-Head Attention bringt den Vorteil, dass für ein Paar von Eingaben unterschiedliche Gewichtsmatrizen für Query, Key und Value gelernt werden und somit mehrere Attention-Koeffizienten für gleiche Paare von Eingabewörtern gelernt werden können. Dies ist relevant, weil Wortpaare je nach Gesamtkontext eines Textes unterschiedliche Bedeutungen und damit unterschiedliche Beziehungsstärken haben können [3, 4].
Transformer
GPT steht für Generative Pretrained Transformer. Das heißt GPT beruht auf einem Transfomer in dem das Konzept Self-Attention umgesetzt wird. Ein Transformer besteht aus zwei Teilen, einem Encoder und Decoder-Teil. Diese beinhalten, wie in Abbildung 2 zu erkennen, mehrere Encoder- bzw. Decoder-Blöcke, welche neben Self-Attention Schichten auch Schichten zur Normalisierung und reguläre Feed-Forward Neural Networks enthalten. Die Eingabe in den Encoder-Teil eines Transformers sind Sequenzen von Word-Embeddings. In der Eingabe ist zusätzlich eine Information über die Position des Word-Embeddings in der Sequenz enthalten. Diese wird durch den Positional-Encoding Vektor repräsentiert, der auf die Eingabe addiert wird. Positional-Encoding Vektoren sind dabei so aufgebaut, dass weiter entfernte Eingaben eine höhere euklidische Distanz besitzen als benachbarte Eingaben. In den Decoder-Teil wird die Ausgabe des Decoders zum vorherigen Zeitpunkt als Eingabe gegeben. Encoder und Decoder sind über einen Encoder-Decoder Attention-Block verbunden. Die Eingabe in diesen Block sind die Keys und Values des letzten Encoder-Blocks sowie die Queries des vorangeschalteten Decoder-Layers [3].
Abbildung 2: Darstellung eines Transformers. Es wird ein Zeitpunkt während der Verarbeitung einer Eingabe zur Übersetzung abgebildet. (Angepasste Darstellung aus [3])
Durch die Umsetzung der Transformer, wie sie in „Attention is all you need“ vorgestellt wurden, konnten bessere Ergebnisse wie durch andere Modelle bei gängigen NLP-Aufgaben erzielt werden, wobei der Trainingsaufwand signifikant geringer war [4]. In vielen Sprachmodellen werden heutzutage Transformer verwendet, wobei diese zum Teil angepasst werden.
Generative Pre-Trained Transformer (GPT)
In den vorherigen Abschnitten sind wir bereits darauf eingegangen, was ein Sprachmodell ist und wie Transformer funktionieren und aufgebaut sind. Doch wie stehen diese im Zusammenhang mit Generativen Pre-Trained Transformern (GPTs)?
Die ersten GPT-Modelle wurden erstmals im Jahr 2018 von OpenAI als GPT-1 eingeführt [5]. Die Architektur der GPT-Modelle basiert dabei, wie bereits erwähnt, auf der der Transformer. Ein GPT nutzt dabei nur die Decoder-Struktur des Transformers, da nur dieser Teil relevant für die Erzeugung von Text ist. Alle GPT-Varianten stellen dabei sogenannte autoregressive Sprachmodelle dar. Diese sagen für eine Sequenz von Wörtern das nachfolgende Wort vorher. Für diese neue Sequenz wird dann wieder das Wort vorhergesagt, das am wahrscheinlichsten auf diese Sequenz folgt. Durch diese Funktionsweise sind GPT-Modelle für die Generierung von Texten oder jeder Art von Sequence-To-Sequence Transformationen wie Übersetzung, Text-to-Code, etc. geeignet. Sie werden deshalb auch generative Modelle genannt, da sie neuen Text generieren können. GPT-1 wird dabei, wie der Name es verrät, auf einer großen Menge an Daten vortrainiert und dann für jede spezifische Task, die das Modell erfüllen soll, Fine-Tuned (Gezielt abgestimmt). Daher haben GenerativePre-TrainedTransformer ihren Namen.
Das Pre-Training erfolgt dabei unüberwacht (unsupervised) und kann auf einer sehr großen Menge an Daten erfolgen, da für unüberwachtes Lernen keine gewünschten Ausgabedaten vorhanden sind. Bei GPT-1 hat sich gezeigt, dass ein umfangreiches Pre-Training auf einem großen Textkorpus die Leistung dieser Modelle in unterschiedlichen Aufgaben verbessert, selbst wenn der Korpus nicht speziell auf die Aufgaben zugeschnitten war. Diese Erkenntnis hat gezeigt, dass ein großer vielfältiger Textkorpus sehr wertvolle Informationen für die Modelle liefert. Für das überwachte Fine-Tuning, bei dem nun eine gewünschte Ausgabe vorhanden ist, benötigt man deshalb nur einen kleinen Datensatz, um das Modell speziell auf eine Aufgabe abzustimmen. In manchen Bereichen ist jedoch selbst die Beschaffung dieses kleinen Datensatzes nicht sonderlich einfach [5].
Diese Modelle wurde im Jahr 2019 mit GPT-2 [6] und 2020 mit GPT-3 [7] weiter verbessert. Ab GPT-2 wurde dabei das Prinzip des Multi-Task Learning (MTL) angewendet. In GPT-1 musste dabei für jede spezifische NLP-Aufgabe ein eigenes Modell trainiert werden. Im Multi-Task Learning dagegen wird nur ein einziges Sprachmodell für mehrere NLP-Aufgaben trainiert, indem die Trainingsdaten mit Task-spezifischen Beispielen oder Prompts erweitert werden. Da das Modell nicht für eine spezielle Aufgabe trainiert wurde, handelt es sich um ein Beispiel für Few-Shot-, One-Shot- oder Zero-Shot-Learning. Das Konzept der X-Shot-Ansätze ist in der folgenden Abbildung dargestellt.
Abbildung 3: X-Shot Learners [7]
Das Multi-Task Learning wird bei den X-Shot-Ansätzen dabei auf Datenebene integriert, indem, wie in der Abbildung dargestellt, der Eingabe („Cheese“) die Task-Beschreibung („Translate English to French“) hinzugefügt wurde. Beim Few-Shot-Learning werden dem Modell so einige Beispiele beigefügt, die genau die Aufgabe beschreiben. Um Multi-Task Learning / X-Shot-Learning anwenden zu können, muss das Modell natürlich immer noch mit einer sehr großen Menge an Daten vortrainiert werden. Dieser Ansatz hat gezeigt, dass immer größere Sprachmodelle, wie GPT-3, mit immer mehr Parametern eine sehr starke Leistung auf unterschiedlichen NLP-Aufgaben bieten. Die Tatsache, dass wir nun kein Fine-Tuning mehr benötigen, ist ein Schritt in Richtung der „allgemeinen Intelligenz“ [7, 8].
Die obige Tabelle zeigt deutlich, dass die GPT-Modelle im Laufe der Jahre immer größer geworden sind und GPT-3 im Vergleich zu GPT-2 auf deutlich mehr Daten vortrainiert wurde. Es war damals das größte öffentlich verfügbare Sprachmodell der Welt und die Qualität der generierten Texte so hoch, dass es für Menschen schwierig war, festzustellen, ob Texte von GPT-3 oder einem Menschen geschrieben wurden [9]. Obwohl GPT-3 große Fortschritte im Bereich der Verarbeitung natürlicher Sprache erzielt hatte, ist es nur begrenzt in der Lage, sich an den Absichten der Benutzer zu orientieren. So erzeugte GPT-3 Ausgaben die:
mangelnde Hilfsbereitschaft enthalten, d.h. sie befolgen nicht die ausdrücklichen Anweisungen des Nutzers.
Halluzinationen enthalten, die nichtexistierende oder falsche Fakten widerspiegeln.
nicht interpretierbar sind, sodass es für den Menschen schwierig ist, zu verstehen, wie das Modell zu einer bestimmten Entscheidung oder Vorhersage gekommen ist.
toxische oder voreingenommene Inhalte enthalten, die schädlich oder beleidigend sind und Fehlinformationen verbreiten [7, 10].
Um diesen Problemen von GPT-3 entgegenzuwirken, entwickelte OpenAI InstructGPT, welches im Januar 2022 veröffentlicht wurde. Dazu wurde GPT-3 als Basismodell mit den gleichen Pre-Training Datensätzen verwendet und das Modell durch einen neuartigen Ansatz zur Einbeziehung von menschlichem Feedback in den Trainingsprozess weiter verbessert. InstructGPT ist durch diesen Ansatz besser an die Absichten der Benutzer angepasst („aligned“) [11].
ChatGPT
Abbildung 4: Übersicht ChatGPT [12]
ChatGPT ist ein großes Sprachmodell, das darauf trainiert wurde, natürliche Sprache zu verstehen und auf verschiedene Arten von Fragen und Anfragen zu antworten. Es wurde am 30. November 2022 von OpenAI ins Leben gerufen. Der Dienst, mit einem ansprechenden Design und einfacher Benutzeroberfläche, ist bisher kostenlos für die Öffentlichkeit verfügbar. Im Januar 2023 erreichte ChatGPT über 100 Millionen Nutzer und war damit die am schnellsten wachsende Verbraucheranwendung überhaupt [12, 13].
ChatGPT stellt ein Geschwister-Modell von InstructGPT dar, welches darauf trainiert ist, einer Instruktion in einem Prompt zu folgen und eine detaillierte Antwort zu geben. Es wurde dabei auf einem Modell der GPT-3.5 Reihe trainiert, zu der InstructGPT zählt. Dabei wurde derselbe Ansatz wie bei InstructGPT gewählt, jedoch mit leichten Unterschieden in der Datenerhebung [14].
Zusätzlich dazu wurde eine Sicherheitsschicht hinzugefügt, um unangemessene und beleidigende Inhalte zu erkennen und herauszufiltern. Wenn ChatGPT eine unangemessene oder beleidigende Eingabe erhält, versucht es, das Thema zu wechseln oder den Benutzer höflich zu bitten, die Konversation fortzusetzen. Diese Sicherheitsmaßnahmen sind auf jeden Fall notwendig, da Sprachmodelle oft dazu neigen, auch unangemessene Antworten zu liefern.
Reinforcement Learning From Human Feedback
Der Ansatz, der bei InstructGPT dabei zum Einsatz kommt, heißt „Reinforcement Learning From Human Feedback“. Diese Technik nutzt die menschlichen Präferenzen als ein Reward-Signal, um das Modell damit zu verbessern. Dieser Ansatz wird im Folgenden mit dem InstructGPT Paper erklärt und besteht aus folgenden drei Schritten:
Abbildung 5: Reinforcement Learning From Human Feedback ChatGPT [14]
1. Supervised Fine-Tuning (SFT) Modell
Im ersten Schritt wird das GPT-3 Modell mithilfe von überwachten Lernen Fine-Tuned. Dazu wurden 40 Personen (Labeler) beauftragt, diesen Trainingsdatensatz zu erstellen, indem für jede Eingabe-Prompt eine Antwort erstellt wird. Die Eingabe-Prompts stammen dabei zum größten Teil aus tatsächlichen Benutzereingaben, die in der OpenAI API gesammelt wurden, aber auch zum Teil aus Eingaben, die die Labeler selbst erstellten, um Kategorien auszufüllen, in denen nur wenige tatsächliche Benutzereingaben vorhanden waren. Die Labeler schrieben dann für diese Eingabe-Prompts eine Antwort und erzeugten so eine Ausgabe für die zugehörige Eingabe. Diese Zusammenstellung der Eingabe-Prompts aus der OpenAI API und den selbsterstellten Prompts ergaben 13.000 Datensätze mit Eingabe und zugehöriger Ausgabe, die für das überwachte Fine-Tuning des Modells verwendet werden konnten [10, 11, 15].
In diesem Schritt wird eine sogenannte überwachte Policy (das SFT-Modell selbst) gelernt. Eine Policy stellt im Reinforcement Learning eine Strategie dar, die ein Agent verfolgt, um Ziele zu erreichen. Die Strategie sagt die Aktionen voraus, die der Agent in Abhängigkeit vom Zustand des Agenten und der Umgebung durchführt [16].
2. Reward Modell (RM)
Das resultierende SFT-Modell zeigte schon eine Verbesserung in Bezug auf die Benutzerabsichten, war jedoch noch nicht gut genug. Das Problem des überwachten Ansatzes aus dem vorherigen Schritt ist außerdem der langsame und kostspielige Prozess für die Erstellung des Datensatzes.
Deshalb wird in diesem Schritt ein sogenanntes Reward Modell trainiert. Dazu werden die Labeler gebeten, die Ausgaben des SFT-Modells (Antworten auf Prompts) zu bewerten. Diese Bewertung drückt aus, wie wünschenswert diese Ausgabe für den Menschen ist. Am Ende dieses Schrittes besitzt man dann ein Reward Modell, das die menschlichen Vorlieben nachahmen soll. Das funktioniert dabei folgendermaßen:
Eine Eingabe-Prompt wird ausgewählt und das SFT-Modell generiert mehrere Ausgaben (4-9) für diese Eingabe-Prompt.
Die Labeler sortieren die Ausgaben von der besten bis hin zur schlechtesten.
Das Ergebnis ist ein neuer Datensatz, bei dem das Ranking das Label darstellt. Dieser Datensatz wird verwendet, um das Reward Modell zu trainieren. Das Reward Modell nimmt dabei als Eingabe mehrere Ausgaben des SFT-Modells und ordnet diese nach der Reihenfolge der Präferenzen.
Da es für die Labeler viel einfacher ist, die Ergebnisse zu bewerten, als sie von Grund auf neu zu erstellen, lässt sich dieser Prozess viel effizienter skalieren [10, 11, 15].
3. Reinforcement Learning Modell
Im letzten Schritt wird das Reward Modell als Reward-Funktion verwendet und das SFT-Modell so Fine-Tuned, um diesen Reward zu maximieren. Dazu wird dem Modell eine zufällige Eingabe-Prompt übergeben und eine Ausgabe dazu vom Modell erzeugt. Diesem Paar an Eingabe und Ausgabe wird vom Reward Modell ein Reward-Wert zugeordnet. Dieser Reward fließt dann wieder in das Modell mit ein, um die Policy, also das Modell zu verbessern. Die Policy wird mit dem sogenannte Proximal Policy Optimization (PPO) Algorithmus angepasst. PPO ist dabei eine Methode, die bei der Aktualisierung der Policy verwendet wird. Er führt dabei einen sogenannten Clipping-Mechanismus ein, um sicherzustellen, dass die Aktualisierungen der Policy innerhalb einer Vertrauensregion liegen. Dadurch wird verhindert, dass die Policy zu stark verändert wird, indem zu viel vergessen wird. PPO verwendet außerdem eine sogenannte Value-Funktion (Reward Modell), um die Varianz der Policy-Gradienten zu verringern und die Lernleistung zu verbessern [10, 11, 15].
Evaluation des Modells
Die Bewertung des Modells erfolgt, indem während des Trainings ein Testdatensatz, den das Modell noch nie gesehen hat, beiseitegelegt wird. Anhand dieses Testdatensatzes wird dann eine Reihe von Bewertungen durchgeführt, um zu überprüfen, ob das Modell besser an die Absichten der Benutzer angepasst ist.
Das Modell wird dabei anhand von drei übergeordneten Kriterien bewertet:
Hilfsbereitschaft: Beurteilung der Fähigkeit des Modells, den Anweisungen des Benutzers zu folgen und Anweisungen abzuleiten.
Wahrheitsgehalt: Beurteilung der Neigung des Modells zu Halluzinationen (Erfinden von Fakten) bei Aufgaben in geschlossenen Bereichen.
Harmlosigkeit: die Fähigkeit des Modells, unangemessene, herabsetzende und verunglimpfende Inhalte zu vermeiden.
Dieser gesamte Ansatz hat natürlich auch gewisse Unzulänglichkeiten, die im InstructGPT Paper von OpenAI noch genauer aufgezählt werden [10, 11, 15].
Limitationen
Es gibt trotzdem noch gewisse Limitationen, die ChatGPT besitzt und die nicht unterschätzt werden dürfen. Dadurch, dass das Modell nur aus Sprache lernt, nimmt es dessen Eigenheiten an und wird so natürlich auch Fehlverhalten annehmen:
ChatGPT schreibt manchmal plausibel klingende, aber falsche oder unsinnige Antworten.
ChatGPT reagiert empfindlich auf Änderungen der Eingabeformulierung oder auf mehrfache Versuche mit der gleichen Frage.
Das Modell ist oft übermäßig wortreich und verwendet bestimmte Phrasen zu oft, wie z. B. den Hinweis, dass es sich um ein von OpenAI trainiertes Sprachmodell handelt.
Im Idealfall würde das Modell klärende Fragen stellen, wenn der Benutzer eine mehrdeutige Anfrage stellt. Stattdessen erraten aktuelle Modelle in der Regel, was der Benutzer beabsichtigt.
ChatGPT kann gelegentlich schädliche Anweisungen oder voreingenommene Inhalte produzieren.
Das Modell besitzt nur ein begrenztes Wissen über die Welt und Ereignisse, die nach 2021 passiert sind, da es auf Daten vor 2022 trainiert wurde.
Doch trotz der Limitationen, die bei ChatGPT bestehen, wurde ein riesiger Hype ausgelöst.
Hype von ChatGPT
ChatGPT ist von der technischen Sicht aus betrachtet keine neue bahnbrechende Erfindung. Die Methodiken, die zum Einsatz kommen, werden in der Forschung bereits in vielen anderen Modellen benutzt. Der Hype um ChatGPT kommt vor allem durch die öffentliche Bereitstellung des Modells für jedermann. Diese kostenlose Testphase mit einer einfachen und schönen Gestaltung des Dialogs macht ChatGPT so erfolgreich. Punkte, die ChatGPT selbst aufzählt, warum es so erfolgreich ist, sind:
24/7-Verfügbarkeit: Als KI benötige ich keine Pausen oder Ruhezeiten, sodass ich zu jeder Tages- und Nachtzeit zur Verfügung stehe, um Menschen bei ihren Fragen und Gesprächen zu helfen.
Erreichbarkeit: Die Menschen können mich von überall auf der Welt erreichen, solange sie eine Internetverbindung haben. Das macht es für die Menschen einfach, die benötigten Informationen zu erhalten, egal wo sie sich befinden.
Flexibel: Ich kann bei einem breiten Spektrum von Themen und Fragen helfen, von allgemeinem Wissen bis hin zu speziellen technischen Fragen. Das macht mich zu einem vielseitigen Werkzeug für die Menschen.
Schnelle Reaktionszeit: Ich kann Anfragen fast sofort bearbeiten und beantworten, was besonders hilfreich für Menschen ist, die schnelle Antworten brauchen.
Datenschutz: Als Sprachmodell benötige ich keine persönlichen Informationen der Nutzer. Das bedeutet, dass die Menschen mir Fragen stellen und Hilfe erhalten können, ohne sich Sorgen machen zu müssen, dass ihre Privatsphäre gefährdet wird.
Wenn ChatGPT bereits jetzt so große Wellen schlägt, stellt sich natürlich die Frage, wie es mit dem Nachfolger GPT-4 aussieht.
Ausblick GPT-4
GPT-4, die Weiterentwicklung der GPT-Serie, soll laut Gerüchten der New York Times sogar noch im Jahr 2023 erscheinen. Es soll sich dabei auf jeden Fall um ein noch mächtigeres Modell handeln als die bisherigen veröffentlichten Modelle. Die Gerüchte, dass es sich um ein Modell mit 100 Billionen Parametern handeln soll, wurden vom OpenAI CEO Sam Altman als völliger Blödsinn bezeichnet. Zu diesen Gerüchten sagte er: „Die GPT-4-Gerüchteküche ist eine lächerliche Sache. Ich weiß nicht, woher das alles kommt. Die Leute betteln darum, enttäuscht zu werden, und das werden sie auch.“ Somit kann man nur gespannt sein, wie gut GPT-4 sein wird und wann OpenAI das neue Modell veröffentlicht [17].
Es gab jedoch noch einige Veröffentlichungen von Konkurrenten zu ChatGPT, die ebenfalls neue Modelle ankündigten:
Google hat seinen Counterpart Bard veröffentlicht, der jedoch in einer Demo eine falsche Antwort lieferte und deshalb die Aktien des Mutterkonzerns einbrachen und 100 Milliarden Dollar Börsenwert kostete [18].
Das chinesische Unternehmen Baidu kündigte im Februar 2023 an, dass es im März 2023 einen ChatGPT-ähnlichen Dienst namens “Wenxin Yiyan” auf Chinesisch oder “Ernie Bot” auf Englisch auf den Markt bringen wird [19].
Die südkoreanische Suchmaschinenfirma Naver kündigte im Februar 2023 an, dass sie in der ersten Jahreshälfte 2023 einen ChatGPT-ähnlichen Dienst namens “SearchGPT” in koreanischer Sprache auf den Markt bringen werden [19].
Die Modelle, die in nächster Zeit veröffentlicht werden sollen, werden immer größer. Doch kann die Skalierung immer so weiter gehen und die Anzahl der Parameter immer vergrößert werden? Oder bringt das ganze letztendlich keine Verbesserung der Leistung dieser Modelle? Diese Frage werden wir im nächsten Kapitel klären.
Skalierung von Sprachmodellen
Wie wir festgestellt haben, ist die Anzahl der Parameter sowie die Menge der Trainingsdaten mit jeder Version von GPT angestiegen (siehe Tabelle 1). Zwar ist nicht bekannt, wie groß GPT-4 sein wird, es lässt sich aber vermuten, dass GPT-4 mehr Parameter enthalten wird, auch wenn der Anstieg unter Umständen nicht so stark sein wird wie zwischen vorherigen Versionen von GPT. Aufgrund des Trends zu immer größeren Modellen möchten wir nun auf die Skalierbarkeit von Sprachmodellen eingehen. OpenAI hat dabei in dem Paper „Scaling Laws for Neural Language Models“ selbst empirische Untersuchungen zur Skalierung in Sprachmodellen aufgestellt. Dabei werden Decoder-Only-Transformer als autoregressive Sprachmodelle evaluiert.
Es wurden Eigenschaften wie Parameteranzahl, Größe des verwendeten Trainingsdatensatzes und Trainingsaufwand sowie die Modellarchitektur untersucht. Die Erkenntnisse der Untersuchungen werden wir hier zusammenfassen.
Es lässt sich feststellen, dass die Performance in starkem Maße von der Skalierung der genannten Parameter abhängt. Das bedeutet, dass durch größere Modelle mit mehr Parametern und mehr Trainingsdaten sowie durch einen höheren Trainingsaufwand die Qualität von Sprachmodellen signifikant verbessert wird. Dieser Zusammenhang ist in Abbildung 6 abgebildet. Der Fehler auf den Testdaten nimmt bei Erhöhung der entsprechenden Größen ab.
Abbildung 6: Einfluss der Parameter Rechenleistung beim Training, Größe des Trainingsdatenset und Parameteranzahl auf den Test Loss [20]
Der Einfluss anderer Modelleigenschaften, wie etwa der Architektur z.B. in Bezug auf Anzahl der Layer hat einen deutlich geringeren Einfluss auf die Qualität des Modells. Bei Erhöhung der Parameteranzahl sollte zwar auch die Menge der Trainingsdaten erhöht werden, in den Experimenten von Open-AI hat sich dabei jedoch gezeigt, dass diese nicht im gleichen Maße erhöht werden müssen. Für eine Erhöhung der Parameteranzahl um den Faktor 8 ist nur eine Erhöhung der Menge der Trainingsdaten um den Faktor 5 nötig, um Overfitting zu vermeiden.
Durch die Experimente wurde auch festgestellt, dass bei größeren Modellen mit mehr Parametern weniger Trainingssamples prozessiert werden müssen, um die gleiche Qualität wie bei einem kleinen Modell zu erreichen (siehe Abbildung 7). Dadurch sollte der Trainingsaufwand größerer Modelle im Vergleich zu kleineren Modellen gering gehalten werden, da nur ein kürzeres Training nötig ist [20].
Abbildung 7: Test-Loss von Modellen verschiedener Größen nach prozessierten Trainingselementen (aus [20])
Dies ist auch bei Betrachtung von Abbildung 8 zu erkennen. Hier sind die gesamten Rechenaufwände verschiedener bekannter Modelle abgebildet. Die hervorgehobenen Modelle GPT-3 2.7B (2.65 Mrd. Parameter) und RoBERTa-Large (355 Mio. Parameter) sind beides Tansformer-Sprachmodelle. Trotz der deutlich höheren Parameteranzahl in GPT-3 2.7B sind die Gesamtkosten des Trainings im Vergleich zu RoBERTa-Large nicht wesentlich größer, was sich dadurch begründen lässt, dass zum Training von GPT-3 2.7B deutlich weniger Trainingselemente prozessiert werden müssen [7].
Abbildung 8: Vergleich des Trainingsaufwands verschiedener bekannter Transformer-Sprachmodelle (aus [7])
Größere Modelle mögen zwar eine bessere Qualität besitzen und nach der Evaluation von weniger Trainingssamples wird bereits die gleiche Qualität wie in kleinen Modellen erreicht, sie haben dennoch auch einige Nachteile. Der Trainingsprozess ist oft aufwendiger und erfordert mehr Speicherplatz. Das Training von Modellen wie GPT-3 ist nur durch verteiltes Training auf verschiedenen GPUs möglich. Grundsätzlich werden dabei die zwei Vorgehen Model-Parallelism und Data-Parallelism unterschieden. Beim Model-Parallelism erfolgt dabei eine Aufteilung des Modells, während beim Data-Parallelism eine Aufteilung der Daten erfolgt [21]. Wir werden in diesem Blog-Artikel nicht auf Details dazu eingehen, diese wurden bereits unter An overview of Large Scale Deep Learning erklärt.
Gerade das Training auf mehreren Grafikkarten führt zu sehr hohen Energiekosten. Bei GPT-3 werden die Energiekosten zum Pre-Training z.B. auf 1287 MWh. geschätzt, was einem Ausstoß von 552 Tonnen CO₂-Äquivalent entspricht [22].
Fazit
Generell sollte die Anzahl der Modellparameter sorgfältig abgewogen werden, eine höhere Anzahl von Parametern, die unter Umständen zu einer besseren Qualität führt, rechtfertigt nicht immer einen Mehraufwand. Eine einfache Nutzung des Sprachmodells als Anwendung z.B. über einen Chat-Bot wie bei ChatGPT ist für Nutzer ebenso relevant wie eine hohe Qualität der Sprachausgabe. GPT-3 ist im Vergleich mit vielen anderen Sprachmodellen nämlich bei Weitem nicht das größte Modell. Dennoch ist GPT-3 durch ChatGPT aktuell mit Abstand am stärksten im Fokus der Aufmerksamkeit. Die Ausgaben von ChatGPT sind bereits sehr gut. Neben einer Verbesserung durch ein größeres Sprachmodell wären vor allem auch Aspekte wie Verfügbarkeit der Anwendung für den Nutzer relevant, diese sollten nicht ignoriert werden.
Insgesamt lässt sich festhalten, dass die Entwicklung von Sprachmodellen wie ChatGPT in den letzten Jahren rasant vorangeschritten ist und die Modelle immer größer und leistungsfähiger geworden sind. Dabei wurde durch die Skalierung der Parameter auch immer wieder die Frage aufgeworfen, ob dies sinnvoll ist und ob es tatsächlich zu einer Verbesserung der Leistung führt. Die Forschungsergebnisse zeigen jedoch, dass eine Skalierung der Parameter tatsächlich zu einer deutlichen Steigerung der Leistungsfähigkeit von Sprachmodellen führen kann. ChatGPT und ähnliche Modelle sind in der Lage, erstaunlich komplexe Aufgaben zu lösen, wie zum Beispiel das Verfassen von Texten, die kaum von menschlicher Schreibweise zu unterscheiden sind.
Im Hinblick auf die Zukunft stehen jedoch noch zahlreiche Herausforderungen bevor, die es in den nächsten Jahren zu meistern gilt. Eine der wichtigsten Aufgaben ist es, die Modellinterpretierbarkeit zu verbessern, um sicherzustellen, dass Entscheidungen auf nachvollziehbare und transparente Weise getroffen werden können. Darüber hinaus müssen neue Methoden entwickelt werden, um die Rechenressourcen effizienter zu nutzen und den Energieverbrauch der Modelle zu reduzieren. Nichtsdestotrotz haben ChatGPT und ähnliche Modelle das Potenzial, die Art und Weise zu revolutionieren, wie wir mit Sprache interagieren und wie wir Informationen verarbeiten und kommunizieren. Angesichts der rasanten Entwicklung dieser Technologien bleibt es spannend zu beobachten, wie sich diese in Zukunft weiterentwickeln werden und welche Forschungsthemen sich ergeben.
A. Vaswani, N. Shazeer, N. Parmar, J. Uszkoreit, L. Jones, A. N. Gomez, L. Kaiser und I. Polosukhin, „Attention Is All You Need,“ Open-AI, 2017. [Online]. Available: http://arxiv.org/abs/1706.03762.
T. B. Brown, B. Mann, N. Ryder, M. Subbiah und J. Kaplan, „Language Models are Few-Shot Learners,“ Open-AI, 28 Mai 2020. [Online]. Available: https://arxiv.org/abs/2005.14165.
L. Ouyang, J. Wu, X. Jiang, D. Almeida, C. L. Wainwright, P. Mishkin, C. Zhang, S. Agarwal, K. Slama, A. Ray, J. Schulman, J. Hilton, F. Kelton, L. Miller, M. Simens, A. Askell, P. Welinder, P. Christiano, J. Leike und R. Lowe, „Training language models to follow instructions with human feedback,“ 2022. [Online]. Available: https://arxiv.org/pdf/2203.02155.pdf.
[12]
Alan D. Thompson, „GPT-3.5 + ChatGPT: An illustrated overview – Dr Alan D. Thompson – Life Architect,“ 2022. [Online]. Available: https://lifearchitect.ai/chatgpt/.
J. Kaplan, T. Henighan, T. B. Brown, R. Child, S. Gray, A. Radford, J. Wu und D. Amodei, „Scaling Laws for Neural Language Models,“ Open-AI, 23 Januar 2020. [Online]. Available: https://arxiv.org/abs/2001.08361.
D. Patterson, J. Gonzalez, U. Hölzle, Q. Le und C. Liang, „The Carbon Footprint of Machine Learning Training Will Plateau, Then Shrink,“ 11 April 2022. [Online]. Available: https://arxiv.org/abs/2204.05149.
One of the main reasons why machine learning did not take off in the 1990s was that the lack of computational power and the size of data sets, available at that time
Since then, a lot has changed and machine learning methods have found their way into the field of ultra large systems (ULS) like f.e. Google, where they have been used very successfully for quite some time.
Two main areas of application can be distinguished:
Learn better ML models faster with very large data sets and very high computing power by parallelizing and distributing different components of the ML computation.
Deep Learning methods are developed, trained and applied to control, understand, improve and optimize specific areas within a ULS, e.g. replace multiple overcomplicated subcomponents with a single, machine learned model that still does the same job
Hast du beim Lernen auch schon einmal gelangweilt aus dem Fenster geschaut und die vorbeifahrenden Autos gezählt? Auf wie viele Autos bist du dabei genau gekommen und war diese Zahl vielleicht auch vom Wochentag oder der Uhrzeit abhängig? In unserem Projekt haben wir versucht diese Frage zu beantworten. Dafür haben wir mittels Maschinellem Lernen, auch als “Machine Learning” bezeichnet, ein Neuronales Netz trainiert, welches bei einer Videoaufzeichnung einer Kreuzung verschiedene Verkehrsteilnehmer erkennen kann. Unser Ziel war es, durch eine Zählung bestimmen zu können, wie viele und welche Art von Fahrzeugen die Kreuzung in einem bestimmten Zeitraum passieren.
Problemstellung
Wie viele Autos passieren eine Kreuzung? Handelt es sich hauptsächlich um Autos oder gibt es auch andere Fahrzeuge, die die Kreuzung passieren und wie hoch ist die dadurch resultierende potentielle Lärmbelastung? Um all diese Fragen klären zu können, wäre es von Vorteil, wenn man wüsste, wie viele Fahrzeuge an der ausgesuchten Teilstrecke vorbeifahren. Wir haben probiert, genau das, nur mit Hilfe von Videos, herauszufinden.
Lösungsansatz
Wir entschieden uns, ein vortrainiertes Neuronales Netz auf Basis der YOLO-Architektur anzupassen und mit unseren Daten weiter zu trainieren. YOLO ist ein Echtzeit-Objekterkennungssystem, welches ein einzelnes Neuronales Netz auf ein komplettes Bild anwendet [1].
Vorverarbeitung der Bilder bzw. Videos
Nacht-Videos aussortieren und verteilen
Um das Projekt durchführen zu können, hatten wir einige Videoaufnahmen einer Kreuzung von Herrn Prof. Kriha erhalten. Die Aufnahmen zeigen eine Kreuzung, wie in Abbildung 1 zu sehen, welche zu unterschiedlichen Uhrzeiten gefilmt wurde. Wir entschieden uns, das Netz erst einmal mit Aufnahmen bei Tag zu trainieren, da die Fahrzeuge auf diesen Aufnahmen deutlicher zu erkennen sind und damit besser zuordenbar. Aus diesem Grund sortierten wir alle Nachtaufnahmen aus und verteilten die restlichen Videos auf alle Teilnehmer der Projektarbeit, um den Aufwand für das spätere Labeln der Bilder untereinander aufzuteilen.
Abbildung 1: Kreuzung ohne Fahrzeuge
Bilder aus Videos extrahieren
Da man das Neuronale Netz nicht mit Videoaufnahmen trainieren kann, mussten wir aus den Videos zunächst einzelne Bilder generieren. Dazu erstellten wir über 500 Screenshots, welche die verschiedenen Fahrzeuge an unterschiedlichen Positionen zeigen.
Labeln der Bilder
Um das Netz trainieren zu können, muss man die Bilder zunächst labeln. Hierfür verwendeten wir die Software “VGG Image Annotator” [2]. Direkt zu Beginn des Projektes einigten wir uns auf alle Fahrzeugtypen, die unser Netz erkennen sollte. Hierzu gehören:
PKW
LKW
Traktor
Motorrad
Fahrrad
Sonstiges (z. B. E-Scooter, Inlineskater)
Abbildung 2: Annotator Attributauswahl
In der Software kann man verschiedene Labels anlegen, welche nach den Fahrzeugkategorien benannt sind. In Abbildung 2 sieht man, wie die verschiedenen IDs, also die Label-Kategorien, angelegt werden. Ein Objekt kann man kennzeichnen, indem man mit Hilfe der Software ein Rechteck auf das Objekt legt und die jeweilige Bezeichnung – durch Klicken auf den passenden Radiobutton – angibt. Die Positionen der Rechtecke werden dann zusätzlich zu den Bildern als CSV abgespeichert und können so später fürs Training verwendet werden.
Augmentation
Da es nicht möglich ist, für jedes Szenario in der realen Welt ein Bild zu kreieren, mit dem man später trainieren kann, behalfen wir uns hier der Bild-Augmentation, um den aktuellen Trainingssatz zu diversifizieren. Dabei werden alle Bilder auf eine quadratische Größe von 512 x 512 Pixel skaliert und der Kontrast normalisiert. Im Anschluss gibt es eine 50 prozentige Chance, dass ein Bild horizontal und/ oder vertikal gespiegelt wird. Bei diesen Arten der Augmentation muss man aufpassen, dass die Label-Rechtecke korrekt mit skaliert und -rotiert werden. In Abbildung 3 sieht man ein Beispiel eines augmentierten Bildes.
Abbildung 3: Augementiertes Bild
Der Datensatz wurde anschließend in einen Trainingssatz und einen Testsatz aufgespalten. Wie der Name bereits impliziert, wird der Trainingssatz lediglich zum Trainieren des Netzes verwendet. Den Testsatz bekommt das Netz während des Trainings nie zu sehen. Erst am Ende wird dieser zur Verifizierung und Bewertung der Ergebnisse verwendet.
Neuronales Netz
Ein Neuronales Netz ist ein Verbund von Neuronen, dessen Parameter durch Training angepasst werden. Übliche Trainingsziele sind die Klassifikation, Replikation oder allgemein die Abstraktion der Eingangsdaten. Besonders die Klassifikation spielt in unserem Fall der Objekterkennung eine besondere Rolle.
Architektur
Bei der Entscheidung, welche Netzarchitektur wir für unser Projekt verwenden wollten, gab es die Auswahl zwischen dem Region Based Convolutional Neural Network (R-CNN) und dem “You Only Look Once” Netz (YOLO). Ein R-CNN durchläuft ein Bild zweimal. Im ersten Durchlauf schlägt es “Regions of Interest” vor, welche im zweiten Durchlauf verfeinert und klassifiziert werden. YOLO geht einen völlig anderen Weg und schaut nur ein einziges Mal auf ein Bild. Dabei wird das Bild in Zellen unterteilt welche anschließend sogenannte Bounding Boxes vorhersagen, die ein Objekt umschließen sollen. Auch wird die “confidence” angeben, die zeigt, wie sicher das Netz ist, wirklich ein Objekt umschlossen zu haben. Parallel dazu erstellt jede Zelle eine Klassifikation. In unserem Fall wäre es die Unterscheidung, ob es ein PKW, LKW oder ein anderes Fahrzeug ist. Im letzten Schritt werden beide Ergebnisse miteinander vereinigt und es entsteht die finale Vorhersage (siehe Abbildung 4).
Wir haben uns für die YOLO Architektur entschieden, weil sie im Vergleich zum R-CNN schneller arbeitet, auch wenn sie nicht so präzise ist. Das zu analysierende Material sind Videos mit 25 Bildern pro Sekunde und wenn man es in Echtzeit verarbeiten wollte, ist die Geschwindigkeit wichtiger als die Genauigkeit.
Um nicht komplett von Null anzufangen, übernahmen wir eine YOLOV2-Implementierung mit bereits trainierten Gewichten basierend auf dem COCO Datensatz. Die letzte Schicht des Netzes wurde dann mit unseren eigenen Trainingsbildern trainiert.
Training
Das verwendete Netz, basierend auf der YOLO Architektur [4], wird überwacht trainiert. Während des Trainings erzeugt es für jede Bildeingabe eine Ausgabe pro erkanntem Objekt, welche aus den vier Koordinaten der Bounding Box und einem Label, das angibt, um was für ein Vehikel es sich handelt, besteht. Diese Ausgabe wird nun mit den zuvor gelabelten Rechtecken des Eingabebildes verglichen und ein Loss-Wert errechnet. Mittels Backpropagation werden der Gradient von jedem Neuron neu berechnet und die Gewichte angepasst. Nach jeder Wiederholung des Prozesses mit denselben Eingabebildern, sollte sich die Ausgabe den wahren Werten immer weiter annähern. Das Netz lernt.
In Abbildung 5 ist ein Trainingsvorgang veranschaulicht. Die Y-Achse zeigt den Loss-Wert an, die X-Achse die Epochen. Eine Epoche ist ein gesamter Durchlauf mit allen Trainingsbildern. Der orange Graph zeigt den Loss-Wert der Testbilder mit den zum Zeitpunkt x errechneten Gewichten des Netzes an, während der blaue Graph für den Loss-Wert auf den Trainingsbildern steht. Man kann erkennen, dass der Loss in den ersten Epochen sehr schnell abnimmt und sich ab der 200. Epoche kaum noch verbessert.
Abbildung 5: Loss-Verlauf bei Training mit 1.000 Epochen
Dem fertig trainierten Netz übergaben wir einige Testbilder, um zu sehen, ob es vernünftige Ausgaben liefern konnte. Wie in den Abbildungen 6 bis 9 zu sehen ist, kann das Netz verschiedene Vehikel erkennen und auch die Klasse richtig einordnen. Des Weiteren ist es in der Lage, verdeckte Objekte wie die Autos in Abbildung 7 und 8, welche teilweise von Pflanzen verdeckt werden, zu identifizieren.
Abbildung 6
Abbildung 7
Abbildung 8
Abbildung 9
Vom YOLO-Netz erkannte Verkehrsteilnehmer
Es bleibt noch anzumerken, dass die Ausgabe der Rechtecke nicht ganz unseren Erwartungen entsprach. Zwar wurden die Vehikel mit großer Wahrscheinlichkeit erkannt und korrekt zugeordnet, jedoch waren die Bounding Boxen zu groß und entsprachen nicht unseren gelabelten Trainingsbildern. Dennoch konnten wir mit den Ergebnissen weiterarbeiten, weil nur der Mittelpunkt der Rechtecke für die Zählung wichtig ist. Diesen Mittelpunkt kann man aus den Eckpunkten des Rechtecks berechnen, dabei spielte es keine Rolle wie groß die Dimensionen sind.
Zählung der Fahrzeuge
Bevor wir beginnen konnten die vorbeifahrenden Fahrzeuge zu zählen, mussten wir in der Lage sein, ein bestimmtes Fahrzeug während des Vorbeifahrens zu tracken. Das ist nötig, da das neuronale Netz eigentlich keine Videos direkt verarbeiten kann. Stattdessen wird das Video in die einzelnen Bilder zerlegt und Bild für Bild verarbeitet. In einem ersten Schritt haben wir dabei jeweils die vorher erwähnten Mittelpunkte eines jeden erkannten Fahrzeugs in passender Farbe, je nachdem welcher Typ erkannt wurde, in jedes einzelne Bild gezeichnet und anschließend wieder zu einem Video zusammengesetzt. Das Ergebnis zeigt, dass das Netz in der Lage ist, ein Fahrzeug zu “verfolgen” wie in Video 1 zu sehen.
Video 1: Fahrzeug-Tracking mit unserem Netz
Um ein vorbeifahrende Auto als nur ein einziges Fahrzeug zu werten und zu zählen, verglichen wir die Mittelpunkte der erkannten Fahrzeuge zwischen zwei nachfolgenden Bildern eines Videos und ordneten diese, wenn möglich, einem bereits im ersten Bild erkannten Fahrzeug zu. Hierfür verwendeten wir einen Centroid (z. Dt. Schwerpunkt, hier der Mittelpunkt der erkannten Fahrzeuge) Tracking-Algorithmus [5]. Dieser ordnet Fahrzeuge auf einem neuen Bild zu bereits erkanntem Fahrzeugen zu oder registriert sie als neue Fahrzeuge. Dieser merkt auch, wenn Fahrzeuge wieder verschwunden sind und löscht diese aus den als “aktuell im Bild befindlich” registrierten Fahrzeugen.
Nachdem wir in der Lage waren, ein vorbeifahrendes Fahrzeug über den Zeitraum, in dem es im Video auftaucht, als ein einziges Fahrzeug zu werten, musste als nächstes festgelegt werden, wann wir ein Fahrzeug zählen. Zwar konnten wir Fahrzeuge relativ genau zuordnen, würde man jedoch einfach die Zahl aller einzigartig erkannten Fahrzeuge betrachten, so wäre die Zahl viel zu hoch. Das liegt daran, dass Fahrzeuge am Rand der Bilder teils nicht so gut erkannt werden oder z. B. lang genug von einem anderen verdeckt sind und anschließend als neues Fahrzeug registriert werden. Das lässt sich nicht wirklich verhindern. Auch werden bei großen Fahrzeugen manchmal fälschlicherweise zusätzlich Fahrzeuge erkannt (siehe Abbildung 10). So wird, auch wenn ein zusätzliches Fahrzeug nur in einem einzelnen Bild erkannt wurde, die Zahl der insgesamt erkannten Fahrzeuge hochgetrieben.
Abbildung 10: Das Netz erkennt zusätzlich zum Traktor noch zwei LKWs
Es ergibt also Sinn, an einer Stelle zu zählen, an der alles gut sichtbar ist und das Netz sehr genau Fahrzeuge erkennt, damit diese möglichst genau gezählt werden. Dafür haben wir relativ mittig im Bild einen runden Bereich definiert, den die Fahrzeuge durchqueren müssen, um gezählt zu werden, siehe Abbildung 11.
Abbildung 11: Kreis, in dem Fahrzeuge gezählt werden und Fahrtverlauf aller Autos
Jedes erkannte Fahrzeug bekommt in unserem Tracking-Algorithmus dabei eine Variable, die den Status des Fahrzeug angibt. Dabei wird unterschieden zwischen “ist nicht im Kreis”, “ist im Kreis” und “war im Kreis”. Nach jedem Update, also nach jedem verarbeiteten Bild, wird für jedes in diesem Moment erkannte Fahrzeug überprüft, ob es sich im Kreis befindet und der Status entsprechend angepasst. Wechselt dieser dabei von “ist im Kreis” zu “war im Kreis”, dann wird das Fahrzeug gezählt, also beim Verlassen des Kreises. Um sicherzustellen, dass alle Fahrzeuge auch “durch den Kreis” fahren, liegt dieser zwangsweise an einer Stelle an, bei der Fahrzeuge von Pflanzen verdeckt werden können. Dies hat zur Folge, dass manche Fahrzeuge bereits nicht mehr erkannt werden, obwohl sie den Kreis noch nicht verlassen haben und folglich nie gezählt werden. Daraus folgte die Entscheidung, auch Fahrzeuge zu zählen, die verschwinden, während sie sich im Kreis befinden. Das führt dazu, dass im Schnitt zu viele Fahrzeuge erkannt werden, siehe Video 2. Allerdings ist in unseren Tests die Anzahl der gezählten Fahrzeuge dadurch sehr viel näher an der tatsächlichen Anzahl der vorbeifahrenden Fahrzeuge.
Video 2: Ein Auto wird fälschlicherweise drei Mal gezählt
Sobald ein Fahrzeug gezählt wird, werden Informationen wie der genaue Zeitpunkt und die Art des Fahrzeugs in eine Liste geschrieben und zur Weiterverarbeitung als CSV-Datei gespeichert. Zur Veranschaulichung haben wir auch die Counter der verschiedenen Fahrzeuge mit in das Video eingefügt, siehe Video 3.
Video 3: Ausschnitt eines fertig verarbeiteten Videos
Ergebnis
Wir konnten die Ziele, welche wir uns am Anfang gesetzt haben, erfolgreich umsetzen. Das Netz ist in der Lage, verschiedene Verkehrsteilnehmer zu erkennen und zu kategorisieren. Zusätzlich wäre es performant genug, die Erkennung und Zählung in Echtzeit durchzuführen.
Die Klassifizierung der Fahrzeuge hat zwar generell funktioniert, aber wäre durch mehr gelabelte Bildern von nicht-PKWs vermutlich sehr viel besser gewesen. Eine weitere Sache, die sich im Nachhinein als suboptimal herausstellte, ist, dass wir bei Landwirtschaftsfahrzeugen jeweils nur das Zugfahrzeug labelten. Das führte dazu, dass das Netz Probleme hatte, Anhänger zu erkennen und oft zusätzlich mehrfach LKWs erkannte, siehe Abbildung 10.
Die Zählung wäre abgesehen von teils fehlerhafter Klassifizierung und dem Erkennen zusätzlicher nicht vorhandener Fahrzeuge, einfacher und potenziell genauer gewesen, wäre die Kreuzung aus einem anderen Winkel gefilmt worden. Der Umstand, dass ein für die Zählung relevanter Bildteil direkt an eine “Bildkante”, an der Fahrzeuge verschwinden, angrenzt, erschwert die genaue Zählung immens. Wenn Teile einer Pflanze im Kreis hingen, führte das oft dazu, dass ein Fahrzeug nicht mehr erkannt wurde, während es verdeckt war, dann aber erneut erkannt und anschließend aufgrund unsere Entscheidung im Bild, verschwindende Fahrzeuge zu werten, doppelt gezählt wurde.
Wie lässt sich das Projekt fortführen?
Nach dem Abschluss des Projektes gibt es noch eine Vielzahl an Möglichkeiten, das Projekt weiterzuführen. Zum einen kann man den gesamten Video-Datensatz des Netzes bearbeiten lassen, danach durchgehen und anschließend statistisch auswerten.
Es wäre auch möglich, das Netz mit dem Videomaterial einer anderen Straße zu trainieren. Oder unseren Datensatz mit nicht-PKWs zu erweitern und bspw. die nicht optimal gelabelten Traktoren zu ersetzen. Ein anderer Ansatz wäre, alle Fahrzeuge mit dem gleichen Label zu versehen und damit das Netz zu trainieren. Anschließend könnte man bewerten, wie sich das Ergebnis verändert.
Neben der YOLO-Architektur gibt es auch noch die Single Shot Detector-Architektur, welche eine ähnlich Performance bietet. Es wäre interessant herauszufinden, was für diese Problemstellung besser ist, sei es in Sachen Geschwindigkeit oder Präzision.
Part 1 of this series discussed how AI technology can be used for good or evil. But what if the AI itself becomes an attack vector? Could an attacker use my models against me? Also, what’s the worst that could happen? Welcome to the domain of adversarial AI!
Who hasn’t seen a cinema production in which an AI-based robot threatens individual people or the entire human race? It is in the stars when or if such a technology can really be developed. With this series of blog entries we want to point out that AI does not need robots to cause damage. Already today, AI is used in harmful ways and we should be aware that every progress in AI technology has a downside, especially if we, without considering the possible consequences, make results openly available and thus offer everyone the chance to use the technological advances for their own benefit.
This first part of the blog series addresses the dual-use character of today’s AI by showing possible applications of AI in the lifetime of cyberattacks. The defensive possibilities are briefly presented, but the focus is on the offensive, i.e. the possibilities that AI offers attackers to execute cyberattacks more intelligently and automatically. Based on this, a technology that could become a major threat is investigated more closely: Deepfakes. I’ll give you an insight into how this technology works, the threats it poses and why people in general can be quickly influenced by such misinformation. New AI technologies can not only be used for attacks, but also the AI itself can be manipulated, which can cause great damage, especially in systems where AI makes decisions.. This topic is covered in part 2 of the blog series.
You must be logged in to post a comment.