Introdução ao Deep Learning no Desenvolvimento de Fármacos — Parte 1

Marcos Santana
omixdata
Published in
6 min readOct 1, 2019
Fonte: http://deeplearningbook.com.br/

Olá pessoal! Hoje vamos começar uma série sobre inteligência artificial aplicada no desenvolvimento de fármacos, especificamente os métodos de deep learning ou aprendizagem profunda. O post de hoje irá fazer uma introdução teórica sobre deep learning e vamos começar a explorar como usar os algoritmos para encontrar moléculas bioativas.

Inteligência Artificial e Deep Learning

Vamos começar com uma definição para nós guiar. Deep learning é um campo da inteligência artificial, mais especificamente um subcampo do Machine learning (Aprendizado de Máquina), que trata de algoritmos capazes de aprender representações de um problema sem a programação explícita de um operador. Bem, mas o que isso quer dizer?

Relação entre inteligência artificial, machine learning e deep learning. Fonte: https://towardsdatascience.com/cousins-of-artificial-intelligence-dda4edc27b55

Os algoritmos convencionais de Machine learning, por exemplo regressão linear, random forest e support vector machine são amplamente utilizados para resolver problemas de classificação (e.g. “quais dessas moléculas é ativa no meu experimento?”) e de regressão (e.g. “qual a afinidade de ligação de uma molécula X na proteína Y?”) com ótimas taxas de sucesso. Usando dados fornecidos pelo operador, estes algoritmos conseguem generalizar muito bem para dados que não foram vistos anteriormente. Porém, estes algoritmos são limitados na capacidade de processar os dados brutos.

Geralmente o analista precisa calcular uma série de descritores ou features para caracterizar o conjunto de dados de entrada (inputs) e cuidadosamente utilizar métodos de engenharia de dados para transformá-los numa representação adequada para o algoritmo. Além disto, esse processo demanda grande conhecimento de área de pesquisa.

Exemplo de descritor molecular. Neste caso a estrutura da molécula pode ser descrita como um vetor binário indicando a presença ou ausência de grupamentos.

Os algoritmos de deep learning são baseados em representação. Isto significa que eles são capazes de aprender representações do problema diretamente a partir dos inputs, sem a necessidade de engenharia de dados ou intervenção do analista. Esta provavelmente é uma das principais diferenças que torna deep learning uma área tão pesquisada: essencialmente os algoritmos são capazes de aprender novas representações de um problema sem intervenção humana!

O cérebro por trás da máquina— Redes neurais artificiais

Qual a máquina mais eficiente que você conhece, capaz de realizar as mais variadas atividades em milésimos de segundos e com ótimos resultados? Infelizmente não é seu novo computador com sua nova Nvidia GeForce RTX 2080 Ti. Usando um argumento metafísico podemos dizer que nossos cérebros são as melhores máquinas que temos disponíveis. Há todo momento analisamos grandes conjuntos de dados para tomar desde decisões simples, como apetar uma tecla no computador, até criar novas jogadas de xadrez ou jogar League of Legends em modo competitivo. Por isso não é ao acaso que o cérebro seja uma ótima fonte de inspiração para desenvolver algoritmos.

Redes neurais artificiais são a estrutura básica dos algoritmos de Deep Learning. O nome rede neural não é ao acaso, estes algoritmos foram inspirados no processo de aprendizado humano. Quando eu digo inspirados vocês podem interpretar apenas como isso: os algoritmos de deep learning não foram desenvolvidos para simular o cérebro humano e sim como simplificações de como nosso cérebro funciona e transmite informações.

Podemos buscar inspiração para construir máquinas em sistemas biológicos. As redes neurais foram inspiradas no processo de aprendizado do cérebro humano: os neurônios recebem inputs, podem ser ativados ou inibidos, e passam o sinal adiante. Fonte: https://vinodsblog.com/2018/12/31/how-neural-network-algorithms-works-an-overview/

As redes neurais são compostas de neurônios artificiais organizados hierarquicamente em camadas. Estruturalmente podemos dividir as redes neurais em três regiões: input, camadas ocultas (hidden layers) e output.Os dados fluem pela rede neural no sentido input → camadas ocultas → output. Cada camada tem um papel definido e vamos ver cada uma delas.

Exemplo de uma rede neural com uma camada input, 3 camadas ocultas e uma camada output. Cada círculo representa um neurônio e as conexões entre eles estão representadas por setas.

Camada input

A camada de input recebe os dados contendo as amostras e seus descritores. Por exemplo, para treinar um modelo capaz de identificar novas moléculas ativas para a enzina CDK2, podemos usar como input descritores de massa molar, volume, lipofilicidade e carga de moléculas ativas e inativas já conhecidas. Cada um desses descritores está conectado a alguns ou todos os neurônios da primeira camada oculta.

Camadas ocultas

A mágica realmente acontece nas camadas ocultas ou hidden layers. Estas camadas são constituídas de neurônios artificiais. Mas o que faz um neurônio artificial? Conforme vimos acima, as redes neurais foram inspiradas no processo de aprendizado humano. Também vimos que os algoritmos de deep learning conseguem aprender representações dos problemas sozinhos. É justamente aqui, nos neurônios das camadas ocultas, que isto acontece!

Os neurônios artificiais são unidades que transformam os dados que recebem usando funções matemáticas e passam o resultado adiante para a próxima camada da rede. Por exemplo, um neurônio pode aplicar uma transformação linear usando a função f(x) = ax + b:

Função linear f(x) = ax + b
Função linear f(x) = ax + b. Neste caso b = 0, logo f(x) = ax

A função linear apresenta dois parâmetros ou coeficientes, a e b, que definem a inclinação e o intercepto da reta, respectivamente. Na prática os neurônios transformam os dados com funções não-lineares (Veremos o porquê nos próximos posts). Da mesma forma como os coeficientes da função linear definem a reta e podem ser usados para calcular qualquer valor de f(x), dada uma matriz de dados X, as transformações feitas nos neurônios tem como objetivo calcular termos de peso ou coeficientes w que podem ser usados para fazer o mapeamento input-output.

De uma forma um pouco mais detalhada podemos descrever o que ocorre em um neurônio artificial da seguinte forma. Inicialmente o neurônio recebe os dados input X (X0, X1, X2,…,Xn)e calcula o somatório destes termos com uma matriz de coeficientes W (uma transformação linear). Em seguida, o resultado dessa operação é submetido à uma transformação não-linear (em laranja) e o output é passado para a próxima camada oculta ou para a camada de output.

Representação de um neurônio artificial. Cada neurônio da rede recebe dados de entrada e calcula duas operações: 1) na primeira o input X é somado com uma matriz de coeficientes (weights) W, 2) o resultado do somatório é passado para uma função não-linear.

Camada output

A última camada da rede neural, output, recebe o resultado de todas as transformações das camadas ocultas e converte em uma resposta adequada para nosso problema. Por exemplo, esta camada pode retornar a probabilidade de uma molécula ser ativa ou não em um ensaio biológico. Também podemos ter resultados contínuos, como o cálculo da afinidade de ligação.

Considerações finais

O campo de Deep Learning está experimentando renovado interesse nos últimos anos. De fato, na última década com o desenvolvimento de novos algoritmos e plataformas como Keras, PyTorch e Tensorflow, o número de publicações científicas e aplicações comerciais aumentou exponencialmente. Por exemplo, o AlphaGo foi o primeiro programa de computar capaz de derrotar o campeão mundial de Go em 2012. Além disto, modelos baseados em Deep Learning já conseguiram superar o desempenho humano no reconhecimento de imagens. Deep Learning também é bastante utilizado na interpretação de textos, por exemplo no Google Tradutor.

O desenvolvimento de fármacos também está começando a explorar Deep Learning, com trabalhos envolvendo a predição da afinidade de ligação, para a identificação de moléculas ativas em diversos alvos biológicos. Esta ainda uma aplicação relativamente nova e apresenta inúmeras possibilidades.

Referências

  1. GOH, Garrett B.; HODAS, Nathan O.; VISHNU, Abhinav. Deep learning for computational chemistry. Journal of computational chemistry, v. 38, n. 16, p. 1291–1307, 2017.
  2. LECUN, Yann; BENGIO, Yoshua; HINTON, Geoffrey. Deep learning. nature, v. 521, n. 7553, p. 436, 2015.
  3. GOODFELLOW, Ian; BENGIO, Yoshua; COURVILLE, Aaron. Deep learning. MIT press, 2016.
  4. CHEN, Hongming et al. The rise of deep learning in drug discovery. Drug discovery today, v. 23, n. 6, p. 1241–1250, 2018.
  5. http://introtodeeplearning.com/ — Curso oferecido pelo M.I.T.

--

--