ChatGPT
17.02.2023In 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.)