From 1e899e898e5a4afe91950ba47713951d87927c27 Mon Sep 17 00:00:00 2001 From: Amanda <25732302+AmandaRP@users.noreply.github.com> Date: Wed, 25 Oct 2023 11:59:55 -0400 Subject: [PATCH] Chapter 5 (#3) * Added chapter 5 content * Added link to chapter 3. Added additional formatting. * Final updates for meeting. --- 05_function-minimization-with-autograd.Rmd | 103 +++++++++++++++++++-- images/rosenbrock.png | Bin 0 -> 40280 bytes 2 files changed, 95 insertions(+), 8 deletions(-) create mode 100644 images/rosenbrock.png diff --git a/05_function-minimization-with-autograd.Rmd b/05_function-minimization-with-autograd.Rmd index 71ef892..4f2504d 100644 --- a/05_function-minimization-with-autograd.Rmd +++ b/05_function-minimization-with-autograd.Rmd @@ -2,23 +2,110 @@ **Learning objectives:** -- THESE ARE NICE TO HAVE BUT NOT ABSOLUTELY NECESSARY +- Apply concepts learned in the previous two chapters -## SLIDE 1 {-} +## An Optimization Classic {.unnumbered} -- ADD SLIDES AS SECTIONS (`##`). -- TRY TO KEEP THEM RELATIVELY SLIDE-LIKE; THESE ARE NOTES, NOT THE BOOK ITSELF. +**Example**: -## Meeting Videos {-} +*Rosenbrock function*: A function of two variables with minimum at $(a,a^2)$, which lies inside a narrow valley: -### Cohort 1 {-} +$$ +(a- x_1)^2 + b(x_2 - x_1^2)^2 +$$ + +
[![rosenbrock function](images/rosenbrock.png)](https://skeydan.github.io/Deep-Learning-and-Scientific-Computing-with-R-torch/optim_1.html#an-optimization-classic)
+ +Below we set values for `a` and `b` and define the `rosenbrock` function. We expect the minimum of the function to be at $(1,1)$ (when `a=1`). + +```{r} +a <- 1 +b <- 5 + +rosenbrock <- function(x){ + x1 <- x[1] + x2 <- x[2] + (a - x1)^2 + b * (x2 - x1^2)^2 +} +``` + +## Minimization from Scratch {.unnumbered} + +**Goal**: Starting from a point `(x1, x2)` find minimum of the Rosenbrock function. + +**Approach**: Use the function's gradient. + +**Setup**: + +```{r} +library(torch) + +lr <- 0.01 # learning rate +num_interations <- 1000 + +x <- torch_tensor(c(-1, 1), requires_grad = TRUE) +``` + +`x` is the parameter with respect to which we want to compute the function's derivative. Thus, we set `requires_grad = TRUE`. We have arbitrarily chosen `x = (-1, 1)` as a starting point of our search. + +Next we perform the minimization. For each iteration we will: + +1. Compute the value of the `rosenbrock` function at the current value of `x`. + +2. Compute the gradient at `x` (i.e. direction of steepest ascent). + +3. Take a step of size `lr` in the (negative) direction of the gradient. + +4. Repeat. + +A few things to point out about the code below: + +- We use the `with_no_grad()` function. Reason: Because we set `requires_grad = TRUE` in the definition of `x`, torch will include all operations on `x` (including this one) in the derivative calculation, which we don't want. +- Recall from [Chapter 3](https://r4ds.github.io/bookclub-torch/operations-on-tensors.html) that `x$sub_()` (*with an underscore*) will modify the value of `x`. Similarly, `x$grad$zero_()` will also modify `x`. +- We use `x$grad$zero_()` to zero out the `grad` field of `x`. By default, torch accumulates gradients. + +```{r} +for(i in 1:num_interations){ + if(i %% 200 == 0) cat("Iteration: ", i, "\n") + + # Compute value of function: + value <- rosenbrock(x) + if(i %% 200 == 0) cat("Value is: ", as.numeric(value), "\n") + + # Compute the gradient + value$backward() + if(i %% 200 == 0) cat("Gradient is: ", as.matrix(x$grad), "\n\n") + + with_no_grad({ + x$sub_(lr * x$grad) # Take a step of size lr in the (negative) direction of the gradient + x$grad$zero_() # Zero out grad field of x. + }) +} + +``` + +Let's check the value of `x`: + +```{r} +x +``` + +It's close to (1,1) (the true minimum)! + +> Exercise: What kind of difference does the learning rate make? Try `lr=0.001` and `lr=0.1`, respectively. + +## Meeting Videos {.unnumbered} + +### Cohort 1 {.unnumbered} `r knitr::include_url("https://www.youtube.com/embed/URL")`
- Meeting chat log -``` +Meeting chat log + +``` LOG ``` +
diff --git a/images/rosenbrock.png b/images/rosenbrock.png new file mode 100644 index 0000000000000000000000000000000000000000..33699100c8485ae8fb8d7eaaacae9ede299e1f7c GIT binary patch literal 40280 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 literal 0 HcmV?d00001