O Grupo Turing, grupo de IA da USP, tem como objetivo estudar, aplicar e difundir inteligência artifical no ecossistema de São Paulo, buscando se tornar uma referência em IA no Brasil. Neste repositório, apresentamos, na forma de awesome list, quem somos e nosso trabalho.
- Quem somos
- Projetos por área de estudo
- Papers with code
- Visão Computacional
- Aprendizado por reforço (Reinforcement Learning)
- Processamento-de-Linguagem-Natural-(NLP)
- Finanças quantitativas (Quant)
- Data Science
Somos o grupo de extensão acadêmica da Universidade de São Paulo que estuda, dissemina e aplica conhecimentos de Inteligência Artificial.
Surgimos em 2015 como um grupo de estudos originalmente idealizado por duas mulheres, fundado por um grupo de três politécnicos e batizado em homenagem a Alan Turing (1912-1954), matemático e lógico inglês considerado o pai da computação.
Nossa missão é se tornar uma referência nacional em produção de conteúdo relacionado à Inteligência Artificial. Abrangendo material de estudo em português, a realização de eventos como workshops e até a aplicação em projetos.
Prezamos pela diversidade e o respeito ao próximo. Valorizamos a proatividade de nossos membros nos quesitos de entrega, liderança e a habilidade de trabalhar em equipe tomando atitudes, mas mantendo-se aberto a sugestões.
A motivação deste reportfólio foi criar um lugar onde houvesse implementações de referência de IA feito por falantes de língua portuguesa para falantes de língua portuguesa - e para isso escolheríamos papers relevantes de Deep Learning e Machine Learning e os implementaríamos num repositório do GitHub.
Nesta seção do reportfólio, membros do grupo escolhem artigos ou ideias interessantes em Deep Learning e as implementam de forma simples e explicada, eventualmente extentendo a ideia. No final, nem tudo ficou em portugês... Acontece...
- Weight Uncertainty in Neural Networks - se tornou uma lib em PyTorch de Deep Learning com inferência variacional, BLiTZ.
- https://towardsdatascience.com/bayesian-lstm-on-pytorch-with-blitz-a-pytorch-bayesian-deep-learning-library-5e1fec432ad3
- https://github.com/piEsposito/blitz-bayesian-deep-learning
- Curvilinear Component Analysis implementation for Python - um método para redução de dimensionalidade não linear.
- Auto-Encoder no PyTorch
- https://medium.com/turing-talks/redes-neurais-autoencoders-com-pytorch-fbce7338e5de
- https://github.com/paulosestini/AutoEncoder
- Playing Atari with Deep Reinforcement Learning - O trabalho que inaugurou a área de Deep Reinforcement Learning, tão hypada (com razão) nos dias de hoje.
- Policy Gradients for Reinforcement Learning with Function Approximation- Implementação de REINFORCE - Policy Gradients no VizDoom:
- https://medium.com/@piero.skywalker/reinforcement-learning-para-al%C3%A9m-do-cartpole-policy-gradients-no-vizdoom-720d81ee3cb5
- https://github.com/piEsposito/policy-gradients-doom
- Bayesian Recurrent Neural Networks - Redes Neurais Recorrentes como parte da lib de Deep Learning Bayesiano
- https://towardsdatascience.com/bayesian-lstm-on-pytorch-with-blitz-a-pytorch-bayesian-deep-learning-library-5e1fec432ad3
- https://github.com/piEsposito/blitz-bayesian-deep-learning/blob/master/blitz/modules/lstm_bayesian_layer.py
- Também tomamos como referência: Long Short-Term Memory Recurrent Neural Network Architectures for Large Scale Acoustic Modeling
- https://github.com/piEsposito/blitz-bayesian-deep-learning/blob/master/blitz/modules/lstm_bayesian_layer.py - como uma opção para a operação feedforward
Como humanos somos capazes de enteder conteudos de imagens facilmente, mas e o computador? Como ele enxerga uma imagem? Como ele consegue discernir o seu conteudo e tirar informações dela? Visão Computacional é a aréa de estudos focada em estudar justamente isso e como aproveitar todo o potencial de um computador tem de analisar imagens em um tempo infinitamente menor que pessoas. Usamos todo esse potencial para criar aplicações que melhorem processos antes não automatizados. Atualmente, trabalhamos em um sistema de reconhecimento e codificação de rostos para uma empresa parceira.
- Projeto que visa converter sinais da Língua Brasileira de Sinais em Português: *https://bitbucket.org/grupoturing/libras_codes/src/master/
- Jo-Ken-Po: contar o número de dedos apresenta em frente da webcam: *https://bitbucket.org/grupoturing/contador-de-dedos/src/master/
- Workshop de Classificação de Imagens.
- Posts do Medium sobre CV
- Classificação com redes neurais: *https://medium.com/turing-talks/turing-talks-22-modelos-de-predi%C3%A7%C3%A3o-redes-neurais-parte-3-9c5d5d0c60e7
- Redes neurais convolucionais: *https://medium.com/turing-talks/turing-talks-23-modelos-de-predi%C3%A7%C3%A3o-redes-neurais-convolucionais-d364654a34de
O que estamos fazendo:
- Estudos de técnicas de reconhecimento de imagens, como as grandes empresas implementam algoritmos de classificação etentamos nos atualizar nas técnicas atuais de CV.
- Projeto de reconhecimento facial com codificação não reversível do rosto humano, visando a recente LGPD.
Em poucas palavras, Reinforecemnt Learning é uma modalidade de Machine Learning em que o modelo matemático, enquanto parte decisória de um agente, 'aprende fazendo': iniciado aleatoriamente, o modelo aprende tomando ações e escolhendo a que tem melhor resultado. Depois do treinamento, o modelo passa a encontrar a ação com melhor resultado e o agente passa a ser apto a realizar a tarefa que está fazendo.
- Workshop Introdutório de Aprendizado por Reforço:
- Rede neural que aprende a jogar Super Mario Bros:
- Agente que aprende a jogar Pong com Q-Learning:
- Seríe de posts introdutórios sobre o tema em nosso Medium:
- Introdução
- Processo de Decisão de Markov: Parte 1
- Processo de Decisão de Markov: Parte 2
- Gym
- Programação Dinâmica
-
Estudo dos métodos e técnicas de RL, como DQN, PG, AC, ... e como modelar os problemas, implementando esses métodos em ambientes do gym e outros jogos.
-
Projeto: controle de um carrinho usando RL, pra fazer ele seguir um caminho ou desviar de obstáculos (estamos num estado inicial ainda), envolvendo a simulação do agente e criação de modelo físico (após a quarentena)
Processamento de Linguagem Natural (do inglês Natural Language Processing - NLP) é uma área da Inteligência Artificial que estuda a intepretação e manipulação de linguagens humanas - naturais por computadores. Entre suas aplicações estão:
- Interpretação de texto;
- Criação de conteúdo, e até
- Tradução de texto
- Uso de Machine Learning para classificação dos heterônimos de Fernando Pessoa
- https://medium.com/turing-talks/como-machine-learning-consegue-diferenciar-heter%C3%B4nimos-de-fernando-pessoa-156d0d52a478
- https://github.com/GrupoTuring/fernando-pessoa
- Análise de sentimento em texto com Deep Learning
- https://medium.com/turing-talks/an%C3%A1lise-de-sentimento-usando-lstm-no-pytorch-d90f001eb9d7
- https://github.com/piEsposito/nlp-sentiment-analysis-turing-talks
- Post no Medium de introdução à NLP
Temos projetos em andamento relacionados a interpretação de textos curtos para extração de insights.
Aplicações de programação e inteligência artificial no mercado financeiro, estudando finanças, aplicações e métodos quantitativos. Tudo isso através de cursos, implementações de papers, competições, e visitas a gestoras quantitativas e outras empresas do setor.
- Repositório no GitHub com script utilitário para obtenção de dados do mercado financeiro:
- Lib em Python com estratégias de investimento do Turing Quant:
A área de Data Science, nova no grupo, tem como objetivo aplicar o conhecimento desenvolvido dentro do grupo para resolver problemas reais dentro de organizações. Alinhando-se com a filosofia do grupo, a área procura sempre se aproximar de ONGs, com o intuito de produzir resultados que tenham um impacto positivo na sociedade.
No momento, temos trabalhos em andamento com entidades públicas e privadas que serão publicados e mostrados aqui quanto estiverem prontos.