Textklassifi kation mit neuronalen Netzen und klassischen ...€¦ · Knowledge Engineering (KE)...

45
Textklassifikation mit neuronalen Netzen und klassischen Modellen Technischer Bericht Nr. 2019-01 Michael Kass

Transcript of Textklassifi kation mit neuronalen Netzen und klassischen ...€¦ · Knowledge Engineering (KE)...

  • Textklassifi kation mit neuronalen Netzen und klassischen Modellen

    Technischer Bericht Nr. 2019-01

    Michael Kass

  • Die Autoren machen diesen Bericht unter den Bedingungen der Creative Commons Attribution License (http://creativecommons.org/licenses/by/3.0/de/) öffentlich zugänglich. Diese erlaubt die uneingeschränkte Nutzung, Vervielfältigung und Verbreitung, vorausgesetzt Autor und Werk werden dabei genannt. Dieses Werk wird wie folgt zitiert:

    M. Kass: „Textklassifikation mit neuronalen Netzen und klassischen Modellen.“ Technischer Bericht Nr. 2019-01, Hochschule Niederrhein, Fachbereich Elektrotechnik und Informatik, 2019

    IMPRESSUM

    Technische Berichte des Fachbereichs Elektrotechnik und Informatik,

    Hochschule Niederrhein

    ISSN 2199-031X

    HERAUSGEBER

    Christoph Dalitz und Steffen Goebbels

    Fachbereich Elektrotechnik und Informatik

    ANSCHRIFT

    Hochschule Niederrhein

    Reinarzstr. 49

    47805 Krefeld

    http://www.hsnr.de/fb03/technische-berichte/

  • Textklassifikation mit neuronalen Netzen und klassischen Modellen

    Michael KassAnother Monday Service GmbH Deutschland

    Brüsseler Straße 89 – 93, 50672 Kö[email protected]

    ZusammenfassungDieser technische Bericht soll einen Einblick in aktuelle Methoden des überwachten Lernens zur automati-

    schen Klassifikation von Textdokumenten geben. Dazu werden Classifier auf einer Teilmenge eines Datensatzesvon 199 768 Notizen zu Störmeldungen eines deutschen Telekommunikationsunternehmens trainiert. Der Fokusliegt dabei auf aktuellen Architekturen neuronaler Netze, insbesondere Convolutional Neural Networks (CNN)und Recurrent Neural Networks (RNN), die Gegenstand aktueller Forschung sind. Diese Architekturen wurdenunter Zuhilfenahme der Bibliotheken scikit-learn1 und TensorFlow2 implementiert, um mit einer dafür angefer-tigten Testumgebung in Hinblick auf ihre Erkennungsrate, ihre Geschwindigkeit und ihre Skalierbarkeit evaluiertzu werden. Unter den gleichen Kriterien werden zudem klassische Modelle wie Bayes-Classifier und logistischeRegression für einen Vergleich herangezogen. Zusätzlich wird untersucht, welche Parameter dieser Modellebezüglich dieser Kriterien optimiert werden können. Dabei kann gezeigt werden, dass logistische Regressiongute Ergebnisse für jede Datensatzgröße liefert, bei sehr großen Datenmengen jedoch von neuronalen Netzen,insbesondere RNNs, übertroffen wird.

    1 Einleitung

    In vielen Anwendungsgebieten der Informationsverar-beitung ist es erforderlich, Freitexte, die keiner vorherfestgelegten Form entsprechen, zu verarbeiten. EineTeildisziplin ist als automatische Textklassifikation be-kannt: Dabei wird jedem Text (bzw. Dokument) jeweilseine von n vordefinierten Klassen (oder Kategorien)durch ein als Classifier bezeichnetes Programm zuge-wiesen3. Die resultierende Klasse kann dann genutztwerden, um mit dem Dokument weiter zu verfahren –eine unstrukturierte, prinzipiell beliebig große Einga-be führt dabei zu einer eindeutigen Entscheidung; dieskann etwa zum E-Mail-Routing, also dem Einsortierenvon eingehenden E-Mails in thematisch angemessenePostfächer, eingesetzt werden.

    Ein sehr einfacher Classifier kann die Anwesenheit vonSchlüsselwörtern prüfen und auf dieser Basis eine Ent-scheidung treffen. Komplexere Regeln können formu-liert werden, indem nicht nur die Anwesenheit, sondernauch die Häufigkeit von Wörtern oder Wortkombinatio-

    1http://scikit-learn.org/2https://www.tensorflow.org/3Die allgemeinere Form der Klassifikation, bei der jedes Doku-

    ment einen reellwertigen Zugehörigkeitsgrad zu jeder Klasse hat,wird hier im weiteren nicht behandelt, kann jedoch ebenfalls mitden hier vorgestellten Verfahren durchgeführt werden.

    nen überprüft wird. Diesen Ansätzen ist gemein, dasssie mit dem Wissen eines mentschlichen Experten auf-gestellt werden, weshalb sie als regelbasiertee Klassifi-kation bzw. Knowledge Engineering (KE) bezeichnetwerden [1].

    Um diesen Schritt, der für jede Problemstellung spe-zifisches Fachwissen benötigt, zu vermeiden, werdenheutzutage Methoden eingesetzt, die Classifier ohnedas manuelle Definieren von Regeln erstellen. Die-se Ansätze bedienen sich statistischer Modelle undMethoden und sind ein Teilgebiet des Machine Lear-ning (ML). Dazu wird zunächst die Architektur desClassifiers formuliert, und anschließend wird dieser miteinem möglichst großen Datensatz trainiert, um die Pa-rameter so zu setzen, dass die Ausgabe des Classifiersmöglichst gut den tatsächlichen Klassen der Eingangs-daten entspricht. Diese Trainingsmethoden werden alsüberwachtes Lernen (supervised learning) bezeichnet,da die tatsächlichen Klassen (die ground truth) bekanntsind und als Richtwert für das Training dienen. Eindurch ein solches Verfahren trainierter Classifier arbei-tet zwar deterministisch, hat also eindeutige Regeln,die jedoch eher implizit die passende Klasse auswählenund nicht dem für Menschen intuitiv verständlichen

    ”Wenn-Dann“-Format entsprechen. Daher werden die-se Ansätze mitunter als nicht regelbasiert bezeichnet.

    Technischer Bericht Nr. 2019-01, Hochschule Niederrhein, Fachbereich Elektrotechnik & Informatik (2019)

    http://scikit-learn.org/https://www.tensorflow.org/

  • Kass: Textklassifikation Technischer Bericht 2019-01

    Dieser technische Bericht basiert auf meiner bis Au-gust 2018 an der Hochschule Niederrhein durch-geführten Masterarbeit, für die ich einige aktuelleAnsätze zur Testklassifikation, deren Ergebnisse demStand der Technik entsprechen, evaluiert habe. DieseModelle werden hier vorgestellt und die Ergebnisseder Evaluation wiedergegeben. Im Unterschied zu bis-herigen Veröffentlichungen, die meist eine Auswahlaus englischsprachigen Datensätzen ohne einen zu-grundeliegenden realen Anwendungsfall verwenden,habe ich dazu einen Datensatz aus 199 768 Notizen zuStörmeldungen, die von Technikern eines deutschen Te-lekommunikationsunternehmens geschrieben wurden,herangezogen. Eines der Ziele war dabei auch, die sotrainierten Modelle in einer Produktivumgebung ein-zusetzen. Die getesteten Modelle werden in klassischeModelle und die aktuell populären neuronalen Netzeunterteilt, die in den Abschnitten 2.3 und 3 beschrie-ben werden, nachdem die gemeinsamen Grundlagenin Abschnitt 2 erläutert wurden. Abschnitt 4 geht dannauf die Architektur der getesteten neuronalen Netze ein,d. h., wie die unterschiedlichen Komponenten neuro-naler Netze, die zuvor vorgestellt wurden, kombiniertwerden, um einen vollständigen Classifier zu konstru-ieren. In Abschnitt 5 werden die mit diesen Modellendurchgeführten Tests beschrieben und deren Ergebnissegedeutet. Schließlich werden die wichtigsten Ergebnis-se im Fazit in Abschnitt 6 noch einmal zusammenge-fasst.

    2 Grundlagen

    In diesem Kapitel werden die Grundlagen der eingesetz-ten Modelle und Algorithmen kurz erklärt, bevor diesein den folgenden Kapiteln näher vorgestellt werden.

    2.1 Repräsentation der Daten

    Um für die Klassifikation nutzbare Features aus Textengewinnen zu können (Feature Extraction), muss derText in eine geeignete Darstellung überführt werden.Ein einfacher Ansatz besteht darin, das Auftreten jedesWortes als ein Feature zu betrachten. Da der Feature-vektor eine feste Dimensionalität hat, muss das Voka-bular V im Voraus bekannt sein. Der Featurevektor ~xhat demzufolge |V | Komponenten, wobei jede Kompo-nente genau einem Wort und jedes Wort genau einerKomponente zugeordnet ist. Für den Wertebereich derElemente xi gibt es verschiedene Varianten, von de-

    nen drei häufig verwendete für diesen Bericht evaluiertwurden:

    1) xi ∈ {0; 1}Dies ist das Boolesche Modell. Ist ein Wort ineinem Dokument vorhanden, so ist die zugehörigeKomponente des Vektors 1, ansonsten 0.

    2) xi ∈ N0Dieses Modell bezieht die absolute Worthäufigkeit(Term Frequency, TF) eines Wortes mit ein. JedeKomponente gibt die Anzahl der Vorkommnisseeines Wortes im Dokument an.

    3) xi ∈ R>0Bei reellwertigen Features ist eine oft verwendeteMöglichkeit die TF-IDF-Gewichtung: Die Kom-ponente des Vektors ist größer, je häufiger dasWort im Dokument vorkommt, und niedriger, in jemehr Dokumenten das Wort auftritt (Inverse Docu-ment Frequency, IDF). Der Grundgedanke dieserGewichtung (und ihrer Varianten) liegt darin, dassdie Gewichte von Wörtern mit mutmaßlich gerin-ger Trennschärfe verringert werden. Für diesenBericht wird die folgende Berechnungsvorschrifteingesetzt:

    tf-idft,d = tft,d · idft

    = tft,d ·(

    log

    (|D|dft

    )+ 1

    )Dabei ist tft,d die Häufigkeit des Wortes t im Do-kument d, dft die Anzahl der Dokumente, in denendas Wort t vorkommt und |D| die Gesamtanzahlder Dokumente.

    Diese Modelle sagen über ein Dokument lediglich aus,welche Wörter enthalten sind nicht aber, in welcherReihenfolge. Diese Modelle werden daher als Bag ofWords (BoW) bezeichnet, da diese Darstellung einerMultimenge von Wörtern entspricht.

    Diese Darstellung als Featurevektor entspricht wieder-um dem Vektorraummodell, das im Information Re-trieval Anwendung findet. Die Featurevektoren ~xi sindalso Teil des Vektorraums X |V |, der wiederum von|V | Basisvektoren (in diesem Zusammenhang auch alsOne-Hot-Vektoren bezeichnet) aufgespannt wird4. Die-se Basisvektoren sind genau die einzelnen Terme des

    4Je nach verwendetem Modell ist X = {0; 1}, X = N0 oderR>0, wobei nachfolgend vom allgemeinsten Fall X = R ausge-gangen wird, der die Obermenge dieser Mengen darstellt.

    2

  • Kass: Textklassifikation Technischer Bericht 2019-01

    Vokabulars V , und jeder Dokument-Featurevektor ~x(d)ist eine Linearkombination dieser Basisvektoren:

    ~x(d) =

    x1x2......

    x|V |

    = x1

    10......0

    + x2

    010...0

    + . . .+ x|V |

    00...01

    Während es intuitiv erscheint, dass mit einem solchenModell Texte klassifiziert werden können, deren The-men durch auftretende Fachbegriffe charakterisiert sind,so können Sachverhalte, in denen die Wortreihenfol-ge eine Rolle spielt, nicht adäquat dargestellt werden.Um dies zu ermöglichen, wird das Modell erweitert, in-dem die Wortvektoren der einzelnen Wörter aneinander-gefügt werden, sodass sich eine |V |× |S|-Satzmatrix Sergibt:

    S =

    s1,1s2,1

    ...s|V |,1

    ,s1,2s2,2

    ...s|V |,2

    , . . . ,s1,|S|s2,|S|

    ...s|V |,|S|

    =

    s1,1 s1,2 . . . s1,|S|s2,1 s2,2 . . . s2,|S|

    ......

    . . ....

    s|V |,1 s|V |,2 . . . s|V |,|S|

    Da jeder Wortvektor ein Basisvektor ist, ist die Ma-trix dünnbesetzt. Zur effizienten Speicherung kann dieMatrix daher auch als Zeilenvektor dargestellt werden:

    Ŝ =[ŝ1 ŝ2 . . . ŝ|S|

    ](1)

    Dabei bezeichnen die Einträge des Zeilenvektors jeden ŝi-ten Basisvektor des Wortvektorraums. DieseDarstellung ist zur Matrixdarstellung äquivalent undvereinfacht die Interpretation als Featurevektor: JederSatz hat damit |S| verschiedene Features, die je einendiskreten Wert aus {1, . . . , |V |} annehmen können. Je-des Feature kann damit als die Frage formuliert werden:

    ”Welches Wort si steht an Position i?“

    Daraus folgt, dass die Satzlänge |S| konstant sein muss,denn diese bestimmt die Dimensionalität des Feature-vektors (bzw. die Breite der Satzmatrix). Da Sätze in

    Klassifikationsproblemen in der Regel verschiedeneLängen haben, müssen längere Sätze (unter Informati-onsverlust) gekürzt und kürzere durch einen speziellenVektor (etwa den Nullvektor oder aber einen weiterenBasisvektor, wofür der Vektorraum um eine zusätzlicheDimension erweitert wird) aufgefüllt werden, der meistals Padding-Vektor oder -Token (kurz PAD) bezeich-net wird. Ebenfalls ist der Fall zu betrachten, dass ineinem zu klassifizierenden Text ein Wort auftritt, dasnicht bereits im Training bekannt war, was als Out-Of-Vocabulary (OOV) bezeichnet wird. Während dies imVektorraummodell nicht gesondert behandelt werdenmuss (da dort die Features schlicht die Vorkommnis-se bereits bekannter Wörter sind und ein unbekanntesWort somit kein Feature ist), ist es im Satzmodell erfor-derlich, dass jeder Position des Satzes ein Featurewertzugewiesen werden kann. Dazu kann sich abermals miteinem weiteren Basisvektor beholfen werden: Tritt einunbekanntes Wort in einem Satz auf, bekommt das ent-sprechende Feature diesen als Unknown-Token (kurzUNK) bezeichneten Vektor zugewiesen.

    Die Darstellung als Matrix erhält zwar Positionsinfor-mationen, doch ist die Wahl der Features nicht unbe-dingt optimal:

    1) Jedes Feature kann |V | verschiedene Werte an-nehmen, doch diese Werte drücken keine quan-titativen Maße aus, die miteinander verglichenwerden, d. h. die Werte können zwar als ganzeZahlen dargestellt werden, etwa ŝ1 = 5, doch be-steht keinerlei Beziehung zu ŝ1 = 6 oder ŝ1 = 4.In vielen Fällen trifft dies jedoch nicht zu; so ste-hen etwa die Wörter Buche und Eiche thematischin einer Beziehung, doch deren Darstellungen imVektorraummodell sind genau so weit voneinan-der entfernt wie die von Giraffe und Mond. Andersformuliert: Wenn es Korrelationen zwischen Fea-turewerten (also den Zeilen der Satzmatrix) gibt,so werden diese durch dieses Modell nicht ausge-drückt.

    2) Ein Wort kann an verschiedenen Stellen des Satzesauftreten. Ein Satz mit ŝ7 = 5 hat vielleicht eineähnliche Bedeutung wie ein Satz mit ŝ8 = 5, dochsind dies zwei verschiedene Features, die lediglichden gleichen Wert annehmen. Auch die Werte inden Spalten der Matrix können also korreliert sein,was durch dieses Modell ebenfalls noch nicht klarwird.

    3

  • Kass: Textklassifikation Technischer Bericht 2019-01

    Punkt 1 liegt am zugrundeliegenden Vektorraummo-dell. Da alle Wortvektoren Basisvektoren sind, dieeinen Vektorraum aufspannen, liegen diese alle aus-schließlich in der ihnen zugehörigen Dimension undsind stets orthogonal zueinander. Um diesem Problementgegenzuwirken, können die Vektoren aus dem hoch-dimensionalen Raum X |V | in einen Raum mit wenigerDimensionen XE projiziert werden. Diese Methodenwerden als Word Embedding bezeichnet, und die resul-tierenden, niedrigdimensionalen Vektoren schlicht alsEmbeddings (Einbettungen).

    Ziel dieser Einbettungen ist nicht nur, die Dimensiona-lität (und damit die Anzahl erforderlicher Variablen) zureduzieren, sondern auch, ähnliche Darstellungen fürsemantisch ähnliche Wörter zu erhalten, sodass dieseim Vektorraum nah beieinander liegen. Jede Kompo-nente des Vektors kann damit als eine Eigenschaft desWortes interpretiert werden, und der Vektor als Gan-zes kodiert die Bedeutung des Wortes. Einbettungenkönnen beispielsweise mittels Singulärwertzerlegungoder neueren Ansätzen wie Word2Vec [2] oder fast-Text5 [3] erzeugt werden und dann als Eingabe füreinen Classifier dienen. Ist dieser Classifier ein neu-ronales Netz, so ist es ebenfalls möglich, die One-Hot-Vektor-Darstellung (bzw. die indizierte Darstellung) alsEingabe zu verwenden und daraus im Verlauf des Trai-nings Einbettungen zu errechnen, die dann in tieferenSchichten des Netzes verwendet werden.

    2.1.1 Vorverarbeitung und Tokenisierung

    Es bleibt zu klären, wie die Tokenisierung – d. h.die Extraktion von Tokens (Wörter, Zeichen, Wort-n-Gramme6 oder Zeichen-n-Gramme7) aus dem Doku-ment – erfolgt.

    Eine sehr grundlegende Art, Tokens zu erhalten, bestehtdarin, den Text an allen Leerzeichen aufzuteilen. Da esneben dem normalen Leerzeichen auch weitere Zeichengibt, die ähnliche Funktionen erfüllen – etwa Zeilenum-brüche, nicht umbrechbare Leerzeichen und Leerzei-chen ohne Breite – werden diese unter dem BegriffWhitespace zusammengefasst und gleich behandelt8.

    5https://fasttext.cc/6Mit diesem Begriff werden in diesem Bericht Kombinationen

    aus n benachbarten Wörtern bezeichnet; einzelne Wörter sind einSpezialfall der Wort-n-Gramme mit n = 1

    7Wobei Zeichen wiederum ein Spezialfall der Zeichen-n-Gramme mit n = 1 sind

    8Prinzipiell haben diese Zeichen jedoch unterschiedliche se-mantische Bedeutungen.

    Die Eingabe ”Dies ist ein Beispielsatz.“ wird damit zurTokenmenge {”Dies”, ”ist”, ”ein”, ”Beispielsatz.”}.

    Dabei wird ein neues Problem ersichtlich: Die Behand-lung von Satzzeichen. Prinzipiell gibt es dabei verschie-dene Möglichkeiten, wobei in den für diesen Berichtdurchgeführten Tests Satzzeichen als eigene Tokensbetrachtet werden9.

    Diese sehr einfache Variante der Tokenisierung pro-duziert jedoch immer noch viele verschiedene Ter-me, die bei genauerer Betrachtung (nahezu) äquivalentsind. Aus diesem Grund können Vorverarbeitungsschrit-te angewendet werden, um mehrere Tokens auf diegleiche Darstellung abzubilden. Dazu gehören unteranderem das Entfernen oder Ersetzen seltener Zei-chen (einschließlich Umlaute) und Lowercasing (so-dass Wörter ungeachtet ihrer Groß- und Kleinschrei-bung als äquivalent betrachtet werden). Neben demZusammenfassen von Termen ist es ebenfalls möglich,zu seltene und/oder zu häufige Terme (Stoppwörter) zuentfernen, was – wie auch die TF-IDF-Gewichtung –auf der Annahme fußt, dass diese über keinen signifi-kanten Informationsgehalt verfügen. Diese und andereTechniken werden als Feature Selection bezeichnet.

    2.2 Bewertung

    Bei der Bewertung (und den Vergleich) eines Classi-fiers sind zwei grundlegende Begriffe zu unterscheiden:Effektivität und Effizienz, wobei letztere als sekundäresKriterium zu betrachten ist.

    Effektivität. Dieser Begriff bezeichnet die Güte ei-nes Classifiers. Das wichtigste Maß bei Textklassifika-tionsproblemen ist der Anteil der korrekt klassifizier-ten Dokumenten an der Gesamtheit der Dokumenteund wird als Erkennungsrate, oder – in Anlehnungan den in englischsprachigen Veröffentlichungen ver-wendeten Begriff Accuracy – als Genauigkeit bezeich-net. Das Gegenteil der Genauigkeit ist die Fehlerrate(Error Rate = 1 − Accuracy). Die Genauigkeit bzw.die Fehlerrate muss immer vor dem Hintergrund derKlassenverteilung betrachtet werden. Gehören 95% derDokumente der gleichen Klasse an, so kann ein Classi-fier, der nichts weiter tut, als sich stets für die häufigste

    9Dies ist insbesondere im Satzmatrix-Modell sinnvoll; im Vek-torraummodell hingegen ist davon auszugehen, dass Satzzeichenkeine besonders große Trennschärfe haben, da diese ohne Positi-onsinformationen nahezu bedeutungslos sind

    4

    https://fasttext.cc/

  • Kass: Textklassifikation Technischer Bericht 2019-01

    Klasse zu entscheiden, eine Genauigkeit von 95% er-zielen. Die Fehlerrate (hier: 5%), die erzielt wird, wennstets die häufigste Klasse ausgewählt wird, wird alsNull Error Rate bezeichnet, da für diese Fehlerratekeinerlei Features betrachtet werden müssen und kein

    ”sinnvoller“ Classifier diese Fehlerrate überschreitet.

    Genauere Informationen liefert die Confusion Matrix(Wahrheitsmatrix), die die Anzahl der Dokumente fürjede Kombination aus vom Classifier erkannter Klasseund tatsächlicher Klasse darstellt. Tabelle 1 zeigt einBeispiel für eine solche Matrix.

    Die Zeile gibt die korrekte Klasse eines Dokuments an,während die Spalte die Klasse angibt, die der Classi-fier ausgewählt hat. Auf der Diagonalen stehen damitalle korrekt klassifizierten Dokumente, die True Posi-tives. Die Accuracy ist der Anzahl der True Positivesan der Gesamtheit der Dokumente, d. h. Accuracy =7+6+7

    30 =23 ≈ 66,67%. Darüber hinaus gibt es klas-

    senspezifische Statistiken, etwa den Recall, der für je-de Klasse den Anteil der Dokumente angibt, die vomClassifier korrekt erkannt wurden (d. h. der Quotientaus Diagonaleintrag und Zeilensumme). So beträgt derRecall für die Klassen Politik und Unterhaltung 70%,während für die Klasse Sport nur 60% der Dokumentekorrekt klassifiziert werden konnten. Das Gegenstückdazu ist die Precision, die den Anteil der korrekt klassi-fizierten Dokumente an allen Dokumenten, die dieserKlasse zugewiesen wurde, angibt (d. h. der Quotient ausDiagonaleintrag und Spaltensumme). So hat Politik ei-ne Precision von 70%, während es bei Sport ca. 85,71%und bei Unterhaltung etwa 76,92% sind. Die Confusi-on Matrix liefert auch eine detailliertere Sicht auf denClassifier: So lässt sich etwa sagen, dass der ClassifierPolitik und Unterhaltung nicht so gut unterscheidenkann wie etwa Politik und Sport.

    Die Effektivität des Classifiers ist aber immer vor demHintergrund der verwendeten Daten zu betrachten. Ist

    ein Classifier ausdrucksstark genug (d. h. ist seine Ka-pazität groß genug), so kann er Daten, die für dasTraining verwendet werden, immer korrekt klassifizie-ren. Dies sagt jedoch nichts darüber aus, wie gut neueDaten erkannt werden, was jedoch der praktische An-wendungsfall ist. Insbesondere besteht die Gefahr desOverfittings, d. h., dass der Classifier zu sehr an dieTrainingsdaten angepasst wurde, sodass er neue Datennicht erkennt10. Feature Selection kann genutzt wer-den, um überspezifische, seltene Features zu entfernen(für neuronale Netze existieren viele weitere Techniken,siehe Abschnitt 3.4.3).

    Aus diesem Grund wird die Genauigkeit eines Clas-sifier auf einer separaten, zu den Trainingsdaten dis-junkten Menge – den Testdaten (Test Set) – evaluiert.Die Testdaten werden entweder vorher bestimmt, oderes wird vor dem Training ein Teil der Trainingsdatenentfernt und als Testdatensatz verwendet (die Testdatenwerden dann auch als Holdout Set bezeichnet). Wichtigist, dass das Test-Set niemals während des Trainings ge-nutzt werden darf11. Für einige Methoden (siehe auchAbschnitt 3.4.3) wird auf die gleiche Weise eine weite-re Menge benutzt, die als Validation Set (oder Dev Set)bezeichnet wird und dazu dient, den Classifier so anzu-passen, dass Overfitting reduziert wird. Im Gegensatzzum Test-Set wird das Dev-Set während des Trainingsverwendet (wobei die Daten nicht in der gleichen Weise

    10Als Extrembeispiel sei ein Classifier genannt, der jedes Do-kument im Volltext abspeichert und diesem Volltext jeweils diepassende Klasse zuweist. Jedes Dokument aus dem Trainingsda-tensatz kann dann mit einer Genauigkeit von 100% klassifiziertwerden, aber auf unbekannten Daten wird bestenfalls die Null ErrorRate erreicht; es besteht also extremes Overfitting.

    11Selbst, wenn dieser Grundsatz eingehalten wird, besteht immernoch das Risiko des impliziten Overfittings: Werden mehrere Clas-sifier trainiert, wählt ein Anwender den Classifier aus, der auf demTest-Set das beste Ergebnis erzielt hat. Doch möglicherweise liegteine höhere Genauigkeit nicht am Classifier, sondern an den Ge-gebenheiten des Test-Sets selbst. Der Classifier funktioniert dannbesser, obwohl er nicht explizit auf dieser Menge trainiert wurde.

    Erkannte KlassePolitik Sport Unterhaltung

    Recall

    Politik 7 0 3 70,00%Sport 1 6 3 60,00%Tatsächliche Klasse

    Unterhaltung 2 1 7 70,00%Precision 70,00% 85,71% 76,92%

    Tabelle 1: Ein Beispiel für eine Confusion Matrix einer Klassifikation nach Themenbereichen mit 30 Dokumenten.

    5

  • Kass: Textklassifikation Technischer Bericht 2019-01

    betrachtet werden, wie es beim Trainings-Set der Fallist). Zusammenfassend gilt für die Mengen Train, Devund Test:

    (Train ∩ Dev) ∪ (Dev ∩ Test) ∪ (Test ∩ Train) = ∅

    Effizienz. Damit wird bezeichnet, wie sparsam einProgramm mit Ressourcen umgeht, was sich insbeson-dere auf die aufgewendete (Rechen-)Zeit bezieht. Dabei der Implementation der getesteten Methoden sehrviele Algorithmen aus unterschiedlichen Programm-bibliotheken zusammenwirken, ist es schwierig, dieexakte Laufzeit (etwa die Laufzeitkomplexität in O-Notation) zu bestimmen. Daher beschränkt sich die Be-stimmung der Effizienz auf die Messung der Zeit, diefür die Ausführung des Programms benötigt wird. Da-mit die gemessenen Werte Aussagekraft haben, ist dar-auf zu achten, dass alle Programme unter gleichen Be-dingungen ausgeführt werden, d. h. mit gleicher Hard-ware, gleicher Software und gleichen Daten. Selbstdann unterliegen die Werte Schwankungen, etwa durchlaufende Hintergrundprozesse, durch im Programm ver-wendete Zufallszahlen oder schlicht durch physikali-sche Effekte (etwa leicht schwankende Taktraten desProzessors und des Speichers), weswegen diese Testsmehrfach durchgeführt werden müssen, um einen aus-sagekräftigeren Mittelwert bilden zu können.

    Weiterhin wird der Speicherverbrauch betrachtet. Die-ser fließt zwar nicht unmittelbar in die Bewertung einesClassifiers ein, kann aber einschränken, auf welcherHardware dieser eingesetzt werden kann.

    2.3 Klassische Modelle

    Um die Ergebnisse neuronaler Netze besser deutenzu können, werden für diesen Bericht auch Modelleevaluiert, die bereits vor der jüngsten Renaissance derneuronalen Netze etabliert waren. Die Implementationdieser klassischen Modelle baut hierbei auf die Biblio-thek scikit-learn12 (sklearn) auf, die viele Funktionenzur Feature Extraction, Klassifikation und Evaluationbietet. Dabei wurden konkret die folgenden Methodengetestet:

    Naive Bayes Classifier. Zu beachten ist, dass derBayes-Classifier auf der Annahme fußt, dass die ein-zelnen Features stochastisch unabhängig sind, obwohl

    12http://scikit-learn.org/

    dies im Allgemeinen nicht der Fall ist13. Als Erweite-rung bzw. Verallgemeinerung in Vektorraummodellenmit Termhäufigkeit (TF) oder TF-IDF kommt der Multi-nomial Naive Bayes Classifier (MNB) zum Einsatz, derdie relative Häufigkeit jedes Terms innerhalb des ge-samten Textes der Klasse (d. h. ohne Berücksichtigungder Dokumentgrenzen) betrachtet, anstatt nur die Wahr-scheinlichkeit der Anwesenheit der einzelnen Terme zumodellieren.

    Complement Naive Bayes. Dieser Classifier ist eineAbwandlung des MNB und wurde unter anderem fürTextklassifikation mit ungleich verteilten Klassen ent-wickelt. Statt P (xi | c), also die Wahrscheinlichkeitendes Features xi in der Klasse c zu berechnen, wird zujeder Klasse c eine Komplementärklasse c̄ gebildet, diealle ~x /∈ c enthält. Die Klassenwahrscheinlichkeit P (c)wird dann mit den Kehrwerten dieser Wahrscheinlich-keiten multipliziert, um die wahrscheinlichste Klassezu erhalten [4].

    Support Vector Machines. In ihrer grundlegend-sten Form sind SVMs Classifier für Zwei-Klassen-Probleme, entscheiden also lediglich, ob ein Doku-ment d zu einer Klasse c gehört oder nicht. Es gibt ver-schiedene Möglichkeiten, SVMs für Mehrklassenpro-bleme zu erweitern. Beim sogenannten One-Against-Rest wird für jede der n Klassen ein SVM-Modellerstellt, das Dokumente dieser Klasse von den Do-kumenten anderer Klassen unterscheiden kann. Daes dabei jedoch Überschneidungen geben kann, wirddie Klasse ausgewählt, dessen Entscheidungsfunktionden höchsten Wert hat. Ein anderes Verfahren ist dasOne-Against-One-Verfahren: Dabei werden insgesamtn2−n

    2 SVM-Modelle konstruiert, wobei jedes Modelldie Trainingsdaten von genau zwei Klassen erhält, so-dass es schließlich für jede Kombination aus zwei Klas-sen ein Modell gibt, das diese Klassen unterscheidet.Soll nun ein neues Dokument klassifiziert werden, sowird dieses mit allen Modellen ausgewertet und schließ-lich die Klasse gewählt, für die am häufigsten entschie-den wurde14. Dieses Verfahren ist effektiver als dasOne-Against-Rest-Verfahren [5].

    13Dies zeigt sich auch in der Namensgebung ”Naive Bayes Clas-sifier“

    14Im Falle eines Gleichstands kann die Klasse mit dem niedrig-sten Index ausgewählt werden.

    6

    http://scikit-learn.org/

  • Kass: Textklassifikation Technischer Bericht 2019-01

    Logistische Regression. Diese ist ein Regressions-modell, dem die logistische Funktion zugrundeliegt. ImGegensatz zu Modellen wie etwa der linearen Regressi-on bedeutet dies, dass der Wertebereich der Regressionauf das Intervall (0; 1) beschränkt ist. Dient ein Featu-rewert als Eingabe, so kann das Ergebnis einer entspre-chend parametrisierten logistischen Funktion als Klas-senwahrscheinlichkeit in einem Zwei-Klassen-Probleminterpretiert werden, wodurch die Regressionsfunktionals Classifier eingesetzt werden kann. Analog zu SVMskann im Fall mit mehreren Klassen der One-Against-Rest-Ansatz verfolgt werden. Dabei wird dann jeweilsdie Klasse ausgewählt, deren Classifier die höchsteWahrscheinlichkeit errechnet hat.

    3 Neuronale Netze

    Die besten Ergebnisse in vielen Klassifikationsaufga-ben erzielen heutzutage neuronale Netze (NN); auchin anderen Anwendungsgebieten sind neuronale Netzeein vieldiskutiertes Thema, an dem gegenwärtig sehrviel geforscht wird [6].

    Oft gibt es verschiedene, in ihrer exakten Funktions-weise abweichende Implementationen einzelner Kom-ponenten neuronaler Netze. Da die für diesen Berichtimplementierten neuronalen Netze die Funktionen derBibliothek TensorFlow15 (TF) einsetzen, orientierensich die nachfolgenden Beschreibungen im Zweifels-fall an der jeweiligen Implementation in TensorFlow.

    3.1 Grundlagen

    Im Mittelpunkt steht das künstliche Neuron, das ei-ne Menge von n Eingaben erhält und daraus eine ge-wichtete Summe berechnet. Auf diese Summe wirdein Bias genannter Wert b addiert, und auf das Er-gebnis wird schließlich eine nichtlineare Aktivierungs-funktion f angewendet, um die Ausgabe o zu erhal-ten. Mit den Eingaben x1, x2, . . . , xn und den Gewich-ten w1, w2, . . . wn ergibt sich damit die einfache For-mel16:

    o = f

    (b+

    n∑i=1

    wi · xi

    )15https://www.tensorflow.org/16Alternativ kann der Bias-Wert auch als ein zusätzliches Ge-

    wicht w0 dargestellt werden, der dann auf einen zusätzlichen Ein-gangswert x0 = 1 angewendet wird.

    Werden die Eingabe als Spaltenvektor ~x und die Ge-wichte als Zeilenvektor ~w betrachtet, so ergibt sich dieFormel:

    o = f (b+ ~w · ~x)

    = f

    b+ (w1 w2 . . . wn) ·x1x2...xn

    Da in den meisten Anwendungen ein einzelneskünstliches Neuron nicht ausreichend ist, werden meh-rere künstliche Neuronen mit jeweils eigenen Gewich-ten auf die gleiche Eingabe angewendet. BeimGewich-ten ergibt sich damit eine m × n-Gewichtsmatrix Wund ein m-dimensionaler Bias-Vektor ~b. Die Aktivie-rungsfunktion ~f wird dann elementweise auf den resul-tierenden m-dimensionalen Vektor angewendet, sodasssich die m-dimensionale Ausgabe ~o ergibt:

    ~o = ~f(W · ~x+~b

    )Dass die grundlegende Operation in neuronalen Netzenalso eine Matrix-Vektor-Multiplikation ist, bedeutet,dass diese in heutiger Hardware sehr schnell berechnetwerden können, da die Berechnungen parallelisierbarsind und Prozessoren über Instruktionen verfügen, diespeziell auf Matrix-Vektor-Multiplikationen ausgelegtsind. Insbesondere Grafikprozessoren (GPUs) stechenhierbei hervor.

    Eine einzelne Matrix-Vektor-Multiplikation mit Nicht-linearisierung ist jedoch meist nicht ausreichend. Ausdiesem Grund können beliebig viele weitere derartigeOperationen auf die Ausgaben angewendet werden. DieKombination aus Matrix-Vektor-Multiplikation und Ak-tivierungsfunktion wird dann als eine Schicht bzw. alsein Layer bezeichnet – in Abgrenzung zu Schichten,die andere Operationen durchführen (und in den fol-genden Abschnitten näher erläutert werden), genauerals Fully Connected Layer (FC-Layer). Auf diese Ver-kettung von Operationen geht die Bezeichnung ”Netz“zurück, und je mehr Schichten es hat, desto ”tiefer“ istes. In dieser Möglichkeit der tiefen Verschachtelungliegt zugleich auch die Stärke neuronaler Netze, denndurch eine Vergrößerung der Tiefe lassen sich oft besse-re Ergebnisse erzielen als durch eine Vergrößerung der

    7

    https://www.tensorflow.org/

  • Kass: Textklassifikation Technischer Bericht 2019-01

    ”Breite“ – also die Anzahl der Gewichte einer Schicht –um die gleiche Variablenanzahl [7].

    In der Praxis werden Breite und Tiefe eines Netzes ex-perimentell bestimmt. Wichtig ist dabei lediglich, dassdie Eingabegröße der ersten Schicht der Anzahl der Fea-tures und die Ausgabegröße der letzten Schicht demgewünschten Ergebnis entspricht – bei einem Klassifi-kationsproblem etwa einem Score-Wert für jede Klasse,wobei die Klasse mit dem höchsten Wert ausgewähltwird. Die Schichten dazwischen – die Hidden Layer –können dabei in Funktionsweise, Größe und Anzahlbeliebig gewählt werden.

    3.1.1 Training

    Die Gewichte neuronaler Netze werden nicht exaktbestimmt, sondern mit zumeist zufälligen Werten in-itialisiert und dann iterativ verbessert, sodass die opti-male Lösung approximiert wird. Dies geschieht, indemeine Kosten- oder Verlustfunktion (Loss) L(ŷ, y) auf-gestellt wird, die ein Maß der Unähnlichkeit zwischender Ausgabe des Netzes ŷ und den tatsächlichen Klas-sen y darstellt. Diese Funktion soll dann minimiertwerden, indem sie bezüglich der Gewichte der Ausga-beschicht abgeleitet wird. Dazu kommt der Backpro-pagation-Algorithmus zum Einsatz, der wiederholt dieKettenregel der Differentialrechnung anwendet, um dieGradienten für alle weiteren Schichten zu berechnen.

    Um die Gewichte der einzelnen Schichten basierendauf den berechneten Gradienten anzupassen, kommtein Optimierungsalgorithmus (Optimizer) zum Einsatz.Ein klassisches Beispiel ist Stochastic gradient de-scent (SGD), der die Gewichte anpasst, indem der Gra-dient mit einer Lernrate η multipliziert und von demGewicht subtrahiert wird. In den in diesem Bericht ver-wendeten neuronalen Netzen kommt hingegen der 2014entwickelte Algorithmus Adam [8] zum Einsatz, derNäherungswerte der ersten und zweiten stochastischenMomente der Gradienten berechnet, um eine individu-elle Lernrate für jedes Gewicht zu erhalten. Dieser Wertwird dann wiederum mit dem Faktor η skaliert.

    Im sogenannten Online-Training wird jeweils ein ein-zelnes Dokument in das neuronale Netz eingegeben unddann unmittelbar die Gewichte angepasst, bevor dasnächste Dokument eingegeben wird. Dies wird wieder-holt, bis ein Abbruchkriterium (wie etwa eine bestimm-te Anzahl an Trainingsschritten) erreicht ist. Wurdenalle Dokumente genau einmal eingegeben, wird dies als

    eine Epoche bezeichnet. Eine andere Variante ist dasBatch-Training, bei dem alle Dokumente auf einmaleingegeben werden. Die Gewichte werden dann basie-rend auf dem Mittelwert der Kostenfunktion angepasst.Einen Kompromiss stellt das Minibatch-Training dar,bei dem die Trainingsdaten in sogenannte Minibatchesmit je k Dokumenten partitioniert werden. Diese Teil-mengen werden dann nacheinander eingegeben, wobeinach jeder Teilmenge die Gewichte angepasst werden.Wurden alle Minibatches einer Epoche abgearbeitet,kann dieser Vorgang (mit einer neuen Partition) wieder-holt werden.

    3.1.2 Aktivierungsfunktionen

    Für die Wahl der Aktivierungsfunktion bieten sich vieleMöglichkeiten, wobei die beste Wahl letztlich durchTests gefunden werden muss. Häufig verwendet wirddie Rectified Linear Unit (ReLU), die 0 zurückgibt,sobald der Eingangswert negativ ist, d. h.:

    ReLU(x) = max(x, 0)

    Daraus ergibt sich jedoch das Problem, dass der Gradi-ent 0 ist, wenn der Eingangswert negativ war. Dadurchkann das Training verlangsamt oder gar verhindert wer-den. Um diesem Problem entgegenzuwirken, kann alsVariante die Parameterized ReLU eingesetzt werden,bei der der negative Teil nicht auf 0 gesetzt, sondern miteinem kleinen, trainierbaren Parameter a multipliziertwird:

    PReLU(x) = max(x, 0) + a ·min(x, 0)

    Dabei kann entweder ein Parameter a für jeden Eintragvon x gelernt werden, oder es wird lediglich ein einzi-ges a für den gesamten Vektor x verwendet, wodurchfür jede Schicht des Netzes nur ein einzelner Parameterdazukommt [9].

    Ein ähnliches Konzept verfolgt die sogenannte Expo-nential Linear Unit (ELU). Diese ist folgendermaßendefiniert:

    ELU(x) =

    {x falls x > 0ex − 1 sonst

    Der positive Teil entspricht damit der ReLU. Analogzur PReLU gibt es ebenfalls eine parametrisierte Form,

    8

  • Kass: Textklassifikation Technischer Bericht 2019-01

    die Scaled ELU (SELU). Diese verfügt über zwei trai-nierbare Parameter λ und a [10]:

    SELU(x) = λ ·

    {x falls x > 0a · ex − a sonst

    Darüber hinaus gibt es einige weitere Aktivierungs-funktionen, die häufig verwendet werden, etwa tanh.Abb. 1 visualisiert die in diesem Bericht getestetenFunktionen.

    3.2 Convolutional Neural Networks

    Eine Eigenschaft, die allen bisher vorgestellten Model-len (einschließlich neuronaler Netze) gemein ist, istdie Annahme, dass die verwendeten Features voneinan-der unabhängig sind. In der Textklassifikation ist dieseAnnahme jedoch falsch, denn die Features sind sehrstark korreliert. Im Vektorraummodell betrifft dies etwaSynonyme und häufige Wort-n-Gramme, während einModell, das die Positionen der Wörter berücksichtigt,jedes Wort an jeder Stelle als eigenes Feature betrach-tet – so würde etwa das Wort ”Hallo“ an erster Stelleals unkorreliert zum Wort ”Hallo“ an zweiter Stelle be-trachtet werden. Dadurch kann ein solches Modell nichtvon der Bedeutung eines Wortes an einer Position auf

    die Bedeutung des gleichen Wortes an einer anderenPosition schließen und bräuchte geeignete Trainings-daten für das Wort an jeder Position, würde also jedesFeature mehrfach lernen müssen.

    Da dies praktisch nicht durchführbar ist, wurden Mo-delle entwickelt, die von dieser Annahme abrückenund stattdessen explizit davon ausgehen, dass Featureskorreliert sind. Dies erlaubt es im Bereich der Text-klassifikation nicht nur, Wörter (bzw. n-Gramme) anverschiedenen Positionen zu erkennen, sondern auch,die Anzahl notwendiger Parameter zu reduzieren, in-dem die gleichen Parameter an verschiedenen Stellender Eingabe ausgewertet werden. Diese Technik wirdals Parameter Sharing bezeichnet und kann auf ver-schiedene Weisen umgesetzt werden, etwa von densogenannten Convolutional Neural Networks (CNN).

    Diese Netzwerke erhalten ihren Namen von der dis-kreten Faltungsoperation, der Convolution, die auf dieEingaben einer Schicht – des Convolutional Layers –angewendet wird. Ein anschauliches Beispiel ist derzweidimensionale Fall der diskreten Faltung, genauergesagt der diskreten Kreuzkorrelation, die eine Funkti-on F auf jedem Punkt einer Eingabe I auswertet, um

    Abbildung 1: Übersicht über die Graphen einiger Aktivierungsfunktionen. Für x > 0 liefern ELU, ReLU und PReLU(ungeachtet des Parameters a) stets den gleichen Wert und überlagern sich daher im Graphen.

    9

  • Kass: Textklassifikation Technischer Bericht 2019-01

    die Ausgabe O zu erhalten17:

    O(i, j) = (I ? F )(i, j)

    =∑m

    ∑n

    I(i+m, j + n) · F (m,n)

    Die Eingabe I kann als ein Bild und die Funktion Fals ein Filter betrachtet werden18, z. B. der Gauß-Filter,d. h. der zweidimensionale, diskrete und endliche Fallder Gewichtung mit der Normalverteilung. Für eineFiltergröße von 3× 3 Pixeln ergibt sich:

    F =1

    16

    1 2 1

    2 4 2

    1 2 1

    =

    116

    18

    116

    18

    14

    18

    116

    18

    116

    Convolution bezeichnet dann nichts weiter als die An-wendung dieses Filters auf jeden einzelnen Bildpunkt.Im Fall des Gauß-Filters ist dies ein gewichteter Mittel-wert einer 3× 3-Umgebung jedes Punktes.

    Ein Convolutional Layer beruht auf der Anwendungmehrerer Faltungen auf die Eingabedaten, wobei die Fil-termasken mit zufälligen Werten initialisiert und danntrainiert werden. Die Parameter dieser Filtermaskentreten damit an die Stelle der Gewichte der Eingaben –in der Bilderkennung bedeutet dies, dass nicht für jedeseinzelne Eingabepixel ein Gewicht erlernt werden muss,sondern nur für die Pixel der Filtermaske. Dies erlaubtes, bestimmte Features an jeder Position eines Bildeszu erkennen, da nicht jedes Eingabeneuron (an jeder Po-sition) für jedes Feature trainiert werden muss, sondernschlicht die Filtermaske an jeder Position ausgewer-tet wird. Da somit jeder Parameter mehrfach verwen-det wird, sind CNNs eine Anwendung von ParameterSharing. Dadurch wird die Anzahl der erforderlichenParameter drastisch reduziert, was komplexere Objek-terkenner ermöglicht und den Erfolg der CNNs in derBilderkennung erklärt [11]. Analog zu gewöhnlichenkünstlichen Neuronen wird auf die Filter ein Bias-Wert

    17Im Fall der tatsächlichen Faltung im eigentlichen Sinne wird Fspiegelverkehrt ausgewertet; TensorFlow verwendet jedoch eben-falls die Kreuzkorrelation, weshalb im Rahmen dieses Berichts mitdem Begriff ”Faltung“ (bzw. ”Convolution“) stets die Kreuzkorre-lation bezeichnet wird.

    18In der Tat stellen Convolutional Neural Networks den Standder Technik bei Bildklassifikationsproblemen dar, sodass sich vieleVeröffentlichungen auf Bilder beziehen.

    addiert und anschließend eine Aktivierungsfunktionausgeführt. Die so erhaltenen Ausgaben – z. B. die ge-filterten Bilder – werden als Feature Maps bezeichnet.

    Wird die Filtermaske über das Bild ”geschoben“, sokann diese nur ausgewertet werden, wenn es an je-der Position der Filtermaske einen korrespondierendenPunkt im Eingabebild gibt. Dadurch schrumpft das Aus-gabebild um einen Pixel weniger als die Abmessungender Filtermaske, d. h. die Anwendung eines 3×3-Filtersauf ein 500 × 500-Eingabebild ergibt ein 498 × 498-Ausgabebild19. Diese Form der Convolution wird als

    ”valid“ bezeichnet. Da dies insbesondere bei großenFiltermasken und bei einer größeren Anzahl verketteterConvolutional Layers zu sehr kleinen Feature Mapsführen kann, besteht auch die Möglichkeit, das Einga-bebild an den Rändern mit Nullen aufzufüllen, damitdie Größe der Ausgabe der Größe der Eingabe ent-spricht. Dieser als Padding bezeichnete Vorgang führtzur sogenannten ”same“ Convolution.

    Textdaten hingegen sind im Gegensatz zu Bildern ein-dimensional, wodurch sich die Berechnung der Convo-lution vereinfacht; in der Praxis wird jedoch ein Satz-matrixmodell verwendet, wodurch sich wiederum zweiDimensionen – Zeit und Embedding – ergeben. Den-noch wird in Bibliotheken wie TensorFlow diese Formder Convolution als eindimensional bezeichnet, da dieFiltermaske nur entlang der zeitlichen Dimension be-wegt wird und sich zu jedem Zeitpunkt über alle E Ein-träge der gesamten Embedding-Dimension erstreckt(was wiederum zur Folge hat, dass die Breite der Aus-gabe in dieser Dimension auf 1 sinkt). Die Formel derKreuzkorrelation vereinfacht sich damit zu:

    O(i) =

    mmax∑m=1

    E∑n=1

    I(i+m,n) · F (m,n)

    Durch Addition des Bias-Wertes b und Anwendungeiner Aktivierungsfunktion f (z. B. ReLU) zur Nichtli-nearisierung ergibt sich die Formel:

    O(i) = f

    (b+

    mmax∑m=1

    E∑n=1

    I(i+m,n) · F (m,n)

    )(2)

    19Ein weiteres anschauliches Beispiel wäre ein 3 × 3-Eingabebild, auf dem der 3 × 3-Filter nur an genau einer Stelleausgewertet werden kann und dann ein 1× 1-Ausgabebild ergibt

    10

  • Kass: Textklassifikation Technischer Bericht 2019-01

    Ein neuronales Netz, das diese Form der Convolutionverwendet, wird als Time Delay Neural Network (TD-NN) bezeichnet und ist in Abb. 2 schematisch darge-stellt. Da in der Verarbeitung von Textdaten nur diese1D-Convolution relevant ist, ergibt sich eine verein-fachte Schreibweise: Statt die Embedding-Dimensionexplizit anzugeben und etwa von einer ”3 × 100-Convolution“ zu sprechen, wird dies in diesem Berichtzu ”3-Convolution“ verkürzt, wobei sich die angegebe-ne Filtergröße auf die Zeitachse bezieht und immer dievolle Embedding-Dimension verwendet wird.

    Wie von Goodfellow et al. [12] beobachtet wurde, istes sinnvoll, nicht nur einen einzelnen, sondern meh-rere Convolutional Layer in einem tiefen neuronalenNetzwerk zu verwenden. Bei der Bilderkennung konn-ten tiefere Strukturen Genauigkeiten erzielen, die nichtallein aus der höheren Anzahl an Parametern resul-tieren. Dazu muss die Ausgabe eines ConvolutionalLayers als Eingabe eines anderen Convolutional Layersdienen, wobei auf die geänderte Dimensionalität einge-gangen werden muss. Die Reduktion der Embedding-Dimension auf eine Breite von 1 ist zwar unbedenklich,doch kommt eine weitere Dimension – nämlich die derFeature-Maps (bzw. Channels) – dazu.

    In TensorFlow wird dies gelöst, indem die Filtermas-ken dreidimensional sind, sich also über die Zeit-,Embedding- und Channel-Dimension erstrecken. Zwarlässt sich die Kreuzkorrelation für eine beliebige An-zahl an Dimensionen definieren, doch ist diese Verall-

    gemeinerung im Fall des TDNN gar nicht nötig; da dieEmbedding-Dimension auf 1 reduziert wird, bedeutetdies für die Dimensionalität der Convolution:

    O : R|S|×E×1 → R(|S|−mmax+1)×1×c

    Werden die letzten beiden Achsen dieser Ausga-be vertauscht, ergibt sich wieder eine Ausgabe derForm Rx×y×1, die problemlos mit der zuvor definiertenConvolution-Operation verarbeitet werden kann. Zwarführt TensorFlow diese Vertauschung nicht durch, dochda der Filter der Convolution-Operation nach wie vornur in Richtung der ersten Achse, d. h. der zeitlichenDimension, bewegt wird, ist dies äquivalent zur Convo-lution mit vorheriger Vertauschung. In den in diesemBericht behandelten Modellen ist immer jeweils einedieser Dimensionen 1, sodass der allgemeine Fall der3D-Convolution nicht behandelt werden muss.

    3.2.1 Pooling

    Werden mehrere Convolutional Layer in der Tiefe ver-knüpft, so wird von einer Schicht zur nächsten oft diezeitliche Auflösung reduziert, indem die Daten zwi-schen den Schichten herunterskaliert werden. DieseVorgehensweise wurde in CNNs zur Bilderkennungetabliert und dient dort der Extraktion ”höherstufiger“Features. Ein einfaches Beispiel wäre etwa das Anwen-den einer 3×3-Convolution auf das Eingabebild. DieseFilter sind sehr klein und können daher in der Regel kei-

    EinBeispielsatz

    kanndie

    Funktionsweisevon

    TDNNserklären

    ...

    Eingabelängez. B. |S| = 2048

    · · ·

    Embedding-Größe, z. B. 100

    3

    · · ·

    Eingabelänge− 2z. B. 2046

    Feature-Mapsz. B. 64

    Abbildung 2: Funktionsweise eines TD-Layers ohne Padding. Die Größe der Filtermaske beträgt 3× 100 (mmax und Eaus Gleichung 2). Die Eingabe hat die Größe 2048× 100× 1 (wobei die letzte Dimension die bisher vernachlässigteChannel-Dimension ist), die Ausgabe die Größe 2046× 1× 64. Die Breite – d. h. die Embedding-Dimension – wirddurch die Operation auf 1 reduziert, während die unterschiedlichen Feature Maps in der Tiefe – der Channel-Dimension –

    ”gestapelt“ werden.

    11

  • Kass: Textklassifikation Technischer Bericht 2019-01

    ne vollständigen Objekte erkennen. Stattdessen werdenetwa Features wie Kanten, Ecken oder feinere Struktu-ren erkannt – sogenannte Low-Level-Features. Werdennun die resultierenden Feature Maps herunterskaliert(etwa um die Hälfte in jeder Dimension), so kann ei-ne erneute 3 × 3-Convolution einen verhältnismäßiggrößeren Bereich abdecken und somit gröbere Struktu-ren erkennen. Dieser Vorgang kann wiederholt werden,bis Objekte einer gewünschten Größe erkannt werdenkönnen.

    Diese Operation wird im Zusammenhang mit CNNsPooling genannt. Die intuitive Art, ein Bild in Breiteund Höhe auf jeweils die Hälfte herunterzuskalieren,besteht darin, jeweils den Mittelwert aus 2× 2 Pixelnzu berechnen und diese zu einem Pixel zusammenzufas-sen. Diese Art des Poolings wird als Average-Poolingbezeichnet. In vielen Anwendungen erzielt das soge-nannte Max-Pooling bessere Ergebnisse, bei dem nichtder Mittelwert, sondern das Maximum der beteiligtenPixel verwendet wird.

    Im Gegensatz zu Skalierungsalgorithmen, die in derBildbearbeitung verwendet werden, lassen sich Bil-der mittels Pooling nur um einen ganzzahligen Faktorherunterskalieren, da – analog zur Convolution – ein

    ”Filter“ mit fester Größe auf passende Bildbereiche an-gewendet wird. Wie oft dieser Filter angewendet wird,wird durch die Schrittweite, Stride genannt, festgelegt.Der 2×2-Filter aus dem Beispiel etwa würde mit einemStride von 2× 2 über das Bild bewegt werden, sodassjeweils ein 2×2-Bereich verarbeitet und dann der Filterum zwei Pixel verschoben wird. Wird die Filtermaskegrößer als der Stride gewählt, so gibt es überlappendeBereiche, sodass ein Pixel der Eingabe für mehrerePixel der Ausgabe in Betracht gezogen wird. Für Poo-ling bieten sich die gleichen Padding-Optionen wie beiConvolution, woraus sich entscheidet, ob die Größe derAusgabe auf- oder abgerundet wird20.

    So wie Convolution auf Textdaten verwendet werdenkann, kann auch Pooling auf Textdaten verwendet wer-den. Da Pooling in der Regel auf eine Convolutionfolgt, ist die Eingabe ein Vektor (da die Embedding-Dimension auf 1 reduziert wurde). Jede Feature Mapwird separat betrachtet, wodurch die Operation sehreinfach wird, wie in Abb. 3 dargestellt ist. Analog

    20Aufgrund der vielen Gemeinsamkeiten zwischen Convolutionund Pooling ist es auch möglich, Convolution mit Stride > 1 an-stelle von Pooling zu verwenden, wie etwa im All ConvolutionalNet von Springenberg et al. [13].

    zur Bildverarbeitung, bei der erst Features in kleinenund dann in größeren Umgebungen betrachtet werden,kann Pooling bei Textdaten so verstanden werden, dasserst Zusammenhänge zwischen unmittelbar benachbar-ten Wörtern und anschließend zwischen weiter aus-einanderliegenden Wörtern betrachtet werden. Als Ex-tremfälle können die einzelnen Varianten der Very DeepConvolutional Networks for Text Classification (VD-CNN) von Conneau et al. betrachtet werden, bei demnicht Wörter, sondern einzelne Zeichen als Eingabedienen und ausschließlich Filter der Größe 3 verwen-det werden. Durch Pooling zwischen den einzelnenSchichten werden auf diese Weise immer größere Zu-sammenhänge erlernt, sodass die Erkennungsrate dieserNetzwerke mit der anderer aktueller Modelle vergleich-bar ist [14].

    Ein Sonderfall des Max-Poolings ist das Max-Poolingentlang der Zeitachse und damit über alle Eingabeneiner Feature Map (da diese durch den Wegfall derEmbedding-Dimension lediglich ein Vektor ist). Da-durch wird die zeitliche Auflösung auf 1 reduziert, so-dass je Feature Map genau ein Wert – das wichtigsteFeature – erhalten bleibt. Dieser als Max-Over-Time-Pooling bezeichnete Schritt liefert daher einen Vek-tor, der je Feature Map einen Eintrag hat, und wirdin vielen Klassifikationsmodellen unmittelbar vor demletzten Fully Connected Layer, der die Klassenwahr-scheinlichkeiten berechnet, durchgeführt [15]. Da dieKlassifikation letzten Endes nur anhand dieses Vek-tors erfolgt, muss dieser alle dafür notwendigen Infor-mationen enthalten; analog zu Word Embeddings, die

    ...

    Eingabelängez. B. |S| = 2048 ...

    Eingabelänge2

    z. B. 1024

    Abbildung 3: Pooling in TDNNs. Beim Max-Poolingwird aus jedem Paar die höchstwertige Eingabe aus-gewählt, beim Average-Pooling hingegen der Mittelwertaus diesen gebildet. Sind mehrere Feature Maps vorhan-den, so wird das Pooling für jede Feature Map separatdurchgeführt, weswegen diese hier nicht aufgeführt sind.

    12

  • Kass: Textklassifikation Technischer Bericht 2019-01

    die Bedeutung eines Wortes erfassen, kann dieser Vek-tor als Repräsentation der Bedeutung des Satzes – dieSatzeinbettung – betrachtet werden. Da das Max-Over-Time-Pooling den Satz damit als einen Vektor kodiert,wird der Pooling-Layer in diesem Fall auch als Encoderbezeichnet.

    Eine Verallgemeinerung des Max-Poolings stellt dask-Max-Pooling dar, bei dem nicht genau ein Feature,sondern die k größten Features pro Feature Map extra-hiert werden. Zu beachten ist, dass die so extrahiertenFeatures nicht nach ihrem Wert sortiert werden, son-dern ihre relative Reihenfolge aus den Eingabedatenbeibehalten, wie in Abb. 4 verdeutlicht wird [16].

    3.3 Recurrent Neural Networks

    Eine weitere Variante der neuronalen Netze sind diesogenannten Recurrent Neural Networks (RNN). Diesebieten – wie auch CNNs – die Möglichkeit, die glei-chen Parameter mehrfach anzuwenden und somit dieAnzahl der Parameter reduzieren, sind allerdings dar-auf spezialisiert, sequentielle Daten zu verarbeiten. Injedes Neuron bzw. jede Einheit (Hidden Unit) einer re-kurrenten Schicht wird je ein Wert der Eingabeschicht– etwa ein Wort –, sowie zusätzlich eine Ausgabe (derZustand) aller Neuronen, die das vorherige Element derSequenz (das vorherige Wort) verarbeitet haben, einge-geben. Dies hat zur Folge, dass im Gegensatz zu CNNsnicht eine feste Nachbarschaft eines Eingabewertes,sondern der gesamte Verlauf der Sequenz bis zum Er-reichen dieses Wertes betrachtet wird – ein rekurrentesneuronales Netz hat also ein ”Gedächtnis“.

    Die Ausgabe einer RNN-Schicht (auch Zelle genannt)zum Zeitpunkt t lässt sich folgendermaßen formulieren:

    O(t) = f (W · [xt ⊕O(t− 1)] + b) (3)

    Dabei stellt xt ⊕ O(t − 1) die Konkatenation des ak-tuellen Eingabewort-Embeddings xt mit der Ausgabezum vorherigen Zeitschritt O(t − 1) dar. W ist dieGewichtsmatrix, b der Bias-Vektor und f die Aktivie-rungsfunktion, z. B. tanh oder ReLU21.

    Das Parameter Sharing wird in RNNs dadurch reali-siert, dass jede Einheit für diese Operationen die glei-chen Parameter W und b verwendet. Analog zu CNNs,in denen eine Filtermaske über die Eingabe ”geschoben“wird, wird also auch bei RNNs eine Gewichtsmatrixan jeder Stelle der Eingabe ausgewertet, wobei jedochstets das Ergebnis der Auswertung der vorherigen Stel-le in die Berechnung einfließt. Dadurch enthält jedeAusgabe Informationen über alle bisherigen Wörter,was zur Folge hat, dass die letzte Ausgabe O(|S|) In-formationen über den gesamten Satz enthält und damiteine Satzeinbettung ist. Abb. 5 verdeutlicht diese Zu-sammenhänge.

    21In einigen Veröffentlichungen [7] wird zwischen Zustand undAusgabe einer rekurrenten Schicht unterschieden. Dabei ist derZustand das Ergebnis der in Gleichung 3 als O(t) bezeichnetenFunktion und wird an das nächste Neuron der gleichen Schichtübergeben. Die Ausgabe wird dann als P (t) = g(V · O(t) + c)berechnet und an die nächste Schicht übergeben. Dies entsprichtjedoch schlicht der Anwendung eines weiteren Fully-Connected-Layers auf den Zustand O(t), sodass in diesem Bericht die BegriffeZustand und Ausgabe im Kontext rekurrenter Einheiten synonymverwendet werden.

    0,1563

    0,9126

    0,3567

    0,7743

    0,8013

    0,4292

    0,1845

    0,6349...

    0,1563

    0,9126

    0,3567

    0,7743

    0,8013

    0,4292

    0,1845

    0,6349...

    Eingabelängez. B. |S| = 2048

    Auswählen

    Zusammenfassen0,9126

    0,7743

    0,8013

    0,6349

    k Elementez. B. k = 4

    Abbildung 4: k-Max-Pooling in TDNNs. Da die Reihenfolge der Elemente erhalten bleibt, kann dies so verstandenwerden, dass die zeitliche Auflösung nicht um einen bestimmten Skalierungsfaktor, sondern auf einen festen Wert kreduziert wird. Analog zum klassischen Max-Pooling bleiben dabei nur die wichtigsten Features erhalten, wobei beimk-Max-Pooling nicht je ein Feature in einem bestimmten Block, sondern k Features in der gesamten Eingabe ausgewähltwerden.

    13

  • Kass: Textklassifikation Technischer Bericht 2019-01

    x1”Hallo”

    Vorheriger Zustanddim(O(0)) = 128

    Embedding-Größez. B. dim(x1) = 100

    Gesamtgröße: 228

    f (W · [x1 ⊕O(0)] + b)

    x2”Welt”

    O(1)

    Neuer Zustanddim(O(1)) = 128

    · · ·

    O(|S|)

    Satzeinbettungdim(O(|S|)) = 128

    Abbildung 5: Funktionsweise eines RNN-Layers. Die Eingaben x1, x2, . . . , x|S| werden jeweils mit der vorherigenAusgabe O(0), O(1), . . . O(|S| − 1) verkettet und dann zur nächsten Ausgabe verrechnet. O(0) ist ein Nullvektor(da es keine vorherige Ausgabe gibt, mit der x1 verkettet werden kann) und die letzte Ausgabe O(|S|) enthält dieSatzeinbettung, die für die Klassifikation verwendet werden kann.

    Zu beachten ist, dass nicht notwendigerweise die letzteAusgabe benutzt werden muss. |S| bezeichnet die ma-ximale Satzlänge, und im Allgemeinen werden kürzereSätze mit Nullvektoren aufgefüllt, um diese Länge zuerreichen. Da diese Nullvektoren keine weiteren Infor-mationen enthalten, ist es meist nicht nötig, die Eingabebis x|S| auszuwerten. Um die endgültige Satzeinbet-tung zu erhalten, genügt es daher, die Eingabe bis zumletzten Nicht-Nullvektor auszuwerten.

    Das hier vorgestellte, grundlegende RNN-Modell hatdie Schwäche, dass jede Ausgabe nur Informationender vorherigen Wörter, also der Vergangenheit, nichtjedoch Informationen der nächsten Wörter, also der Zu-kunft, betrachtet. Doch oft sind die folgenden Wörterebenfalls wichtig für die Bedeutung eines Wortes. Die-ser Schwäche kann auf verschiedene Arten entgegenge-wirkt werden, von denen zwei bereits vorgestellt wur-den:

    1) Die Eingabe kann einen Convolutional Layerdurchlaufen. Die Ausgaben dieser Schicht enthal-ten dann jeweils Informationen über eine festeNachbarschaft der Eingaben, sodass der lokaleKontext erfasst wird. Diese können dann in einRNN eingegeben werden, das wiederum den glo-balen Kontext ermittelt. Die daraus resultieren-de Satzeinbettung berücksichtigt die vollständigeVergangenheit sowie eine endlich große Zukunft(deren Größe von den Filtermasken der Convoluti-on abhängt) der Eingabewörter. Dieses Modell istals CNN-RNN oder CRNN bekannt und kann in

    der Spracherkennung eingesetzt werden, da dortder vollständige zukünftige Kontext nicht bekanntist, aber eine kleine Menge an Eingaben gepuf-fert werden kann, um einen lokalen Kontext zuerhalten [17].

    2) Es kann ein zusätzlicher Recurrent Layer benutztwerden, der die Eingabe von hinten nach vornedurchläuft. Beide RNN-Schichten sind voneinan-der unabhängig, arbeiten also auf der gleichenEingabe und beziehen die Ergebnisse des jeweilsanderen RNNs nicht mit ein; sie stehen also inder Hierarchie des neuronalen Netzes nebeneinan-der. Die Ausgabe Ofw(t) des Vorwärts-RNNs unddie Ausgabe des Rückwärts-RNNsObw(t) werdendann wiederum verkettet, sodass sich zu jedemZeitpunkt t der Vektor O(t) = Ofw(t) ⊕ Obw(t)ergibt, der dann den globalen Kontext in bei-den Richtungen enthält. Diese Variante wird da-her treffenderweise als bidirektionales RNN be-zeichnet. Um diese verketteten Zustände auswer-ten, kann wieder ein Encoder, wie etwa Max-Over-Time-Pooling, ein weiteres eindimensiona-les RNN oder der im nächsten Abschnitt erklärteAttention-Mechanismus eingesetzt werden.

    3.3.1 Attention

    Attention (”Aufmerksamkeit“) ist eine Methode zur Be-rechnung einer Satzeinbettung, bei der ein gewichteterMittelwert ~v von i Vektoren ~hi – etwa die Zuständeeines bidirektionalen RNN – gebildet wird. Es gibt

    14

  • Kass: Textklassifikation Technischer Bericht 2019-01

    verschiedene Varianten, wobei die in diesem Berichtverwendete Variante derjenigen entspricht, die im Hier-archical Attention Network (HAN) von Yang et al. [18]Anwendung findet. Diese wird wie folgt berechnet:

    ~ui = f(W · ~hi +~b

    )αi =

    exp(~uTi · ~u

    )∑i exp

    (~uTi · ~u

    )~v =

    ∑i

    αi · ~hi

    W , ~u und ~b sind trainierbare Gewichte, deren Größebeliebig gewählt werden kann (im HAN ist dim (~u) =100), und f ist eine Aktivierungsfunktion (z. B.tanh). Jeder Vektor ~hi durchläuft damit einen Fully-Connected-Layer, um das Ergebnis ~ui zu erhalten. An-schließend wird das Skalarprodukt aus ~ui und demKontextvektor ~u berechnet. Je ähnlicher ein Vektor ~uialso zum Kontextvektor ~u ist, desto stärker wird ergewichtet. Auf diese unnormalisierten Gewichte wirddann die Softmax-Funktion angewendet, um die nor-malisierten Gewichte αi zu erhalten, mit denen die ~himultipliziert werden, um den gewichteten Mittelwert ~vzu erhalten.

    Die Bezeichnung ”Attention“ erklärt sich damit, dassder Mechanismus lernt, wichtige Zustände (z. B.Wörter eines Satzes) zu erkennen und seine ”Aufmerk-samkeit“ darauf zu richten, während weniger wichtigeZustände sehr geringe Beachtung finden. Im Gegensatzzum Max-Over-Time-Pooling, das für jede Dimensiondes Vektorraums jeweils den höchsten Wert extrahiert,werden die Vektoren dabei als Ganzes gewichtet.

    3.3.2 LSTM und GRU

    Da rekurrente Netze nur die aktuelle Eingabe und denvorherigen Zustand berücksichtigen und darauf stetsdie gleiche Parametermenge anwenden, wird der Ein-fluss von Zuständen geringer, je weiter diese in derVergangenheit liegen. Dadurch ”vergisst“ das RNN,und der eigentliche Vorteil, nämlich das Erfassen einesglobalen Kontexts, geht dabei verloren. Dieses Pro-blem kommt auch beim Training zum Tragen: Rekur-rente Netze werden mit dem Backpropagation-Through-Time-Verfahren (BPTT) trainiert, bei dem eine rekurren-te Schicht als ein sehr tiefes Netz (mit jedem Zeitschritt

    als eine einzelne Schicht) betrachtet und dann wie eingewöhnliches neuronales Netz trainiert wird. Da die-ses Netz jedoch mehrere hundert bis tausend Schichtenhat, tritt dabei das Vanishing-Gradient- oder Exploding-Gradient-Problem auf: Durch das wiederholte Ableitenwird der Gradient immer kleiner bzw. immer größer,sodass die Schichten nahe der Eingabe (bzw. nahe desersten Zeitschrittes) keine sinnvollen Werte mehr lernenkönnen.

    Um diesen Problemen entgegenzuwirken, wurdenverschiedene Erweiterungen des RNN-Konzepts ent-wickelt, von denen zwei in diesem Bericht ver-wendet werden: Long-Short-Term-Memory (LSTM,

    ”langes Kurzzeitgedächtnis“) und Gated RecurrentUnits (GRU).

    LSTM. Die LSTM-Architektur wurde erstmals 1997von Hochreiter und Schmidhuber [19] vorgestellt underweitert die RNN-Einheit um Gates (”Gatter“), mitdenen gesteuert wird, wie viele Informationen aus Ein-gabevektor und vorherigem Zustand in den aktuellenZustand einfließen. Zusätzlich wird explizit zwischenZustand und Ausgabe unterschieden, wobei auch hierwieder gesteuert wird, welche Informationen aus demZustand in die Ausgabe übernommen werden.

    In TensorFlow (das sich im Wesentlichen an der Vari-ante von Zaremba et al. [20] orientiert) wird die grund-legende RNN-Formel 3 dabei wie folgt erweitert:

    ft = Wf · [xt ⊕O(t− 1)] + bfit = Wi · [xt ⊕O(t− 1)] + bijt = Wj · [xt ⊕O(t− 1)] + bjot = Wo · [xt ⊕O(t− 1)] + boct = ct−1 ◦ sigm (ft + b1) + f (jt) ◦ sigm (it)

    O(t) = f (ct) ◦ sigm (ot)

    O(t) undO(t−1) sind die Ausgaben des aktuellen bzw.vorherigen Zeitschrittes; xt ist der aktuelle Eingabevek-tor und f die Aktivierungsfunktion. Die Werte it, jt, ftund ot berechnen sich über jeweils eigene Gewichts-matrizen und Bias-Werte aus der Konkatenation von xtund O(t− 1); die Dimensionalität des resultierendenVektors entspricht der Anzahl der Hidden Units.

    ft ist das Forget Gate. Dieser Wert bestimmt, welcheInformationen des vorherigen Zustands ct−1 in den

    15

  • Kass: Textklassifikation Technischer Bericht 2019-01

    neuen Zustand übergehen. In TensorFlow wird auf ftzusätzlich ein – im Gegensatz zu bi konstanter und nichttrainierbarer – Wert b1 addiert, der Forget Bias; sofernnicht anders angegeben, ist b1 = 1. Durch Anwendungder logistischen Funktion (sigm, da es sich um eine Sig-moidfunktion handelt) werden die Werte des Vektorskomponentenweise auf das Intervall (0; 1) normalisiert.Jede Komponente dieses Vektors wird dann mit der zu-gehörigen Komponente in ct−1 multipliziert (es ergibtsich das Hadamard-Produkt, ◦), um diese zu gewich-ten. Analog dazu wird das Input Gate it verwendet,um f (jt) – also die mittels eines Fully-Connected-Layers transformierten Eingaben – zu gewichten. Diesewerden dann auf das Zwischenergebnis addiert, um denneuen Zustand ct zu erhalten.

    Der neue Zustand dient dann wieder als Eingabe fürdie Aktivierungsfunktion f und wird komponentenwei-se mit den normalisierten Werten des Output Gates otmultipliziert, um die neue Ausgabe O(t) zu erhalten.Indem die passenden Gewichte für die Gatter erlerntwerden, kann der LSTM-Mechanismus sowohl Zusam-menhänge über große als auch über kleine Zeiträumebetrachten.

    GRU. Die Gated Recurrent Units (GRU) wurden2014 von Cho et al. [21] vorgestellt und verfolgen einähnliches Konzept, sind jedoch einfacher aufgebaut.Die konkrete Implementation, die in TensorFlow ver-wendet wird, erfolgt dabei nach folgender Formel:

    rt = sigm (Wr · [xt ⊕O(t− 1)] + br)

    ut = sigm (Wu · [xt ⊕O(t− 1)] + bu)

    O(t) = O(t− 1) ◦ ut + (1− ut)◦ f (Wc · [xt ⊕ (O(t− 1) ◦ rt)] + bc)

    Der deutlichste Unterschied zum LSTM-Modell ist,dass nicht zwischen Zustand und Ausgabe unterschie-den wird, sodass die Berechnung weniger Variablenerfordert. rt ist das Reset Gate, ut das Update Gate,die exakt wie die Gatter des LSTM-Modells berech-net werden, nämlich über ein Matrix-Vektor-Produktmit logistischer Aktivierungsfunktion. ut bestimmt da-bei direkt, welche Informationen der vorherigen Aus-gabe O(t − 1) übernommen werden. Das Komple-ment dieser Gewichtsverteilung wiederum wird ver-wendet, um die neuen Eingaben zu gewichten. Diese

    sind das übliche Matrix-Vektor-Produkt mit Aktivie-rungsfunktion f , wobei die Ausgabe des letzten Zeit-schrittes O(t − 1) – nicht jedoch die aktuelle Einga-be xt – mit rt gewichtet und deswegen nur teilweiseübernommen wird, was der GRU-Zelle erlaubt, denZustand ”zurückzusetzen“ und hauptsächlich die neueEingabe zu betrachten.

    3.4 Regularisation

    Um Overfitting entgegenzuwirken, wurden verschie-dene Verfahren entwickelt, die in ihrer Gesamtheit alsRegularisation bezeichnet werden. Diese Methodenunterscheiden sich stark in ihrer Funktionsweise undkönnen daher auch in der Regel kombiniert werden.

    3.4.1 Dropout

    Ein Dropout-Layer ist eine zusätzliche Schicht, dieeinen zufälligen Teil der Eingaben auf 0 setzt und dannausgibt. Der Teil der Eingaben, der beibehalten wird,wird dabei beim Training über eine Wahrscheinlich-keit pkeep bestimmt, in diesem Bericht meist pkeep =0,5. Die beibehaltenen Ausgaben werden dabei umden Faktor 1pkeep skaliert, um den Erwartungswert derSumme beizubehalten. Zur Inferenzzeit, d. h. bei derKlassifikation, wird pkeep = 1 gesetzt.

    Dropout kann so interpretiert werden, dass bei ei-nem Netz mit n Parametern nicht nur ein Netz, son-dern 2n verschiedene Netze trainiert werden (also jedemögliche Kombination aus beibehaltenen und nichtbeibehaltenen Werten). Zur Inferenzzeit wird dann einMittelwert dieser Netze betrachtet. Dadurch kann sichkeines der Netze zu stark auf die Trainingsdaten spe-zialisieren, sodass der Fehler beim Testen reduziertwird [22].

    Dropout kann an jeder Stelle eines Netzes eingesetztwerden, wobei bei der Anwendung auf die Eingabe-schicht ein höherer Wert für pkeep empfohlen wird [23].Das Deep Averaging Network (DAN) verwendet einespezielle Form des Dropouts, bei dem nicht nur ein-zelne Werte, sondern Word Embeddings als Ganzesauf 0 gesetzt werden. Dabei wurden mit pkeep = 0,7die besten Ergebnisse erzielt [24].

    3.4.2 L1/L2-Loss

    Eine weitere Methode zur Regularisation besteht dar-in, ein Netz beim Training zu ”bestrafen“, wenn es zu

    16

  • Kass: Textklassifikation Technischer Bericht 2019-01

    spezialisiert auf die Trainingsdaten ist. Dazu kann dieKostenfunktion erweitert werden, sodass ein Regulari-sationsterm darauf addiert wird. Dieser Term bestehtaus der Betragsnorm (1-Norm) oder der euklidischenNorm (2-Norm) der Gewichte, die dann um einen ein-stellbaren Faktor λ skaliert werden. Eine Regularisationdieser Art hat zur Folge, dass weniger extreme Gewich-te gelernt werden; insbesondere bei der euklidischenNorm werden Ausreißer sehr stark gewichtet. DieseMethode wird L1-Loss bzw. L2-Loss genannt.

    Die modifizierte Kostenfunktion kann wie folgt be-schrieben werden:

    LL1(ŷ, y) = L(ŷ, y) + λ ·∑W

    ‖W‖1

    Der L1-Loss kann auf jede beliebige Gewichtsma-trix W angewendet werden. In der Regel werden dieBias-Werte b jedoch nicht gewichtet.

    Für den L2-Loss verfügt TensorFlow über eine etwasabgewandelte Version, die auf die rechenintensive Qua-dratwurzel verzichtet:

    LL1(ŷ, y) = L(ŷ, y) +λ

    2·∑W

    ∑w∈W

    w2

    Wichtig ist, den Parameter λ nicht zu hoch zu wählen,da sonst der Anteil der tatsächlichen Kostenfunktion imVerhältnis zur 1-/2-Norm verschwindend gering wirdund das Training nahezu ausschließlich die Norm derGewichte anstatt der tatsächlichen Kosten minimiert.

    3.4.3 Early Stopping

    Early Stopping bezeichnet Techniken, deren Grund-prinzip darin besteht, das Training zu beenden, sobaldOverfitting eintritt. Für diesen Bericht habe ich das so-genannte Validation-based early stopping angepasst,um das Training nicht nur dynamisch verkürzen, son-dern auch ggf. verlängern zu können, wenn das Modellnoch nicht vollständig trainiert ist. Dazu wird zunächsteine reguläre Trainingsdauer Tmax festgelegt. Diese istin der Regel ein kleiner Wert, etwa 4 ≤ Tmax ≤ 8.Während des Trainings wird das Modell regelmäßig(z. B. nach jeweils 50 Minibatches) auf dem Dev-Setausgewertet. Ist die dabei erzielte Genauigkeit höherals der bisher gemessene Maximalwert, so werden die

    Gewichte dieses Modells gespeichert. Anschließendwird die maximale Trainingsdauer angepasst:

    Tmax = max (dTcur · 1,5e;Tmax)

    Tcur ist dabei die bei 0 startende aktuelle Trainingsepo-che. Wird zu lange kein besseres Modell gefunden, sowird irgendwann die maximale Trainingsdauer erreichtund das Training beendet. Anschließend werden dieParameter des besten Modells geladen und auf demTest-Set ausgewertet, um die Genauigkeit des Modellszu erhalten.

    Das ständige Erhöhen der Trainingsdauer verhindert,dass das Training durch einen zu klein eingestelltenWert beendet wird, bevor Overfitting eintritt, d. h. solange sich die Genauigkeit noch verbessert. Dies istinsbesondere wichtig, da unterschiedliche Architek-turen teilweise sehr unterschiedliche Trainingsdauernhaben und sich Tmax vorher schwer abschätzen lässt,wenn noch keine vergleichbaren Architekturen gete-stet wurden. Dieses Verfahren verhindert also nicht nurOverfitting, sondern fügt auch eine gewisse Robustheitbezüglich der Trainingsdauer hinzu, sofern der initia-le Wert nicht zu klein gewählt wird. Der Faktor 1,5wurde empirisch während der Experimentierphase (Ab-schnitt 5) bestimmt.

    3.4.4 Batch Normalization

    Batch Normalization ist ein Verfahren zur Normali-sierung der Features eines Minibatches. Dabei wirdwährend des Trainings jedes Feature – d. h. jede einzel-ne (skalare) Komponente jedes Featurevektors – ska-liert, sodass der Mittelwert des Features innerhalb desMinibatches 0 und die Varianz 1 ist. Da zur Inferenz-zeit hingegen in der Regel keine Minibatches vorlie-gen (sondern einzelne Dokumente klassifiziert wer-den), werden die Features anhand während des Trai-nings bestimmter gewichteter Mittelwerte der Feature-Mittelwerte und Varianzen skaliert. Dieses Verfahrenkann das Training beschleunigen und zudem zur Regu-larisation beitragen [25].

    Wird Batch Normalization mit Dropout kombiniert,so ergeben sich oft schlechtere Ergebnisse, als wennjede dieser Techniken einzeln verwendet wird. DiesemVerhalten kann entgegengewirkt werden, indem alleDropout-Schichten nach allen Batch-Normalization-Schichten im Netz stehen – der Datenfluss muss also

    17

  • Kass: Textklassifikation Technischer Bericht 2019-01

    alle Batch-Normalization-Schichten durchlaufen haben,bevor Dropout angewendet werden darf [26].

    4 Realisierung

    Nachdem die theoretischen Grundlagen geklärt wurden,soll dieses Kapitel die konkret implementierten Klassi-fikationsmodelle erklären. Diese Modelle sollen nichtnur evaluiert, sondern später auch praktisch eingesetztwerden. Die Klassifikation wird dabei auf Hardwaredes Endanwenders durchgeführt, die unter Umständennicht sehr leistungsstark ist. Da das Training hingegeneinige Zeit in Anspruch nehmen kann (wie sich in Ab-schnitt 5.3 zeigen wird), ist es sinnvoll, die Modellevorab auf einem Server zu trainieren und die trainier-ten Modelle dann auf der Hardware des Endanwenderseinzusetzen.

    Da sich diese Systeme aber in der eingesetzten Hard-und Software (was insbesondere das Betriebssystem be-trifft) unterscheiden, habe ich ein Trainings- und Test-Skript in der plattformübergreifenden SkriptsprachePython 322 implementiert. Die klassischen Modellebauen dabei auf scikit-learn auf, während für die NN-Modelle TensorFlow zum Einsatz kommt. Über diePython-Schnittstelle von TensorFlow kann ein neuro-nales Netz definiert werden. Die dafür verwendetenFunktionen führen nicht sofort eine Berechnung durch,sondern bauen einen Graphen auf, der einen Knoten mitder entsprechenden Operation enthält und über Kanten,die die Ein- und Ausgaben repräsentieren, mit ande-ren Knoten (Operationen) verbunden ist. Ist ein sol-cher Graph definiert, kann dieser mit Eingabedatenaufgerufen werden und gibt alle gewünschten Ausga-ben zurück, wozu alle Operationen im Graphen, vondenen diese Ausgaben abhängen, ausgeführt werden23.Dadurch kann die tatsächliche Ausführung aufwendi-ger Berechnungen der Implementierung von Tensor-Flow überlassen werden, die wiederum auf effizienteMethoden – d. h. Parallelisierung, Nutzung von CPU-

    22https://www.python.org/23In der Regel sind die Ausgaben die Klassifikationsergebnisse,

    die sich in der letzten Schicht des Graphen befinden, wodurch dieservollständig abgearbeitet wird; es lassen sich jedoch auch beliebi-ge Zwischenergebnisse ausgeben (z. B. die erlernten Embedding-Vektoren). Enthält der Graph Operationen, die für die Berechnungder angefragten Operationen nicht erforderlich sind, so werdendiese auch nicht berechnet.

    Features wie SIMD24-Instruktionen oder aber Nutzungder GPU – zurückgreifen kann. Dies ist ein großerVorteil, da Python als interpretierte Skriptsprache weitweniger effizient als systemnähere Sprachen ist undParallelisierung nur auf Prozessebene – nicht jedochauf Threadebene – möglich ist, wodurch viel Rechen-leistung durch die Kommunikation verloren geht25. Le-diglich Verwaltungsaufgaben, wie etwa das Vorberei-ten der Daten und der Batches, müssen in Python im-plementiert werden. Für alle Modelle wird zudem dieBibliothek NumPy26 verwendet, die unter anderem Da-tenstrukturen und Funktionen für mehrdimensionaleArrays zur Verfügung stellt, die wiederum sowohl vonscikit-learn als auch von TensorFlow eingesetzt wer-den.

    Die Testumgebung hat sowohl für klassische Model-le als auch für neuronale Netze einen ähnlichen Ab-lauf. Zunächst werden die Trainingsparameter gela-den, die bestimmen, welcher Datensatz und welcherClassifier verwendet wird, und wie das verlaufen soll.Anschließend werden die Architektur-Hyperparametergeladen, die für jeden Classifier individuell einstellbarsind. Bei NN-Modellen sind dies zum Beispiel Anzahlund Größe der Schichten oder Aktivierungsfunktio-nen. Anschließend werden 90% des Datensatzes in dasTrain- und die restlichen Daten in das Test-Set partitio-niert, wobei die relativen Klassenhäufigkeiten erhaltenbleiben. Anschließend beginnt das Training, wobei klas-sische Modelle vollständig von sklearn trainiert werden,während das Training neuronaler Netze etwas komple-xer ist, wie in Abschnitt 4.1 näher erläutert wird. Ist dasTraining beendet, wird das Modell auf dem Test-Setausgewertet. Falls Kreuzvalidierung erfolgen soll, sowird anschließend ein neues Test-Set gewählt, das zumalten disjunkt ist. Die restlichen Daten sind Trainings-daten, mit denen das Training erneut beginnt.

    4.1 Neuronale Netze

    Alle getesteten neuronalen Netze wurden mit gemeinsa-men Mechanismen trainiert und evaluiert. Aus diesemGrund verwenden alle NN-Architekturen das gleiche

    24Single Instruction, Multiple Data ist die Anwendung einerInstruktion auf einen Vektor. Bei dieser Instruktion kann es sich umFused Multiply-Add (FMA) – also eine von einer Addition gefolgteMultiplikation – handeln, womit sich Matrix-Vektor-Produkte sehrschnell berechnen lassen.

    25Dies ist auf die Referenzimplementation CPython bezogen.Andere Python-Implementation könnten abweichen.

    26http://www.numpy.org/

    18

    https://www.python.org/http://www.numpy.org/

  • Kass: Textklassifikation Technischer Bericht 2019-01

    Eingabeformat – nämlich das indizierte Satzmatrix-modell nach Gleichung 1 – und liefern die gleichenAusgaben. Nachdem die Eingabedaten mit dem zuvorbeschriebenen Trainings-Skript in Train- und Test-Setunterteilt wurden, wird ein stratifiziertes – d. h. dieKlassenhäufigkeiten erhaltendes – Dev-Set erstellt, in-dem 10% der Dokumente aus dem Train-Set entferntwerden. Dieses Dev-Set wird benutzt, um die in Ab-schnitt 3.4.3 beschriebene Variante des Early Stoppingumzusetzen. Das Train-Set wird zu Beginn jeder Epo-che in eine zufällige Reihenfolge gebracht und dann inMinibatches mit je 64 Dokumenten unterteilt, um dasneuronale Netz zu trainieren, wobei das Training imeigentlichen Sinne, d. h. das Anpassen der Gewichte,von TensorFlow übernommen wird.

    4.1.1 Gemeinsame Komponenten

    Obwohl die Architekturen sehr vielfältig sind, habenalle implementierten neuronalen Netze viele Kompo-nenten gemein. So folgt auf die Eingabeschicht beiallen getesteten neuronalen Netzen ein Embedding-Layer, der die Eingaben in ihre entsprechenden WordEmbeddings umwandelt. Dazu wird eine |V | × E-Gewichtsmatrix Wembed mit zufällig initialisierten undtrainierbaren Gewichten verwendet. Um daraus dieEmbedding-Vektoren zu erhalten, wird für den Wort-Index ŝ die ŝ-te Zeile der Matrix Wembed geladen. Diesentspricht der Matrix-Vektor-Multiplikation WTembed · s,wobei s der zu ŝ korrespondierende One-Hot-Vektorist. Wie die nächste Schicht die so erhaltene Ausga-be Sembed verarbeitet, bleibt der jeweiligen Architekturüberlassen.

    Eine weitere Schicht, die allen Netzen gemein ist,ist die Ausgabeschicht. Diese verwendet einen Ful-ly Connected Layer, um die (architekturabhängigen)Ausgaben der vorherigen Schicht in Scores für die ein-zelnen Klassen umzuwandeln. Dieser verfügt über dietrainierbare n×m-Gewichtsmatrix Wscores und den n-dimensionalen Bias-Vektor bscores, wobei n die Anzahlder Klassen und m = dim(x) die Dimensionalität desAusgabevektors x der vorherigen Schicht ist. Darauswird zunächst der Vektor ŷraw = Wscores · x + bscoresberechnet, der die unnormalisierten Scores für alleKlassen enthält, d. h. die einzelnen Einträge des Vek-tors können beliebige Werte annehmen. Die Klasse mitdem höchsten Score wird dann als Vorhersage ausge-geben, und der Vergleich dieser Vorhersagen mit dentatsächlichen Klassen dient der Berechnung der Genau-

    igkeit des Netzes.

    Ebenfalls Teil der Ausgabeschicht ist die Berechnungder Kostenfunktion, wobei für alle getesteten Archi-tekturen die Kreuzentropie verwendet wird. Für dieKreuzentropie muss die tatsächliche Wahrscheinlich-keitsverteilung eines Dokuments mit der vom neuro-nalen Netz berechneten Wahrscheinlichkeitsverteilungverglichen werden; der Wertebereich der Scores ist je-doch prinzipiell beliebig, wodurch diese in der Regelkeine gültige Wahrscheinlichkeitsverteilung darstellen.Zu diesem Zweck werden die Scores mit der Softmax-Funktion normalisiert:

    ŷsoftmax = σ (ŷraw)

    Die normalisierten Scores ŷsoftmax können dann mitder tatsächlichen Klasse y verglichen werden. Dies istmöglich, weil y ein One-Hot-Vektor ist, der die Klasseangibt, und damit ebenfalls eine gültige Wahrschein-lichkeitsverteilung ist.

    Abb. 6 zeigt diesen grundlegenden Aufbau, auf densich alle nachfolgenden Graphen – sofern nicht andersangegeben – beziehen27.

    4.1.2 Flaches und breites CNN

    Eine sehr grundlegende Architektur ist das ”flacheund breite“ Convolutional Neural Network nach YoonKim [27]. Dieses verfügt über drei Convolutional Layer,die jedoch nicht in der Tiefe verschachtelt sind, son-dern parallel nebeneinander stehen und auf den WordEmbeddings der Eingabe arbeiten. Auf allen Ausga-ben jedes Convolutional Layers wird dann Max-Over-Time-Pooling durchgeführt, um das jeweils wichtigsteFeature für jeden Filter auszuwählen. Da in der Ori-ginalversion des Netzes jeweils 100 Filter pro Convo-lutional Layer verwendet werden, ergeben sich somitinsgesamt 300 Werte. Diese werden dann konkateniertund passieren zunächst einen Dropout-Layer, bevor die-se in den finalen Fully Connected Layer übergehen.

    27Es ist zu beachten, dass die Graphen neuronaler Netze in vielenVeröffentlichungen mit der Eingabeschicht unten und der Ausgabe-schicht oben dargestellt werden; in diesem Bericht werden jedochalle Graphen mit der Eingabe oben und der Ausgabe unten dar-gestellt, da dies der natürlichen Leserichtung entspricht und derBegriff ”tiefes neuronales Netz“ dann auch im Kontext des Graphensinnvoll ist (das Hinzufügen weiterer Schichten erhöht die Tiefe,während bei umgekehrter Graphenrichtung die Höhe erhöht werdenwürde).

    19

  • Kass: Textklassifikation Technischer Bericht 2019-01

    Abb. 7 zeigt den Graphen dieses Netzes. Die parallelenOperationen (Convolution und Pooling) werden sepa-rat dargestellt, könnten aber auch als eine gemeinsameSchicht betrachtet werden.

    Die Anzahl und Größe der Filter wurde von Kim mithil-fe einer Rastersuche ermittelt. Prinzipiell können dieseWerte angepasst werden, um etwa noch mehr verschie-dene Größen von Filtern zu verwenden; auch muss dieAnzahl der Filter pro Größe nicht immer gleich sein.

    4.1.3 Mehrschichtiges breites CNN

    Eine mögliche Verallgemeinerung dieser breiten CNN-Architektur stellt die Verkettung mehrerer ”breiter“Blöcke (Wide Blocks) dar. Nach einem Block folgt ein(Max-)Pooling-Layer mit Stride 2, der also die zeit-liche Auflösung halbiert (Subsampling). Darauf folgtein weiterer Block. Dies ist analog zu CNNs zur Bild-erkennung, bei denen die Auflösung mittels Poolingreduziert wird, um dann mit vergleichsweise kleinenFiltern größere Strukturen zu erkennen. Je tiefer dasNetz wird (und je häufiger die Auflösung reduziertwird), desto größer sind dann auch die Strukturen, dieim Text erfasst werden können. Abb. 8 zeigt eine Ar-chitektur mit zwei Blöcken, aber prinzipiell ist diesauf beliebige Tiefen (beschränkt durch die Länge derEingabe) erweiterbar. Zu beachten ist, dass nach demletzten Block (wie im grundlegenden Fall) stets Max-Over-Time-Pooling verwendet wird, um die endgültigeSatzeinbettung zu erhalten.

    4.1.4 VDCNN

    Im Gegensatz zu den anderen hier vorgestellten Model-len verwendet das 2017 von Conneau et al. [14] vorge-stellte Very Deep Convolutional Network (VDCNN28)nicht Wörter, sondern einzelne Zeichen als Eingabe.Das Kernelement des VDCNN stellt der ConvolutionalBlock dar, der aus jeweils zwei Abfolgen von Convo-lution mit Größe 3, Batch Normalization und Aktivie-rungsfunktion (ReLU) besteht und in Abb. 9 dargestelltwird. Seiner Bezeichnung entsprechend verkettet dasVDCNN eine – verglichen mit anderen Architekturen –hohe Zahl dieser Blöcke in der Tiefe. Die Autorendes VDCNN stellen Varianten mit 8, 16, 28 und 48dieser Blöcke (und jeweils einem zusätzlichen Convo-

    28Die zu dieser Abkürzung führende Schreibweise ”Very DeepConvolutional Neural Networks“ findet sich im Text, jedoch nichtim Titel.

    x

    EingabeEmbedding

    · · ·

    AusgabeScores (ŷraw)Softmax (ŷsoftmax)

    Kosten Genauigkeit Vorhersagen

    y

    Abbildung 6: Gemeinsame Komponenten der getestetenneuronalen Netze. Die Eingabe x ist ein Batch von zu klas-sifizierenden Texten und durchläuft erst eine Embedding-Schicht, bevor die so umgewandelten Daten dann in dienächsten, architekturspezifischen Schichten übergehen.Deren Ausgaben wiederum gelangen in die Ausgabe-schicht, in der die Scores ŷraw der einzelnen Klassenberechnet werden. Erst in dieser Schicht werden dietatsächlichen Klassen y benötigt, um die Kosten und dieGenauigkeit zu berechnen.

    Embedding

    Wide Block

    3-Convolution×100 4-Convolution×100 5-Convolution×100

    Max-PoolingOver Time Max-PoolingOver Time Max-PoolingOver Time

    Dropout

    Ausgabe

    Abbildung 7: Das flache und breite CNN nach YoonKim. ”i-Convolution×j“ bezeichnet eine 1D-Convolution-Operation mit einer Filtergröße von i und j Feature-Maps.Die Max-Pooling-Layer wählen für jede Filtermaske dasgrößte Element aus (Max-Over-Time-Pooling). Anschlie-ßend werden die so erhaltenen Werte zu einem Vektor mit3× 100 = 300 Einträgen konkateniert, der dann zunächstin einen Dropout-Layer eingegeben wird, bevor er in dieAusgabeschicht gelangt.

    20

  • Kass: Textklassifikation Technischer Bericht 2019-01

    Embedding

    Wide Block

    3-Convolution×100 4-Convolution×100 5-Convolution×100

    Max-Pooling Time2

    Wide Block

    3-Convolution×100 4-Convolution×100 5-Convolution×100

    Max-PoolingOver Time

    Dropout

    Ausgabe

    Abbildung 8: Die mehrschichtige Variante des flachenund breiten CNN. Zwischen jeweils zwei Blöcken stehtein Pooling-Layer, der die zeitliche Auflösung halbiert.Nach dem letzten Block folgt – wie auch in der ur-sprünglichen Variante – ein Max-Over-Time-Pooling-Layer.

    Convolutional Block

    3-Convolution×a

    Batch Normalization

    ReLU

    3-Convolution×a

    Batch Normalization

    ReLU

    Abbildung 9: Darstellung eines Convolutional Blocks imVDCNN. Der Parameter a, der die Anzahl der FeatureMaps bestimmt, beträgt entweder 64, 128, 256 oder 512.

    lutional Layer vor dem ersten Block) vor, wobei diezweitgrößte Variante zum Zeitpunkt ihres Erscheinensneue Bestwerte auf einigen Datensätzen erzielte. JedeConvolution (einschließlich der initialen vor dem erstenBlock) verwendet Padding, um die Dimensionalität derEingabe beizubehalten.

    Die ersten Schichten dieser tiefen Architektur bildetein Embedding-Layer, der jedes Zeichen der Eingabein einen 16-dimensionalen Vektor umwandelt und voneinem Convolutional Layer mit Größe 3 und 64 FeatureMaps gefolgt wird. Dessen Ausgaben wiederum wer-den in den ersten Block eingegeben, der ebenfalls 64Feature Maps ausgibt. Danach folgt – je nach gewählterTiefe – mindestens ein gleichartiger Block, bevor in ei-nem Max-Pooling-Layer29 die zeitliche Auflösung hal-biert wird. Danach folgen wieder mehrere Blöcke, dies-mal mit 128 Feature-Maps. Diese Folge von Blöckenund Pooling-Operationen setzt sich fort, wobei nachjedem Pooling die Anzahl der Feature Maps der fol-genden Blöcke verdoppelt wird. Nach insgesamt dreiPooling-Operationen haben die letzten Blöcke je 512Feature Maps.

    Nach dem letzten Convolutional Block folgt k-Max-Pooling mit k = 8, sodass für jede Feature Map die 8größten Werte (insgesamt 4096) extrahiert und in einenFully-Connected-Layer mit ReLU-Aktivierung einge-geben werden. Dieser gibt 2048 Werte aus, die wieder-um als Eingabe für einen weiteren Fully-Connected-Layer dienen, der ebenfalls 2048 Werte ausgibt. Die-se Werte dienen dann der Score-Berechnung (sieheAbb. 6). Die Architektur der Variante mit 8 Blöckenist in Abb. 10 dargestellt. Varianten mit mehr Blöckenfolgen dem gleichen grundlegenden Aufbau, wobei le-diglich die Anzahl der (gleichartigen) Blöcke zwischenden Pooling-Schichten variiert wird.

    4.1.5 Einfaches RNN

    Eine weitere, sehr grundlegende Architektur besteht auslediglich einer einzelnen RNN-Schicht, wie in Abb. 11zu sehen ist. Abgesehen von einer Dropout-Schicht zurRegularisation (und den üblichen Ein- und Ausgabe-schichten) sind keine weiteren Schichten erforderlich,um einen funktionsfähigen Classifier zu erhalten. An-passbare Hyperparameter sind der Typ der RNN-Zelle,

    29Die Autoren haben auch andere Varianten des Poolings gete-stet, doch Max-Pooling erzielte die besten Ergebnisse und wirddaher auch in diesem Bericht verwendet.

    21

  • Kass: Textklassifikation Technischer Bericht 2019-01

    Zeichen-Embedding

    3-Convolution×64

    Convolutional Block×64

    Convolutional Block×64

    Max-Pooling Time2

    Convolutional Block×128

    Convolutional Block×128

    Max-Pooling Time2

    Convolutional Block×256

    Convolutional Block×256

    Max-Pooling Time2

    Convolutional Block×512

    Convolutional