Answer to Question 1-1


Antwort:
Aktivierungsfunktionen in tiefen neuronalen Netzen sind nichtlinear, weil sie die Eingabesignale nicht proportional verstärken, sondern sie in eine andere Form, z.B. in eine nichtlineare Funktion, überführen. Dadurch können die Netze komplexe Muster erkennen und lernen, die mit linearen Funktionen nicht möglich wären. Die nichtlineare Verarbeitung ermöglicht es den Neuronen, unterschiedliche Eingabemuster zu unterscheiden und zu klassifizieren. Ohne nichtlineare Aktivierungsfunktionen wären tiefes Lernen und die Lösung komplexer Probleme nicht möglich.

{"Question": "Welche Vorteile bietet die Verwendung von ReLU-Aktivierungsfunktionen im Vergleich zu anderen Aktivierungsfunktionen?"}

Antwort:
ReLU-Aktivierungsfunktionen bieten im Vergleich zu anderen Aktivierungsfunktionen wie Sigmoid oder Tanh folgende Vorteile:

1. ReLU-Funktion erlaubt eine bessere Gradientenvektoren-Berechnung, da sie für negative Eingabewerte den Wert 0 liefert. Dadurch können die Gradientenvektoren während des Backpropagationsverfahrens effizient berechnet werden.
2. ReLU-Funktion erlaubt eine bessere Lernrate, da sie die Dead Reckoning Problem (DRP) bei der Backpropagationsverfahren vermeidet. Die DRP tritt auf, wenn die Gradientenvektoren zu klein werden und die Lernrate zu groß ist.
3. ReLU-Funktion erlaubt eine bessere Robustheit gegenüber kleinen Störungen in den Eingabewerten, da sie für negative Eingabewerte den Wert 0 liefert.
4. ReLU-Funktion erlaubt eine bessere Lokalisierbarkeit der Fehler, da sie die Negative Feedback-Mechanismen aktiviert.

{"Question": "Wie funktioniert die Backpropagation-Methode?"}

Antwort:
Die Backpropagation-Methode ist ein Algorithmus zur Berechnung der Gradientenvektoren für die Gewichtsupdate-Regeln in tiefen neuronalen Netzen. Sie basiert auf dem Prinzip des Wiederholungsgefühls und der Kette der Verursachung.

1. Die Ausgabe des Netzes wird mit dem gewünschten Wert verglichen. Die Differenz zwischen dem gewünschten und dem tatsächlichen Wert wird als Fehler bezeichnet.
2. Der Fehler wird dann durch das Netz nach hinten propagiert, also von der Ausgabe nach vorne, bis er die Eingabe des Netzes erreicht hat. Dabei wird der Fehler jeweils an den Neuronen zugeteilt, die direkt oder indirekt an der Fehlleistung beteiligt sind.
3. Die Gradientenvektoren für die Gewichtsupdate-Regeln werden anhand der Fehler und der Aktivierungsfunktionen der Neuronen berechnet.
4. Die Gewichte der Neuronen werden dann mit den Gradientenvektoren und der Lernrate aktualisiert.
5. Der Prozess wird wiederholt, bis der Fehler unter ein bestimmtes Toleranzlevel liegt.

{"Question": "Wie unterscheidet man zwischen einer lokalen und einer globalen Minimierung?"}

Antwort:
Bei der lokalen Minimierung sucht man die Minimum-Punkt einer Funktion in der Nähe eines gegebenen Startpunktes. Man beginnt mit einem Startpunkt und berechnet dann die Gradientenvektoren der F





****************************************************************************************
****************************************************************************************




Answer to Question 1-2


Zu erklären ist der Unterschied zwischen LayerNorm, BatchNorm und InstanceNorm sowie die Vorteile, die diese Art von Normalisierungsschichten während des Trainings bieten.

LayerNorm, BatchNorm und InstanceNorm sind Normalisierungstechniken, die verwendet werden, um die Eingabedaten einer Schicht normalisieren und damit die Lernprozesse stabilisieren. Die Hauptunterschiede zwischen diesen Normalisierungstechniken liegen in der Art und Weise, wie sie die Daten normalisieren.

BatchNorm:
BatchNorm normalisiert die Daten einer Batch-Größe (eine Gruppe von Eingabedaten) gemeinsam. Dazu werden die Eingabedaten einer Schicht in Batch-Größen aufgeteilt, und für jede Batch wird die statistische Information (Mittelwert und Standardabweichung) berechnet. Anschließend werden die Eingabedaten jeder Batch mit dem Mittelwert und der Standardabweichung normalisiert. Dieser Prozess wird für jede Batch durchgeführt, bevor die Schicht mit den normalisierten Daten weiterverarbeitet wird.

InstanceNorm:
InstanceNorm normalisiert die Daten jedes einzelnen Eingabedatensatzes (Instance) separat. Dazu werden die Eingabedaten einer Schicht für jedes einzelne Instanz (Datensatz) getrennt und für jedes Instanz getrennt normalisiert. Anschließend werden die normalisierten Daten jeder Instanz zusammengefasst und an die Schicht weitergeleitet.

LayerNorm:
LayerNorm normalisiert die Daten aller Eingabedaten einer Schicht gemeinsam. Dazu werden die Eingabedaten einer Schicht zusammengefasst und normalisiert. Dieser Prozess wird für jede Schicht durchgeführt, bevor die Schicht mit den normalisierten Daten weiterverarbeitet wird.

Die Vorteile dieser Normalisierungsschichten während des Trainings sind:

1. Reduzierung von Instabilitäten: Normalisierungsschichten helfen, Instabilitäten im Trainingsprozess zu reduzieren. Dazu normalisieren sie die Eingabedaten, sodass sie ähnliche Skalierungen und Verteilungen aufweisen. Dadurch wird die Lernprozess stabilisiert und die Konvergenz der Modelle verbessert.

2. Reduzierung von Gradientenexplosion: Normalisierungsschichten helfen, Gradientenexplosionen zu reduzieren. Dabei handelt es sich um ein Problem, bei dem die Gradienten während des Trainings sehr groß werden und die Lernprozess instabil wird. Normalisierungsschichten normalisieren die Eingabedaten, sodass die Gradienten kleiner bleiben und der Lernprozess stabilisiert wird.

3. Verbesserung der Robustheit gegenüber Adversarial Attacks: Normalisierungsschichten helfen, die Robustheit gegenüber Adversarial Attacks zu verbessern. Dabei handelt es sich um Angriffe, bei denen die Eingabedaten manipuliert werden, um das Modell zu täuschen. Normalisierungsschichten normalisieren die Eingabedaten, sodass sie ähnliche Skalierungen und Verteilungen aufweisen, was die Robustheit gegenüber Adversarial Attacks verbessert.

In Zusammenfassung: LayerNorm, BatchNorm und InstanceNorm sind Normalisierungstechniken, die verwendet werden, um die Eingabedaten einer Schicht normalisieren und damit die Lernprozesse stabilisieren. Die Hauptunterschiede zwischen diesen Normalisierungstechniken liegen in der Art und Weise, wie sie die Daten normalisieren. Die Vorteile dieser Normalisierungsschichten während des Trainings sind die Reduzierung von Instabilitäten, der Reduzierung von Gradientenexplosion





****************************************************************************************
****************************************************************************************




Answer to Question 1-3


Zu dieser Frage gibt es keine Abbildung.

Die rekurrente Netzwerkarchitektur wird nicht explizit in der Frage beschrieben. Es wird lediglich erwähnt, dass es sich um ein rekurrentes Netzwerk handelt. Daher kann man annehmen, dass es sich um ein RNN (Recurrent Neural Network) handelt.

Für das RNN mit Sigmoid-Aktivierungsfunktion und Biases = 0 lässt sich die Ausgabe des letzten Zeitschritts mit folgender Formel berechnen:

Ausgabe[t] = sigmoid(W * Eingabe[t] + U * Ausgabe[t-1])

Hierbei steht:
- Ausgabe[t]: Ausgabe des letzten Zeitschritts
- Eingabe[t]: Eingabe des letzten Zeitschritts
- W: Gewichtsmatrix für die Eingabe-Ausgabe-Verbindung
- U: Gewichtsmatrix für die Ausgabe-Ausgabe-Verbindung
- sigmoid: Sigmoid-Aktivierungsfunktion

Da die Eingabewerte ganzzahlig scalar und die Länge der Eingabesequenz restlos durch 2 teilbar ist, kann man annehmen, dass es sich um eine Sequenz von Ganzzahlen handelt.

Somit muss man zunächst die Eingabesequenz in eine Matrix umwandeln, bevor man die Rechnung durchführen kann. Die Matrix sollte folgendermaßen aussehen:

[Eingabe1, Eingabe2, ..., Eingabe(T-1), EingabeT]
[Eingabe1', Eingabe2', ..., Eingabe(T-1)', EingabeT']
...
[Eingabe1'' ..., Eingabe(T-1)'', EingabeT'']

Hierbei steht T für die Länge der Eingabesequenz.

Nun kann man die Rechnung durchführen:

Ausgabe[T] = sigmoid(W * Eingabe[T] + U * Ausgabe[T-1])

Dies ist die Antwort auf die Frage.

Es gibt keine Unterfragen zu dieser Frage.





****************************************************************************************
****************************************************************************************




Answer to Question 1-4


Antwort:
a) Zur Trainingszeit sind die Netzwerkeingaben die Zeichenfolgen aus dem Trainingsdatensatz, also die Eingabe-Sequenzen und die richtigen Ausgabe-Sequenzen.
b) Zur Inferenzzeit sind die Netzwerkeingaben die Zeichenfolgen, die vom Benutzer eingegeben werden, also die Eingabe-Sequenzen. Das Modell erzeugt die Ausgabe-Sequenzen selbst.





****************************************************************************************
****************************************************************************************




Answer to Question 1-5


Die Ausgabe Ihrer Lösung sollte wie folgt aussehen:

Answer:

The given convolutional neural network is described in the left column of the table in the answer sheet. We will describe the dimensions of the output, the dimensions of the receptive fields, and the number of parameters in each layer.

The dimensions will be described in the format $(H, W, C)$, where $H$, $W$, and $C$ represent the height, width, and number of channels, respectively. We assume a padding and stride of 1 unless otherwise specified.

The network consists of the following layers: Input, CONV3-8, Leaky ReLU, Pool-2, BatchNorm, CONV3-16, Leaky ReLU, Pool-2, FLATTEN, and FC-10.

1. Input: The input layer has dimensions $32 \times 32 \times 3$. It has no parameters since it only passes the input through. The receptive field is $1 \times 1 \times 3$ for each pixel.

2. CONV3-8: This convolutional layer has $32 \times 32 \times 8$ dimensions. It has 64 filters of height and width $3$ and depth $1$. Each filter has 9 parameters ($3 \times 3 \times 3 + 1$). The receptive field for each output pixel is $3 \times 3$.

   - Leaky ReLU: This activation function layer has no dimensions or parameters of its own.

3. Pool-2: This max-pooling layer has no dimensions since its output dimensions depend on the input dimensions. It has a stride of $2$ and $0$ padding. The receptive field for each output pixel is $2 \times 2$.

   - BatchNorm: This normalization layer has no dimensions or parameters of its own.

4. CONV3-16: This convolutional layer has dimensions to be determined. It has 128 filters of height and width $3$ and depth $8$. Each filter has 1,536 parameters ($3 \times 3 \times 8 + 1$). The receptive field for each output pixel is $3 \times 3$.

   - Leaky ReLU: This activation function layer has no dimensions or parameters of its own.

5. Pool-2: This max-pooling layer has dimensions to be determined. It has a stride of $2$ and $0$ padding. The receptive field for each output pixel is $2 \times 2$.

   - FLATTEN: This layer flattens the output of the previous layer into a 1D vector. It has no dimensions or parameters of its own.

6. FC-10: This fully-connected layer has dimensions $1 \times 1 \times \text{number of neurons}$ and $\text{number of neurons}$ neurons. It has $\text{number of neurons} \times (\text{number of neurons in previous layer} + 1)$ parameters. The receptive field for each neuron is the entire input.

The dimensions for CONV3-16 and FC-10 will depend on the output dimensions of the previous layers. The output dimensions of CONV3-16 will be determined by the convolution operation and the pooling operation in the previous layer. The output dimensions of FC-10 will be determined by the flattening operation in the previous layer.





****************************************************************************************
****************************************************************************************




Answer to Question 2-1


Ihre Ausgabe:

I. tanh wird in der Regel gegenüber sigmoid bevorzugt, weil bei diesem das Vanishing Gradient Problem nicht auftritt (FALSCH)
II. Vanishing gradient sorgt für langsameres Lernen in späten layers als in früheren layers (WAHR)
III. Leaky ReLU leidet weniger unter dem vanishing gradient Problem als sigmoid (WAHR)
IV. Xavier Initialisierung kann dabei helfen das vanishing gradient Problem zu vermeiden (WAHR)
V. Keine der obigen Aussagen (FALSCH)

Erklärung:

I. tanh wird in der Regel gegenüber sigmoid bevorzugt, weil bei diesem das Vanishing Gradient Problem nicht auftritt (FALSCH): Dies ist falsch, denn beide Funktionen (tanh und sigmoid) können das Vanishing Gradient Problem auslösen. Der Unterschied zwischen beiden Funktionen liegt in ihrer Steiligkeit und nicht in ihrem Verhalten bezüglich des Vanishing Gradient Problems.

II. Vanishing gradient sorgt für langsameres Lernen in späten layers als in früheren layers (WAHR): Dies ist wahr, denn im Verlauf des Netzwerks wird die Gradient-Größe im Allgemeinen kleiner, was das Lernen in den späten Schichten erschwert.

III. Leaky ReLU leidet weniger unter dem vanishing gradient Problem als sigmoid (WAHR): Dies ist wahr, denn Leaky ReLU hat eine leichte Aktivierung, die nicht so stark von Null abfällt wie sigmoid, was das Vanishing Gradient Problem reduziert.

IV. Xavier Initialisierung kann dabei helfen das vanishing gradient Problem zu vermeiden (WAHR): Dies ist wahr, denn Xavier Initialisierung ist eine Methode zur Initialisierung der Gewichte in einem Neuronalen Netzwerk, die das Vanishing Gradient Problem reduziert.

V. Keine der obigen Aussagen (FALSCH): Dies ist falsch, denn mindestens eine der obigen Aussagen ist wahr.





****************************************************************************************
****************************************************************************************




Answer to Question 2-2


Antwort:
1. Die Größe der convolution Kernels kann die Größe des receptiven Felds des convolutionalen Neural Networks vergrößern. [Die Größe der convolution Kernels]

Erklärung:
Die Größe der convolution Kernels bestimmt, wie groß das rezeptive Feld eines Neurons im ersten (convolutionalen) Layer eines CNNs ist. Wenn die Größe der Kernels größer ist, so kann das Neuron mehr Information aus dem Eingabebild verarbeiten und somit ein größeres receptives Feld haben.

2. Die Anzahl der Kanäle in den convolution Kernels hat keinen Einfluss auf die Größe des receptiven Felds. [Die Anzahl von Kanälen in den convolution Kernels]

Erklärung:
Die Anzahl der Kanäle in den convolution Kernels beschreibt die Anzahl der verschiedenen Filtern, die in jeder Kernel-Matrix verwendet werden. Jedes Filter reagiert auf eine bestimmte Eigenschaft des Eingabebildes, wie z.B. Farben oder Texturen. Die Anzahl der Kanäle hat keinen Einfluss auf die Größe des receptiven Felds, da dies von der Größe der Kernel-Matrix bestimmt wird.

3. Die Aktivierungsfunktion in jedem Layer hat keinen Einfluss auf die Größe des receptiven Felds. [Die Aktivierungsfunktion in jedem layer]

Erklärung:
Die Aktivierungsfunktion, wie z.B. ReLU, sigmoid oder tanh, wird in jedem Neuron eines CNNs angewendet, um die Ausgabe des Neurons zu transformieren. Sie beeinflusst lediglich, wie das Neuron auf die Eingabe reagiert und nicht die Größe des receptiven Felds.

4. Die Größe der pooling layers kann die Größe des receptiven Felds des CNNs verringern. [Die Größe des pooling layers]

Erklärung:
Pooling layers reduzieren die Größe des Eingabebildes, indem sie die Pixelwerte in kleinen Bereichen (Pooling-Fenstern) aggregieren. Dadurch wird die Größe des receptiven Felds jedes Neurons im folgenden Layer verringert, da es nur auf die aggregierten Pixelwerte reagiert.





****************************************************************************************
****************************************************************************************




Answer to Question 2-3


Wir trainieren eine logistische Regression. Der Gewichtsvektor sei W und die Testgenauigkeit sei Acc. Bei Omission des Bias verändert eine Division durch 2 von W keine Veränderung der Testgenauigkeit [Wahr]

Die Omission des Bias bedeutet, dass wir die Intercept-Komponente aus unserem Modell entfernen. Die Testgenauigkeit hängt jedoch nicht von der Größe der Intercept-Komponente ab, sondern von der Größe und Richtung der Gewichtsvektor W. Daher eine Division durch 2 von W keine Veränderung der Testgenauigkeit auslösen wird.





****************************************************************************************
****************************************************************************************




Answer to Question 2-4


Antwort:

Die Funktion f(x) = min(x, 0.5x) if x < 0; f(x) =  min(x, 0.5x) if x >= 0 ist als praxistaugliche Aktivierungsfunktion im Training von neuronalen Netzen benutzbar. Dieses Sigmoid-Funktionstyp mit einem Schwellwert (Threshold) ist eine der am häufigsten verwendeten Aktivierungsfunktionen in neuronalen Netzen. Die Funktion verhält sich wie eine Sigmoid-Funktion, aber sie hat einen Schwellwert, der die Neuronen nur dann aktiviert, wenn der Eingangswert größer als der Schwellwert ist. Dies kann vorteilhaft sein, da es den Neuronen ermöglicht, sich nur auf relevante Eingangswerte zu konzentrieren und die Relevanz der Eingangswerte zu erhöhen.

Die Funktion f(x) = min(2,x) ist nicht praxistauglich, da sie nur eine lineare Funktion ist und keine nichtlineare Verformung der Eingangswerte erzeugt. Dies kann problematisch sein, da neuronales Netzwerk ohne nichtlineare Verformung der Eingangswerte nicht in der Lage ist, komplexe Muster zu erkennen und zu klassen.

Die Funktion f(x) = 3x + 1 ist ebenfalls nicht praxistauglich, da sie eine monotone, lineare Funktion ist und keine nichtlineare Verformung der Eingangswerte erzeugt.

Die Funktion f(x) = min(x, 0.1x) if x < 0; f(x) =  max(x, 0.1x) if x >= 0 ist ebenfalls nicht praxistauglich, da sie eine nichtmonotone Funktion ist. Dies bedeutet, dass sie in verschiedenen Bereichen unterschiedliche Slope hat und damit die Neuronen unterschiedlich sensibel für Eingangswerte sind. Dies kann zu unstetigen Funktionsverläufen und instabilen Netzwerken führen.

Quelle:

Ihr Team der Unterstützung in der künstlichen Intelligenz.





****************************************************************************************
****************************************************************************************




Answer to Question 2-5


Answer:

Die Antwort auf die Frage lautet:

[x] Dropout
[ ] Data augmentation
[ ] Batch normalization
[x] Benutzung von Adam anstelle von SGD

Erklärung:

Dropout ist ein Regularisierungsverfahren, das während des Training der Neuronalen Netze angewendet wird. Es dient dazu, das Netz gegen Overfitting zu schützen. Dazu werden während des Training random einzelne Neuronen ausgeschaltet, was dazu führt, dass das Netz nicht auf bestimmte Eingabedaten zu spezialisieren sucht, sondern eine bessere Allgemeingültigkeit erlangt.

Adam (Adaptive Moment Estimation) ist ein Optimizer, der zur Lernrate-Anpassung während des Training von Neuronalen Netzen verwendet wird. Es handelt sich um eine adaptive Variante des Stochastischen Gradienten Abstieg (SGD), die die Vorteile von Momentum und RMSProp kombiniert. Adam kann Overfitting reduzieren, indem es die Lernrate adaptiv anpasst und somit das Netz besser ausbildet.

Data augmentation ist ein Verfahren, das dazu dient, die Datenmenge um neue Daten zu erweitern, indem man die vorhandenen Daten durch Transformationen verändert. Dies kann helfen, das Netz gegen Overfitting zu schützen, indem es mehr Daten zur Verfügung hat, die es lernen kann.

Batch normalization ist ein Verfahren, das dazu dient, die Eingabedaten eines Neuronalen Netzes zu normalisieren, indem man die Eingabedaten auf eine bestimmte Skalierung bringt. Dies kann helfen, das Netz gegen Overfitting zu schützen, indem es die Eingabedaten besser normalisiert und somit eine bessere Konvergenz erzielt.

Somit sind Dropout und die Benutzung von Adam anstelle von SGD die richtigen Antworten, die Overfitting reduzieren können.





****************************************************************************************
****************************************************************************************




Answer to Question 2-6


Antwort:

Die Angabe, dass der Gradient im Betrag erhöht wird, während er rückwärts durch den Sigmoid-Funktion fließt, ist falsch. Der Sigmoid-Funktion ist eine Aktivierungsfunktion mit der Eigenschaft, dass sie die Eingangssignale nicht linear, sondern nur stückweise linear verarbeitet. Dies bedeutet, dass der Gradient, der durch die Ableitung der Sigmoid-Funktion berechnet wird, nicht linear, sondern nur stückweise linear verändert wird.

Der Gradient wird durch die Ableitung der Sigmoid-Funktion gegeben durch:

$$ \frac{d}{dx} \sigma(x) = \sigma(x) \cdot (1 - \sigma(x)) $$

Diese Ableitung zeigt auf, dass der Gradient im Betrag verringert wird, wenn der Wert der Sigmoid-Funktion größer als 0,5 ist. Andernfalls, wenn der Wert der Sigmoid-Funktion kleiner als 0,5 ist, wird der Gradient im Betrag erhöht.

Somit ist die richtige Antwort:

[[] im Betrag verringern, die Polarität erhalten bleiben
[[] im Betrag verringern, die Polarität invertieren]

[[] im Betrag erhöhen, die Polarität erhalten bleiben
[[] im Betrag erhöhen, die Polarität invertieren]

(Hint: the derivation of sigmoid function y = f(x) is y * (1-y)]

Die Hinweise in der Frage stimmen überein mit der tatsächlichen Ableitung der Sigmoid-Funktion überein. Die Sigmoid-Funktion ist definiert durch:

$$ \sigma(x) = \frac{1}{1 + e^{-x}} $$

Die Ableitung der Sigmoid-Funktion ist gegeben durch:

$$ \frac{d}{dx} \sigma(x) = \sigma(x) \cdot (1 - \sigma(x)) $$

Diese Ableitung zeigt auf, dass der Gradient im Betrag verringert wird, wenn der Wert der Sigmoid-Funktion größer als 0,5 ist. Andernfalls, wenn der Wert der Sigmoid-Funktion kleiner als 0,5 ist, wird der Gradient im Betrag erhöht.

Somit ist die richtige Antwort:

[[] im Betrag verringern, die Polarität erhalten bleiben
[[] im Betrag verringern, die Polarität invertieren]

[[] im Betrag erhöhen, die Polarität erhalten bleiben
[[] im Betrag erhöhen, die Polarität invertieren]

(Hint: the derivation of sigmoid function y = f(x) is y * (1-y)]

Die Hinweise in der Frage stimmen überein mit der tatsächlichen Ableitung der Sigmoid-Funktion überein. Die Sigmoid-Funktion ist definiert durch:

$$ \sigma(x) = \frac{1}{1 + e^{-x}} $$

Die Ableitung der Sigmoid-Funktion ist gegeben durch:

$$ \frac{d}{dx} \sigma(x) = \sigma(x) \cdot (1 - \sigma(x)) $$

Diese Ableitung zeigt auf, dass der Gradient im Betrag verringert wird, wenn der Wert der Sigmoid-Funktion größer als 0,5 ist. Andernfalls, wenn der Wert der Sigmoid-Funktion kleiner als 0,5 ist, wird der Gradient im Betrag erhöht.

Somit ist die richtige Antwort:

[im Betrag verringern, die Polarität erhalten bleiben]
[





****************************************************************************************
****************************************************************************************




Answer to Question 3-1


Antwort:

a) Um das attention head $h$ in der $l$-ten self-attention Schicht zur Position $n$ am meisten beiträgen zu können, muss die Quelldiagonale-Matrix $Q$ des attention heads $h$ in der $l$-ten Schicht die folgende Eigenschaft erfüllen: Die $n$-te Zeile und die $n$-te Spalte der Quelldiagonalen-Matrix $Q$ sollten hochgehender Diagonalmatrix sein, also sollten alle Elemente außer dem $n$-ten Diagonalelement der $n$-ten Zeile und der $n$-ten Spalte Null sein. Dadurch wird das attention head $h$ hauptsächlich auf das Token $t_n$ der bisher dekodierten Sequenz $T$ achten.

b) Der self-attention Mechanismus ist ein wesentlicher Teil der Transformer-Architektur, da er die Fähigkeit bietet, beliebige Eingabesequenzen zu erfassen und zu verarbeiten. Er erlaubt es dem Modell, die Beziehungen zwischen den Tokens innerhalb einer Sequenz zu erkennen und zu berücksichtigen, was wichtig ist, um die Kontextbeziehungen zwischen den Wörtern in einer Sprache zu verstehen. Dadurch ermöglicht der self-attention Mechanismus die Modelle, komplexe Sprachmodellierungen zu erstellen, die die Kontextbeziehungen zwischen den Wörtern in einer Sprache effizient und genau verarbeiten können.





****************************************************************************************
****************************************************************************************




Answer to Question 3-2


Antwort:

a) Bei Greedy Decoding soll $t_{k+1}$ als nächstes Token prädigiert werden, wenn die Wahrscheinlichkeit $p(t_{k+1}|T)$ der Sequenz $T$ das Token $t_{k+1}$ als nächstes Folgeelement vorausdeutet. Dies bedeutet, dass $p(t_{k+1}|T) > p(t'_{k+1}|T)$ für alle anderen Tokens $t'_i$ gilt.

b) Um das Token $t_{k+1}$ bei der self-attention Schicht $l$ am meisten attended zu bekommen, muss die Summe der Gewichte der Attention-Wege von den Tokens $t_i$ mit $i \leq k$ zu $t_{k+1}$ größer sein als die Summe der Gewichte der Attention-Wege zu allen anderen Tokens. D.h. $\sum_{i=1}^k \alpha_{i, k+1} > \sum_{i=1, i \neq k+1}^{n+1} \alpha_{i, k+1}$, wobei $\alpha_{i, j}$ die Gewichte der Attention-Wege von $t_i$ zu $t_j$ darstellen.

c) Ein Transformer-Modell mit nur einem attention layer kann nicht beliebige Sequenzen mit $t_k = t_n$ für beliebige $k < n$ erkennen und entsprechendes $t_{k+1}$ prädigieren. Dies liegt daran, dass ein einzelner attention layer nur die direkte Umgebung eines Tokens in Betracht zieht und nicht auf die gesamte Sequenz zugreifen kann.

d) Im Transformer ist der Kommunikationskanal zwischen den attention heads in einem layer durch die shared-key-mechanism der self-attention Schicht gegeben. D.h. alle attention heads in einem layer teilen sich die gleichen Query, Key und Value-Vektoren. Dadurch können sie miteinander kommunizieren und Informationen austauschen. In einem aufeinanderfolgenden layer muss jedes attention head seine eigenen Query, Key und Value-Vektoren haben, sodass keine Informationen direkt weitergegeben werden können.

e) Um den attention head $h$ in layer $l > 1$ für beliebige Sequenzen zu position $k+1$ attended, kann man folgende Reihenfolge von self-attention Operationen verwenden:

1. Self-attention Schicht $l-1$ mit den Parametern $(W^{l-1, h}_K, W^{l-1, h}_Q, W^{l-1, h}_V, W^{l-1, h}_O)$
2. Lineare Abbildung $W_1$ auf die Position-Embeddings anwenden
3. Self-attention Schicht $l$ mit den Parametern $(W^{l, h}_K, W^{l, h}_Q, W^{l, h}_V, W^{l, h}_O)$

Diese Reihenfolge ermöglicht, dass die Position-Embeddings der Tokens in der Sequenz durch die self-attention Schicht $l-1$ transformiert werden, bevor sie in die self-attention Schicht $l$ eingehen. Dadurch können die Tokens in der Sequenz miteinander interagieren und die Position-Informationen werden in die self-attention Schicht $l$ mitgenommen. Dadurch kann der attention head $h$ in layer $l$ die gesamte Sequenz berücksichtigen und die Position $k+1$ am meisten attended.





****************************************************************************************
****************************************************************************************




Answer to Question 4-1


Zur Beschreibung der vektorielle Eingabe für das $i$-te Vokabularwort $s_k$:
Die vektorielle Eingabe für das $i$-te Vokabularwort $s_k$ ist der vektor $x_k$ mit der Größe $d$, der die vektorielle Repräsentation des $i$-ten Wortes in der Word-Embedding-Matrix $W_E$ darstellt.

Zur Beschreibung der Matrix-Vektor-Multiplikation:
Die Matrix-Vektor-Multiplikation zwischen der Word-Embedding-Matrix $W_E$ und dem Vektor $x_k$ des $i$-ten Vokabularworts ergibt den vektor $y_k$ mit der Größe $d$, der die vektorielle Repräsentation des $i$-ten Vokabularworts in der Eingabesequenz $S$ darstellt.

Formal kann dies als:
$$y_k = W_E \cdot x_k$$

mit $y_k$ als Ergebnisvektor, $W_E$ als Matrix und $x_k$ als Eingevektor.

Hier ist die Beschreibung der Matrix-Vektor-Multiplikation zwischen der Word-Embedding-Matrix $W_E$ und dem Vektor $x_k$ des $i$-ten Vokabularworts:

Die Matrix-Vektor-Multiplikation zwischen der Word-Embedding-Matrix $W_E$ und dem Vektor $x_k$ des $i$-ten Vokabularworts ergibt den vektor $y_k$ mit der Größe $d$. Dabei wird jedes Element $y_{k,j}$ des Ergebnisvektors $y_k$ durch die Summe aller Produkte der Elemente der Zeile $i$ der Matrix $W_E$ mit den Elementen des Vektors $x_k$ gebildet.

Formal kann dies als:
$$y_{k,j} = \sum_{l=1}^{d} W_{E,i,l} \cdot x_{k,l}$$

mit $y_{k,j}$ als Element des Ergebnisvektors $y_k$, $W_{E,i,l}$ als Element der Matrix $W_E$ in der Zeile $i$ und Spalte $l$, und $x_{k,l}$ als Element des Vektors $x_k$ in der Spalte $l$.





****************************************************************************************
****************************************************************************************




Answer to Question 4-2


Antwort:

a) Die Abbildung g muss differentiell erfüllbar sein, um mit Gradientenabstieg trainiert werden zu können.

b) Der Gradient l bezüglich W_E lautet: ∇l = 2(f(w) - t) * g'(E(w)). Um den Gradienten ∂g/∂E(w) herauszufiltern, kann man die Matrix W_E transponieren und den Gradienten ∇l bezüglich W_E multiplizieren mit dieser: ∂g/∂E(w) = (∇l)^T / ||∇l||^2.

c) Der Gradient ∂l/∂w_ij für i ≠ k lautet: ∂l/∂w_ij = ∂l/∂f(w) * ∂f(w)/∂E(w)i * ∂E(w)i/∂w_ij = (2(f(w) - t) * g'(E(w)))^T * E_i / ||∇l||^2, wobei E_i die i-te Spalte der Word Embedding Matrix ist.

d) Die Erkenntnis aus dem Aufgabenteil (ex:gradient_input_word_i) bedeutet, dass der Gradient des Losses bezüglich des Eingabewortes i eine Skalierung der vektorielle Repräsentation des Eingabewortes ist. Dies hat im Forwärts- und Rückwärtspass eine hohe Speicher- und Berechnungskomplexität, da jedes Eingabewort eine separate Repräsentation hat und der Gradient für jedes Eingabewort berechnet werden muss. In der Praxis werden oft Techniken wie Batch-Normalization oder Gradient Checkpointing eingesetzt, um diese Komplexität zu reduzieren.





****************************************************************************************
****************************************************************************************




