code: @Override
      public IntDoubleVector getGradient(IntDoubleVector params) {
          IntDoubleDenseVector gradient = new IntDoubleDenseVector(numParams);
          for (int j=0; j<numParams; j++) {
              gradient.set(j, - params.get(j) * lambda);
          }
          return gradient;
      }
docs: TODO: Why do Sutton & McCallum include the sum of the parameters here and not just the value for each term of the gradient.