Numa RNA (Rede Neural Artificial) há a necessidade de atualizar os respectivos pesos e o bias com base no erro. Esse processo é conhecido como Backpropagation.
Perguntas que surgem: como ajustar os pesos? deve-se aumentá-los, diminui-los ou deixá-los intactos? qual o valor que deve ser usado?
Além disso, a RNA pode ter uma grande quantidade de pesos para serem ajustados.
Soluções possíveis:
1) Força bruta: não é viável. Principalmente se houverem uma grande quantidade de pesos. Por exemplo, numa rede com 4 neurônios de entrada, 5 ocultos (1 camada oculta) e 1 de saída, será necessário atualizar 25 pesos [(4 x 5) + (5 x 1)];
2) Usar o (batch) gradient descent ou gradiente descendente em lote. Ele olha o ângulo da função de custo. Sabendo, através disso, se deve descer ou subir. Utiliza – em cada iteração – toda a amostra de treino. Porém ele tem um problema: precisa que a função de custo seja convexa.
3) (Melhor solução) Usar o stochastic gradient descent, o qual inclui elementos de aleatoriedade, resolvendo o problema da Gradient Descent puro, a qual requer que a função de custo seja convexa. Além disso utiliza em cada iteração apenas uma observação num mini-lote (subamostra).
Desta forma, o Gradiente Descendente em Lote para ser utilizado precisa que a função de custo seja convexa.
Gabarito: Certo