anchor.diff:  stem:[L(w_1,w_2) = (w_1+2)^2+4(w_2-1)^2+3]
   
   To perform gradient descent, we need to compute the gradient of this loss function.
  -The gradient is just the set of partial derative of the loss function for the weight parameters.
  +The gradient is just the set of partial derivative of the loss function for the weight parameters.
   
   stem:[
   \nabla L(w_1,w_2) =
  
positive.code: and stem:[B \in \mathbb{R}]
  
  This function simply computes a weighted sum of the input data,
  add a bias and saturates the result with stem:[\max()]. The stem:[\max()] part is called the activation function.
  There are different possible activation functions.
  
  
  
negative.code: 
  * make a tiny step forward (X-axis) and sense if you’re going uphill or downhill (i.e. watch how you move on Z-axis). Go back to your position
  * make a tiny side step (Y-axis) and sense if you’re going uphill or downhill (i.e. watch how you move on Z-axis). Go back to your position
  * Thanks to this two steps, you know how the slope is oriented and you can make a step in the correct direction, generally a mixed of X and Y
  
  After several iterations you likely end in the valley, or at least in a local valley.
  
  The analogy points are:
  
  