Aprendendo a aprender: O que é AutoML?
Machine learning (do Inglês - Aprendizado de Máquina) é uma área em alta demanda no mercado. Segundo o fórum econômico mundial existe a expectativa de 58 milhões de empregos em IA no mundo até 2022. Porém, de acordo com o Instituto de pesquisa de Tencent, estima-se que em 2017 havia apenas 300 mil engenheiros de IA no mundo, indicando que haverá uma baixa oferta de mão de obra especializada.
Quando desenvolvemos uma aplicação de Machine Learning do início ao fim passamos por várias etapas como limpeza e transformação de dados, engenharia de features, seleção de features e de algoritmos, predição e interpretação do modelo.
Essas etapas exigem diferentes conhecimentos dos especialistas no assunto, sejam eles Engenheiros de IA ou Cientistas de dados, desde conhecimentos gerais como estatística, cálculo e álgebra linear, até conhecimentos mais específicos como as técnicas de seleção de features e algoritmos, conhecimento dos hiperparâmetros de cada algoritmo e como ajustá-los, etc. Na maioria das vezes o ajuste desses hiperparâmetros irá demandar testes exaustivos, muitas vezes sendo encontrados apenas por tentativa e erro de acordo com a tarefa ou conjunto de dados usado.
Dessa forma o AutoML, ou Automated Machine Learning (do Inglês - Aprendizado de Máquina Automatizado) surge como uma opção para uso de Machine Learning por não especialistas no assunto, ou até para “desafogar” especialistas no assunto que necessitem focar em outras tarefas enquanto a automatização de algumas etapas é feita. O AutoML pode ser descrito como o processo de automatizar a aplicação do Aprendizado de Máquina a problemas do mundo real, geralmente cobrindo as etapas de engenharia de features, seleção de algoritmos e otimização de hiperparâmetros.
Existem diversos métodos para se aplicar AutoML, podemos dizer que os três mais comuns na literatura são HPO (Hiperparameter Optimization), Meta-learning e NAS (Neural Architecture Searching).
Hiperparameter Optimization
Todos os algoritmos de Machine Learning possuem hiperparâmetros que precisam ser ajustados para que os resultados sejam otimizados, e uma das tarefas mais básicas do AutoML é fazer a configuração automática desses hiperparâmetros. A otimização automatizada de hiperparâmetros possui diversos casos de uso importantes como: reduzir o esforço humano necessário para se aplicar Machine Learning; aumentar a performance de algoritmos de Machine Learning; aumentar a reprodutibilidade e a replicabilidade em estudos científicos, etc.
Dentro do HPO temos o conceito de Combined Algorithm Selection and Hyperparameter Optimization Problem ou CASH, que se resume em, dado um conjunto dados, escolher automaticamente o algoritmo de aprendizado e de forma simultânea configurar seus hiperparâmetros de forma que o desempenho nesta tarefa seja otimizado. Neste tipo de problema, o tuning do pipeline de Machine Learning é feito modelando a escolha entre os diferentes pré-processamentos e algoritmos de ML como hiperparâmetros categóricos.
Meta-learning
Por sua vez, meta-learning, ou aprender a aprender, é a ciência que observa como diferentes abordagens de machine learning são executadas em diversas tarefas de aprendizado, e então buscam aprender a partir dessa experiência para então se ajustar a novas tarefas mais rápido.
Veremos um exemplo de aplicação de meta-learning ao falarmos da primeira etapa da abordagem de AutoML do Auto-Sklearn.
Neural Architecture Searching
O investimento em pesquisas na área de Deep Learning trouxe avanços consideráveis principalmente para tarefas perceptuais como reconhecimento de texto, voz, imagens e machine translation. Um dos motivos do sucesso dessas arquiteturas se dá pelo fato delas automatizarem o processo de engenharia de features, porém elas também trazem uma alta demanda no processo de engenharia de arquitetura, que vem sendo projetadas manualmente mesmo com as arquiteturas neurais cada vez mais complexas.
Nesse contexto vem surgindo as pesquisas em Neural Architecture Searching (NAS, do Inglês busca de arquiteturas neurais), o processo de automatizar a engenharia de arquitetura. Este campo de estudo que tem uma boa interseção com as áreas de HPO e meta-learning e pode ser categorizado em três etapas: I) Search Space (Espaço de busca), II) Search Strategy (Estratégia de busca), e III) Performance Estimation Strategy (Estratégia de estimativa de desempenho).
O espaço de busca define quais arquiteturas podem ser usadas a princípio, enquanto a estratégia de busca detalha como esse espaço de busca será explorado, que pode ser desde o uso de busca aleatória, otimização bayesiana, algoritmos evolucionários, ou até aprendizado por reforço. Já a estratégia de estimativa de desempenho busca validar de forma eficiente as escolhas de arquiteturas, buscando alcançar o objetivo do NAS que é encontrar arquiteturas que tenham alto desempenho em dados não usados durante o treinamento.
Sistemas de AutoML
Existem diversos exemplos de sistemas que implementam o AutoML, iremos citar alguns dos mais populares.
Auto-Weka
O Weka é uma das ferramentas mais populares de Machine Learning feita em Java e que possui uma interface gráfica de fácil utilização. O Auto-Weka foi construído sobre a interface do Weka, sendo incorporado como um dos classificadores a serem escolhidos na sua interface gráfica.
Um ponto importante ao se falar do Auto-Weka é que o artigo publicado referente a sua aplicação foi o primeiro que trouxe o termo CASH citado anteriormente.
Hyperopt-Sklearn
Pensando em trazer a ideia de incorporar o AutoML a uma interface já popular de uso de Machine Learning, mas dessa vez em Python, foi criado o Hyperopt-Sklearn. Esta aplicação foi desenvolvida sobre a API do scikit-learn, biblioteca mais popular de Machine Learning da linguagem Python.
Podemos dizer que o Hyperopt-Sklearn funciona muito mais como um template geral para se aplicar AutoML do que como um sistema de AutoML em si, pois ele traz uma interface bastante flexível e adaptável.
Para usar o Hyperopt-Sklearn devemos definir três coisas: 1) Um domínio de busca; 2) Uma função objetivo; e 3) Um algoritmo de otimização. Alguns classificadores e otimizadores já vem por padrão na biblioteca porém o usuário tem a liberdade de utilizar ou até implementar seu próprio algoritmo.
Auto-Sklearn
Talvez um dos mais populares na literatura, o Auto-sklearn é um sistema de AutoML também baseado na API do scikit-learn. Um diferencial do Auto-Sklearn é sua abordagem de AutoML dividida em três etapas: 1) Meta-learning; 2) Otimização Bayesiana; e 3) Construção de ensembles.
Na primeira etapa, o Auto-Sklearn coleta meta-features sobre o conjunto de dados de entrada e então com base em conjuntos de dados previamente utilizados ele define um espaço de busca já otimizado que obteve bons desempenho em conjuntos de dados similares. Dessa forma, o sistema já passa por uma otimização inicial e vai para a etapa de otimização bayesiana que fará o processo de seleção de algoritmos e hiperparâmetros de forma simultânea. Finalmente, o Auto-sklearn chega na etapa de construção de ensembles, em que ele não apenas seleciona os melhores algoritmos escolhidos a partir da otimização bayesiana mas forma ensembles (ou comitês de algoritmos) a partir deles.
Afinal, o AutoML substituirá o Cientista de dados?
É natural que a medida que o AutoML se desenvolva e ganhe mais adeptos comecem a surgir questionamentos sobre o fato dele possivelmente substituir o trabalho do Cientista de dados, o que não necessariamente será verdade.
Hoje, o AutoML possui diversas limitações, uma delas é o fato dele não alcançar o estado da arte em diversas tarefas, principalmente aquelas que envolvem processamento de texto, imagens e voz. Ou seja, se você quer alcançar melhores desempenhos nestas tarefas é importante ter conhecimento de negócio e dos algoritmos mais utilizados.
O que pode acontecer no futuro é que, com o avanço no desempenho desses algoritmos, o Cientista de dados fique cada vez mais focados em tarefas de limpeza de dados, pré-processamento e interpretação do modelo, enquanto o AutoML fique cada vez mais concentrado em tarefas de seleção de modelos e configuração de hiperparâmetros. Então se hoje o Cientista de dados foca a maior parte do seu tempo nessa etapa inicial de tratamento de dados, a tendência é que foque cada vez mais.
Além disso, algo que o AutoML não possui é o conhecimento de negócio, fator muito importante na modelagem do problema e na etapa de engenharia de features, tornando o trabalho do Cientista de dados essencial. Você pode entender um pouco melhor esse processo de entendimento de negócio e como fazer as perguntas certas aqui.
Caso queira conhecer alguns detalhes a mais sobre AutoML e ver um pouco de código você pode conferir minha palestra na Python Brasil 2020 aqui ou ver os slides e códigos aqui.
Links
- Confira nossa palestra no Python BR 2020 sobre AutoML em Python:
- Slide palestra pybr: https://docs.google.com/presentation/d/1vQB0D1NA7-_YTQPFhA6MVv7bXHc757zw1p_t9if9WNY/edit?usp=sharing
- Veja o código: https://github.com/andradejunior/pybr2020-automl
Referências:
Automated machine learning: methods, systems, challenges. Frank Hutter, Lars Kotthoff, J. Vanschoren.
https://github.com/automl/autoweka
https://hyperopt.github.io/hyperopt-sklearn/
https://automl.github.io/auto-sklearn/master/
Palestra “machine learning made easy(ish)” - Leonardo Bezerra na Python Brasil [14]: https://www.youtube.com/watch?v=nuRDxYF_35A
https://medium.com/data-hackers/automl-uma-nova-abordagem-de-machine-learning-87a40d866dc1
https://medium.com/data-hackers/automated-machine-learning-automl-70c1eab669ad
https://www.theverge.com/2017/12/5/16737224/global-ai-talent-shortfall-tencent-report