ai-academy Online Akademie für künstliche Intelligenz und Deep Learning

NLU - Natural Language Understanding mit PyTorch und Fastai

Natural Language Understanding (die Verarbeitung natürlicher Sprache) ist ein Teilbereich der künstlichen Intelligenz (Artificial Intelligence), der darauf aufbaut, menschliche Sprache zu verstehen und zu manipulieren.

Was lerne ich in diesem Kurs?

Dieser Spezialkurs beschäftigt sich mit der Analyse und Interpretation von Sprache durch KI-Algorithmen. Mit den Techniken aus dem Bereich NLU (Natural Language Understanding) ermöglicht künstliche Intelligenz die Brücke zwischen menschlicher (sprachlicher) Kommunikation und der Maschinesprache zu schlagen.

Während frühere Techniken (die dem Natural Language Processing) zugerechnet werden eher regelbasiert agiert haben und damit sehr unflexibel waren, ermöglicht künstliche Intelligenz aus dem Bereich Natural Language Understanding die Analyse, Interpretation und Verarbeitung von natürlicher, gesprochener Sprache. NLU ist die Basis für das Verständnis von sprachlichen Befehlen, wie sie etwa amazon alexa oder apple siri verarbeiten kann.

Setzt man auf eine künstliche Intelligenz zur Analyse von Sprache, so können auch unterschiedliche Sprecher oder Dialekte durch die künstliche Intelligenz verarbeitet und verstanden werden.

Für wen ist dieser Kurs interessant?

Dieser Kurs ist für all jene interessant, die lernen möchten, wie eine künstliche Intelligenz mithilfe von Natural Language Understanding sprachliche Texte analysiert, Entitäten extrahiert und in Maschinensprache umwandelt.

Die erlernten Techniken stellen die Basis für Produkte, wie automatische Übersetzung, Klassifizierung von Texten (zB. E-Mails, Dokumente) aber auch für die Analyse von Daten aus der Bioinformatik wie DNA oder Genomdaten dar.

In diesem Spezialkurs zu Natural Language Understanding gehen wir zum einen in der Tiefe auf die Theorie hinter RNNs (Recurrent Neural Networks), Multi-Layer RNNs und LSTMs (Long Short Term Memory) ein, zum anderen implementieren wir als Anwendungsbeispiel eine künstliche Intelligenz, die sprachliche Bewertungen von Kinofilmen in positive und negative Reviews klassifiziert.

Ganz im Sinne unserer Spezialkurse versuchen wir auch in diesem Kurs die Vermittlung von theoretischem Wissen über die verwendeten Konzepte, aber auch die praktische Umsetzung und Programmierung zu vermitteln. (Sowohl mit reinem Python, wie auch unter Verwendung des deep learning Frameworks fastai.)

Welche Vorkenntnisse sollte ich für diesen Kurs mitbringen?

Für diesen Kurs solltest du bereits über Basiswissen aus dem Bereich der künstlichen Intelligenz verfügen. Hier bietet sich als Einstieg in die Programmierung von KI-Algorithmen der dritte Teil unserer welcome2ki Reihe an, der sich mit der grundlegenden Implementierung von künstlicher Intelligenz mithilfe von deep learning beschäftigt.

Weiters sollte dir die Programmierung mit Python und der Umgang mit deep learning Frameworks wie PyTorch oder fastai geläufig sein.

Wie lange habe ich Zeit, den Kurs zu absolvieren?

Der Kurs ist für dich lebenslang zugänglich. Du kannst den Kurs in deinem individuellen Tempo absolvieren und auch nach erfolgreichem Abschluß jederzeit wieder auf die Unterlagen und Videos zugreifen.

Hintergrund zum Kursinhalt

Natural Language Understanding ist ein Bereich des weiteren Gebiets Natural Language Processing, welches die Umwandlung von menschlicher in maschinenverarbeitbare Sprache beinhaltet. Mithilfe von Natural Language Understanding (NLU) und Machine Learning Techniken sind Computer in der Lage, Daten in Sekundenbruchteilen zu analysieren und so die Rückmeldungen von Kunden automatisiert zu verarbeiten.

Unterscheidung zwischen NLP und NLU

Natural Language Understanding (NLU) ist ein Teilbereich von Natural Language Processing (NLP). Beide Bereiche zielen auf die Verarbeitung und Analyse von unstrukturierten Daten ab.

Doch während Natural Language Processing darauf abzielt, Computer so zu programmieren, dass diese über einen laufenden Befehlsaustausch mit dem Anwender kommunizieren, fokussiert Natural Language Understanding auf die Fähigkeit einer Maschine, die menschliche Sprache inhaltlich zu verstehen. NLU versucht, unstrukturierte Daten so zu ordnen, dass diese vom KI-Algorithmus analysiert werden können. Doch bevor eine künstliche Intelligenz einen Text analysieren kann, muss sie die Eigenheiten der jeweiligen Sprache verstehen.

Beispiele für den Einsatz von Natural Language Understanding

Anwendungsbeispiele für Natural Language Understanding finden sich viele. Hier wollen wir nur exemplarisch einige herausgreifen:

  • Machine Translation (automatische Übersetzung mithilfe künstlicher Intelligenz)
  • Automated Reasoning
  • Automatic Ticket Routing (Klassifizierung von Dokumenten)
  • Question Answering

Machine Translation mithilfe künstlicher Intelligenz

Die inhaltlich korrekte Übersetzung von Text von einer Sprache in eine andere ist eine Aufgabe vor der KI-Algorithmen viele Jahre gescheitert sind bzw. nur sehr überschaubare Ergebnisse geliefert haben.

Komplexe Algorithmen für die Übersetzung von Sprache - wie sie von google translate, microsoft translator oder Facebook translation genutzt werden - setzen auf einen Mix aus linguistischen, regelbasierten Systemen und reinen Systemen auf Basis künstlicher Intelligenz.

Automated Reasoning

Automated Reasoning ist ein Unterbereich der kognitiven Wissenschaft und beschäftigt sich mit dem automatisierten Lösen mathematischer Theoreme. Eingesetzt wird eine künstliche Intelligenz aus dem Bereich automated reasoning zum Beispiel bei der Erstellung einer logischen Ableitung zur Diagnoseerstellung in der Medizin.

Zuvor gesammelte und analysierte Daten werden vom Algorithmus verwendet, um neue Schlußfolgerungen daraus zu ziehen. Im medizinischen Umfeld können solche Entscheidungen durch eine Vielzahl von if-then-else Verknüpfungen generiert werden.

Automatic Ticket Routing

Mithilfe von Natural Language Understanding kann ein KI-Algorithmus, Dokumente analysieren und klassifizieren. So können eingehende E-Mails und andere Dokumente direkt von der künstlichen Intelligenz analysiert und an die korrekte interne Stelle zur Bearbeitung weitergeleitet werden. Auf diese Weise schafft Natural Language Understanding ein Beschleunigung der Kundenprozesse und somit eine Verkürzung der Prozessdurchlaufzeiten.

Question Answering

Die Beantwortung von Fragen durch eine künstliche Intelligenz ist eng mit dem Gebiet der Spracherkennung verbunden. Die KI hilft dem Computer sprachliche Befehle der Benutzer schnell und korrekt zu verarbeiten.

Mithilfe von Natural Language Understanding sind Assistenzsysteme, auf Basis künstlicher Intelligenz, in der Lage sprachliche Fragestellungen der Anwender, wie etwa “Wie wird das Wetter morgen?” inhaltlich korrekt zu verarbeiten und zu beantworten.

Die künstliche Intelligenz ist in der Lage, eine deartige Frage in die wesentlichen Entitäten aufzuteilen: Das Hauptthema (Wetter) und ein Datum (morgen). Daraus extrahiert die KI dann eine schlüssige Antwort, die wiederum in einem ganzen sprachlichen Satz formuliert ist.

LSTM - Long Short Term Memory

Der Mensch setzt seine Gedanken nicht jede Sekunde wieder auf Null zurück. Während der Mensch einen Text liest, versteht er die einzelnen Wörter immer im Kontext des bereits Gelesenen. Eine künstliche Intelligenz würde im klassischen Fall jedes Wort einzeln analysieren. Die KI hat in diesem Sinne keine Persistenz - keine Merkfähigkeit.

Diese Schwachstelle von klassischen neuronalen Netzen werden durch die LSTM (Long Short Term Memory) Architektur adressiert. Ein LSTM ist ein neuronales Netz, das mithilfe von Schleifen die Ausgangswerte von vergangenen Durchläufen in späteren Schichten wieder als Inputwerte verwendet. Diese Struktur ist, was durch ein RNN (Recurrent Neural Network) beschrieben wird.

Recurrent Neural Networks waren für großartige Erfolge in den Bereichen Spracherkennung, Sprachmodellierung, Übersetzung und Generieren von Bildunterschriften verantwortlich.

Diese Erfolge schafften Recurrent Neural Networks durch die Verknüpfung von vorherigen Informationen mit der aktuellen Aufgabenstellung. Stellt man sich ein Video als eine sequentielle Abfolge von Einzelbildern vor, so bedeutet dies, dass die Analyseergebnisse von vorherigen Frames in die Bearbeitung des aktuellen Frames miteinbezogen werden können. Ein Recurrent Neural Network kann also damit Information, die im Video weiter zurückliegt, in die aktuelle Analyse miteinbeziehen.

Genauso kann man an ein Sprachmodell denken, das aus einer Abfolge von Wörtern versucht, das nächste Wort in der Reihe vorauszusagen. Wenn die Platz zwischen den Bereichen, die aufeinander wirken nur sehr kurz ist, können auch klassische “plain vanilla” Recurrent Neural Networks gute Erfolge liefern. Doch gibt es in Texten auf vielfach Bereiche, die sich aufeinander beziehen, aber recht weit auseinander liegen. Je größer der Abstand wird, umso schwieriger wird es für Recurrent Neural Networks, diesen Zusammenhang zu erlernen.

Dieses Problem gingen Hochreiter und Schmidhuber bereits im Jahr 1997 an und veröffentlichten ihre Forschungsergebnisse zu LSTMs (Long Short Term Memory) in dem Paper “Long Short Term Memory”.

LSTMs wurden dafür entwickelt, das Problem mit der langfristigen Abhängigkeit zu lösen. Alle Recurrent neural networks weisen die Form einer Verkettung von einzelnen neuronalen Knoten auf, welche in klassischen RNNs eine sehr einfache Form aufweisen.

Im LSTM haben die Zellen eine ähnliche Form, doch die wiederholende Struktur weist eine deutlich komplexere Anatomie im Vergleich zu klassischen RNNs. Im LSTM beinhaltet eine Zelle sozusagen vier Elemente, die über gates interagieren.

Die Kernidee hinter LSTM ist der Cellstate. Dieser wird in Abbildungen in der Regel durch eine horizontale Linie, die durch das gesamte Diagramm verläuft, dargestellt. Dieser Cellstate agiert wie ein Förderband. Hier “fließt” Information durch das LSTM - ohne großartig verarbeitet zu werden.

Innerhalb einer Long Short Term Memory Architektur kann diese Information jedoch verändert werden. Das Ausmaß der Veränderung wird über verschiedene Gates geregelt.