Skip to content
Snippets Groups Projects
Commit ee0bf9e3 authored by Silas Dohm's avatar Silas Dohm
Browse files

Merge branch 'master' of gitlab.cvh-server.de:w2v/w2vp

parents 40f9979a d58ad7f0
Branches
No related tags found
No related merge requests found
\subsection{Datenauslagerung / Generator
\label{subsec:Generator}}
%Problemstellung
Spätestens wenn mit etwas größeren Datenmengen trainiert wird stellt sich bei einer unserer Methoden ein neues Problem dar. Während die mean-Methode ohne Probleme durchläuft beschwert sich die CNN-Methode, dass nicht genug Arbeitsspeicher vorhanden ist. Dies lässt sich auch ganz leicht nach folgender Formel nachrechnen:
Spätestens wenn mit etwas größeren Datenmengen trainiert wird stellt sich bei einer unserer Methoden ein neues Problem dar. Während die mean-Methode ohne Probleme durchläuft bricht die CNN-Methode aufgrund mangelnden Arbeitsspeicher ab. %beschwert sich die CNN-Methode, dass nicht genug Arbeitsspeicher vorhanden ist.
Dies lässt sich auch ganz leicht nach folgender Formel nachrechnen:
%Vlt mit Formelzeichen, welche vorher im text definiert werden?
% => Kürzere Formel & Mehr Text
\begin{equation}
......
......@@ -19,7 +19,14 @@ Wissend wie Word2Vec funktioniert lassen sich verschiedene Probleme bei diesem D
\subsubsection{Distribution
\label{subsubsec:Dist}}
\wip{Ansatz: viele 5* reviews = Infos die behalten werden sollen vs ausgeglichenen Datensatz}
Eine generelle Voraussetzung für Algorithmen des maschinellen Lernens ist, dass mit einem ausgeglichenen Datensatz gearbeitet wird. Unausgeglichene Datensätze, wie der \noteable{Yelp} Datensatz, verleiten dazu, dass
neuronale Netze eben genau diesen Bias lernen.
Wenn der Datensatz jedoch die Realität relativ gut darstellt ist es gerade für Anfänger schwierig zu entscheiden wie damit umgegangen werden soll. Schließlich ist es prinzipiell eine hilfreiche Information wenn es bekannt ist, dass z.\,B. Bewertungen eine Verteilung wie in \ref{fig::DST} besitzen.
Der entwickelte Algorithmus soll die Kategorisierung aber nicht an fundiertem Raten ausmachen, sondern anhand von selbst erarbeiteten Kriterien und damit unabhängig der ursprünglichen Distribution.
Generell gibt es zwei Ansätze, um diesen Effekt zu bekämpfen. Zum Einem gibt es die Möglichkeit, den \noteable{Near-Miss-Algorithm} zu benutzen. Mit Hilfe diesem werden im Grunde Einträge von zu oft vertretenen Klassen aus dem Datensatz entfernt, bis dieser ausgeglichen ist. Dadurch wird zwar verhindert, dass eine Klasse bei der Kategorisierung bevorzugt wird, aber man verringert auch den zu Grunde liegenden Datensatz. Je nach ursprünglicher Verteilung und gesamter Menge kann dies zu einem zu kleinen Datensatz und somit weiteren Problemen führen.
Zum Anderen gibt es die Möglichkeit, die Klassen beim Trainieren zu gewichten. Hier werden selten auftretende Klassen stärker gewertet, um so für das Programm den Anschein zu erwecken, als ob diese häufiger vorkommen. \wip{Dies kann dazu führen, dass ausgemachte Kriterien für bestimmte Klassen als aussagekräftiger gelten, als sie eigentlich sind, da sie vermeintlich bei vielen Trainingsdaten so vorkamen}
Im Rahmen dieser Arbeit wurde der zweite Ansatz gewählt.
\subsubsection{Zeichensatz}
Zuerst sollte der Datensatz in lowercase konvertiert werden, da bei den Wordvektoren sonst ein Unterschied zwischen z.B. \noteable{good} und \noteable{Good} besteht. Dabei könnte sogar zufallsbedingt durch die Anwendung in leicht verschiedenen Kontexten und die generelle unterschiedliche Häufigkeit die Interpretation dieser Wörter auseinandergehen.
......
......@@ -155,13 +155,8 @@ beschleunigen. Eine kleinere \lstinline{batch_size} hat beim Experimentieren in
geführt.
Unausgeglichene Datensätze wie der \noteable{Yelp} Datensatz, verleiten dazu das, dass
neuronale Netze eben genau diesen Bias lernen. Generell gibt es zwei Ansätze, um diesen
Effekt zu bekämpfen. Zu einem gibt es die Möglichkeit, den \noteable{Near-Miss-Algorithm} zu benutzen,
welcher im Grunde Einträge von zu oft vertretenen Klassen aus dem Datensatz entfernt, bis dieser
ausgeglichen ist. Zum anderen gibt es die Möglichkeit, die Klassen beim Trainieren zu gewichten.
Im Rahmen dieser Arbeit wurde der zweite Ansatz gewählt. Hier zu erkennen an der an
die Methode \lstinline{fit} Übergebenen Klassengewichte.
Wie in Kapitel \ref{subsubsec:Dist} diskutiert gibt es verschiedene Umgänge mit unausgeglichenen Datensätzen. Die für diese Arbeit gewählte Methode der Gewichtung ist hier zu erkennen an den, an
die Methode \lstinline{fit} Übergebenen, Klassengewichte.
\wip{vll noch erklären wie die Gewichte entstehen}
\begin{lstlisting}[caption={Neuronales Netz - Evaluieren},label={list:mean5},firstnumber=60]
modelNN.evaluate(X_test,Y_test)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment