APRENDIZADO DE MQUINA Prof Eduardo Bezerra ebezerracefetrj br
APRENDIZADO DE MÁQUINA Prof. Eduardo Bezerra ebezerra@cefet-rj. br CEFET/RJ - PPCIC
APRENDIZADO DE MÁQUINA & BIG DATA
Visão Geral 3 Introdução Gradiente Descendente Estocástico (SGD) Convergência do SGD Mini Batch GD Map. Reduce
4 Introdução
Big Data 5 Atualmente, é relativamente fácil obter conjuntos de dados de treinamento da ordem de 106 exemplos: � Dados do censo � Dados coletados em portais de comércio eletrônico � Kaggle (https: //www. kaggle. com) �. . .
AM vs Big Data 6 Quanto mais dados, melhor? “[…] what we're seeing consistently is that the bigger you can run these models, the better they perform. If you train one of these algorithms on one computer, you know, it will do pretty well. If you train them on 10, it will do even better. If you train on 100, even better. And we found that when we trained it on 16, 000 CPU cores, […], that was the best model we were able to train. ” http: //www. npr. org/2012/06/26/155792609/a-massive-google-network-learns-to-identify Andrew Ng 6
AM vs Big Data 7 Quanto mais dados, melhor? “What was wrong in the 80’s is that we didn’t have enough data and we didn’t have enough computer power” Geoffrey Hinton
AM vs Big Data 8 Vimos que uma forma de obter um modelo de boa qualidade é treinar um algoritmo de AM com baixo viés sobre um conjunto de dados grande.
AM vs Big Data 9 Mas, uma quantidade grande de dados. . . �. . . não permite fazer a carga de todos os dados para a memória. �. . . torna a manipulação computacionalmente ineficiente. Portanto, é relevante verificar se mais dados irão efetivamente ajudar. . . � Verificação: traçar curvas de aprendizado para diferentes valores de m e verificar se o algoritmo possui variância alta quando m é pequeno.
Mais dados são benéficos? 10 Como saber se um conjunto de dados grande pode levar a uma precisão melhor? Variância alta. Mais dados podem ser benéficos. Viés alto. Mais dados (apenas) não são benéficos.
11 Gradiente Descendente Estocástico Stochastic Gradient Descent (SGD)
Gradiente Descendente 12 Para muitos algoritmos de aprendizado, precisamos definir uma função de custo e utilizar algum algoritmo para otimizar essa função (e. g. , GD). � Exemplos: Regressão linear, Regressão logística, Redes Neurais, SVM. Mas, cada iteração do GD utiliza todos os exemplos de treinamento.
Regressão Linear com GD (revisão) Repetir { (para cada } )
Regressão Linear com GD Repetir { (para cada } )
GD vs Big Data 15 Quando m é muito grande, o GD se torna um procedimento computacionalmente caro. Lembre-se de que a equação acima é realizada de forma iterativa até a convergência. Batch Gradient Descent
Batch gradient descent Stochastic gradient descent Repetir { Mede o quão boa é a hipótese para um único exemplo. (for every } )
Stochastic gradient descent (SGD) 1. “embaralhar” (shuffle) os exemplos de treinamento. 2. Repetir { para (para cada } } { )
SGD – dados ordenados 18 SGD terá problemas se os dados de treinamento estiverem ordenados. No caso de várias épocas, apresentar os dados na mesma ordem em cada época, pode levar a problemas como � encontrar mínimos locais, � convergência mais lenta.
SGD vs BGD 19 Quando m é muito grande, SGD pode ser muito mais eficiente do que o BGD. 20 épocas! http: //adventuresinmachinelearning. com/stochastic-gradient-descent/ 1000 épocas: BGD 96% SGD 94%
SGD vs variância 20 O SGD é mais suscetível a ruídos! http: //adventuresinmachinelearning. com/stochastic-gradient-descent/
Mini batch GD
Gradiente Descendente: versões 22 Em cada iteração, para computar o gradiente, . . . �. . . BGD: usa todos os exemplos. �. . . SGD usa 1 exemplo. �. . . Mini batch GD: usa exemplos. Mini batch GD pode resultar em melhores qualidade e convergência que o SGD. Tipicamente:
Mini Batch GD 23 Compromisso entre a computação do gradiente verdadeiro e do gradiente em um único exemplo. Pode ser mais eficiente que o SGD porque pode usar vetorização, em vez de calcular cada atualização separadamente. … [batch size] is typically chosen between 1 and a few hundreds, e. g. [batch size] = 32 is a good default value, with values above 10 taking advantage of the speedup of matrix-matrix products over matrix-vector products. --Yoshua Bengio
Mini Batch GD 24 Precisão após 150 épocas: Mini Batch GD 98% http: //adventuresinmachinelearning. com/stochastic-gradient-descent/
Mini Batch GD – pseudocódigo 25 Considere que: Repetir { para { ( } } )
Mini Batch GD – pseudocódigo 26 https: //am 207. github. io/2017/wiki/gradientdescent. html
Convergência do SGD
SGD 28 No SGD: � Como realizar diagnósticos para verificar se a convergência está acontecendo? � Como selecionar o valor da taxa de aprendizado?
Convergência no BGD (revisão) 29 No BGD, para averiguar a convergência, devemos esboçar o gráfico de como uma função da quantidade de iterações do algoritmo.
Convergência no BGD (revisão) 30 Mas e se m for muito grande?
Convergência no SGD 31 Aqui, devemos computar a função a seguir, antes da atualização dos parâmetros para o iésimo exemplo: Então, podemos esboçar em um gráfico a média dos T exemplos mais recentes, a cada T iterações (e. g. , T = 1000).
Convergência no SGD 32 Plotar média de T exemplos. sobre os últimos Curva de aprendizado típica da situação em que o algoritmo convergiu.
Convergência no SGD 33 Plotar média de T exemplos. sobre os últimos
Convergência no SGD 34 Plotar média de T exemplos. sobre os últimos Indício de que o algoritmo não está convergindo.
Convergência no SGD 35 Plotar média de T exemplos. sobre os últimos Indício de que o algoritmo está divergindo. Usar uma taxa de
Taxa de Aprendizado no SGD 36 Na implementação mais comum do SGD, a taxa de aprendizado é mantida constante. � No SGD, a taxa de aprendizado geralmente deve ser muito menor do que no GD, porque há uma variância muito maior na atualização. Alternativamente, é possível const 1 escalonar essa taxa: iteration. Number + const 2 Desvantagem: const 1 e const 2 são mais dois hiperparâmetros para sintonizar!
37 Map. Reduce
Map. Reduce 38 Alguns problemas de AM podem ser muito grandes para resolver em apenas uma máquina. Uma abordagem geral para distribuir processamento é denominada Map. Reduce. � Aplicável a alguns algoritmos de AM. . . Jeff Dean Sanjay Ghemawat
Map. Reduce Muitos algoritmos de AM podem ser expressados como a computação de somatórios de funções sobre o conjunto de treinamento. e. g. , para a regressão logística, precisamos de:
Map. Reduce 40 BGD: Máquina 1: Usa Máquina 2: Usa Combinar resultados: Máquina 3: Usa Máquina 4: Usa [ Jeffrey Dean and Sanjay Ghemawat]
Map. Reduce Máquina 1 Training set Máquina 2 Máquina 3 Máquina 4 [http: //openclipart. org/detail/17924/computer-by-aj] Combinar resultados
Máquinas multi-core & GPUs Map. Reduce Core 1 Training set Core 2 Core 3 [http: //openclipart. org/detail/100267/cpu(central-processing-unit)-by-ivak-100267] Core 4 Combinar resultados
- Slides: 42