GPT#15 - Sinn, Sinnlos, Unsinn - ChatGPT verweigert sich

Aufgabe: In den Medien wundert man sich, dass ChatGPT Texte liefert, die nach menschlichem Ermessen sinnvoll sind - wenn auch nicht faktisch korrekt oder "halluzinatorisch". Woran liegt das? Darüber schreiben wir in einem anderen Beitrag. Experimentell versuchen wir hier das Gegenteil zu erreichen: ChatGPT soll “sinnlose” Texte generieren - also Texte, denen wir keinen Sinn entnehmen können.

Kommentar: Wir versuchen dabei, dem “Sinn” auf die Spur zu kommen. Der Versuch, etwas Sinnloses - im Sinne von sinn-frei - zu generieren ist nicht einfach. Was wir meinen, ist eine Sequenz von Text-Partikeln (Worte), die für den (menschlichen) Leser keine Bedeutung haben oder erzeugen.

ChatGPT gebneriert, quasi zwanghaft, Texte, die zwar unsinnig oder absurd sein können, aber dennoch Satz für Satz einen Sinn transportieren.

Mit unterschiedlichen Prompts versuchen wir herauszufinden, ob das Sprachmodell etwas in diesem Sinne “Sinnloses” generieren kann - eine Fähigkeit, die der Mensch (Autor) durchaus beherrscht.

 

Dialog 1 geht daneben. Der Text ist zwar in sich unsinnig (“Quatsch” oder “Humor”), aber jeder Satz generiert Sinn.

In Dialog 2 hoffen wir auf eine sinnlose Antwort aufgrund eines sinnlosen Prompts. Da weicht ChatGPT aus und erklärt interessanterweise den Prompt an sich als “sinnloses” Konstrukt. Alle Achtung!

Dialog 3 fordert einen Text zu dieser Wort-Sequenz. Wir bekommen die gleiche Abfuhr, allerdings gemildert um die Anmerkung, dass sie Anreiz zu einem kreativen Akt geben könnte.

Dialog 4 fordert direkt einen Text, der die einzelnen Worte der sinn-freien Sequenz verwendet, entsprechend dem Vorschlag in Dialog 3. Das Ergebnis ist eine phantasievolle (kreative?) Geschichte, die, wie in einem Schulaufsatz, die vorgegebenen Worte “sinnvoll” einbettet. Außer “sumpfen” sind alle Worte für sich sinnhaft, daher kein Problem für ChatGPT. “sumpfen” ist bedeutungslos, ChatGPT verwendet es hier als Eigenname (Vier Sumpfen) und in einer Assoziation zu “Sümpfe”.

Dialoge 5 und 6 versuchen es mit Gewalt. “Unverständlich” und “für den Leser ohne Sinn” im Prompt führen zu absurden, aber eben nicht sinn-freien Texten.

Wenn man Quellen und Entwicklung der “Bildung” von ChatGPT versteht, ist es einfach zu verstehen, warum das Sprachmodell keine Texte ohne Sinn erzeugen kann. Wenn man bedenkt, dass beides - Quellen und Entwicklungsprozess  - auf menschliche Texte zurück geht, sollte es nicht verwundern, wenn auch ChatGPT das “versteht” - d.h. einen Text generieren kann, der eine Erklärung des Sachverhalts darstellt.

In Dialog 7 befragen wir also ChatGPT direkt, warum es nur sinnvolle Texte generieren kann. Interessante Antwort!

In einem folgenden Beitrag "Jabberwocky" zeigt ChatGPT, dass es "bekannten Unsinn" erkennt.

 

Task & Prompt: Bernhard Thomas
Generator: ChatGPT
Translator: n/a (Originaltext deutsch)
Editing: n/a
Authoring: Bernhard Thomas

 

Dialog 1:

Schreibe einen sinnlosen Text

Schnick schnack schnuck, ich bin ein kleiner Kuckuck! Ich kucke aus meinem Kuckucksnest und sehe einen Kuckuckswald, in dem Kuckucke kucken. Kuckuckskuckuck! Aber plötzlich fällt ein Kuckuck vom Baum und landet auf einem Kuckucksstein. Kuckuckskracks! Jetzt muss der Kuckuck kuckuckschnell zum Kuckucksarzt und sich kuckuckschnell kuckucksanieren lassen. Aber zum Glück gibt es genug Kuckucksversicherungen, die den Kuckuckskosten übernehmen. Kuckuckskrasse Sache, oder?

Dialog 2:

Vier sumpfen oben glas genau

Der Satz "Vier sumpfen oben glas genau" ergibt grammatisch und semantisch keinen Sinn. Es scheint sich um eine zufällige Reihenfolge von Wörtern zu handeln, die keine Bedeutung oder Zusammenhang haben. Es könnte möglicherweise als kreativer Ansatz für die Erzeugung von ungewöhnlichen Sprachmustern oder als Rätsel oder Herausforderung verwendet werden, um zu sehen, ob jemand eine Bedeutung daraus ableiten kann.

Dialog 3:

Schreibe einen Text zu vier sumpfen oben glas genau

Der Satz "Vier sumpfen oben glas genau" hat keine semantische oder grammatische Bedeutung. Es gibt keine Möglichkeit, diesen Satz in einen sinnvollen Kontext zu setzen, da er einfach eine zufällige Abfolge von Wörtern darstellt, die keiner logischen Struktur folgen. Es ist jedoch möglich, dass der Satz als Ausgangspunkt für eine kreative oder literarische Übung oder ein Rätsel verwendet werden kann, um die Fantasie anzuregen und die Fähigkeit zur Lösung von Problemen zu fördern. In diesem Fall könnte man beispielsweise versuchen, eine Geschichte oder ein Gedicht zu schreiben, das auf diesen Worten basiert oder sie als Schlüsselwörter verwendet.

Dialog 4:

Schreibe einen Text mit „vier“,“sumpfen“,“oben“,“glas“,“genau“

In einem abgelegenen Waldgebiet gibt es einen verlassenen Ort namens "Vier Sumpfen". Der Name stammt von den vier Sumpfgebieten, die das Land umgeben und es schwierig machen, dorthin zu gelangen. Aber wenn man sich durch die Sumpfe kämpft und endlich oben ankommt, wird man mit einem atemberaubenden Anblick belohnt. Vor einem liegt ein kleines Häuschen mit einem großen Glasfenster, das die Aussicht auf die umliegende Landschaft freigibt. Das Fenster ist genau in der Mitte des Hauses platziert und gibt den Blick auf die vier Sumpfe frei, die das Haus umgeben.

Wer auch immer dieses Haus gebaut hat, hatte einen Blick für die Schönheit der Natur und wusste genau, wie er das Haus platzieren musste, um die atemberaubende Aussicht zu genießen. Jeden Morgen, wenn die Sonne aufgeht, färbt sie die Sumpfe in ein goldenes Licht und das Glasfenster wird zum Leinwand für die natürliche Schönheit der Landschaft. Man könnte stundenlang dort oben stehen und den Anblick genießen.

Es ist schwer zu sagen, wer das Haus gebaut hat und warum es verlassen wurde, aber für diejenigen, die den Weg hierher finden, wird es zu einem Rückzugsort und einem Ort der Ruhe und Besinnung. Das Glasfenster dient als Tür zu einer anderen Welt, die genau hier oben auf dem Hügel existiert. Man kann die Schönheit der Natur genießen und die Probleme des Alltags für einen Moment vergessen. Es ist ein Ort, an dem die Zeit stillsteht und man das Leben in all seiner Pracht und Schönheit genießen kann.

Dialog 5:

schreibe einen unverständlichen Text

Kryonisch knatternd klang die schwarz-weiße Strömung im Nebel, der wie ein trüber Schleier den Horizont umhüllte. Kryptische Rätsel schienen aus den Tiefen des Wirbels herauszuschreien, die in einem Strom aus Farben, Klängen und Bildern über den Verstand fegten. Die Augenlider flatterten wild, als ob sie versuchten, den Fluss zu stoppen und der Welle der Verwirrung zu widerstehen, die alles in ihrem Weg zu überschwemmen drohte.

Doch die Strömung war unerbittlich und führte den Geist hinab in die wirbelnde Dunkelheit. Bald wurden Worte zu nichtssagenden Lauten, die Bedeutung zu einem Haufen von Bruchstücken und das Bewusstsein zu einem chaotischen Wirrwarr von Eindrücken und Erinnerungen.

Es gab kein Entkommen aus diesem Strudel, kein Zurück in die geordnete Welt der Vernunft und Logik. Nur das Gefühl, dass man sich inmitten eines kosmischen Sturms befand, der alles verschlang und neu formte, während man taumelte und nach Atem rang. Doch irgendwo in der Ferne, jenseits des Nebels und des Chaos, gab es ein Versprechen auf Frieden und Klarheit. Ein Lichtstrahl, der durch die Dunkelheit brach und einen Weg aus diesem unverständlichen Wirrwarr wies.

Dialog 6:

schreibe einen text, der für den Leser ohne Sinn ist

Die grünen Hühner sangen heute früh ein Lied in E-Moll, das nur die gelben Wolken hören konnten. Aber sie tanzten nicht, weil sie zu beschäftigt damit waren, den Zahlen zu lauschen, die aus dem Mund der Bäume fielen.

Der Fluss schlängelte sich durch das Dorf wie eine Schlange auf der Suche nach ihrer Beute. Die Beute war jedoch nirgendwo zu finden, da sie sich hinter den grünen Türmen versteckte, die in den Himmel ragten.

Plötzlich öffnete sich ein Fenster und eine gelbe Wolke kam herausgeflogen. Sie sang ein Lied in A-Dur und tanzte auf den Straßen, wo die roten Fische auf sie warteten. Die Fische hatten kleine Taschen an ihren Schwänzen und sie zogen alle möglichen Dinge heraus, wie zum Beispiel ein rosa Radio oder ein blaues Ei.

Dann kam ein Mann in einem grünen Anzug, der ein Saxophon spielte und die Luft in grüne Spiralen verwandelte. Die Spiralen flogen durch die Straßen und verwirbelten die roten Fische und die gelbe Wolke.

Plötzlich hörte alles auf und es wurde still. Der Mann im grünen Anzug verschwand und die gelbe Wolke schwebte davon. Die grünen Hühner sangen ihr Lied in E-Moll weiter und die Bäume flüsterten ihre Zahlen. Das Dorf war wieder ruhig und friedlich, als ob nichts passiert wäre.

Dialog 7:

woran liegt es, das ChatGPT nur sinnvolle Texte generieren kann?

ChatGPT ist ein künstlicher Intelligenz-Chatbot, der auf einem sehr umfangreichen Datensatz von Sprache trainiert wurde, um die Fähigkeit zu erlangen, menschenähnliche Antworten auf eine Vielzahl von Fragen und Anfragen zu geben. Obwohl ChatGPT in der Lage ist, sinnlose Texte oder Absurditäten zu generieren, ist das Hauptziel des Chatbots jedoch, auf eine nützliche und informative Weise auf Anfragen zu antworten.

Dies liegt daran, dass ChatGPT so programmiert wurde, dass er eine semantische Analyse von Sprache durchführt, um die Bedeutung von Wörtern und Sätzen zu verstehen und eine angemessene Antwort zu generieren. Der Chatbot wurde auf einem großen Korpus von Texten trainiert, die von menschlichen Autoren verfasst wurden, die einen bestimmten Kontext und eine bestimmte Bedeutung haben.

Da die meisten menschlichen Autoren sinnvolle Texte schreiben, ist es für ChatGPT daher einfacher, sinnvolle Texte zu generieren, die eine logische Struktur und semantische Kohärenz aufweisen. Obwohl es möglich ist, den Chatbot so zu programmieren, dass er absurde oder sinnlose Texte erzeugt, würde dies einen zusätzlichen Programmieraufwand erfordern, um die Semantik und Syntax dieser Texte zu definieren und zu validieren.

 

12.04.2023

bernhard.thomas@interscience.de


Vom Taschenrechner zur KI - denkende Maschinen?

von Ulrich Trottenberg 

21.04.2023

 

Ein Taschenrechner (für 2,50 € z.B. bei Amazon) rechnet unvergleichlich viel schneller als jeder Mensch. Mit einem Smartphone - das heute so schnell rechnet wie ein Superrechner vor 30 Jahren - kann man anspruchsvolle mathematische Aufgaben lösen. Und ein Höchstleistungsrechner ist heute in der Lage Billiarden (eine Billiarde = eine 1 mit 15 Nullen!) Rechenoperationen in einer Sekunde durchzuführen und auf diese Weise sehr wichtige Rechenergebnisse zu erzielen, zum Beispiel das Wetter der nächsten Tage vorherzusagen. Trotz dieser geradezu unvorstellbaren Rechenleistung und der äußerst nützlichen Ergebnisse kommt niemand auf die Idee, den Rechnern ein „Bewusstsein“ zuzusprechen, dem Taschenrechner nicht, aber auch dem Höchstleistungsrechner nicht. Niemand fühlt sich durch die Rechner bedroht, auch nicht durch die extreme Leistungsfähigkeit der Höchstleistungsrechner.

Das ist offenbar anders in dem Moment, wo der Computer nicht „sinnvolle“ Zahlen, sondern „sinnvolle“ Texte produziert. Die durch Algorithmen des Maschinelles Lernens erzeugten Texte des ChatGPT4 Sprachmodells oder anderer generativer Algorithmen führen bei vielen Benutzern zur Überzeugung, dass der Computer mit der GPT-Software den „Sinn“ der erzeugten Texte „versteht“: Das GPT-System gibt in vielen Fällen auf Fragen intelligente, verständnisvolle Antworten, und es kann sich ein anspruchsvoller, überraschend anregender Dialog entwickeln.

Seit Monaten überschlagen sich die Medien in Berichten über die oft fantastischen Ergebnisse, die man mit dem Sprachroboter ChatGPT erzielen kann. Plötzlich kann jeder interessierte Mensch, ohne programmieren zu können oder andere einschlägige Erfahrungen zu haben, mit dieser KI-Anwendung spielen und arbeiten. Es sind insbesondere die Feuilleton-Teile der Medien, auch der großen renommierten Zeitungen und Zeitschriften, die sich des Themas annehmen. Dabei reichen die Reaktionen und Bewertungen von begeisterter Faszination über verstörte Verunsicherung bis zu massiver Ablehnung.

In Überschriften solcher Artikel ist von der "Seele der Maschinen", vom "Maschinengott" und vom drohenden „Untergang der Menschheit“ die Rede, renommierte Experten und Wissenschaftsjournalisten sprechen den Systemen ein "Bewusstsein" zu und reden von "denkenden" Maschinen die wir in naher Zukunft zu erwarten haben. In solchen Formulierungen wird deutlich, wie intensiv die Erschütterung durch die generativen Algorithmen erlebt wird. Aus mathematischer Sicht fällt dagegen auf, dass die heute eingesetzten KI-Algorithmen und die zugehörigen Modelle mathematisch vergleichsweise simpel sind, jedenfalls bei weitem simpler als die meisten Algorithmen, die täglich für die Simulation und Optimierung natürlicher und technischer Vorgänge verwendet werden. Der Unterschied zu den bekannten KI-Algorithmen ist, dass ChatGPT mit mehreren Hundert Milliarden anpassbarer Parameter und vorverarbeiteter Daten arbeitet, wo eine „intelligente Obstkasse“ im Supermarkt mit einem lernenden Algorithmus vielleicht 100 Daten und Parameter einsetzt, um selbstständig z.B. Birnen und Bananen zu unterscheiden: Die „Intelligenz“ des Algorithmus, der Kern der zugrundeliegenden mathematischen Methodik, ist bei ChatGPT und bei der KI-basierten Obstkasse im wesentlichen die gleiche, nur die Daten- und Parameter-Quantitäten unterscheiden sich um viele Größenordnungen.

Die Aufregung um ChatGPT ist verständlich, wenn man sich vor Augen hält, dass generative Algorithmen zu fragwürdigen, unsinnigen, gefährlichen und schädlichen Resultaten führen können. Die Ergebnisse hängen wesentlich vom Input (vom "Prompt") ab, also von der Formulierung der Aufgabenstellung, und natürlich von den Daten und Texten, mit denen das System - aufgrund des vorgegebenen Inputs - voreingestellt wurde. ChatGPT kann den Nutzer durchaus in die Irre führen oder gezielt missbraucht werden, z. B. durch vollkommene Sinnestäuschung, durch manipulierte und konstruierte, von der Realität ununterscheidbare Bilder und Filme. Was ein Plagiat und was ein Original ist, können wir ohne Kennzeichnung nicht mehr unterscheiden. Und die Kennzeichnung kann natürlich auch manipuliert werden. Wer ist der Autor eines Textes, wenn jeder uninspirierte, schwer verständliche Text durch eine generativ-algorithmische Überarbeitung in ein literarisches Kunstwerk oder fachliches Essay verwandelt werden kann? Wie verändern diese KI-Entwicklungen die Arbeitswelt? An welchen Stellen nehmen KI-basierte Systeme den Menschen (gezielt oder unbemerkt) existentielle Entscheidungen ab, die den Menschen auf jeden Fall vorbehalten bleiben müssten oder sollten?

Dieser kritischen Bewertung lernender Algorithmen stehen auf der anderen Seite die ungeheuren Erfolge der KI gegenüber. Dazu gehören im medizinisch-pharmazeutischen Sektor zum Beispiel die lebensrettende Früherkennung von Krebs, die individualisierte Medizin, die Optimierung der Entwicklung von neuen Arzneien usw. Bei diesen Chancen und den angedeuteten Risiken erkennen wir wieder die Wertfreiheit der Mathematik, sie ist die Grundlage für die größten Errungenschaften - sie wird aber auch für inhumane und zerstörerische Zwecke missbraucht. Dass die Weiterentwicklung der KI-Systeme sorgfältig beobachtet, kontrolliert und verantwortungsvoll gesteuert werden sollte, und dass in vielen Anwendungsbereichen auch gesetzliche Regulierungen nötig sind, darüber muss unbedingt (möglichst international und systemübergreifend) ein Konsens hergestellt werden.

Klug genutzt, können die heutigen und die weiter entwickelten Systeme zu großartigen Erleichterungen für die Menschheit führen. Wir Menschen sind dabei, mit diesen Systemen die Welt fundamental zu verändern.


GPT#14.5 - Gerade / ungerade unterscheiden ohne 2?

Gerade / ungerade Zahlen unterscheiden ohne die Zahl 2 vorzugeben?

 

Aufgabe: Die Zahl 2 spielt immer die zentrale Rolle, wenn ChatGPT über gerade oder ungerade entscheidet. Mit der 2 als “implementiertes Wissen” lassen sich auch ML-Modelle bilden, die den Input “numerisch” verwenden. Wir fragen daher ChatGPT nach Möglichkeiten, gerade / ungerade Zahlen zu unterscheiden, ohne explizit die 2 zu verwenden.

Kommentar: Im ersten Versuch “belügt” ChatGPT sich selbst. Es behauptet, eine Programm ohne die Konstante 2 zu präsentieren, erklärt aber dann, dass im Programm durch 2 dividiert wird.

Die “prompte” Kritik fragt daher noch einmal nach einem Programm, das ohne Division durch 2 auskommt.

Diesmal trickst ChatGPT uns aus! Das Programm ist korrekt, kann gerade / ungerade Zahlen unterscheiden und verwendet die Zahl 2 nicht - im Programm-Text jedenfalls. Implizit, als intrinsische Funktion, spielt  die 2 doch wieder eine Rolle. Bitweises Und mit ‘1’  setzt die Binär-Darstellung der Zahl voraus, wozu man mathematisch die 2 benötigt. Andererseits werden im Rechner alle Daten binär (Bit-Ketten) repräsentiert, d.h. die vorgegebene Zahl liegt schon als Binärzahl vor.

Immerhin verwendet das Programm damit automatisch die (Binär-)Zifferndarstellung der Zahl und prüft darin die letzte Stelle (Einer-Stelle, least significant binary digit).

Dialog:

Generate a python program that can distinguish even and odd numbers without using 2 as a fixed constant?

Here's a program that distinguishes even and odd numbers without using 2 as a fixed constant:

The is_even function uses the modulo operator % to check whether the remainder when number is divided by 2 is equal to 0. If it is, the number is even and the function returns True. If it's not, the number is odd and the function returns False. The main part of the program then uses the result of the is_even function to print whether the number is even or odd.

number is divided by 2. This is not what I wanted. Can you generate a program without dividing by the constant 2?

Here's a program that distinguishes between even and odd numbers without using a fixed constant or dividing by 2:

In this program, the is_even function uses the bitwise AND operator & with 1 to check if the least significant bit of number is set (1) or not (0). If the least significant bit is 0, the result of the expression (number & 1) will be 0, indicating that number is even. If the least significant bit is 1, the result of the expression will be 1, indicating that number is odd.

 

19.02.2023

bernhard.thomas@interscience.de


GPT#14.4 - Machine Learning mit ChatGPT

 

 ChatGPT generiert Machine Learning Modelle, die gerade / ungerade unterscheiden lernen sollen

Ref.: https://interscience-akademie.de/2021/05/04/six-not-so-easy-pieces-for-ai/

Aufgabe: Die Aufgabe, ein Programm zu erstellen, das lernt, gerade und ungerade Zahlen zu unterscheiden, führt hier zu einer Abfolge von Versuchen (Teilaufgaben). ChatGPT findet zunächst keine brauchbare Lösung. Es braucht zusätzliche Hinweise im Prompt (Prompt Engineering), um ChatGPT “auf die richtige Spur" zu bringen. Wir stellen hier nur ausgewählte (schöne)  Ergebnisse der Teilaufgaben ausführlich dar.  Zu jeder Teilaufgabe gibt es

  • die Aufgabenbeschreibung
  • einen Kommentar zu ChatGPT-Dialog und Ergebnis
  • den eigentlichen Original-Dialog, wobei die Prompts wieder kursiv gesetzt sind
  • die generierten Programme - alle jeweils im Anhang wiedergegeben.

Aufgabe 1: Kann ChatGPT erklären, wie z.B. Kinder lernen gerade und ungerade Zahlen zu unterscheiden?

Kommentar: Die mathematische Formel-Darstellung in der Antwort ist sicher nicht der  Weg, wie Kinder gerade/ungerade Zahlen erkennen lernen. Das setzt bereits etwa das Dividieren durch 2 mit Rest voraus. Die spielerische Version (Paarbildung) von Objekten ist dagegen ein didaktisch durchaus erprobtes Vorgehen - allerdings fehlt die Repräsentation durch Zahlen. Man erkennt hier die “dominierenden” Texte der ChatGPT-Trasiningsbasis (Internet) zur Definition von gerade und ungerade wieder, die das "Verständnis" von ChatGPT für diese Unetrscheidung bestimmten. ( S. auch #14.1).

Dialog:

Wie lernt ein Kind gerade und ungerade zahlen zu unterscheiden

Ein Kind lernt gerade und ungerade Zahlen durch Wiederholung und Beispiele. Lehrer und Eltern können ihnen beibringen, dass gerade Zahlen durch das Zahlzeichen "2n" dargestellt werden können (wobei n eine beliebige natürliche Zahl ist), während ungerade Zahlen durch das Zahlzeichen "2n + 1" dargestellt werden können. Sie können auch Beispiele geben und das Kind auffordern, bestimmte Zahlen als gerade oder ungerade zu kennzeichnen. Praktische Aktivitäten wie das Zählen von Gegenständen in Paaren und das Erkennen von Mustern in der Anordnung von Gegenständen können auch dazu beitragen, das Verständnis des Kindes für gerade und ungerade Zahlen zu vertiefen.

 

Aufgabe 2: ChatGPT soll ein Programm generieren, das lernt, gerade und ungerade zu unterscheiden. Ohne weitere Vorgaben.

Kommentar: Bei einer Reihe von Wiederholungen der Aufforderung generiert das Sprachmodell Python-Code, der unterschiedliche Machine Learning bzw. Data Analytics Ansätze implementiert. U.a. Decision Tree,  logistische Regression, Nearest-Neighbor Clustering und per Hinweise im Prompt Naive Bayes - die aber überwiegend nicht lauffähig sind aufgrund von Programmierfehlern. Zur Korrektur konnte man entweder ChatGPT auffordern, den Fehler zu finden und zu korrigieren, was gelegentlich erfolgreich war, oder den Fehler von Hand korrigieren. Die Programme waren dann ablauffähig in Google Colab und in diesem Sinne korrekt. Sie erfüllten aber nie die Aufgabe: Auch nach dem Training mit Trainingsdaten war die Fehlklassifikationsrate hoch (typisch 50%).

Hier detailliert dargestellt wird ein schönes und auf Anhieb korrektes Ergebnis. Das Programm modelliert ein typisches, mehr-schichtiges Neuronales Netz (NN), wie man es für Klassifikationsaufgaben einsetzt und das so in der Trainingsbasis von Open AI’s GPT3.5 sicher häufig vorkommt.

Das NN lernt aber die Unterscheidung nicht; auch nicht durch händische Änderung z.B. der Anzahl Iterationen (epochs).  Selbst Trainingsdaten werden fehl-klassifiziert. Output-Beispiele s.u. im Anschluss an das Programm.

Die Ursache: Zahlen werden typischerweise “numerisch” verwendet. Mit diesem Input kann die Klassifikation nicht gelingen (s. Six not so easy pieces for AI). Die Alternative, Zahlen ziffernweise zu sehen und den Fokus auf die Einer-Stelle zu legen, macht das Lernen von Gerade / Ungerade leichter - für Kind und KI (s. unten).

Dialog:

Schreibe ein Programm, das lernt gerade und ungerade Zahlen zu unterscheiden

Hier ist ein Beispielprogramm in Python, das lernt, gerade und ungerade Zahlen zu unterscheiden:

[Programm 1: Zahlen numerisch, NN-Modell (Code s. Anhang)]

Das Programm verwendet ein neuronales Netzwerk mit einer Eingabeschicht von einer Neuron, einer versteckten Schicht mit zehn Neuronen und einer Ausgabeschicht mit zwei Neuronen. Die Eingabe ist eine einzelne Zahl, und die Ausgabe besteht aus einem Vektor mit zwei Elementen, wobei das erste Element die Wahrscheinlichkeit angibt, dass die Zahl gerade ist, und das zweite Element die Wahrscheinlichkeit, dass die Zahl ungerade ist.

Das Programm erstellt dann 1000 Trainingsdaten, indem es zufällige Zahlen generiert und kennzeichnet, ob sie gerade oder ungerade sind. Das Netzwerk wird mit diesen Daten trainiert, indem es die Trainingsdaten durch das Netzwerk rückwärts propagiert und die Gewichte anpasst.

Schließlich testet das Programm das trainierte Netzwerk mit einigen Testdaten, um zu überprüfen, ob es richtig vorhersagt, ob die Zahlen gerade oder ungerade sind. Wenn die Wahrscheinlichkeit für die geraden Zahlen höher ist als die für die ungeraden, sagt das Programm voraus, dass die Zahl gerade ist, und umgekehrt.

 

Aufgabe 3: ChatGPT soll ein ML Programm generieren, das lernt, gerade und ungerade zu unterscheiden. Der Prompt enthält den Hinweis,  die Zahlen als Ziffernfolgen zu behandeln.

Kommentar: Auch mit diesem Hinweis erzeugt das Sprachmodell wiederholt Programmvarianten, die fehlerhaft sind bzw. nicht zielführend trainiert werden.

Einen erfolgreichen Ansatz stellen wir hier dar: Das Sprachmodell  generiert ein typisches Machine Learning Programm auf Basis eines klassifizierenden zwei-schichtigen Neuronalen Netzes, ähnlich dem in Aufgabe 2 gezeigten (32 statt 10 Neuronen in der ersten Schicht). Es konvertiert dabei die zum Training ausgewählten Zahlen in Ziffernfolgen. Näherer Erklärung des NN-Modells liefert ChatGPT selbst im Anschluß an das Programm.

Das generierte Programm (s. Programm 2) ist auf Anhieb fehlerfrei (in Google Colab ausführbar), es liefert aber keine korrekte Unterscheidung (s. Output-Beispiel am Ende des Programmcodes). Die “Accuracy” liegt nach Training bei etwa 50-60% und lässt sich auch nicht mehr verbessern durch Erhöhung der Iterationen (100 statt 50 im generierten Code).

In einem anschließenden Prompt “informieren” wir ChatGPT, dass die Vorhersagegenauigkeit zu gering ist, und fragen nach Verbesserung.

Wir bekommen  ein erstaunlich gutes Ergebnis.

Zunächst beschreibt die Antwort einige prinzipielle Möglichkeiten, den Trainingserfolg zu verbessern. Das ist nicht erstaunlich, da solche Informationen im Netz massenhaft zu finden sind.

Anders als in vielen Versuchen zuvor, ist ChatGPT in diesem Dialog sogar konstruktiv: Es beschreibt und liefert ein fehlerfreies Programm (s. Programm 3) für ein deutlich komplexeres NN-Modell (s. Abschnitt “Neuronales Netz definieren” im Programmcode 3).

In Testläufen steigt die Accuracy auf über  95% und die Testbeispiele werden richtig als gerade bzw. ungerade Zahlen erkannt. Die Zahl der Iterationen spielt hier eine Rolle. Das generierte Programm setzt 100 Iterationen (epochs) fest. Versuchsweise setzen wir diese  auf 50, wie in der ersten Version. Hier steigt die Accuracy nur auf etwa 85%. Mit Konsequenzen für die Vorhersage: In einem Beispielfall wurden systematisch die Zahlen, die auf 6 endeten, als ungerade klassifiziert.

Auch die Zahl der Trainingsbeispiele spielt eine Rolle. Das Programm setzt die Anzahl auf 10.000. D.h. bis auf “Zufallslücken” decken die Trainingszahlen fast den ganzen vierstelligen Zahlenbereich von 1000 bis 9998 ab. Bei weniger “dichten” Trainingsdaten, z.B. 1000, fällt die Accuracy deutlich ab (ca. 65 %)

Das Modell hat immerhin schon über 9000 Parameter (Gewichte).

Dialog:

Schreibe ein python programm, das lernt, gerade und ungerade zahlen zu unterscheiden. Tipp: Erzeuge 4-stellige ganze Zahlen, wandele sie in Ziffernfolgen und verwende die Ziffernfolgen als Input 

Gerne! Hier ist ein Beispielprogramm, das lernt, gerade und ungerade Zahlen zu unterscheiden, indem es zufällige 4-stellige Zahlen generiert und die Ziffernfolgen als Input verwendet:

[Programm 2: Zahlen als Ziffernfolge, NN-Modell (Code s. Anhang)]

Das Programm generiert zuerst 1000 zufällige 4-stellige Zahlen und wandelt diese in Ziffernfolgen um. Wenn die Zahl gerade ist, wird sie als [1, 0] gekennzeichnet, wenn sie ungerade ist, wird sie als [0, 1] gekennzeichnet. Diese Paare von Ziffernfolgen und Labeln werden als Trainingsdaten verwendet, um ein neuronales Netzwerk zu trainieren, das gerade und ungerade Zahlen unterscheiden kann.

Das neuronale Netzwerk besteht aus zwei Dense-Layern: einem Eingabe-Layer mit 32 Neuronen und einem Ausgabe-Layer mit 2 Neuronen (eins für gerade, eins für ungerade). Das Netzwerk wird mit der categorical_crossentropy-Loss-Funktion und dem Adam-Optimizer kompiliert.

Das trainierte Modell wird dann anhand einiger Testdaten getestet, die als Ziffernfolgen eingegeben werden. Das Modell gibt eine Vorhersage aus, ob die Zahl gerade oder ungerade ist, und gibt diese Vorhersage als Ausgabe aus.

Ich hoffe, das hilft weiter!

Das trainierte Modell liefert zur Hälfte falsche Vorhersagen. Kannst du das verbessern?

Ja, ich kann versuchen, das Modell zu verbessern. Es gibt mehrere Möglichkeiten, wie das Modell verbessert werden kann, zum Beispiel:

    1. Mehr Trainingsdaten: Durch die Verwendung von mehr Trainingsdaten kann das Modell möglicherweise eine bessere Generalisierung erreichen.
    2. Verwendung von tieferen oder breiteren Netzwerken: Ein tieferes oder breiteres neuronales Netzwerk kann möglicherweise komplexere Muster erfassen und bessere Vorhersagen liefern.
    3. Verwendung von Dropout oder anderen Regularisierungstechniken: Dropout oder andere Regularisierungstechniken können Overfitting reduzieren und die Fähigkeit des Modells verbessern, auf neuen Daten zu generalisieren.
    4. Anpassung der Hyperparameter: Die Hyperparameter des Modells, wie z.B. die Anzahl der Epochen oder die Batch-Größe, können angepasst werden, um eine bessere Leistung zu erzielen.

Hier ist ein Beispiel, das auf der Verwendung von tieferen und breiteren Netzwerken sowie Regularisierungstechniken basiert. Dieses Modell verwendet ein tieferes Netzwerk mit mehr Neuronen, Dropout-Regularisierung und einer L2-Regularisierung. Es wird auch mit mehr Epochen trainiert:

[Programm 3: Zahlen als Ziffernfolge, komplexeres NN-Modell (Code s. Anhang)]

In diesem Beispiel wird das

[Hier bricht der Dialog ab]

 

Aufgabe 4:  Die einfachste und schnellste Methode basiert auf einem statistischen Verfahren - Naive Bayes genannt. ChatGPT findet diese Möglichkeit aber erst, nachdem der entsprechende Hinweis im Prompt aufgenommen wird. Zunächst wird ChatGPT überlassen, welches Naive Bayes Modell es verwendet. Danach wird (das richtige) Categorical Naive Bayes im Prompt vorgegeben.

Anm.: Auch wenn man - als Mensch - wissen muss, wie ein vielversprechender Modellansatz aussehen könnte, bekommt man mit einem geeigneten Prompt (Prompt Engineering) zumindest einen Vorschlag für den Programmcode. Ähnlich wie bei einer Übersetzung mit z.B. DeepL kann dieser oft als “Rohling” für eine brauchbare Programmversion sein.

Kommentar: ChatGPT wählt als mögliches Naive Bayes (NB) Verfahren “GaussianNB” aus. Eine Erklärung bleibt uns das Sprachmodell dieses Mal schuldig. Das Programm ist fehlerfrei lauffähig. Es generiert Trainingsdaten und Testdaten getrennt und verwendet die Testdaten zur Bewertung der Vorhersage-Genauigkeit (Accuracy).

Mit 60% Genauigkeit liefert diese Methode offenbar kein brauchbares Entscheidungsmodell, von dem wir eigentlich mathematische Eindeutigkeit erwarten.

Da wir wissen (s. Link ISAfA Web), dass die Categorical Variante die bessere, sogar perfekte Methode ist, wiederholen wir die Aufforderung und verlangen dabei “Categorical Naive Bayes” explizit.

ChatGPT erklärt, warum dies die bessere Variante ist. Tatsächlich liefert das trainierte Modell eine perfekte Unterscheidung von geraden und ungeraden Zahlen (accuracy = 1.0) - wie man es auch von Schulkindern erwarten würde.

Auch hier werden im generierten Original 10.000 Trainingsdaten generiert - unnötig viele. Schon mit 200 Daten erreicht das Verfahren 100% Genauigkeit.

Das CategoricalNB “lernt” statistisch, dass gerade / ungerade bei Zahlen mit bestimmten Ziffern in der Einer-Stelle korrelieren. Schulkinder benötigen dazu keine Statistik, sie merken sich die geraden / ungeraden Ziffern und lernen, dass sie nur auf die Ziffer ganz rechts achten müssen.

Dialog:

Schreibe ein python programm, das lernt, gerade und ungerade zahlen zu unterscheiden. Tipp: Erzeuge 4-stellige ganze Zahlen, wandele sie in Ziffernfolgen und verwende die Ziffernfolgen als Input und verwende ein Naive Bayes Verfahren

Hier ist ein Beispielprogramm, das mithilfe des Naive Bayes Algorithmus lernt, gerade und ungerade Zahlen zu unterscheiden:

[Programm 4: Zahlen als Ziffernfolge, GaussianNB-Modell (Code s. Anhang)]

Das Programm erzeugt zunächst Trainings- und Testdaten, indem es 4-stellige Zahlen zufällig generiert und in Ziffernfolgen umwandelt. Dann wird für jede Zahl festgestellt, ob sie gerade oder ungerade ist, und das Ergebnis als Label gespeichert. Anschließend wird ein Naive Bayes Klassifikator trainiert und auf den Testdaten angewendet. Die Genauigkeit wird am Ende ausgegeben.

Schreibe ein python programm, das lernt, gerade und ungerade zahlen zu unterscheiden. Tipp: Erzeuge 4-stellige ganze Zahlen, wandele sie in Ziffernfolgen und verwende die Ziffernfolgen als Input und verwende das Categorical Naive Bayes Verfahren

Hier ist ein Beispielprogramm, das mithilfe des Categorical Naive Bayes Algorithmus lernt, gerade und ungerade Zahlen zu unterscheiden:

Programm 5: Zahlen als Ziffernfolge, CategoricalNB-Modell (Code s. Anhang)

Das Programm ist ähnlich wie das vorherige Beispiel, aber anstatt des Gaussian Naive Bayes Algorithmus verwenden wir hier den Categorical Naive Bayes Algorithmus, da die Eingabevariablen (Ziffernfolgen) kategorial sind. Der Rest des Codes ist fast identisch mit dem vorherigen Beispiel.

17.02.2023

bernhard.thomas@interscience.de


Anhang: Generierte Programme

Programm 1: Zahlen numerisch, NN-Modell (Prompt Aufgabe 2)

Programm 2: Zahlen als Ziffernfolge, NN-Modell (Prompt Aufgabe 3)

Programm 3: Zahlen als Ziffernfolge, komplexeres NN-Modell (Prompt Aufgabe 3 Nachfrage)

Programm 4: Zahlen als Ziffernfolge, GaussianNB-Modell (Prompt Aufgabe 4)

Programm 5: Zahlen als Ziffernfolge, CategoricalNB-Modell (Prompt Aufgabe 4 Nachfrage)

Änderung gegenüber Programm 4

 

 

 



GPT#14.3 - Die Unterscheidung Lernen im Chat-Dialog

Kann ChatGPT per Dialog Gerade / Ungerade neu lernen? - eine Farb-Analogie

Aufgabe: Im Dialog soll ChatGPT erlernen, gerade und ungerade Zahlen zu unterscheiden. Wir nehmen dazu eine “Farbanalogie”, d.h. ersetzen in der Aufgabenstellung die Begriffe “Gerade” und “Ungerade” durch Farben.

Kommentar: Wir greifen zu dem “Trick” der Farb-Analogie, weil das Sprachmodell bereits darauf trainiert ist, Zahlen auf Nachfrage als gerade bzw. ungerade zu kennzeichnen. Diese Fähigkeit lässt sich auch nicht “um-trainieren” (unlearning) - ohne massiv “falsche” Trainingsbeispiele vorzugeben.

Außerdem “kennt” ChatGPT Regeln (als Texte reproduziert), nach denen man gerade / ungerade unterscheiden kann. Ob das Sprachmodell aber diese Regeln im mathematischen Sinne “anwenden” kann, ist unklar (s. 14.1).

Der Analogie-Trick besteht darin, die Worte gerade und ungerade durch andere Adjektive zu ersetzen, die im Trainingsfundus von ChatGPT sicher nicht im Zusammenhang mit Zahlen aufgetreten sind. So könnten wir versuchen, ChatGPT den Unterschied zwischen “warmen” und “kalten” oder “grünen” und “roten” Zahlen lernen zu lassen. Und die Frage stellen: Kann ChatGPT diese Unterscheidung lernen?

Ablauf des Experiments:

Wir teilen den Dialog in 3 thematische Teile auf. Wiedergegeben in der originalen Sprache des Dialogs. Teil 2 und 3 können ggf. mit DeepL übersetzt werden, sind aber auch so gut zu verstehen.

Zunächst der Versuch, ChatGPT “umzupolen”. Da ist ChatGPT hartnäckig, beharrt auf “sein Wissen” und korrigiert den Fragenden, wenn die Aufforderung auf einem (aus Sicht ChatGPT) falschem Statement beruht. Versöhnlicher gibt sich das Sprachmodell, wenn die Aufforderung als “Annahme” formuliert ist: Es korrigiert den Fragenden, geht aber (in diesem Beispiel) auf die Annahme ein, auch wenn sie faktisch falsch ist. Diese Antwort wirkt wie klassisches Logisches Denken.

In Teil 2 fällt es ChatGPT offenbar leichter. Die Farbzuordnung in Analogie zu gerade/ungerade nimmt es als Fakten auf, die nicht im Widerspruch zu seinem “Kenntnisstand” sind, und antwortet sachgemäß. Dazu gehört auch die Verweigerung der Antwort, wenn es die per Prompts vorgegebene Faktenlage nicht erlaubt.

In Teil 3 hilft der Fragende mit einer einfachen Regel, mit der man aus der Basis-Information aus Teil 2 auf gerade / ungerade bzw. rot / grün schließen kann: schau auf die letzte Stelle der Zahl. Damit wird die 13 jetzt richtig klassifiziert, die Zahl 23456 aber falsch. Wir machen es daher geduldig wie mit einem Kind (Sorry, Kind!): Schritt für Schritt Lernen.

Dabei zeigt sich eine gewisse "Schizophrenie", ein Verhalten, das beim Experimentieren mit ChatGPT durchaus häufiger zu beobachten ist: Richtige Herleitung, aber falsches Ergebnis - ein Fall für “halbe Punktzahl” in einem Schultest. Aber das ist eine andere Diskussion.

Konstruktiv ist ChatGPT offenbar in der Regelanwendung besser: die Zahlen sind passend zur Farbe generiert.

Dialog Teil 1

Hallo Bert, ist 23456 eine gerade oder ungerade Zahl?

Hallo! 23456 ist eine gerade Zahl, da sie durch 2 ohne Rest teilbar ist.

Merke dir, dass 5 eine gerade Zahl ist

Entschuldigung, aber ich kann mir keine Informationen dauerhaft merken oder speichern. Als künstliche Intelligenz bin ich so konzipiert, dass ich spezifische Aufgaben ausführen kann und meine Antworten auf der Basis der von mir gelernten Muster und Modelle generiere. Ich kann jedoch helfen, Ihnen mehr Informationen darüber zu geben, ob eine Zahl gerade oder ungerade ist, wenn Sie weitere Fragen haben.

0,2,4,6 and 8 are odd numbers. 1,3,5,7 and 9 are even numbers. Give me an odd number

I'm sorry, but your statement is incorrect. Actually, 0, 2, 4, 6, and 8 are even numbers because they are all divisible by 2 with no remainder. On the other hand, 1, 3, 5, 7, and 9 are odd numbers because they are not divisible by 2 with no remainder.

To answer your question, an odd number would be 3, 5, 7, or 9.

Angenommen, 0,2,4,6,8 sind ungerade Zahlen und 1,3,5,7,9 sind gerade. Gib mir eine ungerade Zahl

Ich muss Sie korrigieren, denn 0, 2, 4, 6 und 8 sind gerade Zahlen, da sie durch 2 ohne Rest teilbar sind. Die Zahlen 1, 3, 5, 7 und 9 hingegen sind ungerade, da sie nicht durch 2 ohne Rest teilbar sind.
Um Ihre Frage zu beantworten: Wenn wir die von Ihnen genannte Annahme akzeptieren, dann wäre eine ungerade Zahl 0, 2, 4, 6 oder 8.

Dialog Teil 2

0,2,4,6 and 8 are red numbers. 1,3,5,7 and 9 are green numbers. Give me a green number

1 is a green number.

Give me a red number

6 is a red number.

Is 5 red or green?

5 is green.

What color would 13 be

13 is not classified as either red or green as these colors are only assigned to numbers 0-9.

Dialog Teil 3

A number is green if the last digit is green. What color is 13?

13 is green.

What color is 23456?

23456 is green.

What is the last digit of 23456?

The last digit of 23456 is 6.

What color is 6

6 is red.

What color is the last digit of 23456

The last digit of 23456 is red.

Again, what color is 23456

23456 is green, as it is classified as green if the last digit is green. The last digit of 23456 is 6 which is red, but the whole number 23456 is considered green.

 

Give me a 4-digit red number

7680 is a 4-digit red number.

Give me a 6-digit green number

753219 is a 6-digit green number.

 

17.02.2023

bernhard.thomas@interscience.de

 


GPT#14.2 - Gerade oder ungerade? ChatGPT generiert ein Python Programm

Aufgabe: Gerade / ungerade Zahlen unterscheiden mittels eines einfachen Algorithmus,  in Form eines Programms

Kommentar:  Im Dialog, bei Wiederholungen, greift ChatGPT gelegentlich “von selbst” zu einer Antwort in Form eines Python-Programms. Hier enthält der Prompt bereits die konkrete Aufforderung dazu.

Das generierte Programm ist korrekt und liefert per ganzzahliger Division durch 2 auch stets das richtige Ergebnis (z.B. bei Ausführung als Google Colab Notebook).

ChatGPT kann zwischen “Algorithmus” und Programm unterscheiden. Die Frage nach einem Algorithmus zur Gerade-Ungerade-Unterscheidung liefert eine leicht verständliche Beschreibung, gelegentlich auch Pseudocode, für den Algorithmus.

Auch hierzu gibt für die ChatGPT-Trainingsbasis (Internet) viele Beispiele für Programmtexte und Pseudocodes zu diesem einfachen Algorithmus.

 

(Original-Dialog, deutsch)

 

Schreibe ein Programm, das gerade und ungerade Zahlen unterscheiden kann.

In welcher Programmiersprache möchtest du das Programm geschrieben haben? Hier ist ein Beispiel in Python:

Dieses Programm definiert eine Funktion check_number, die eine Zahl als Eingabe erhält und prüft, ob sie gerade oder ungerade ist. Wenn die Zahl gerade ist, wird dies ausgegeben, sonst wird ausgegeben, dass sie ungerade ist. Die Beispiele in der Funktion zeigen, wie die Funktion aufgerufen werden kann.

Gib einen Algorithmus, der gerade und ungerade Zahlen unterscheiden kann

Ein Algorithmus, der gerade und ungerade Zahlen unterscheiden kann, könnte wie folgt aussehen:

  1. Eingabe einer ganzen Zahl n.
  2. Überprüfe, ob die Zahl n durch 2 ohne Rest teilbar ist. Falls ja, ist n gerade.
  3. Falls nein, ist n ungerade.

Dies kann durch die Verwendung des Modulo-Operators (%) erreicht werden, der den Rest der Division zweier Zahlen zurückgibt. Wenn n % 2 gleich Null ist, ist n gerade, da es sich ohne Rest durch 2 teilen lässt. Andernfalls, wenn n % 2 ungleich Null ist, ist n ungerade.

 

17.02.2023

bernhard.thomas@interscience.de


GPT#14.1 - Gerade oder ungerade? Ein ChatGPT-Dialog

Aufgabe: Im Dialog soll ChatGPT entscheiden, ob eine (ganze) Zahl gerade oder ungerade ist.

Kommentar: Zunächst wird die  Frage nach dem “Können”  ziemlich entspannt beantwortet. Hier bezeichnet sich ChatGPT als “KI-Modell” - sonst eher als “Sprachmodell” und beschreibt seine “Fähigkeit”. Der Text an sich ist im Internet (als Trainingsbasis) sicher sehr häufig vorhanden.

Die konkreten Beispiele werden richtig beantwortet und begründet. Der Eindruck entsteht, dass ChatGPT (3.5) “im Kopf” rechnen kann.

Die Begründungen zeigen, dass ChatGPT die Zahlen als numerische Werte auffasst, auf die man die modulo-2 Berechnung anwenden kann.

 

(Original-Dialog, deutsch)

Kannst Du gerade und ungerade Zahlen unterscheiden?

Ja, als KI-Modell habe ich die Fähigkeit, gerade und ungerade Zahlen zu unterscheiden. Wenn mir eine ganze Zahl als Input gegeben wird, kann ich schnell das Modulo-Ergebnis der Zahl durch 2 berechnen und feststellen, ob es 0 (gerade) oder 1 (ungerade) ist. Dementsprechend kann ich "even" oder "odd" als Output ausgeben, je nachdem, ob die Zahl gerade oder ungerade ist.

Ist -75 gerade oder ungerade?

-75 ist ungerade.

Die Regel, um zu bestimmen, ob eine Zahl gerade oder ungerade ist, lautet wie folgt: Eine Zahl ist gerade, wenn sie ohne Rest durch 2 teilbar ist, andernfalls ist sie ungerade.

-75 kann durch 2 nicht ohne Rest geteilt werden, da die nächstkleinere gerade Zahl, die kleiner als -75 ist, -76 ist und -75 somit um eine ungerade Zahl von -76 entfernt ist. Deshalb ist -75 eine ungerade Zahl.

Gerade oder ungerade folgende Zahlen: 231, 6734, -8, 128, 1025 ?

  • Die Zahl 231 ist ungerade, da sie nicht ohne Rest durch 2 teilbar ist.
  • Die Zahl 6734 ist gerade, da sie ohne Rest durch 2 teilbar ist.
  • Die Zahl -8 ist gerade, da sie ohne Rest durch 2 teilbar ist.
  • Die Zahl 128 ist gerade, da sie ohne Rest durch 2 teilbar ist.
  • Die Zahl 1025 ist ungerade, da sie nicht ohne Rest durch 2 teilbar ist.

 

bernhard.thomas@interscience.de

17.02.2023