"Neuronale Netze" vs "Selber denken"

Programmiersprachen, APIs, Bibliotheken, Open Source Engines, Debugging, Quellcode Fehler und alles was mit praktischer Programmierung zu tun hat.

"Neuronale Netze" vs "Selber denken"

Beitragvon Zudomon » 05.11.2017, 23:33

Mich interessiert schon länger eine Frage und durch Krishty's Antwort bei den Artikelempfehlungen bin ich nun doch mal versucht, hier einfach nach euren Meinungen zu fragen.
Allerdings in diesem Thread hier, damit das nicht so durcheinander gerät.

Also wie Verhält es sich tatsächlich mit den neuronalen Netzen? Ich habe da nur recht wenig Erfahrung gesammelt bisher, aber fast jeden Tag hört man, was NN's wieder tolles leisten. Aber ist ein NN wirklich die Antwort auf alle Fragen? Meine Intuition (oder vielleicht ist es nur meine innere Hoffnung) sagt mir, dass man mit NN vielleicht auf einfachere Weise ziemlich weit kommen kann, doch um "noch weiter" zu kommen ist es vielleicht besser, ein Regelwerk aufzustellen bzw. dann wirklich selbst Lösungen zu programmieren.
Was meint ihr? Und wird es bald für alles nur noch NN's geben?
Bild
Benutzeravatar
Zudomon
 
Beiträge: 2066
Registriert: 25.03.2009, 08:20

Re: "Neuronale Netze" vs "Selber denken"

Beitragvon Jonathan » 06.11.2017, 10:56

Ich habe selber wenig mit NNs gearbeitet, höre aber ab und zu mal etwas darüber. Ich bin im Folgenden auch nicht sehr genau mit den Begrifflichkeiten, und verwende NN als eine Art Oberbegriff zu Maschine Learning.

Im Wesentlichen sind Neuronale Netze eine Weiterentwicklung von Klassifizierern und extrahieren letztendlich statistische Verteilungen. Man hat also komplizierte Daten, in denen man keinen rechten Zusammenhang sieht, und das Netz probiert beim Training einfach alles mögliche aus, bis es irgendetwas signifikantes findet. Bei der Textursynthese könnte es dann Beispielsweise herausfinden, das einzelne Blätter eine Baumes irgendwie ähnlich aussehen, und intern Dinge wie "Wie groß sind Blätter" oder "Wie weit sind sie auseinander" speichern. Will man jetzt ein neues Bild generieren, wendet man das ganze einfach rückwärts an und macht aus den Parametern der Verteilungen wieder Bilder. Aber, und das ist wichtig: Das Netz arbeitet nicht auf die selbe Weise wie es ein Mensch tun würde, es weiß nicht tatsächlich, was Blätter sind, es lernt einfach nur irgendwelche Statistiken. Worauf sich diese Statistiken genau beziehen ist kaum nachvollziehbar, im Wesentlichen fungiert das Netz also als Blackbox: Man hat innendrin eine Menge Zahlen und man weiß weder so genau, was sie bedeuten, noch was sie eigentlich tun.

Da Netze anders 'denken' als Menschen sieht ein NN kein Problem darin, ein Pferd mit zwei Köpfen zu generieren - weil es nicht wissen kann, was 'Kopf' bedeutet, und warum es dumm ist, davon zwei zu haben. Andererseits kann es aber auch subtile Zusammenhänge erkennen, die einem Menschen verborgen bleiben. Es kann dir also z.B. auf Amazon vorschlagen, was du kaufen möchtest und damit recht habe, ohne das du oder sonst irgendein Mensch versteht, warum das so ist. Aber es funktioniert.

Menschen würden also semantisch sinnvolle Entscheidungen treffen, aber ihre Semantik reicht nicht unbedingt so weit um alle Nuancen des Problems zu modellieren, wodurch sie ein Stück oberflächlich bleiben.

Zur eigentlichen Frage: Es gibt viele Probleme die man mit neuronalen Netzen lösen kann, manche sind sinnvoll, manche sind sinnlos, aber das hält Menschen nicht davon ab, sie für beide arten von Problemen zu verwenden. Wenn man nur genügend Eingabedaten hat, kann man ein Netz darauf trainieren und wird auch ein Ergebnis bekommen. Das Ergebnis mag auch gut aussehen, insbesondere wenn man es schlecht evaluiert. Aber wenn man Beispielsweise einen sinnvollen mathematischen Zusammenhang hinter Daten vermutet, dann ist es sinnvoller den auch zu suchen. Das ist natürlich schwieriger, aber letztendlich bekommt man eine elegante und sinnvolle Lösung, während hingegen NNs oft quasi auf schwarze Magie hinauslaufen. Weil kein Mensch versteht, was intern passiert, weil es sehr schwierig ist zu sagen, wie man sie am besten trainieren soll und weil man am Ende vielleicht 90% geniale aber 10% unbrauchbare Ergebnisse hat, aber die Fehlerfälle weder erkennen noch verstehen kann.
Und neuronale Netze sind so ein bisschen der Vorschlaghammer: Wenn man sonst keine kluge Idee hat, wird halt irgendetwas auf irgendetwas trainiert und am Ende kommen irgendwelche Ergebnisse raus, die man dann in irgendwelchen Journalen als wissenschaftliche Publikation veröffentlichen kann. Ob man damit aber irgendwie die Menschheit weiterbringt ist fraglich.

Spannend ist natürlich auch die Frage, ob das Gehirn selber nur ein ultimatives Neuronales Netz ist. In gewisser Hinsicht natürlich schon, weil NNs ja nach dem Gehirn modelliert sind, andererseits hat man ja das Gehirn auch nicht zuende erforscht und weiß immer noch nicht, was Bewusstsein, Freier Wille oder Intelligenz eigentlich ist.

(Ich lass das jetzt einfach erstmal so stehen, man wird vermutlich im Laufe der Diskussion nochmal drüberiterieren / Dinge klarstellen wollen)
Lieber dumm fragen, als dumm bleiben!
Benutzeravatar
Jonathan
 
Beiträge: 1153
Registriert: 04.08.2004, 20:06

Re: "Neuronale Netze" vs "Selber denken"

Beitragvon gdsWizard » 06.11.2017, 11:20

Hi Zudo,


die meisten neuronalen Netze sind Assoziativ-Speicher. D.h. sie speichern zu einem bestimmten Eingangsmuster ein bestimmtes Ausgangsmuster. Das kann man für Handschrifterkennung, Spracherkennung oder ähnliches nutzen. In den letzten Jahren hat es wieder Fortschritte mit Netzen, die mit Gates arbeiten, gegeben. Dein Beispiel mit der Hochrechnung von Grafiken muss ich mir aber erst noch genauer ansehen. Viel weiss ich aber auch nicht. Vielleicht hilft es jemandem wenn ich noch schreibe das sie ihre Informationen hauptsächlich in den Verbindungen und nur minimal im Neuron (eher indirekt) im Schwellwert speichern.

Diese Netze können also nicht selber denken, sondern nur mit Mustern arbeiten.
gdsWizard
Thomas Mittelsdorf
 
Beiträge: 206
Registriert: 04.02.2005, 10:12
Wohnort: Meiningen
Benutzertext: www.gamedevstudio.com

Re: "Neuronale Netze" vs "Selber denken"

Beitragvon Helmut » 06.11.2017, 12:17

Mit neuronalen Netzen kann man nicht nur Muster erkennen, sondern auch Entscheidungen treffen lassen. Siehe Reinforcement Learning. DeepMind hat damit z.B. Atari Spiele und Go besser als Menschen spielen lassen.
Von Intelligenz im Sinne, wie es ein Mensch hat, ist das noch weit entfernt, allerdings muss man auch bedenken, dass der Mensch so viele Neuronen im Gehirn hat, dass man das heute noch nicht simulieren kann. Selbst wenn man jede Verbindung nur mit einer Zahl approximiert. Nach groben Schätzungen dauert das wohl noch 10-20 Jahre.
Helmut
 
Beiträge: 226
Registriert: 11.07.2002, 15:49
Wohnort: Bonn

Re: "Neuronale Netze" vs "Selber denken"

Beitragvon Alexander Kornrumpf » 06.11.2017, 12:26

Im Beitrag von Krishty, der oben verlinkt ist, muss man drei Dinge unterscheiden:

1) Wie ist das Problem "am besten" zu repräsentieren? Krishty schlägt hier DCT vor, ich habe das Paper nicht gelesen, ich weiß nicht was die machen. Wie dem auch sei, es gibt, wie wir alle wissen, viele Arten ein Bild zu repräsentieren, und welche man davon wählt hat einen Einfluss auf das Ergebnis. Diese Erkenntnis hat nichts mit Neuronalen Netzen per se zu tun.

2) Gegeben eine Repäsentation, welcher Algorithmus ist der "beste"? In Data-Mining-Lingo schlägt Krishty hier nach meinem Verständnis sowas wie Nearest Neighbour vor. Kann im Einzelfall besser funktionieren kann aber auch nicht. Per No Free Lunch Theorem ist das nicht allgemein zu beantworten. Grundsätzlich ist es aber meines Wissens best practice, ein paar vergleichsweise einfache Algorithmen, wie z. B. Nearest Neighbour, zum Vergleich heranzuziehen. Ob das im Paper gemacht wurde oder ob "schon jeder weiß", dass das hier nicht taugt und sie deswegen nur mit dem state-of-the-art vergleichen, weiß ich wiederum nicht.

3) Gibt es eine effiziente Implementierung? Muss ich vermutlich nicht weiter kommentieren.

Die aktuelle Situation ist soweit ich es beurteilen kann:

a) Computing Power ist viel billiger geworden, vor allem billiger zu kommisionieren (Cloud) und Player die eh Serverfarmen rumstehen haben (Google) interessieren sich für die Technologie, deswegen fällt 3) weniger stark ins Gewicht als noch vor 10 Jahren.

b) Nachdem Neuronale Netze jahrelang mehr oder weniger eine Sackgasse waren, gab es jetzt ein paar gute Ideen, bzw. alte Ideen sind per a) computationally feasible geworden, und das erlaubt die Lösung einer Klasse von Problemen, die vorher nicht zugänglich waren. Diese Klasse ist groß und augenscheinlich bedeutsam, wird aber auch irgendwann erschöpft sein.

c) Neuronale Netze machen nicht magisch, dass man sich die Fragen 1) bis 3) oben nicht mehr stellen muss. Wirklich offen im Sinne der Eingangsfrage dieses Threads ist nur, ob diese Fragen in der unter b) beschriebenen Klasse liegen (aka Singularität). Die Antwort darauf ist: Wir wissen es nicht.
Alexander Kornrumpf
Moderator
 
Beiträge: 1610
Registriert: 25.02.2009, 14:37

Re: "Neuronale Netze" vs "Selber denken"

Beitragvon Zudomon » 06.11.2017, 13:02

(PS: Alexanders Beitrag war noch nicht da, als ich geschrieben habe)

Ich sehe das ganze genauso wie ihr.
Und damit komme ich dann auch zu der Vermutung, dass man vielleicht 80% der Vorgaben mit einem NN erreichen kann, aber es dann schwer ist noch wirklich weiter zu kommen. Da eben dieses NN als eine Blackbox fungiert.

Schauen wir uns mal ein einfaches Beispiel an damit ich so meine Überlegungen verdeutlichen kann:
Wir haben eine kleines Schwarz/Weiß Bild und wollen darauf nur ungedrehte, zentrierte und in größe etwa gleiche Buchstaben erkennen. Vielleicht nur, ob es sich um ein A oder B handelt. Also Eingangseben das Bild, Ausgang zwei Neuronen, die die Antwort bereitstellen, dazwischen ein paar Schichten Neuronen. Dem ganzen verpasst man jetzt das erste Beispiel... und schon werden alle Neuronen so gestellt, dass bei exakt gleichem Bild auch exakt das richtige Ergebnis rauskommt. Trainiert man jetzt mit einem zweiten Bild zusätzlich, dann bildet sich quasi ein Mittelwert. Je nachdem wie nun im Eingangsbild Pixel geschaltet sind, kommt entweder das eine oder andere Ergebnis. Das Training hilft ja nun, es zu einem Optimimum zu bringen. Ich merke schon, wenn ich darüber schreibe, dass es mir schwer fällt das in Worte zu fassen. Worauf ich hinaus will ist, dass intern quasi ganz Diffuse "Vorstellungen" von A und B entstehen, wenn man das Netz genug trainiert, die Buchstaben auch mal minimal verschiebt usw.
Das ganze System bleibt deterministisch, sofern dann das Netz nicht mehr weiter lernt. Also bei einem gleichen Eingangsbild kommt man immer zu dem gleichen Ergebnis.
Soweit zumindest, wie ich mir das bei einem NN vorstelle.
Nun ist die Frage, wie man ohne NN zu einem gleichen oder besseren Ergebnis kommen kann? Ich denke schon, dass da auch ein System möglich wäre... wenn man z.B. die Ecken, Kanten und Kreuzungen findet, dann bekommt man für A und B ganz bestimmte Kriterien. Erst hab ich daran gedacht, vielleicht auch diffuse die Hotspots der Pixel zu erkennen, die ja dann grob die Form der Buchstaben erkennen. So wie es ein NN macht. Aber wenn wir nun tatsächlich nur A und B betrachten fällt mir auf, dass das A eine umschließende Fläche hat, das B aber zwei. Damit müsste man nur noch ermitteln, wie viele geschlossene Flächen existieren. :shock:
Aber das verdeutlicht nun doch sehr gut, was ich meine. Programmierer sind vielleicht viel besser in der Lage, echte Zusammenhänge zu erkennen. Abstrakte Kriterien zu finden und damit vielleicht auf 90% (oder vielleicht eher auf 70%, ich weiß es ehrlich gesagt nicht :D ) zu kommen, wenn man mit den NN's auf besagte 80% käme. Und den großen weiteren Vorteil, den ich halt nun sehe ist eben der, das man weiß, wie man zu dem Ergebnis kommt und das nun verbessern und verfeinern kann. In diesem Fall wäre allerdings auch ein Nachteil, dass ein dahin gekrickeltes A unb B nicht erkannt würden, wenn diese Regel mit den umschlossenen Flächen verletzt würde. Man müsste dann vielleicht weitere Regeln finden und besser präzisieren. Wie hier schon erwähnt, ist ein NN wie mit einem Vorschlaghammer. Da könnte man dann erstmal alle Fälle erfassen.
Das waren so meine Gedanken dazu.
Bild
Benutzeravatar
Zudomon
 
Beiträge: 2066
Registriert: 25.03.2009, 08:20

Re: "Neuronale Netze" vs "Selber denken"

Beitragvon Krishty » 06.11.2017, 14:56

Zudomon hat geschrieben:Mich interessiert schon länger eine Frage und durch Krishty's Antwort bei den Artikelempfehlungen bin ich nun doch mal versucht, hier einfach nach euren Meinungen zu fragen.
Alexander Kornrumpf hat geschrieben:Im Beitrag von Krishty, der oben verlinkt ist, muss man drei Dinge unterscheiden:


Ich möchte die Skepsis im Beitrag kurz erläutern, damit keine Missverständnisse entstehen:

  • Ich habe bisher nicht mit NN gearbeitet. Ich würd’s sehr gern, aber ich bin einfach noch nicht dazu gekommen. Behandelt alles, was ich schreibe, als Hörensagen und Trollerei.

  • Auch wenn vieles an Neuronalen Netzen magisch erscheint, ist es im Kern recht einfach. Hier sind z.B. die (aus dem Zusammenhang gerissenen) Daten, mit denen ein hoch trainiertes Netzwerk Dinge unterscheidet (Quelle):
    Bild

  • Ich möchte nicht sagen, dass jede Leistung eines neuronalen Netzes am Ende auf sowas simples hinausläuft. Die Wahrscheinlichkeit, dass dein superkluges Netzwerk, das so gut im Identifizieren von Katzen ist, letzendlich nur auf die Gegenwart eines bestimmten Orange-Tons oder eines vertikalen Balkens in der Bildmitte prüft, ist aber recht hoch.

  • Solche Dinge kriegt man auch mit konventioneller Programmierung hin, und dann zur Laufzeit sehr viel Mal schneller.

  • Das Problem ist nur, drauf zu kommen. Das entfällt bei NN. Man schmeißt einfach tausendfach Trainingsdaten rein, und das NN findet schon einen (höchstwahrscheinlich nicht effizienten) Weg.

  • Weil Entwicklungszeit teurer ist als Ausführungszeit (insbesondere seit Beginn der 2010er!), und NN die Entwicklungszeit stark verkürzen (gute Trainingsdaten finden statt knifflige Probleme selber lösen), sieht das so aus, als könnten NNs plötzlich alles mögliche lösen, was vorher keiner geschafft hat.

  • Sie sind im Grunde Ei-des-Kolumbus-Maschinen. Der wirkliche heilige Gral wäre, die automatisch erzeugten Lösungswege von NNs zu extrahieren, zu vereinfachen (sicher kein lösbares Problem), und bei befriedigender Qualität nochmal konventionell zu programmieren.

  • Das wäre auch der teuerste, aufwändigste Weg mit marginal besserem Endergebnis. Typische Krishty-Lösung.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Krishty
 
Beiträge: 6025
Registriert: 26.02.2009, 12:18
Benutzertext: state is the enemy

Re: "Neuronale Netze" vs "Selber denken"

Beitragvon Alexander Kornrumpf » 06.11.2017, 21:38

Krishty hat geschrieben:
Alexander Kornrumpf hat geschrieben:Im Beitrag von Krishty, der oben verlinkt ist, muss man drei Dinge unterscheiden:


Ich möchte die Skepsis im Beitrag kurz erläutern, damit keine Missverständnisse entstehen:



Ob Missverständnisse entstanden sind weiß ich nicht. Da zu mich zitierst möchte ich meinerseits klarstellen, dass ich deine Skepsis im anderen Thread im Kern für valide halte. Die Frage die man sich immer stellen sollte ist ob es eine dumme Methode gibt, die es besser kann.

Hier sind z.B. die (aus dem Zusammenhang gerissenen) Daten, mit denen ein hoch trainiertes Netzwerk Dinge unterscheidet (Quelle)


Ich verstehe die Quelle da anders. Das Bild zeigt nach meinem Verständnis was "a Linear Classifier (e.g. Softmax)" auf einer 64*64 Auflösung gelernt hat. Es geht darum zu illustrieren, dass NN gegen die gleiche Attacke anfällig sind wie einfachere Verfahren. Er erreicht damit wenn ich es richtig verstehe ~3% accuracy, was furchtbar wäre, aber darum geht es an der Stelle auch gar nicht. ConvNet, wenn man es nicht angreift, scheint 85% oder mehr zu erreichen (? wieso ist das nicht trivial googlebar ?). Außerdem ist der Trick bei den Convolution NNs, soweit ich weiß gerade, dass sie die volle Auflösung verarbeiten können, weil sie das Bild in ein Grid aufteilen und die einzelnen Gitterkästchen durch denselben Filter jagen (statt einen Filter in voller Auflösung zu lerrnen). Das ist schon ein Unterschied wie Tag und Nacht. Oder verstehe ich es falsch?

Ich möchte nicht sagen, dass jede Leistung eines neuronalen Netzes am Ende auf sowas simples hinausläuft. Die Wahrscheinlichkeit, dass dein superkluges Netzwerk, das so gut im Identifizieren von Katzen ist, letzendlich nur auf die Gegenwart eines bestimmten Orange-Tons oder eines vertikalen Balkens in der Bildmitte prüft, ist aber recht hoch.


Du sagst das als wäre es etwas Negatives. Das Gegenteil ist der Fall. Man will ja gerade das einfachst mögliche Modell, das eine bestimme Performance erreicht. Das Problem an der Orange = Katze Regel ist nicht, dass sie a priori einfach ist, sondern dass sie a posteriori schlecht performt. Würde sie funktionieren, was wäre deine Kritik?

Solche Dinge kriegt man auch mit konventioneller Programmierung hin, und dann zur Laufzeit sehr viel Mal schneller.

...

Weil Entwicklungszeit teurer ist als Ausführungszeit (insbesondere seit Beginn der 2010er!), und NN die Entwicklungszeit stark verkürzen (gute Trainingsdaten finden statt knifflige Probleme selber lösen), sieht das so aus, als könnten NNs plötzlich alles mögliche lösen, was vorher keiner geschafft hat.


Die Mannjahre konventionelle Programmierung, die gegen Go angerannt und gescheitert sind, sagen das Gegenteil. Go als KI-Problem hat als Beispiel den Vorteil, dass es alt ist und schon erforscht wurde als Rechenzeit noch vergleichsweise teuer gegen Entwicklerzeit war. Ich denke nicht dass du argumentieren kannst, niemand hätte mal gescheit über Go nachgedacht, weil Rechenleistung ja so billig ist.
Alexander Kornrumpf
Moderator
 
Beiträge: 1610
Registriert: 25.02.2009, 14:37

Re: "Neuronale Netze" vs "Selber denken"

Beitragvon smurfer » 06.11.2017, 21:50

Hallo zusammen,

ganz so einfach wie hier dargestellt, ist es mit den NNs nicht unbedingt. Auch Krishtys Beispiel ist nicht sonderlich repräsentativ dafür, wie einfach es im Kern ist, denn im Paper steht auch ganz klar, dass es ein linearer Klassifikator ist, um gerade die Darstellung zu vereinfachen. Es ist momentan sehr stark in Mode, die neuronalen Netze darauf hin zu untersuchen, auf welche Teile der Eingangsdaten sie "sich konzentrieren" und wie sie in den verschiedenen Schichten abstrahieren.
Ein paar Zusammenhänge:
- Künstliche neuronale Netze sind Machine-Learning-Verfahren, allerdings ist nicht jedes Machine-Learning-Verfahren ein NN.
- Die NNs hatten schon vor vielen Jahren einen gewissen Boom, allerdings maßgeblich mit geringer Performance wegen fehlender Rechenpower und zumeist nur 3 (vollvernetzten) Schichten
- Der heutige Hype um die Deep-Neural-Networks (DNNs) wegen der deutlichen Leistungssteigerung basiert zum einen auf der Hardware, zum anderen darauf, dass die Methoden etwas angepasst wurden und vor allem Vorwissen über die Datenquelle genutzt wird, bzw. Konzepte aus anderen Bereichen einfließen. Die Schichten in den modernen tiefen Repräsentationen (Convolutional Layer, Pooling Layer,...) sind altbewährte Prinzipien aus der Bildverarbeitung/Mustererkennung (vgl. Faltung/Filterung, Unterabtastung), bei denen die Parameter trainiert werden und nicht statisch vorgegeben sind. Somit geht man nicht mehr blind mit vollvernetzten Schichten auf die Daten los, sondern bringt z.B. mittels Autoencodern den Netzen gewissermaßen Bildverabeitung bei.

Der Vergleich zu expliziten Regeln ist daher eher ein fließender Übergang statt ein Vergleich: Explizite Regelwerke kommen heute schnell an ihre Grenzen und nehmen an Komplexität zu bis sie nicht mehr handhabbar sind. An dieser Stelle setzen Machine-Learning-Verfahren an, da die Regeln implizit gelernt werden. Sie bieten, gerade heute mit den DNNs, einen riesigen Parameterraum, was aber auch bedeutet, dass ich mit expliziten Regeln nicht mehr weit kommen würde. Die Zusammenhänge, die große Netze heute abbilden, lassen sich explizit nicht mehr formulieren (jede mögliche Verbindung im Netz stellt ja gewissermaßen einen Regelpfad dar).

Selber denken kann aber dennoch von Vorteil sein. Wenn ich einen Zusammenhang mit einem einfachen Modell und entsprechendem Regelwerk abbilden kann, sollte ich das tun und nicht mit Kanonen auf Spatzen schießen. Schließlich lassen sich explizite Regeln deutlich besser absichern, da ich jeden Pfad manuell nachvollziehen kann. Nur mit nahezu unendlich Zeit wäre dies bei einem DNN möglich (wenn es auch deterministisch ist).
smurfer
 
Beiträge: 57
Registriert: 25.02.2002, 15:55

Re: "Neuronale Netze" vs "Selber denken"

Beitragvon Krishty » 06.11.2017, 22:05

Alexander Kornrumpf hat geschrieben:
Krishty hat geschrieben:Hier sind z.B. die (aus dem Zusammenhang gerissenen) Daten, mit denen ein hoch trainiertes Netzwerk Dinge unterscheidet (Quelle)

Ich verstehe die Quelle da anders. Das Bild zeigt nach meinem Verständnis was "a Linear Classifier (e.g. Softmax)" auf einer 64*64 Auflösung gelernt hat. Es geht darum zu illustrieren, dass NN gegen die gleiche Attacke anfällig sind wie einfachere Verfahren. Er erreicht damit wenn ich es richtig verstehe ~3% accuracy, was furchtbar wäre, aber darum geht es an der Stelle auch gar nicht. ConvNet, wenn man es nicht angreift, scheint 85% oder mehr zu erreichen (? wieso ist das nicht trivial googlebar ?). Außerdem ist der Trick bei den Convolution NNs, soweit ich weiß gerade, dass sie die volle Auflösung verarbeiten können, weil sie das Bild in ein Grid aufteilen und die einzelnen Gitterkästchen durch denselben Filter jagen (statt einen Filter in voller Auflösung zu lerrnen). Das ist schon ein Unterschied wie Tag und Nacht. Oder verstehe ich es falsch?
Ich verstehe das so:

  1. Ja, du siehst richtig: Die Quelle spricht über Exploits auf NNs. Er zeigt das an einem einfachen Verfahren, weil man da am einfachsten nachvollziehen & visualisieren kann, wie die Klassifizierung intern arbeitet.

  2. Ich habe die Quelle nicht wegen Exploits, Fehlerrate, oder dem verwendeten Verfahren ausgewählt. Ich habe sie ausgewählt, weil sie dieses wundervolle Beispielbild hat, das einem zu verstehen hilft, wie solche Klassifizierungen letzendlich funktionieren: Ähnlichkeit eines Bildes mit erlernten Reizen suchen (wie nennt man die, ich würde intuitiv Stereotypen sagen?), die immer stark generalisiert sind.

  3. Bei fortschrittlicheren Verfahren sehen die Interna anders aus – Grid statt in Vollauflösung, wie du sagst. Weniger linear von der Eingabe abhängig. Stärker/schwächer verrauscht, je nach Lernmethode.

  4. Nichtsdestotrotz laufen auch fortschrittliche Verfahren ähnlich ab, oder? (Keine rhetorische Frage, ich würde es wirklich gern wissen.) Je ähnlicher ein Bild einem erlernten Stereotyp sieht, desto sicherer die Klassifizierung, die das Netz ausspuckt. Als Illustration, dass NNs keine magische Black Box sind, sondern solche Klassifizierungen im Kern „einfach“ gelöst sind (nicht zwingend beim Go-Spielen, sondern bei Bilderkennung, da entsprang ja auch Zudos Frage) ist das doch dann weiter gültig, oder? Nachtrag: smurfer sagt „nicht sonderlich“ :D Wo können wir mehr darüber lernen?

Alexander Kornrumpf hat geschrieben:Man will ja gerade das einfachst mögliche Modell, das eine bestimme Performance erreicht. Das Problem an der Orange = Katze Regel ist nicht, dass sie a priori einfach ist, sondern dass sie a posteriori schlecht performt. Würde sie funktionieren, was wäre deine Kritik?
Meine Kritik ist, dass ich einen Test „ist Pixel in der Bildmitte Orange?“ in unter 100 Rechenoperationen löse. Lasse ich ein geschichtetes NN darauf los, braucht das mindestens eine Milliarde Rechenoperationen. Ich denke, dass Zudo genau diese Angst hat und durch den Thread fragen will: „Wird das wirklich passieren? Macht mein Netz am Ende so etwas Triviales, obwohl ich so viel Rechenleistung reinpumpe?“

Alexander Kornrumpf hat geschrieben:Die Mannjahre konventionelle Programmierung, die gegen Go angerannt und gescheitert sind, sagen das Gegenteil. Go als KI-Problem hat als Beispiel den Vorteil, dass es alt ist und schon erforscht wurde als Rechenzeit noch vergleichsweise teuer gegen Entwicklerzeit war. Ich denke nicht dass du argumentieren kannst, niemand hätte mal gescheit über Go nachgedacht, weil Rechenleistung ja so billig ist.
Ja, sehr gutes Argument. Die entsprechenden Google-Berichte muss ich mir wirklich mal durchlesen. Hast du einen guten Einstieg?
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Krishty
 
Beiträge: 6025
Registriert: 26.02.2009, 12:18
Benutzertext: state is the enemy

Re: "Neuronale Netze" vs "Selber denken"

Beitragvon smurfer » 06.11.2017, 22:09

Krishty hat geschrieben:Ich möchte nicht sagen, dass jede Leistung eines neuronalen Netzes am Ende auf sowas simples hinausläuft. Die Wahrscheinlichkeit, dass dein superkluges Netzwerk, das so gut im Identifizieren von Katzen ist, letzendlich nur auf die Gegenwart eines bestimmten Orange-Tons oder eines vertikalen Balkens in der Bildmitte prüft, ist aber recht hoch.

Würde ich so erstmal bezweifeln, bzw. das gilt nur dann, wenn es nichts vergleichbar ähnliches gibt. Ein solches Netz wird aber -- falls superklug -- auch Katzen von orangen Balken unterscheiden können, die Merkmale sind deutlich komplexer. Gerade zu Google-/Alex-/Squeeze-Net oder anderen gibt es etliche Darstellungen, was in den Schichten passiert und es ähnelt Bildverarbeitungsoperatoren, die deutlch komplexer sind.
Krishty hat geschrieben:Solche Dinge kriegt man auch mit konventioneller Programmierung hin, und dann zur Laufzeit sehr viel Mal schneller.

Falls es so einfach ist, sollte man es auch tunlichst machen, rote Kreise muss ich im Bild nicht mit neuronalen Netzen suchen, andernfallss
Krishty hat geschrieben:Das Problem ist nur, drauf zu kommen. Das entfällt bei NN. Man schmeißt einfach tausendfach Trainingsdaten rein, und das NN findet schon einen (höchstwahrscheinlich nicht effizienten) Weg.

Falls das Problem hinreichend komplex ist, wirst Du wahrscheinlich mit einer expliziten Formulierung nicht darauf kommen können. Und das Netz findet dann überhaupt einen Weg. Ist das Problem weniger komplex, gebe ich dir recht, die Leute werden faul.
Krishty hat geschrieben:Weil Entwicklungszeit teurer ist als Ausführungszeit (insbesondere seit Beginn der 2010er!), und NN die Entwicklungszeit stark verkürzen (gute Trainingsdaten finden statt knifflige Probleme selber lösen), sieht das so aus, als könnten NNs plötzlich alles mögliche lösen, was vorher keiner geschafft hat.
Sie sind im Grunde Ei-des-Kolumbus-Maschinen. Der wirkliche heilige Gral wäre, die automatisch erzeugten Lösungswege von NNs zu extrahieren, zu vereinfachen (sicher kein lösbares Problem), und bei befriedigender Qualität nochmal konventionell zu programmieren.

Wie gesagt, bei einfacheren Problemen gebe ich dir vollkommen recht. Ist das Problem allerdings sehr komplex und muss ein entsprechendes Netz einen Großteil des Parameterraums auch ausnutzen, sehe ich schlechte Karten für explizite Formulierungen. Nur werden wie oben beschrieben die Leute gerne faul und nutzen für jeden kleinen Mist ein Netz (wie auch früher bei SVMs, Adaboost, etc.).
smurfer
 
Beiträge: 57
Registriert: 25.02.2002, 15:55

Re: "Neuronale Netze" vs "Selber denken"

Beitragvon smurfer » 06.11.2017, 22:21

Krishty hat geschrieben:[*]Nichtsdestotrotz laufen auch fortschrittliche Verfahren ähnlich ab, oder? (Keine rhetorische Frage, ich würde es wirklich gern wissen.) Je ähnlicher ein Bild einem erlernten Stereotyp sieht, desto sicherer die Klassifizierung, die das Netz ausspuckt. Als Illustration, dass NNs keine magische Black Box sind, sondern solche Klassifizierungen im Kern „einfach“ gelöst sind (nicht zwingend beim Go-Spielen, sondern bei Bilderkennung, da entsprang ja auch Zudos Frage) ist das doch dann weiter gültig, oder? Nachtrag: smurfer sagt „nicht sonderlich“ :D Wo können wir mehr darüber lernen?[/list]

Ist die Frage, was Du unter "einfach gelöst" verstehst. Jeder Faltungskern bewertet die Ähnlichkeit der Pixel zu diesem Faltungskern, egal ob man es nun Filter, Faltungskern, Impulsantwort oder sonstwie nennt. Ein Mittelwertfilter bewertet das was der Kern darstellt, eine homogene Fläche, besonders stark, ein Hochpassfilter einen hochfrequenten Impuls, wie es ein dargestellter Filterkern suggeriert. Und Faltungskerne sind tatsächlich noch simpel. Mit Deiner Aussage ist schwer umzugehen. Natürlich möchte ich einen gelernten Stereotyp als solchen erkennen. Aber das heißt auch "Gesicht gelernt -- Gesicht erkannt" aber das ist eben nicht so einfach. Und ist nicht ein einfacher Pixelvergleich der im Mittel am besten passt. Die Dinge aus der klassischen Bildverarbeitung lassen sich auch in den Schichten wiederfinden, nur deutlich komplexer: Faltungen, Skalenräume, Frequenzbänder etc.
Nachtrag:
Das Problem beim maschinellen Lernen liegt häufig beim Training, vielleicht ist Überanpassung (Overfitting) ein Begriff. Je simpler ich versuche mich "einfach" einem Beispielbild anzupassen, desto größer die Wahrscheinlichkeit, meine Trainingsdaten exakt wiederzuerkennen, aber bei neuen Daten zu versagen. Abstrahiert man stärker, wird man mit bei neuen Daten zwar besser, wird aber gewissermaßen ungenauer und kann sehr ähnliche aber zu trennende Klassen eben nicht mehr trennen. Hier ist oft viel Tuning gefragt. Mit dem riesigen Parameterraum der heutigen Netze lässt es sich recht gut abstrahieren, die im Training erkannten Muster in den tieferen Schichten würde ich dann aber nicht mehr als einfache Ähnlichkeit von Bildern bezeichnen. Natürlich erkennt man bei detektierten Gesichtern in den Schichten irgendwo so etwas wie früher "Eigenfaces" in der Gesichtserkennung. Aber es ist eben nicht nur eine Gesichtserkennung, gleichzeitig werden Fahrzeuge, Elefanten, Bäume, Häuser und ähnliches mit dem selben Verfahren/Netz abstrahiert. Das macht die tiefen Schichten dann nicht mehr "sonderlich" :) nachvollziehbar, da es eben entsprechende komplexe Zusammenhänge sind, die als Muster erkannt werden.
Krishty hat geschrieben:Meine Kritik ist, dass ich einen Test „ist Pixel in der Bildmitte Orange?“ in unter 100 Rechenoperationen löse. Lasse ich ein geschichtetes NN darauf los, braucht das mindestens eine Milliarde Rechenoperationen. Ich denke, dass Zudo genau diese Angst hat und durch den Thread fragen will: „Wird das wirklich passieren? Macht mein Netz am Ende so etwas Triviales, obwohl ich so viel Rechenleistung reinpumpe?“

Da bin ich komplett bei euch, wie oben schon geschrieben, man wird faul und lässt die Netze auf alles los.
smurfer
 
Beiträge: 57
Registriert: 25.02.2002, 15:55

Re: "Neuronale Netze" vs "Selber denken"

Beitragvon Jonathan » 06.11.2017, 22:56

Ich möchte an dieser Stelle noch kurz mein derzeitiges Lieblingsbeispiel für den sinnvollen Einsatz von Machine Learning vorstellen: Aus Schwarz/Weiß-Bildern Farbbilder generieren. Das Problem ist offensichtlich unterbestimmt, man kann weiß nicht, ob der Apfel grün oder rot war, alle Informationen über Farbtöne sind unwiederbringlich verloren. Aber man kann eine plausible Lösung finden. Und der beste Ansatz dazu, ist sich zu überlegen, wie Objekte mit bestimmten Formen denn normalerweise aussehen würden. Baumkronen haben beispielsweise ein sehr charakteristisches Muster, also ist es leicht zu sagen, dass dieser Teil grün eingefärbt werden muss. In dem Paper (Name habe ich vergessen) wurden dann auch klassische Fehlerfälle gezeigt, etwa wurde die Decke in einem Büroflur plötzlich blau, weil eine homogene Fläche im oberen Teil des Bildes als Himmel interpretiert wurde.
Regelbasiert, oder explizit-programmiert kommt man bei diesem Problem glaube ich überhaupt nicht weiter. Und es ist vollkommen legitim, das Problem datengetrieben zu lösen, schließlich machen wir Menschen das ja genauso. Und wie gesagt, kann man das Problem auch gar nicht richtig, sondern nur plausibel lösen.
Lieber dumm fragen, als dumm bleiben!
Benutzeravatar
Jonathan
 
Beiträge: 1153
Registriert: 04.08.2004, 20:06

Re: "Neuronale Netze" vs "Selber denken"

Beitragvon smurfer » 06.11.2017, 23:08

Noch ein letzter Nachtrag für heute, Thema Autoencoder:

Bei Autoencodern wird dem Netz im Training nicht der Output Blume, Haus oder Tiger bei entsprechendem Bildinhalt vorgegeben, sondern der Output soll dem Input entsprechen. Allerdings werden zu den mittleren Schichten hin immer weniger Neuronen verwendet (und anschließend wieder auf Originalgröße aufgebläht). Somit muss dass Netz stark und gut abstrahieren, um den Input bei jeder Art von Bild wieder zu rekonstruieren. Wenn dies nun mit Millionen von Bildern gemacht wird, lernt das Netz nicht Blumen, Häuser oder Bäume zu detektieren, sondern optimal Bildverarbeitung zu betreiben, sprich Bilder bzgl. der bildinhaltlichen Bedeutung zu abstrahieren. Dafür mal eben ein vergleichbares explizites Regelwerk zu schreiben ist nicht ganz so einfach.
Der Vollständigkeit halber: Trenne ich diese Netze bei der mittleren, kleinsten Schicht auf und nehme den vorderen Teil, habe ich ein Netz, welches Bildverbeiten kann und kann dahinter mein spezielles Problem hängen. Daher sind die vortrainierten Netze, die alle Welt verwendet, auch so beliebt. Egal ob Google nun Tiger, Blumen oder Schrauben auf den Bildern hat, deren Netz kann Bildverarbeiten und damit auch (mithilfe meiner Daten und dem speziellen Teil des Netzes) orange Balken finden.
smurfer
 
Beiträge: 57
Registriert: 25.02.2002, 15:55

Re: "Neuronale Netze" vs "Selber denken"

Beitragvon Zudomon » 06.11.2017, 23:34

Krishty hat geschrieben:Ich denke, dass Zudo genau diese Angst hat und durch den Thread fragen will: „Wird das wirklich passieren? Macht mein Netz am Ende so etwas Triviales, obwohl ich so viel Rechenleistung reinpumpe?“

Meine Angst ist eigentlich, ob es sich noch lohnt z.B. Schrifterkennung, Gesichtserkennung, Spracherkennung usw. noch auf konventionelle Wege zu lösen oder nur noch NN's/DNN's dafür genutzt werden. Also auch in Zukunft.
Die Frage ist für mich, kommt man vielleicht doch noch weiter, wenn man sowas nicht über Neuronale Netzte löst, weil man es anders und per Hand macht, statt "faul" zu sein.
Wie ja erwähnt benötigt das ganze ja auch viel Feintuning.
Ich glaube, Gesichts- und Spracherkennung funktionieren heute deswegen so gut, weil eben so viele Trainingsdaten zur Verfügung stehen... ich möchte gar nicht wissen, woher genau Google und Co. ihre ganzen Trainingsdaten tatsächlich beziehen :lol:
Oder anders gesagt, werden wir hier später auch weg rationalisiert? Braucht es in ein paar Jahren kein ZFX mehr, weil alles eh von NN's erstellt, geregelt und gesteuert wird? Hobbyspieleentwicklung mit eingeschlossen...
Bild
Benutzeravatar
Zudomon
 
Beiträge: 2066
Registriert: 25.03.2009, 08:20

Nächste

Zurück zu Programmiersprachen, Quelltext und Bibliotheken

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste