My idea is simple, for a loss function $L$, learning rate $\alpha$ and weights $W_n$ define the function $u_n(\alpha)$ as: $$u_n(\alpha) = L(W_n - \alpha \nabla_n L)$$ If we find the minimum of $u_n$, we’ve found the best learning rate for $\nabla_n L$. Using Newton-Raphson method to approximate the point in which $u_n’$ is zero we can find the minimum of $u_n$: $$\alpha_{n+1} = \alpha_n - \frac{u_n’}{u_n’’}$$ Finally update the weights: $$W_{n+1} = W_n - \alpha_{n+1} \nabla L$$
I used this method to train a neural network on MNIST(calculated $u_n’$ and $u_n’’$ using the finite difference method), and while it was better than regular SGD, it wasn’t impressive compared to Adam. Why doesn’t this method work well? Is there any way to improve it?