From b5726f5cb78c42db1435b2de2be6a7d3e86c8a98 Mon Sep 17 00:00:00 2001 From: akki2825 Date: Wed, 23 Oct 2024 13:24:51 +0200 Subject: [PATCH] slides for week 3 --- 2024/weeks/week02/build.sh | 3 ++ 2024/weeks/week02/nn | Bin 0 -> 16672 bytes 2024/weeks/week02/nn.c | 21 ++++++++++ 2024/weeks/week02/nn.py | 41 ++++++++++++++++++++ 2024/weeks/week03/gradient_descent_1.png | Bin 23133 -> 24702 bytes 2024/weeks/week03/gradient_descent_2.png | Bin 26383 -> 25752 bytes 2024/weeks/week03/page.qmd | 4 -- 2024/weeks/week03/slides.qmd | 47 ++++++++++++++++++----- _quarto.yml | 6 ++- 9 files changed, 108 insertions(+), 14 deletions(-) create mode 100755 2024/weeks/week02/build.sh create mode 100755 2024/weeks/week02/nn create mode 100644 2024/weeks/week02/nn.c create mode 100644 2024/weeks/week02/nn.py diff --git a/2024/weeks/week02/build.sh b/2024/weeks/week02/build.sh new file mode 100755 index 0000000..7c63bee --- /dev/null +++ b/2024/weeks/week02/build.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +clang -o nn nn.c diff --git a/2024/weeks/week02/nn b/2024/weeks/week02/nn new file mode 100755 index 0000000000000000000000000000000000000000..bd2011b1e5bdb856b9822ceca2c5595da021b4c9 GIT binary patch literal 16672 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 LQ6 + +float train[][2] = { + {0, 0}, + {1, 2}, + {2, 4}, + {3, 6}, + {4, 8} +}; + +float rand_float() { + return (float) rand()/ (float) RAND_MAX; +} + +int main() { + y = x*w; + w = rand_float(); + printf("Hello, World!\n"); + return 0; +} + diff --git a/2024/weeks/week02/nn.py b/2024/weeks/week02/nn.py new file mode 100644 index 0000000..35686fb --- /dev/null +++ b/2024/weeks/week02/nn.py @@ -0,0 +1,41 @@ +import random +import time + +train = [ + [0, 0], + [1, 2], + [2, 4], + [3, 6], + [4, 8], +] +train_count = len(train) + +def loss(w, b): + result = 0.0 + for i in range(train_count): + x = train[i][0] + y = x * w + b + d = y - train[i][1] + result = result + d * d + result = result/train_count + return result + +if __name__ == "__main__": + random.seed(int(time.time())) + w = random.random() * 10.0 + b = random.random() * 5.0 + + eps = 1e-3 + rate = 1e-3 + + print(f"{loss(w, b)}") + for i in range(500): + c = loss(w, b) + dw = (loss(w + eps, b) - c) / eps + db = (loss(w, b + eps) - c) / eps + w = w - rate * dw + b = b - rate * db + print(f"loss = {loss(w, b)}, w = {w}, b = {b}") + + print("------------------------------") + print(f"w = {w}, b = {b}") diff --git a/2024/weeks/week03/gradient_descent_1.png b/2024/weeks/week03/gradient_descent_1.png index 3b02496a34df8a6bd8a7208bba25ab06a5056ecd..dbb3e711f55b6e01ad9709e4aba2f3de290a2290 100644 GIT binary patch literal 24702 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 diff --git a/2024/weeks/week03/gradient_descent_2.png b/2024/weeks/week03/gradient_descent_2.png index 65d2fca7ec948ebf5a0849ccdbda63bc3faef496..7f9f3b90e37858a7c62d37c5d5ade56344076011 100644 GIT binary patch literal 25752 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 @t&TOD5 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 diff --git a/2024/weeks/week03/page.qmd b/2024/weeks/week03/page.qmd index 8bf1fb2..63605d7 100644 --- a/2024/weeks/week03/page.qmd +++ b/2024/weeks/week03/page.qmd @@ -2,7 +2,6 @@ title: "🗓️ Week 01 - Admin, Architectures: Statistical and Probabilistic Language Models" --- -In this first week, we will cover what you can expect to learn from this course and the course logistics: all you need to know about the structure of the lectures, classes, assessments, and how we will interact throughout this course. ## 👨‍🏫 Lecture Slides @@ -15,8 +14,5 @@ Use your keypad to navigate the slides. ## ✍️ Homework -Week 01 - Homework ## 📚 Recommended Reading - -- Speech and Language Processing, Chapter 3: N-gram language models [PDF](https://web.stanford.edu/~jurafsky/slp3/3.pdf). Authors: Dan Jurafsky and James H. Martin. diff --git a/2024/weeks/week03/slides.qmd b/2024/weeks/week03/slides.qmd index bfdc06c..3b1263f 100644 --- a/2024/weeks/week03/slides.qmd +++ b/2024/weeks/week03/slides.qmd @@ -24,7 +24,9 @@ format: css: /css/styles_slides.css footer: 'LLMs in Lingustic Research WiSe 2024/25' --- -## Activation functions {.smaller} + + +# Activation functions {.smaller} - Activation functions are used to introduce non-linearity to the output of a neuron. @@ -34,6 +36,9 @@ f(x) = \frac{1}{1 + e^{-x}} $$ Example: $f(0) = 0.5$ + +where: + - f(x): This represents the output of the sigmoid function for a given input x. - e: This is the euler's number (approximately 2.71828). - x: This is the input to the sigmoid function. @@ -53,6 +58,7 @@ $$ Example: $f(2) = 2$ where: + - f(x): This represents the output of the ReLU function for a given input x. - x: This is the input to the ReLU function. - max: This function returns the maximum of the two values. @@ -62,19 +68,24 @@ where: - The output of the ReLU function is between 0 and infinity. - It is a popular activation function used in deep learning models. -## Loss functions {.smaller} +# Loss functions {.smaller} - During forward pass, the neural network makes predictions based on input data. - The loss function compares these predictions to the true values and calculates a loss score. - The loss score is a measure of how well the network is performing. - The goal of training is to minimize the loss function. -- For regression problems, use MSE or MAE. -- For classification problems, use cross-entropy loss. -- For multi-class classification problems, use categorical cross-entropy loss. +- You can use different loss functions for different set of tasks: + - For regression problems, use MSE or MAE. + - For classification problems, use cross-entropy loss. + - For multi-class classification problems, use categorical cross-entropy loss. -## Gradient descent {.smaller} +# Gradient descent {.smaller} - **Gradient descent** is a optimization algorithm used in machine learning to minimize the loss function of a model. +- The algorithm works by iteratively adjusting the model parameters (weights and biases) to reduce the loss. +- The key idea behind gradient descent is to move in the direction of the negative gradient of the loss function. +- A negative gradient indicates the direction of steepest descent, i.e., the direction in which the loss decreases the fastest. +- By following the gradient, the algorithm can find the optimal values of the model parameters that minimize the loss function. ## {.smaller} @@ -108,14 +119,15 @@ where: - The algorithm may not always reach the exact theoretical minima due to factors like step size (learning rate) and the complexity of the loss landscape. - But, it typically converges to a point close enough to be practically useful for model optimization. -## Learning rate {.smaller} +# Learning rate {.smaller} - The **learning rate** is a hyperparameter that controls how much the model parameters are adjusted during training. -- It is a critical parameter that can affect the convergence of the optimization algorithm. +- A hyperparameter is a parameter whose value is set before the learning process begins. +- Learning rate is a critical parameter that can affect the convergence of the optimization algorithm. - A high learning rate can cause the model to overshoot the minima, leading to instability and divergence. - A low learning rate can slow down the training process and may get stuck in local minima. -## Neural Network {.smaller} +# Single-layer Neural Network {.smaller} - A neural network is a collection of interconnected nodes (neurons) that process input data to produce output predictions. - The nodes are organized into layers, with each layer performing specific computations. @@ -181,4 +193,21 @@ flowchart LR ## {.smaller} +- The input layer consists of three nodes (I1, I2, I3) representing the input features. +- The hidden layer consists of three nodes (H1, H2, H3) that process the input data. +- The output layer consists of two nodes (O1, O2) that produce the final predictions. +- The connections between nodes are represented by weights (w11, w12, ..., v32) and biases (b1, b2, ..., b5). +- The weights and biases are adjusted during training to optimize the model. +- The model makes predictions by passing the input data through the network and computing the output. + +## Training, development and test datasets {.smaller} + +- The training dataset is used to optimize the model parameters (weights and biases) using gradient descent. +- The development dataset is used to tune the hyperparameters of the model, such as the learning rate and the number of hidden units. +- The test dataset is used to evaluate the performance of the model on unseen data. +- In order to avoid overfitting, it is important to have separate datasets for training, development, and testing. +- The training dataset is typically the largest, followed by the development and test datasets. +- The development and test datasets should be representative of the data the model will encounter in the real world. +- The datasets should be randomly sampled to avoid bias and ensure that the model generalizes well. + ## Thank you! {.smaller} diff --git a/_quarto.yml b/_quarto.yml index 07c5c43..558d692 100644 --- a/_quarto.yml +++ b/_quarto.yml @@ -56,7 +56,11 @@ website: contents: - href: 2024/weeks/week02/page.qmd text: 👨‍🏫 Lecture Material - + - href: 2024/weeks/week03/page.qmd + text: Week 03 - NN basics II + contents: + - href: 2024/weeks/week03/page.qmd + text: 👨‍🏫 Lecture Material - section: "🧩 Homework" contents: