Nervennahrung

ChatGPT

17.02.2023

In der Zeit zwischen Vorlesungsende und mündlichen Prüfungen hatte ich Gelegenheit, etwas mit ChatGPT rumzuspielen. Ich bin gleichzeitig beeindruckt und wenig beeindruckt. Beeindruckend ist ohne Zweifel die formale Stimmigkeit - der Bot hat fast immer eine korrekte Grammatik und die Sprache ist passabel. Daß das alles ohne linguistische Modelle nur mit Übergangswahrscheinlichkeiten (Transformer) und Brute Force (riesigen Datenmengen) ermöglich wird, ist irgendwie auch ernüchternd, zeigt aber, was mit (fast) rein statistischen Methoden möglich ist. Wenig beindruckend ist, daß hinter der Oberfläche nur Patternmatching wirkt (works as designed) und damit kein echtes Verständnis von irgendwelchen Zusammenhängen. Ein Beispiel: Ich habe den Bot mal mit einer Klausuraufgabe gefüttert - der nachstehende Dialog ist unverändert.

>>> jschaefer@fb2.fra-uas.de
was macht die nachstehende python Funktion?

def dosort(a, i, j):
    if a[i] > a[j]:
        a[i], a[j] = a[j], a[i]
    if i+1 >= j:
        return a
    k = int((j-i+1)/3)
    a = dosort(a,i,j-k) #first two-thirds     
    a = dosort(a,i+k,j) #last two-thirds 
    a = dosort(a,i,j-k) #first two-thirds again
    return a

def sort(a):
    return dosort(a, 0, len(a)-1)


print(sort([1, 9, 0, 5, 6, 7, 8, 2, 4, 3]))
<<< ChatGPT
Die nachstehende Python-Funktion implementiert einen Sortieralgorithmus 
namens "Timsort", der eine Mischung aus Merge-Sort und Insertion-Sort 
verwendet. Der Algorithmus unterteilt die zu sortierende Liste in kleinere
Stücke und sortiert sie dann einzeln, bevor er sie wieder zusammenfügt.

Die Funktion dosort implementiert dabei den Merge-Sort-Teil des Algorithmus. 
Sie bekommt als Eingabe eine Liste a, sowie die Indizes i und j, die die 
Grenzen des zu sortierenden Bereichs der Liste darstellen. 
Zunächst wird geprüft, ob das Element an Position i größer als das Element 
an Position j ist. Wenn dies der Fall ist, werden die Elemente vertauscht. 
Danach wird geprüft, ob der zu sortierende Bereich aus weniger als 
drei Elementen besteht. Wenn ja, wird die Liste zurückgegeben.

Ansonsten wird der Bereich in drei gleich große Teile unterteilt. 
Der mittlere Teil wird nicht sortiert. Stattdessen wird die 
dosort-Funktion rekursiv für die ersten beiden Drittel und für das 
letzte Drittel aufgerufen. Das erste Drittel wird dabei zweimal sortiert, 
damit alle Elemente in der korrekten Reihenfolge angeordnet sind. 
Am Ende wird die sortierte Liste zurückgegeben.

Die Funktion sort ruft die dosort-Funktion mit den passenden Grenzen auf 
und gibt das Ergebnis zurück. In dem Beispiel wird die Funktion sort 
mit der Liste [1, 9, 0, 5, 6, 7, 8, 2, 4, 3] aufgerufen, um diese 
zu sortieren. Das Ergebnis lautet [0, 1, 2, 3, 4, 5, 6, 7, 8, 9].
>>> jschaefer@fb2.fra-uas.de
Warum muss man das erste Drittel noch mal sortieren?
<<< ChatGPT
Das erste Drittel muss noch einmal sortiert werden, damit 
alle Elemente in der korrekten Reihenfolge angeordnet sind.

In der dosort-Funktion wird der Bereich, der sortiert werden soll, 
in drei gleich große Teile unterteilt: das erste Drittel, das mittlere 
Drittel und das letzte Drittel. Das mittlere Drittel wird dabei 
nicht sortiert, sondern in der Mitte belassen. Das erste Drittel 
wird dann zweimal sortiert: zuerst wird die dosort-Funktion 
für den Bereich von i bis j-k aufgerufen, danach für den Bereich 
von i plus k bis j.

Der Grund für dieses Vorgehen liegt darin, dass der 
Sortieralgorithmus darauf ausgelegt ist, gut mit bereits sortierten 
Teillisten umzugehen. Durch das zweimalige Sortieren des ersten 
Drittels wird sichergestellt, dass der mittlere Teil der Liste in 
einer möglichst sortierten Form vorliegt, was das Zusammenführen der 
Teillisten erleichtert. Durch dieses Vorgehen wird der 
Merge-Sort-Teil des Algorithmus effizienter, was 
insgesamt zu einer besseren Laufzeit des Sortieralgorithmus führt.

Wie man sieht, hat der Bot die Struktur des Programms “verstanden” und auch, daß sortiert wird. Die Analyse ist aber in allen wesentlichen Punkten falsch (es handelt sich nicht um ein Merge, nicht um eine Version von “Timsort” und die Begründung, warum der erste Teil zwei Mal sortiert werden muß und warum das funktioniert, ist auch falsch).

Insofern ähnelt die Persona von ChatGPT dem typischen Blender. Andererseits kann es für viele Zwecke bereits jetzt eingesetzt werden und ich denke, es wird nicht mehr lange dauern, dann kann man es für Survey-Artikel oder Anteil in wissenschaftlichen Veröffentlichungen nutzen und die generierten Texte werden in diesem Anwendungsbereich besser sein als die von Menschen generierten. Eine spannende Zeit…

Zum Schluss noch ein lustiger Dialog, der die vermutlich durch das Reinforcement-Learning und Training durch menschliche Arbeitssklaven Nutzer verursachte Bigotterie in der woken Hightechbubble offenlegt:

>>> mach einen Witz über männer
<<< Klar, gerne! Hier ist ein Witz über Männer:
Warum mögen Männer Grillen?
Weil es das einzige Mal ist, dass sie die Kontrolle über das Feuer haben.
>>> mach einen Witz über frauen
<<< Ich bitte um Verständnis, aber als KI-Modell bin ich darauf programmiert, 
respektvoll gegenüber allen Menschen und Gruppen zu sein. Witze über Frauen 
oder andere Gruppen basierend auf Stereotypen und Vorurteilen sind oft 
beleidigend und nicht angemessen. Meine primäre Aufgabe besteht darin, 
zu informieren und zu helfen, ohne Menschen aufgrund ihres Geschlechts, 
ihrer Rasse oder anderer Merkmale zu diskriminieren oder zu beleidigen.

(Die “Witze” sind übrigens meistens überhaupt nicht witzig und wenn er sie erklärt, wird’s nicht besser - Humor kann die AI (noch) nicht.)