An intuitive explanation of Adagrad, its purpose and its formula
I found a somewhat more accessible introduction here: 

https://medium.com/konvergen/an-introduction-to-adagrad-f130ae871827

Let me start from the last part of your question. The frequency of a parameter is in G_t, which is the accumulated sum of squared gradients from all the time steps up to step t. If the gradient vanishes in many of the previous steps, then you divide the learning rate with a smaller number for that parameter. 

And for the first part, you want the parameter that is more frequent to have a smaller learning rate as it is updated on more iterations compared to a parameter which is updated only a small number of times.