I am trying to understand the logic behind convolutional neural networks. To my understanding, the weights used are nothing more than an $w \times h$ matrix (a filter) and as with the normal neural networks, those filters are randomnly initialized.
My question is how are they updated? Is an optimization algorithm used to do so (e.g.
SGD)? If yes, at which step of training is this happening (is there a backoprop step as in common neural networks)?