web-dev-qa-db-de.com

verarbeitung von Textzeichenfolgen für die Eingabe eines neuronalen Netzwerks

Ich verstehe, dass die Eingabe von ANN normalisiert, standardisiert usw. werden muss. Lassen Sie die Besonderheiten und Modelle verschiedener ANN beiseite. Wie kann ich UTF-8-kodierten Text innerhalb des Bereichs von {0,1} oder alternativ zwischen den beiden vorverarbeiten Bereich {-1,1}, bevor er als Eingabe für neuronale Netzwerke eingegeben wird? Ich habe dies bei Google gesucht, finde aber keine Informationen (ich verwende möglicherweise den falschen Begriff).

  1. Ist das sinnvoll?
  2. Ist das nicht wie Text für neuronale Netze vorverarbeitet?
  3. Gibt es Alternativen?

EDIT 20-November-2013 :

Ich habe die Antwort von Pete lange als richtig akzeptiert. Allerdings habe ich ernsthafte Zweifel, hauptsächlich aufgrund der jüngsten Forschungen, die ich zu symbolischem Wissen und zu ANN durchgeführt habe.

Dario Floreano und Claudio Mattiussi erklären in ihrem Buch, dass eine solche Verarbeitung tatsächlich möglich ist, indem Distributed Encoding verwendet wird.

Wenn Sie eine Google-Gelehrten-Suche versuchen, gibt es eine Fülle von neurowissenschaftlichen Artikeln und Papieren darüber, wie die verteilte Kodierung von Gehirnen zur Kodierung von symbolischem Wissen angenommen wird.

Teuvo Kohonen , in seinem Artikel "Self Organizing Maps" erklärt:

Man könnte meinen, dass die Anwendung der Neuronalen Anpassungsgesetze auf einen Symbolsatz (der als ein Satz von Vektorvariablen betrachtet wird) eine Topographische Karte erzeugen könnte, die die "logischen Abstände" zwischen den Symbole. Es tritt jedoch ein Problem auf, das in der unterschiedlichen Natur von Symbolen im Vergleich zu kontinuierlichen Daten liegt. Bei letzteren zeigt sich die Ähnlichkeit Immer auf natürliche Weise, da die metrischen Unterschiede Zwischen ihren fortlaufenden Kodierungen liegen. Dies gilt nicht mehr für Diskrete, symbolische Elemente wie Wörter, für die keine Metrik Definiert wurde. Es liegt in der Natur eines Symbols, dass seine Bedeutung Von seiner Kodierung getrennt ist.

Kohonen hat es jedoch geschafft, mit symbolischen Informationen in SOMs umzugehen!

Darüber hinaus beschäftigt sich Prof. Dr. Alfred Ultsch in seinem Artikel "Die Integration neuronaler Netze mit Symbolischer Wissensverarbeitung" genau mit der Verarbeitung von symbolischem Wissen (z. B. Text). in ANN. Ultsch bietet die folgenden Methoden zur Verarbeitung von symbolischem Wissen an: Neuronales Approximatives Denken, Neuronale Vereinigung, Introspektion und Integriertes Wissenserwerb. Es gibt jedoch nur wenige Informationen zu denen in Google Scholar oder sonstwo.

Pete hat in seiner Antwort Recht auf Semantik. Semantiken in ANNs sind normalerweise getrennt. Die folgende Referenz gibt Aufschluss darüber, wie Forscher RBMs verwendet haben, die darauf trainiert wurden, Ähnlichkeiten in der Semantik verschiedener Word-Eingaben zu erkennen. Daher sollte es nicht unmöglich sein, eine Semantik zu haben, sondern würde einen mehrschichtigen Ansatz oder ein sekundäres ANN erfordern, wenn Semantik erforderlich ist .

Natural Language Processing mit subsymbolischen neuronalen Netzen, Risto Miikkulainen, 1997Zum Training eingeschränkter Boltzmann-Maschinen auf Wortbeobachtungen, G.E.Dahl, Ryan.P.Adams, H. Aaronochelle, 2012

25
Ælex

Ich werde fortfahren und unsere Diskussion als Antwort hier zusammenfassen.

Ihr Ziel ist es, Text in Ihr neuronales Netzwerk integrieren zu können. Wir haben festgestellt, dass traditionelle ANNs nicht wirklich für die Analyse von Text geeignet sind. Die zugrunde liegende Erklärung, warum dies so ist, basiert auf der Idee, dass ANN Eingaben verwenden, die im Allgemeinen einen kontinuierlichen Wertebereich darstellen, und die Nähe von zwei Werten für eine Eingabe bedeutet eine Art Nähe in ihrer Bedeutung. Wörter haben diese Vorstellung von Nähe nicht und daher gibt es keine echte numerische Kodierung für Wörter, die als Eingabe in ein ANN sinnvoll sein kann.

Auf der anderen Seite ist eine Lösung, die möglicherweise funktioniert, die Verwendung einer eher traditionellen semantischen Analyse, die möglicherweise Stimmungsbereiche für eine Liste von Themen erzeugt, und diese Themen und ihre Stimmungswerte könnten möglicherweise als Eingabe für ein ANN verwendet werden.

18
Pete

Als Antwort auf Ihre Anmerkungen ist Ihr vorgeschlagenes Schema nicht ganz sinnvoll. Eine künstliche Neuronenausgabe repräsentiert naturgemäß einen kontinuierlichen oder zumindest einen binären Wert. Es ist nicht sinnvoll, eine große diskrete Aufzählung (wie UTF-8-Zeichen) und den durch einen Fließkommawert dargestellten kontinuierlichen Bereich abzubilden. Das ANN verhält sich notwendigerweise so, dass 0,1243573 eine sehr gute Annäherung an 0,1243577 ist, wenn diese Zahlen leicht auf das Zeilenvorschubzeichen und das Zeichen "a" abgebildet werden könnten, das beispielsweise nicht gute Annäherungen zueinander wäre überhaupt .

Ehrlich gesagt gibt es keine sinnvolle Darstellung für "allgemeine Unicode-Zeichenfolge" als Eingaben in ein ANN. Eine vernünftige Darstellung hängt von den Besonderheiten Ihrer Tätigkeit ab. Es hängt von Ihren Antworten auf die folgenden Fragen ab:

  • Erwarten Sie, dass Wörter in den Eingabezeichenfolgen im Gegensatz zu Zeichenblöcken angezeigt werden? Welche Wörter erwarten Sie in den Saiten?
  • Wie ist die Längenverteilung der Eingabestrings?
  • Was ist die erwartete Entropie der Eingabestrings?
  • Gibt es ein domänenspezifisches Wissen darüber, wie die Zeichenfolgen aussehen sollen?

und am wichtigsten

  • Was versuchst du do mit dem ANN. Dies ist nicht etwas, das Sie ignorieren können.

Möglicherweise haben Sie ein Setup, für das es eine no translation gibt, die es Ihnen tatsächlich erlaubt, do was Sie mit dem neuronalen Netzwerk wollen. Solange Sie diese Fragen nicht beantworten (in Ihren Kommentaren oben gehen Sie um sie herum), ist es unmöglich, eine gute Antwort zu geben. 

Ich kann ein Beispiel antworten geben, das funktionieren würde, wenn Sie zufällig bestimmte Antworten auf die obigen Fragen geben würden. Wenn Sie beispielsweise Zeichenfolgen mit beliebiger Länge einlesen, die jedoch aus einem kleinen Wortschatz von durch Leerzeichen getrennten Wörtern bestehen, würde ich ein Übersetzungsschema vorschlagen, bei dem Sie N Eingaben machen, eine für jedes Wort im Vokabular, und ein wiederkehrendes neuronales verwenden Netzwerk, um die Wörter nacheinander einzugeben, indem der entsprechende Eingang auf 1 und alle anderen auf 0 gesetzt werden.

10
Jeremy Salwen

Ich denke, es wäre faszinierend, Text (kodiert auf Charakterebene) in ein tiefes Glaubensnetzwerk einzugeben, um zu sehen, welche Eigenschaften der Sprache sie entdecken kann.

In letzter Zeit wurde viel an der Neural Network Language-Modellierung gearbeitet (hauptsächlich auf der Wortebene, aber auch auf der Zeichenebene).

Siehe diese Links für weitere Informationen 

http://www.stanford.edu/group/pdplab/pdphandbook/handbookch8.htmlhttp://code.google.com/p/Word2vec/

Die Word-Vektoren werden durch das Training auf einem großen Korpus von Wikipedia-Artikeln usw. codiert und konnten semantische und syntaktische Merkmale erwerben, wodurch eine "Entfernung" zwischen ihnen definiert werden kann.

"Es wurde kürzlich gezeigt, dass die Word-Vektoren viele sprachliche Gesetzmäßigkeiten erfassen, beispielsweise ist Vektoroperationsvektor ('König') - Vektor ('Mann') + Vektor ('Frau') dem Vektor ('Königin') nahe.

Lesen Sie auch dieses großartige Forschungspapier von Ilya Sutskever über das Generieren von Zufallszeichen, die die Merkmale der englischen Sprache zeigen, nachdem sie auf Wikipedia trainiert wurden. Tolles Zeug!

http://www.cs.toronto.edu/~ilya/pubs/2011/LANG-RNN.pdfhttp://www.cs.toronto.edu/~ilya/ rnn.html (Online-Demo zur Textgenerierung - sehr cool!)

7
swami

Es ist nicht genau klar, was Sie zu tun versuchen, aber ich schätze, dass es in gewissem Sinne damit zusammenhängt, was die Leute "natürliche Sprache" nennen. Es gibt viele Referenzen dazu ... Ich bin kein Experte, aber ich weiß zum Beispiel, dass es einige interessante Referenzen von O'Reilly gibt. 

Aus der NN-Perspektive gibt es viele verschiedene NN-Modelle. Ich denke, Sie beziehen sich auf das bekannteste Multilayer-Perzeptron mit einer Art Backpropagation-Algorithmus, aber es gibt viele Modelle des assoziativen Gedächtnisses, die für Ihren Fall geeigneter sind. Eine sehr gute Referenz dazu ist das Simon Haykin-Buch.

Wenn ich jedoch so etwas versuchen wollte, würde ich anfangen zu verstehen, wie häufig Buchstaben, Silben und Wörter in englischer Sprache (?) Zusammenkommen. 

Ich hoffe, dass ich geholfen habe. Wie ich bereits sagte, bin ich kein Experte auf diesem Gebiet. 

2

Lösung 1: A = Alt (65) = 65 Bin = 01000001

Lösung 2: Wörter zur Wörterbuchdatenbank hinzufügen und Feld id (int) hinzufügen. Feld id in binär konvertieren.

Verwenden Sie in NN Buchstaben oder Wörter id (in binär)

0
user3557421