Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.net  
   

Die mobilen Seiten von c++.net:
https://m.c-plusplus.net

  
C++ Forum :: Rund um die Programmierung ::  DeepCoder: KI programmiert     Zeige alle Beiträge auf einer Seite Auf Beitrag antworten
Autor Nachricht
DeepCoder
Unregistrierter




Beitrag DeepCoder Unregistrierter 00:15:17 21.03.2017   Titel:   DeepCoder: KI programmiert            Zitieren

Gerade gelesen:

http://www.gulli.com/news ....... n-geklaut-wird-2017-02-23

Was haltet Ihr davon, eine KI, die mehr oder weniger selbstständig Programme schreibt? Kann das funktionieren?
SeppJ
Global Moderator

Benutzerprofil
Anmeldungsdatum: 10.06.2008
Beiträge: 28204
Beitrag SeppJ Global Moderator 06:39:55 21.03.2017   Titel:              Zitieren

Gefühlte 90% der menschlichen Programmierer gehen so vor. Bei KIs dieser Sorte ist es oft eine gute Idee, erst nachzumachen, was der Mensch tun würde, und dann von dort aus zu verbessern.

_________________
Korrekte Rechtschreibung und Grammatik sind das sprachliche Äquivalent zu einer Dusche und gepflegter Kleidung.
muemmel
Mitglied

Benutzerprofil
Anmeldungsdatum: 16.10.2007
Beiträge: 3682
Beitrag muemmel Mitglied 19:59:13 22.03.2017   Titel:              Zitieren

Hi,

natürlich kann man auch KI zum schreiben konkreter Programme nutzen. Aber aleine entstehen die Programme dadurch auch nicht. Und erst recht nicht werden dadurch die Softwareentwickler überflüsig.
Vielleicht passiert das mal in fernerer Zukunft, wenn es androide Roboter gibt, die wie wir in die Welt gehen und dort die Aufgabenfinden und Umsetzen (siehe Ltn. Comander Data aus Raumschiff Enterprise).
Als ich angefangen habe gab es immer jede Menge Wunschträume von Sprachen der 3. und 4. und 5. Generation und noch weiter, die dann fast alles von alleine machen. Als Beispiel sei hier nur mal Prolog genannt. Wobei das noch eine sehr zurückhaltende Hoffnung war. Weitergehende Ideen gingen z.B. von der Sprache Mandala aus, wo man die Programme oder in dem Fall besser die Aufgaben als Bilder entwerfen sollte und der Computer dann danach arbeitete. Alles träumte von High-Level-Sprachen und deren wundersamer Wirksamkeit. Nur, wer von Euch kennt Prolog und hat schon mal damit gearbeitet? Und gibt es in diesem Forum (außer mir) überhaupt noch einen, der schon mal was von der Programmiersprache Mandala gehört hat?
Obwohl die Rechner immer leistungsfähiger werden, programmieren wir immer mehr mit Low-Level-Sprachen wie C und den davon abgeleiteten Produkten C++, C#, Java...
Für streng schematisierte Aufgaben wie Datenbankabfragen wird auch gerne mal eine höher angesiedelte Abfragesprache wie SQL benutzt, aber kaum einer würde auf den Gedankenkommen einen Compiler oder ein Betriebssystem in SQL zu programmieren.
Der Grund ist ein ganz einfacher. Der Mensch ist ein handelndes Wesen. Sein Denken ist auf das Handeln und nicht auf das Wünschen ausgerichtet (Fruaen beim Shoppe mal eindeutig ausgenommen ;) ).
Es fällt den Menschen einfach leichter, zuu beschreiben, wie etwas zu tun ist, als einen Ist-Zustand und einen Soll-Zustand zu beschreibern und dann die entsprehcenden Transfgormationsbedingungen festzuzurren damit das eine eindeutig aus dem anderen generiert wird.
Auf gar keinen Fall kommt man damit zum Überflüssig werden der Softwareentwickler, denn anstatt zu sagen wie es gamcht wird muss nun auf einer viel höheren Abstraktionsebene der Soll und Ist-Zustand und die Rahmenbedingungen beschrieben werden. Für die meisten Menschen vermutlich nicht realisierbar.

Gruß Mümmel

_________________
Muemmel ante portas
bekennender Maskulinist der schon länger hier lebt
Bitte ein Bit
Mitglied

Benutzerprofil
Anmeldungsdatum: 24.10.2007
Beiträge: 1678
Beitrag Bitte ein Bit Mitglied 14:59:50 23.03.2017   Titel:              Zitieren

Zitat:
Was haltet Ihr davon, eine KI, die mehr oder weniger selbstständig Programme schreibt? Kann das funktionieren?

Ich bin da ein wenig skeptisch.

Leider kann ein Computer nicht kombinieren. Also müsste ein Computer mittels Brute Force solange Kombinationen von Anweisungen und Softwarefragmenten durchprobieren, bis das gewünschte Ergebnis herauskommt. Und hier kommt der Fluch der Komplexität. Der Suchraum ist gewaltig. Ein Programm aus 20 Anweisungen hat einen Suchraum von 20! = 2.43*10^17, 30 Anweisungen einen Suchraum von 2.65*10^32. Ab einer gewissen Größe wird jeder Rechner streiken. Sei er auch noch so groß...

Bei einigen Spielen (Go, N-Dame Problem) kann man den Suchraum sehr gut eingrenzen. Wohl auch weil ein Greedy Ansatz (weniger Steine im Feld = schlechterer Zug) einigermaßen greift und die Anzahl von Zügen pro Zug sich in Grenzen hält.

Aber bei der Programmierung gibt es keine solche Ansätze. Weder ist die Anzahl der (möglichen) Züge relativ gering, noch kann man ein gutes Programm (=gute Stellung) schwer von einem schlechtem Programm (=schlechte Stellung) unterscheiden und so den Fortschritt bewerten.
SeppJ
Global Moderator

Benutzerprofil
Anmeldungsdatum: 10.06.2008
Beiträge: 28204
Beitrag SeppJ Global Moderator 15:26:54 23.03.2017   Titel:              Zitieren

Bitte ein Bit schrieb:

Aber bei der Programmierung gibt es keine solche Ansätze. Weder ist die Anzahl der (möglichen) Züge relativ gering, noch kann man ein gutes Programm (=gute Stellung) schwer von einem schlechtem Programm (=schlechte Stellung) unterscheiden und so den Fortschritt bewerten.
:confused: Du hast in der Programmierung in aller Regel doch ein genau definiertes Ergebnis zu dem du möchtest. Das kann man doch super testen, ob man sich diesem nähert.

_________________
Korrekte Rechtschreibung und Grammatik sind das sprachliche Äquivalent zu einer Dusche und gepflegter Kleidung.
Bitte ein Bit
Mitglied

Benutzerprofil
Anmeldungsdatum: 24.10.2007
Beiträge: 1678
Beitrag Bitte ein Bit Mitglied 16:28:00 23.03.2017   Titel:              Zitieren

Zitat:
Du hast in der Programmierung in aller Regel doch ein genau definiertes Ergebnis zu dem du möchtest. Das kann man doch super testen, ob man sich diesem nähert.
Genau da liegt der Hund begraben.

Was heißt nähern?

Nehmen wir mal an ich möchte das meine KI ein Programm entwickelt, welches einfache mathematische Ausdrücke (Beispiel: 1+2*7+3*4) auswertet. Nun möchte ich dies (bitte verzeih mir) auf einer mehrbändigen Turing Maschine laufen lassen. Nun startet die KI mit drei Teilprogrammen. Das erste Programm schiebt das Band um 1 vorwärts, das zweite Programm schreibt eine 1 auf das Band, das dritte Programm liest die Zelle. Welches Programm ist nun näher am Ergebnis?

Logisch würde man erst einmal sagen, das die komplette Eingabe eingelesen werden muss. Aber dies stimmt so nicht ganz. Erst muss 2*7 ausgelesen, berechnet und durch 14 ersetzt werden. Danach muss 3*4 ausgewertet werden und durch 12 ersetzt werden und danach die einzelnen Additionen berechnet werden.

Deswegen die Frage: Was heißt nähern? Wie lautet eine gute Heuristik?
gdfgfdfgdgd
Unregistrierter




Beitrag gdfgfdfgdgd Unregistrierter 16:39:33 23.03.2017   Titel:              Zitieren

Zitat:
Nehmen wir mal an ich möchte das meine KI ein Programm entwickelt, welches einfache mathematische Ausdrücke (Beispiel: 1+2*7+3*4) auswertet. Nun möchte ich dies (bitte verzeih mir) auf einer mehrbändigen Turing Maschine laufen lassen. Nun startet die KI mit drei Teilprogrammen. Das erste Programm schiebt das Band um 1 vorwärts, das zweite Programm schreibt eine 1 auf das Band, das dritte Programm liest die Zelle. Welches Programm ist nun näher am Ergebnis?


letztlich geht es ja auch darum, einen Parse Tree zu erstellen.
Ein ähnliches Problem stellt ja NLP dar. Und dafür wird meines Wissens bereits mit Deep Learning Ansätzen gearbeitet. Man braucht halt eine Form von rekursiven Strukturen, aber auch das gibt es ja mittlerweile in Form von Recurrent NN bzw. deren praktikablere Ausformung als LSTM vorhanden.
Klar, zum Trainieren braucht man irgendeine Loss Funktion, die angibt, wie "schlecht/gut" das Ergebnis derzeit ist, um dann die Parameter des NN nachjustieren zu können. Aber eventuell wirst du ja fündig wie das bei NLP gemacht wird, und so ähnlich könnte ich mir das auch bei mathematischen Ausdrücken vorstellen. Wenn man erstmal einen mathematischen Ausdruck geparst hat, so ist das Ausrechnen dann ja ziemlich einfach.
C++ Forum :: Rund um die Programmierung ::  DeepCoder: KI programmiert   Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.net ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info und www.c-plusplus.net enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.