O futuro do Deep Learning

Source: Deep Learning on Medium

“Se a mente fosse fosse simples o bastante para entendermos, seriamos muito simples de entender.”

A estrada a ser percorrida pelas pesquisas em Deep Learning é incerta. Sabendo todo o trabalho que vem sendo feito e suas limitações, é possível prever para onde as coisas seguirão?

Empresas como NVIDIA e IBM estão em constante aprimoramento de suas tecnologias em prol da Inteligência Artificial. Entretanto, aprimorar atualmente significa aumentar a capacidade de algo em questão de memória e processamento. Observando pela perspectiva de usabilidade e distribuição, isso não facilitará em nada.

No começo do ano, pesquisadores da NVIDIA anunciaram o MegatronLM, um grande modelo transformador, com 8.3 bilhões de parâmetros. Esse modelo alcançou o estado da arte em diferentes tarefas de processamento de linguagem.

Apenas os parâmetros pesam 33 GB. Levou 9 dias consecutivos para finalizar o treinamento. É esse problema que me preocupa sobre usabilidade e distribuição.

Prever o futuro do Deep Learning é como criar teorias que ao certo não sabemos se vai acontecer. De acordo com Francois Chollet, que escreveu Deep Learning with Python, pensando em alto nível, ele especulou algumas direções que Deep Learning pode tomar:

  • Modelos mais acessíveis, que podem estar disponíveis como um aplicativo.
  • Novas formas de aprendizado que oferecem base para a ideia acima.
  • Modelos que necessitam menos de intervenção humana.
  • Arquiteturas que podem ser reutilizáveis de maneira simples.

Perceba que isso não se aplica apenas para problemas supervisionados. Em vez disso, podem ser aplicado para qualquer formato de Machine Learning, como aprendizado não supervisionado, semi supervisionado e aprendizado por reforço.

Modelos como programas

Uma transformação necessária que esperamos em Deep Learning é a mudança de modelos que puramente desempenham uma performance em reconhecer padrões para modelos com habilidade de abstração e raciocínio — Deep Reasoning é o campo que permite que máquinas façam decisões usando um “senso comum”, que é o raciocínio abstrato, assim os modelos são capazes de relacionar diferentes coisas e alcançar um nível maior de generalização das informações.

Redes Neurais Recorrentes(RNNs), um tipo de estrutura bem conhecida e amplamente usada. RNNs possuem menos limitações que redes totalmente conectadas(Feedforward Networks). Isso é pelo fato que RNNs são mais que uma simples rede que realiza transformações nos parâmetros; elas produzem uma transformação na estrutura, repetida vezes dentro de um loop for.

As funções e regras dentro do loop são criadas por desenvolvedores. Naturalmente, se tornam limitadas. Agora, imagine redes neurais que podem ser potencializadas com funções de programação primitivas. Mas não um loop for estritamente programado e limitado, em vez disso, uma grande variedade de funções que o modelo poderia usar, como if, while, criação de variáveis, avançadas estruturas de dados, como graphos e hashtables. Estamos falando de ampliar o potencial das redes neurais e tornar elas mais livres.

Chegou a fase de passar de “algoritmos inteligentes estritamente codificados por humanos” para uma mistura de algoritmos modulares que possuem capacidade de raciocinar e abstrair. Todo o sistema poderia aprender com pouca ou nenhuma intervenção humana.

Um campo de IA relacionado com a ideia acima e que vem se desenvolvendo, é neural program synthesis. Consistem na auto geração de simples programas, usando algoritmos de busca. O algoritmo de pesquisa encerra quando o programa encontra as especificações requeridas.

Vamos aguardar mais pesquisas sobre esses assuntos, ou até mesmo a junção dos dois temas, onde não seria criado programas limitados, mas redes neurais com capacidades de manipular estruturas de controles, como um loop for.

Além do Deep Learning convencional

A evolução em IA está nos levando a criar modelos como programas. Modelos locais que estamos acostumados a criar, com números diferentes de layers, técnicas específicas para cada ambiente; muitas vezes se tornam complexos para serem reutilizáveis em outros problemas.

Certamente, esses programas terão sua particularidade, como número diferentes de layers, mas o modelo em geral não será. Como resultado, usar backpropagation para ajustar os pesos não poderá ser o método para treinar modelos no futuro. Nós precisamos encontrar novas técnicas eficientes para treinar esses sistemas que correspondem a modelos como programas. Algoritmos genéricos, estratégias de evolução — já que vamos dar maior autonomia ao modelo e aprendizado por reforço.

Da mesma forma, gradient descent está perdendo espaço. Métodos como esse são úteis para otimizar diferentes parâmetros, ou seja, diferentes casos de aplicação de Deep Learning.

Para fazer algo eficiente, poderíamos introduzir no treinamento de modelos, modularidade e hierarquia. A backpropagation seria mais efetiva com módulos de treinamentos desacoplados, mecanismos de sincronização entre eles, organizados de forma hierárquica.

Descentralização de modelos

Sistemas descentralizados automaticamente nos remete ao blockchain. Armazenar dados no blockchain é diferente comparado a modelos de banco de dados relacional. O blockchain pode ajudar garantindo transparência e confiança nas transações. Você se torna dono de seus próprios dados. Dessa forma, não existirá o monopólio de grandes intermediários e a confiança será distribuída entre os usuários da rede

Distribuir recursos computacionais com o TensorFlow é uma das maiores vantagens do framework, entretanto, além do processamento, distribuiremos os modelos e dados. Um sistema efetivo de compartilhamento de dados e algoritmos de forma descentralizada. Ambos armazenados no blockchain.

Vemos aqui a revolução na democratização de IA.

Uma sociedade em que pessoas poderão solicitar dados, modelos e recursos computacionais. Colaboradores que compartilharem dados que ajudem a melhorar o desempenho do modelo serão recompensados com criptomoedas.

Os dados armazenados no blockchain podem ser analisados como qualquer outro tipo de elemento que gere valor para o negócio. O mais interessante é que os dados analisados estão organizados de forma descentralizada, podendo aumentar o poder de obtenção da informações e alcance da análise.

Imagine a capacidade de análise de milhares de computadores conectados para observar o comportamento social digital em uma escala que não seria possível utilizando outras tecnologias ou uma base de dados centralizada.

Blockchain é parte banco de dados, parte plataforma de desenvolvimento e viabilizador de rede. Não é apenas uma tecnologia, é algo mais profundo. É sobre a sociedade, o governo e negócios.

Caso queira conferir mais informações sobre como a distribuição de dados funciona no blockchain, pode conferir meu artigo:

AutoML

Já idealizou subir um arquivo — csv, excel, txt, etc. — contendo dados de sua pesquisa e automaticamente a plataforma criar uma estrutura de rede do zero para aprender o padrão dos dados? Pois bem, AutoML traz essa possibilidade.

O Engenheiro de Machine Learning realiza atividades como, melhorar a arquitetura do modelo, utilizar técnicas como feature engineering, realizar hyperparameter tuning, etc. AutoML traz isso como características básicas do seu sistema.

Outra característica importante que AutoML está incorporando é aprender a arquitetura do modelo juntamente com seus pesos. Treinar o modelo do zero, toda vez que é feito alguma alteração se torna custoso — tanto em processamento, quanto em tempo.

Quando alcançarmos tal perfeição, Engenheiros de Machine Learning não ficaram desempregados, pelo contrário, eles poderão focar em problemas complexos, como algoritmos que se enquadram melhor nos dados, modelos descentralizados e redes que não demandam tantos dados.

Escrevi um artigo sobre AutoML que apresento suas características, vantagens e desvantagens: