Mostrando postagens com marcador inteligência artificial. Mostrar todas as postagens
Mostrando postagens com marcador inteligência artificial. Mostrar todas as postagens

domingo, 31 de dezembro de 2023

Visão Computacional 2023.1


Cursei Visão Computacional em 2023. A disciplina é muito importante e abrangente para ingressar apropriadamente nas áreas de aquisição, tratamento, interpretação de imagens e vídeos e tudo que está associado tais como redes neurais. Impossível abranger toda a área e aqui é somente uma visão super sumarizada. Para uma das várias opções mais aprofundadas tem a playlist com as aulas do Prof. Aldo von Wangenheim nas referência ao final do post.

Pois bem, para mim e num aspecto mais prático para um iniciante no campo de estudo, Visão Computacional independente de seus fundamentos, história, inovações pode ser dividida em três grandes abordagens: Classificação, Detecção e Segmentação de imagens. Vamos a cada uma delas.

Classificação de Imagens

A classificação de imagens é atribuição de categorias (ou designação ou rótulos) a objetos, dados ou fenômenos com base em suas características e atributos estão presentes na imagem. A Visão Computacional se propõe a extrair as melhores características das imagens com o intuito de classificar, detectar (localizar) ou segmentar (identificar) objetos. A aplicação de tal recurso é bastante ampla se propondo a resolver problemas nos múltiplos domínios tais como: Medicina, exploração de recursos (petróleo, minerais, etc), sensoriamento remoto, controle de qualidade, etc.

O processo de extração que se repetirá nas outras abordagens (detecção e segmentação) pode ser descrito como:

1. Obtenção do conjunto de dados e sua preparação (divisão em conjuntos de treinamento, validação e teste, augmentation, pré-processamento, etc);

2. Aplicação das técnicas de extração de características. Há muitas operações e formas de extrair características, aqui listo algumas poucas técnicas:

Análise de histograma (distribuição das cores e intensidade); Co-ocorrência de escala de cinza (características de textura); Padrão Binário Local (LBP - Características de textura); Histograma de Gradiente Orientado (HOG); filtros convolucionais, pooling, flattening em redes neurais profundas ou em combinação com redes rasas.

3. Validação dos resultados. Aqui busca-se garantir que os resultados sejam os mais legítimos possível não sofrendo de tendências decorrente do conjunto de dados enviesado. Assim diferentes técnicas e métricas são utilizadas tais como (algumas):

Técnicas de divisão dos dados são formas de garantir que os resultados automáticos obtidos foram legítimos e que o treinamentos entrega resultados melhores do que os resultados feitos por especialistas (custosos) : hold-out, cross-validation de vários tipos: K-folds, Stratified K-fold, Leave-p-out, Leave-one-out e Monte Carlo (shuffle-split) ou ainda uma combinação de hold-out e cross-validation

Métricas são valores numéricos pelos quais se interpretam quão bons são os resultados obtidos: acurácia, precisão, recall, f1-score (dice), intersection over union - IoU (índice Jaccard), sensibilidade, especificidade e a matriz de confusão.

Cada uma dessas técnicas ou recursos possui detalhamentos específicos que fogem ao escopo do post. Eles também não são obrigatórios ou exaustivos e podem ser recombinados de diferentes formas para ao final dentro do conjunto de dados se obtenha a classificação automática das imagens.

Pode ser encontrado no Kaggle (abordado neste post), diferentes desafios e datasets prontos para serem testados e assim se desenvolver o aprendização em Classificação de Imagens.

Detecção de Imagens

Enquanto a classificação de imagens se propõe a dizer o que tem na imagem, a detecção marca a localização do objeto, em geral destacando-o com um retângulo ou no jargão técnico uma bounding box. Esta bounding box deve conter todo objeto procurado independente da forma do mesmo. Daí técnicas de reconhecimento são aplicadas em imagens estáticas ou em vídeos de modo a localizar os objetos. Há bastante aplicações desta técnica em diversas áreas. 



Segmentação de Imagens

A segmentação vai além da classificação na medida em que não apenas identifica o objeto, mas também delimita sua forma e posição dentro da imagem. Essa abordagem tem aplicações cruciais em diversos campos. A segmentação desempenha um papel fundamental na capacidade de máquinas "interpretarem" o mundo visual como os humanos o fazem, o que a torna um tópico relevante em nosso cenário atual. Exemplificando:

Tipos de segmentação
A segmentação pode ser de 4 tipos:
Segmentação de bordas: A segmentação de bordas se concentra na detecção e delimitação das bordas dos objetos na imagem. Ela não atribui rótulos semânticos aos objetos.

Segmentação Semântica: Na segmentação semântica ocorre a atribuição de sentidos/significados a cada  pixel rotulado na imagem. 

Segmentação de instância: A segmentação de instância é um passo além da segmentação semântica, neste tipo se faz a separação de instâncias da mesma classe presente na imagem.

Segmentação panóptica: A segmentação panóptica é a união entre os objetos identificados nas segmentações anteriores.


==========

Referências

Playlist das videoaulas das disciplinas INE410121 - Visão Computacional, INE 5443 - Reconhecimento de Padrões e EEL110021 - Visão Computacional e Inteligência Artificial para Veículos Autônomos da UFSC  (português)

Dive into Deep Learning 

Computer Vision: Algorithms and Applications by Richard Szeliski

Deep Learning, by Goodfellow, Bengio, and Courville

Classification in Data Science

Feature Engineering for Computer Vision

O que são redes convolucionais: uma breve explicação (português)

Deep Learning Book (português)

Hold-out vs. Cross-validation in Machine Learning

An overview of semantic image segmentation

Semantic Segmentation — Popular Architectures

A 2021 guide to Semantic Segmentation

quarta-feira, 9 de agosto de 2023

Redes e as frases sinceras


Cursei uma disciplina como ouvinte no primeiro semestre de 2023. A disciplina é básica no currículo e foi importante na revisão de conceitos. Vou ser vago pois a ideia é só destacar as frases que ouvi no curso. Ressalto que as frases não são minhas. As frases eu as considero como pérolas pois são fruto de anos de trabalho e experiência sincera do professor, que não vou identificar pois a ideia é destacar as frases. As frases tem o tom jocoso mas de nenhum modo preconceituoso pois vem da visão de um profissional que de fato trabalhou aqueles temas. Mas posso dizer que para mim como ouvinte foram momentos de leveza, um escape humorístico e que, claro, ajuda na pedagogia. O post pode ficar curto pois não são muitas frases. Em algumas delas vou dar contexto, claro que não é uma tentativa de explicar a piada. Mas para não dizer que foi pouco trabalho vou produzir imagens com cada uma das frases.

Frase 1
Há profissionais que não engolem o Java, mas se dão muito bem o Javascript, que de fato não faz parte da plataforma Java. O JavaScript surgiu em 1995 e é posterior ao Java que surgiu em 1991. As linguagens são de empresas diferentes. Javascript recebeu este nome como jogada de marketing, uma tentativa de popularização. Javascript teve vários nomes antes de ter este definitivo. Foi primeiro chamado de  Mocha e depois LiveScript. Então sim, é possível mostrar todo o seu desgosto com o Java e amar o Javascript.

Frase 2
As tecnologias de frontend (ou front-end) são todos os recursos que realiza uma interação direta com o usuário que consiste principalmente na interface gráfica. Essas tecnologias tem seu valor, claro ! Porém em relação às tecnologias de backend que englobam o que podemos considerar o que é mais fundamental em redes de computadores e que está muito relacionado aos serviços, protocolos, sistemas e a fundamentação matemática, estatística, física e até filosófica. 

Frase 3
Sem comentários

Frase 4
Sim, não só os protocolos mas toda a fundamentação de conexões de rede, tem um quê de espetacular na medida em que apesar dos avanços principalmente em termos de velocidade, a base, o fundamental se manteve. Daí o seu valor. Para corroborar esse ponto de vista menciono a Association for Computing Machinery - ACM. A ACM é uma sociedade científica dedicada à Computação. ACM analisa, reconhece e laureia de diferentes formas os avanços computacionais com impactos positivos na sociedade. Assim sendo o principal prêmio da ACM é o A. M. Turing Award (Prêmio Turing) - considerado o prêmio Nobel da Computação. Em 2004 o Prêmio Turing foi concedido a Vinton Cerf e Robert Kahn pelo trabalho pioneiro em internetworking, incluindo o projeto e implementação do TCP/IP. Em 2016 foi laureado Tim Berners-Lee pela invenção da World Wide Web, o primeiro navegador web, e os protocolos e algoritmos fundamentais que permitiram a escalabilidade da web. Em 2022, Robert Metcalfe foi laureado pela invenção, padronização e comercialização da tecnologia Ethernet. Então SIM, há grande valor nesses avanços.

Frase 5
Pelas mesmas razões da frase anterior, o TCP/IP tem uma performance tão excelente que é sugerida sua utilização aos modelos de predição.

Frase 6
Pela experiência pessoal do profissional, parte dos trabalhos em Engenharia de Software tem muito de "blá", lero-lero e pouca entrega, ao contrário dos conceitos de Redes que tem que ser eficientes, performáticos caso contrário não são usados, virar padrão então fica impossível. 

Frase 7
O conceito original de heurística (procedimento mental simples que ajuda a encontrar respostas adequadas para perguntas difíceis) pode dar margem sim para seja "um chute" aleatório. Então, entre amigos numa brincadeira, cabe sim rebaixar a heurística a este patamar.

Frase 8
O Cálculo Numérico corresponde a um conjunto de ferramentas ou métodos usados para se obter à solução de problemas matemáticos de forma aproximada. Esses métodos se aplicam principalmente a problemas que não apresentam uma solução exata. Já o machine learning se propõe a fazer predições automáticas baseado em um conjunto de dados que "aproxima" as predições da realidade usando recursos, métodos, conceitos da área de Inteligência Artificial. A semelhança dos conceitos EXISTE ! E é um grande insight. Defensores de qualquer uma das áreas podem ficar chateados com este tipo de afirmação mas ela não é de modo algum totalmente desconectada da realidade.   

Frase 9
Para mim esta é uma das melhores, ela não é tão polêmica, mas é o reconhecimento da supremacia do SO Android que é versátil o suficiente para rodar nas mais diferentes arquiteturas e plataformas. Daí ele ser um candidato a equipar nossa versão cibernética.



sábado, 5 de agosto de 2023

Ferramentas de IA


No passado recente os avanços na área de Inteligência Artificial em seus múltiplos desdobramentos tem sido tão vertiginoso que apontar tais desdobramentos é estar fadado à rápida desatualização. Com relação às ferramentas, idem. Ainda assim é possível verificar quais ferramentas e recursos estão disponíveis e alguns tornam-se referência podendo ser utilizados por mais tempo. Lembrando que a lista não é recomendação. A maioria das ferramentas indicadas são para desenvolvedores e são em geral baseadas nas IAs mais famosas.

1. Soluções voltadas a código. Soluções que escrevem, depuram ou explicam códigos. Não vou citar as três principais pois já são muito famosas - ChatGPT, GitHub Copilot, OpenAI Codex


DeepCode - A principal proposta da DeepCode é a geração de um código seguro ou da análise de segurança de outros códigos. A desenvolvedora do DeepCode destaca as qualidades do produto e se propõe a demonstrar em como o DeepCode pode de fato melhorar códigos existentes e propor novas soluções.

Figstack - Com o Figstack o programador poderá obter a explicação linha a linha do que o código faz. Este recurso permite ao Figstack ser uma boa solução para documentação de código. A ferramenta também traduz código entre uma linguagem de programação para outra. Outro recurso disponível nesta ferramenta é avaliar a eficiência do código submetido (em inglês Big O) e claro faz sugestões de melhorias. 




2. Soluções voltadas a vida prosaica do empreendedor como criação de imagens, áudios, vídeos e outros automatizações. 


Fliki - Fliki é uma ferramenta AI para transformar texto em vídeos com vozes e assim você deixa de pagar uma fortuna para produtoras pois vídeos simples o Fliki dá conta. Não tentei ao ponto de me aprofundar, mas o vídeo inicial dá uma ideia boa das possibilidades. O próprio YouTube poderia ter mais recursos tais como esse, quem sabe no futuro, por enquanto Fliki e similares ajudam os criadores de conteúdo.

Runway - Outra ferramenta com tecnologia de IA como a primeira, porém Runway gera vídeos muito mais sofisticados. O Runway foi projetado para criadores de todos os tipos, seja você um escritor experiente ou um iniciante em busca de ajuda. Boa alternativa para geração de material de divulgação de projetos e negócios.

Resemble - O Resemble é uma ferramenta de IA exclusiva que permite criar narrações de alta qualidade e semelhantes a humanos em segundos de maneira natural e o menos sintetizado possível e em vários idiomas. O que o torna útil para dublagens. Você pode usá-lo para adicionar narração de nível profissional aos seus vídeos ou podcasts. É perfeito para criar narrações para materiais de marketing, tutoriais e demonstrações de produtos. 

HyperWrite - HyperWrite é uma poderosa ferramenta de escrita; Conta com 93 módulos diferentes todos voltados para a escrita de texto. De e-mails, artigos, teses, documentação de sistemas, etc, o HyperWrite se dispõe a gerar texto claro, conciso e preciso. O HyperWrite também possui funcionalidade integrada para melhorar a legibilidade e gramática. Além disso, permite fácil compartilhamento e colaboração em documentos, o que é especialmente útil para equipes remotas e desenvolvedores que trabalham em projetos de código aberto.


Menção honrosa ao 1Tools. 1Tools oferece uma vasta miscelânea de recursos, a princípio gratuitamente. Apesar de ter testado, a variedade é tanta que é difícil não haver pelo menos uma que não resolva bem as dores de desenvolvedores e empreendedores. 


3. Soluções para comunidades de desenvolvedores, infraestrutura em nuvem e IA. Apesar da tentativa de classificação das ferramentas nessa categoria, cada uma das indicações aqui é uma mistura de plataforma, rede social, comunidade e ferramentas de desenvolvimento em IA.

Keras - Definição da Wikipédia sobre o Keras - "O Keras é uma biblioteca de rede neural de código aberto escrita em Python.". Keras funciona normalmente com outras ferramentas tais como: TensorFlow, Microsoft Cognitive Toolkit, R, Theano, ou PlaidML. Projetado para permitir experimentação rápida com redes neurais profundas, ele se concentra em ser fácil de usar, modular e extensível. Foi desenvolvido como parte do esforço de pesquisa do projeto ONEIROS (Open-ended Neuro-Electronic Intelligent Robot Operating System). François Chollet, autor do Keras, explicou que o Keras foi concebido para ser uma interface, e não uma estrutura de aprendizado de máquina independente. Ele oferece um conjunto de abstrações mais intuitivo que facilita o desenvolvimento de modelos de aprendizado profundo, independentemente do back-end computacional usado. O Keras é a principal biblioteca de desenvolvimento de redes neurais. A pesar do propósito inicial Keras se tornou muito mais que foi proposto.

Kaggle - Kaggle é uma comunidade online para competições em ciência de dados. Kaggle foi fundado em 2010 por  Anthony Goldbloom and Ben Hamner e foi vendido em 2017 para o Google. Kaggle disponibiliza, datasets (conjunto de dados), cursos, ambientes de desenvolvimento para a comunidade competir na busca de soluções para os mais diversos problemas. Ótimo ambiente para evoluir no aprendizado e na busca de soluções no estilo de gamefication através do qual os participantes recebem distintivos conforme seu avanço e participação na comunidade.

Hugging Face - Hugging Face tem uma proposta similar a do Kaggle, porém seu foco é a construção de aplicações utilizando Machine Learning. Sua plataforma permite que usuários compartilhem seus datasets e modelos de aprendizado de máquina. A companhia foi fundada em 2016 por Clément Delangue, Julien Chaumond e Thomas Wolf. Hugging Face possível uma infraestrutura similiar ao do GitHub para manutenção de repositórios, modelos, datasets, aplicações web e suporte a discussões.

Google Colab - O Colaboratory ou “Colab” é um produto do Google Research, área de pesquisas científicas do Google. O Colab foi criado a partir de um fork do projeto Jupyter que oferecia serviços para computação interativa entre múltiplas linguagens de programação. O Google porém integrou os recursos do Jupyter em sua infraestrutura e disponibiliza "células" de programação (chamados de notebooks) como se fosse arquivos do Google Drive além de oferecer capacidade de processamento em nuvem. O Colab permite que qualquer pessoa escreva e execute código Python arbitrário pelo navegador e é especialmente adequado para aprendizado de máquina, análise de dados e educação. Pelo Colab também é possível aplicações de maior porte pois o Google vende capacidade computacional para maiores demandas. As demandas pequenas entretanto podem ser atendidas gratuitamente. Menção honrosa nesta parte de infraestrutura escalável em nuvem vai para a Amazon Web Services - AWS

PapersWithCode - Este site se propõe a disponibilizar de maneira livre e aberta artigos, códigos, datasets, métodos e resultados de avaliação relativas a NLP (Neural Language Processing) e Machine Learning. Todo o conteúdo do site é licenciado sob a licença CC-BY-SA (mesma da Wikipedia) que permite a contribuição de todos. Paperwithcode também disponibiliza materiais sobre Astronomia, Física, Ciência da Computação, Matemática e Estatística.

O site é um ponto de partida para saber sobre as novidades mais "quentes" e o state-of-the-art de diferentes áreas de pesquisa, porém com foco nas áreas citadas acima.


domingo, 29 de janeiro de 2023

Redes Neurais 2022.1

 Eu me propus a resumir algumas disciplinas que cursei recentemente. Tanto como forma de avaliar a assimilação quanto para fins de registro pessoal. Afinal é preciso ajudar a memória.

No primeiro semestre de 2022 cursei a disciplina de Redes Neurais de 60h como parte do programa de pós-graduação DCCMAPI, como aluno especial. A disciplina foi ministrada pelo Prof. Dr. Areolino de Almeida Neto.

Os tópicos da disciplina foram:

- Redes Neurais Artificiais (RNA). Neste tópico foram apresentadas as RNAs (inicialmente redes rasas), estrutura, arquitetura, tipos e usos de RNA. 

Figura 1 - Modelo básico de uma RNA

 
Figura 2 - Tipos de topologia

Figura 3 - Casos de topologia

Além da definição, tipos e regra de aprendizado computacional. As definições apresentadas foram:

“Aprendizagem é um processo no qual os parâmetros livres de uma rede neural são adaptados através de um processo de estimulação do meio-ambiente no qual a rede está inserida. O tipo de aprendizagem é determinado pela maneira que ocorrem as mudanças nos parâmetros" (S. Haykin)

“Aprendizagem é vista como processo de otimização. Isto é, aprendizagem consiste em um processo de busca de solução em um espaço multidimensional de parâmetros, em geral os pesos das conexões, que
otimize uma dada função objetivo.” (M. Hassoun)

Tipos de aprendizado

Os tipos de aprendizado de aprendizado de máquina pode ser resumido pela imagem abaixo. Há três tipos principais e cada um é mais indicado para lidar com tipos específicos de problemas.


 Tipos de redes neurais

Os tipos de redes neurais abordados de fato foram as Redes MLP, RBF e a CollabNet. Porém há muitos tipos de redes e as foram mencionadas as redes Kohonen, Elman, CMAC, Hopfield, Stacked Autoencoder, Convolucional, Time-delay NN, etc.

Entretanto o gráfico abaixo dá uma ideia mais próxima da variedade das redes neurais.


Atividades da disciplina

As atividades da disciplina foram as listadas abaixo com o respectivo link no GitHub. Clique nos links para ser redirecionado.

Atividade 01 - Lista de exercícios de MathLab - Objetivando conhecer os recursos básicos da ferramenta.

Atividade 02 - Reconhecimento de padrões via RNA tipo MLP (MultiLayer Perceptron) com o objetivo de avaliar carros.

Atividade 03 - Reconhecimento de padrões via RNA tipo RBF (Radial Base Function) com o objetivo de avaliar carros.

Atividade 04 -  Reconhecimento de fonemas via RNA tipo MLP

Atividade 05 - Reconhecimento de fonemas com múltiplas RNA tipo MLP.

 

segunda-feira, 6 de junho de 2022

Peça sua imagem

Você já precisou de alguma imagem da internet ? Veja bem talvez você nunca tenha precisado pois não é sua área de trabalho. Mas quem trabalha com internet, principalmente assessorias de imprensa, profissionais de marketing, produtores de conteúdo jornalístico, ficção e outras invariavelmente precisam de imagens que representem ou tenham relação com o assunto abordado.

Não é à toa que existem muitos bancos de imagens disponíveis para consulta e utilização de imagens, claro que os melhores e maiores bancos são pagos e com planos diversos. Ao final do texto, disponibilizei alguns poucos links com lista de bancos de imagens gratuitos e pagos que para quem precisa oferecerá imagens que vão atender toda e qualquer demanda.

 Pois bem, tempos atrás descobri algumas ferramentas utilizando Inteligência Artificial que vale a pena destacar devido às suas entregas. Pelo menos o que elas prometem entregar, já que nem todas estão sendo utilizadas como ferramenta comercial (ainda). São os geradores de texto-imagem. Você escreve o que você quer e gerador devolve opções de imagens a partir do seu texto. 

StyleGan2

A primeira das ferramentas que quero destacar, na verdade, não é um gerador de texto-imagem, mas entrega imagens novas geradas a partir de imagens reais. Esta ferramenta disponibiliza seus resultados no site thispersondoesnotexist.com. O site na verdade é só para mostrar os resultados obtidas pela StyleGan2 que é uma GAN - generative adversarial network (ou em português rede adversarial generativa). Uma GAN é uma rede neural para aprendizagem não supervisionada compostos por um sistema de dois modelos de rede neural que competem entre si e são capazes de analisar, capturar e copiar as variações dentro de um conjunto de dados. Apesar de os rostos de pessoas chamarem mais atenção a mesma rede neural faz o trabalho similar com trabalhos de arte, gatos, cavalos, dentre outros infinitos itens. Em todos é impressionante a fidelidade. Qualquer um diria que é uma foto de uma pessoa ou item real. 

Este vídeo aborda o StyleGan2 e seus recursos. Mais sobre o StyleGan2 veja os links desta lista

Dall-E 2 

O Dall-E 2 é um gerador de texto-imagem. O Dall-E 2 foi desenvolvido pela OpenAI.  É suficiente digitar um texto (em inglês) e a ferramenta cria várias imagens a partir do texto de entrada. O site mostra e compara os resultados do Dall-E 2 em comparação com os resultados do Dall-E 1. Aqui uma sequência das fotos geradas pelo Dall-E 2 ao se pedir um astronauta cavalgando um cavalo em estilo fotográfico.




Para se aprofundar o OpenAI disponibiliza documentação, API, exemplos, etc. O Dall-E 2 já está disponível comercialmente.

Imagen

Desenvolvido pelo o Google, o Imagen demonstra superioridade ao Dall-E 2 e várias outras GANs na geração de imagem a partir de texto. Na intenção de comprovar seus melhores resultados o site do Imagen mostra suas métricas comparativas a outros trabalhos. O Imagen apresenta variedade de estilos, texturas, compreensão maiores do que seus concorrentes. Aqui vão alguns exemplos:

 

Apesar dos resultados superiores, por enquanto o Imagen não parece estar disponível comercialmente. 

Pelo visto em um tempo não muito distante os banco de imagens vão ter que se atualizar e passar a agregar este tipo de solução  de inteligência artificial para atender seus clientes, já os fotógrafos... bem estes terão que se reinventar e os bons e persistentes encontrarão seu caminho no mundo.


========

Lista de bancos de imagens:

ProsaNova

ResultadosDigitais

DunaDesign

RockContent

=============

Lista StyleGan2

Vídeo explicativo 1 - StyleGANv2 Explained! 

Vídeo explicativo 2 - Editing Faces using Artificial Intelligence

Artigo - Analyzing and Improving the Image Quality of StyleGAN

Código da StyleGan2 no Github 

sábado, 2 de outubro de 2021

O avanço das IAs

Eu demorei um pouquinho a voltar a escrever sobre inteligências artificiais (IA) ou como costumam abreviar no inglês - Artificial Inteligência (AI) e confesso que tenho sido atropelado pelas novidades da área que não param de pipocar. No passado escrevi esses textos sobre inteligência artificial que você pode ver clicando aqui. Nesses textos tento demonstrar a variedade das áreas de aplicação de inteligência artificial. Pois bem soluções de inteligência artificial são aplicáveis em qualquer área. Segue abaixo algumas descobertas recentes e espero que você veja valor nesses avanços. Apesar dos exemplos que apresento aqui, saiba que o uso de inteligência artificial é amplo e irrestrito.

1. Hua Zhibing. Tive muitas dificuldades de checar devido a língua mas a informação é que Hua Zhibing é uma estudante virtual da Universidade de Tsinghua. Hua Zhibing apresentou-se no vídeo abaixo na rede social Weibo. Segundo dados de outros sites listados nas referências Hua Zhibing é "viciada" em literatura e arte desde que nasceu. É baseada no sistema de modelagem Wudao 2.0. Segundo Tang Jie, um dos principais desenvolvedores, Hua utiliza 1.75 trilhão de parâmetros para simular conversas, escrever poemas e entender imagens.

 

Sendo bastante sincero a barreira da língua não permitiu coletar informações sobre como anda o desempenho de Hua como aluna, se é o orgulho dos professores ou se está levando bomba em Semiótica II. Se o objetivo principal for o aprendizado, Hua pode se aplicar 24 horas por dia sem se cansar. podemos pensar em quanto tempo ela concluirá o curso ? Para mim é bem difícil descobrir tais informações pois as fontes foram ágeis em divulgar a criação de Hua mas extremamente sovinas em dar mais detalhes de sua performance.

2. A 10ª Sinfonia de Beethoven. O Instituto Karajan da Áustria incumbiu uma comissão para desenvolver uma IA que aprenderia a obra de Beethoven, identificaria tudo sobre seu estilo e a partir dos rascunhos da 10ª Sinfonia, finalizaria sua sinfonia incompleta. Seria o que podemos apontar como o mais aproximado da sinfonia que Beethoven faria. Dúvidas... veja no vídeo abaixo.

 

Como diletante amador em música, a 10ª Sinfonia soou bastante Beethoven como teria soado qualquer outro compositor. Somente ouvidos experientes e conhecedores a fundo da matéria poderiam apontar erros de estilo, andamento, composição ou algo do tipo. Para mim está aprovado. Aguardo ansioso a 11ª Sinfonia.

3.  GPT-3. As últimas novidades são relacionadas às áreas de desenvolvimento. A GPT-3 é uma IA aberta que promete converter linguagem natural em linguagem de programação. O que é uma avanço significativo depois das iniciativas de low-code (desenvolvimento com pouco código) ou no-code (desenvolvimento utilizando principalmente gráficos e composição de elementos) que prometiam abstrair as habilidades de desenvolvedores, diminuindo ainda mais a barreira de desenvolvimento. Pois bem a GPT-3 baixa ainda mais esta barreira permitindo a conversão de códigos diretos do inglês para a linguagem da Microsoft que viabiliza a conversão - a Power Fx. 

Esses avanços de IA em programação sempre deixa muita gente da área de TI em polvorosa pois mesmo o mercado de programação sendo relativamente atraente, as vagas estão sempre em risco em função de que um concorrente possa fazer mais, melhor e com menos custo, seja uma software house com uma solução pronta, seja um estagiário indiano. E de repente bum ! Algo assim pode mandar o desenvolvedor local, a software house e o estagiário indiano para aumentarem a frota de Uber da cidade.

4.Codex. A OpenIA Codex é a melhor IA que converte linguagem natural em linguagem de programação tais como JavaScript, Python e PHP entre outras. O modelo do Codex é o mesmo usado no Copilot do Github. OpenAI Codex é o descendente de outro modelo, o GPT-3, porém é especializado em receber como entrada texto corrido e a partir dessa entrada devolve um código funcional. Veja um exemplo abaixo.

Apesar das muitas vantagens apresentadas não encontrei muitos outros casos de usos nem do Codex, nem do GPT-3, mas eles deverão aparecer, principalmente se tiverem sucesso na resolução de problemas propostos. Às equipes de desenvolvimento de TI e áreas negociais restará capricharem no inglês para que tais ferramentas se provem. Mas não há como não admitir que tais avanços são dignos de nota e serão mais importantes ainda se um belo dia em vez de baixar uma IDE para escrever um código sua primeira opção seja baixa os módulos para só dar direcionamentos ao Codex e similares.  

 Referências:

1. Hua Zhibing:

https://www.odditycentral.com/technology/meet-chinas-first-ai-powered-virtual-university-student.html

https://epaper.chinadaily.com.cn/a/202106/10/WS60c1508ea31099a234356c12.html

2. A 10ª Sinfonia de Beethoven

https://tecnoblog.net/meiobit/447066/ia-conclui-10a-sinfonia-beethoven/

3. GPT-3

https://techcrunch.com/2021/05/25/microsoft-uses-gpt-3-to-let-you-code-in-natural-language/ 

4. Codex da OpenIA

https://openai.com/blog/openai-codex/

quinta-feira, 10 de janeiro de 2019

AlphaZero e suas novidades

 Apesar de haver escrito sobre o AlphaZero em abril de 2018 (clique aqui), em 6 de dezembro de 2018, a DeepMind - braço da Alphabet, que é a holding dona do Google - divulgou resultados do desempenho do AlphaZero nas suas façanhas em sobrepujar os sistemas mais capazes em áreas diferentes.

O artigo vale pelo resultado alcançado. Para ter ideia da dimensão do resultado vamos entender o que é mesmo o AlphaZero. O AlphaZero é uma versão generalista que "aprende" a partir da apresentação das regras e de praticar sobre o tópico a ser aprendido.

Pois bem, o AlphaZero teve um expressivo desempenho contra o Elmo - a versão campeã do mundo de shogi (xadrez japonês). AlphaZero venceu 91,2% das partidas, levando somente 2 horas para superar o Elmo.

Contra o software campeão mundial de xadrez - o Stockfish, AlphaZero venceu 155 partidas, perdeu 6 e empatou as restantes num total de 1000 partidas. AlphaZero levou 4 horas para superar o Stockfish.

AlphaZero teve vida mais difícil mas ainda assim superou o AlphaGo, versão que venceu o campeão mundial de Go em 2016. Venceu somente 61% dos jogos, vindo a superar o AlphaGo depois de 30 horas de batalhas.

O gráfico mostra claramente uma grande quantidade de empates quanto o AlphaZero joga xadrez de peças pretas, inclusive as únicas 6 derrotas no 1000 jogos que disputou contra o Stockfish. Já no Go, o resultado foi mais equilibrado tanto com as peças pretas quanto com as peças brancas.

AlphaZero para aprender os três jogos utiliza uma rede neural não treinada para jogar milhares de partidas contra si mesma via processo de tentativa e erro. Essa técnica é chamada de aprendizado de reforço, à medida que as sequências de partidas avança os melhores lances são selecionados. Apesar da lógica simples, AlphaZero surpreendeu os especialistas pois perceberam criatividade e inventividade nos movimentos contras os outros sistemas.

A DeepMind está muito otimista com as capacidades do AlphaZero que principal objetivo não é vencer partidas de shogi, xadrez ou go e sim ampliar as possibilidade de aplicação do sistema especialista em várias outras áreas como o projeto AlphaFold que pretende prever as estruturas em três dimensões de proteínas baseada em sequência genética.

Seguem os links adicionais divulgados pela DeepMind:
1. Artigo na Science 
2. Versão de acesso aberto em PDF
3. 20 Partidas AlphaZero-StockFish selecionadas pelo Grande Mestre Matthew Sadler em ZIP
4. 10 Partidas AlphaZero-Elmo selecionadas pelo Mestre de shogi Yoshiharu Habu em ZIP

terça-feira, 3 de abril de 2018

Inteligência Artificial - ao infinito e além - Parte Final

 Apesar do longo intervalo, vamos para a segunda parte pois ela é igualmente interessante.

AlphaZero
Uma das novidades de inteligência artificial recentes mais interessantes é o AlphaZero. O AlphaZero é uma solução derivada do AlphaZero Go que foi desenvolvido pelo Google e pela Deep Mind.
A solução é constituída de um hardware e o software com um algoritmo codificado que "aprendeu" a jogar Go - um jogo chinês de alta complexidade. O AlphaZero Go venceu um campeão humano de Go. O aprendizado do AlphaZero Go foi por uma rede neural por reforço - aprendizado no qual o algoritmo aprende sem ser ensinado como uma tarefa deve ser realizada.

 Jogo chinês Go
O AlphaZero é uma versão mais generalista do AlphaZero Go, o AlphaZero aprendeu duas coisas mais simples, xadrez e shogi (uma versão de xadrez jogado no Japão).
All About the Japanese Chess, Shogi! And an Easier Version ...Shogi - o Xadrez japonês

Pois bem, o que qualifica o AlphaZero como digno de nota, o AlphaZero aprendeu a jogar xadrez por 4 horas e derrotou o software campeão do mundo de xadrez (Stockfish 8) em 100 partidas sendo 72 empates, 28 vitórias e nenhuma derrota. Tudo bem que o AlphaZero teve algumas vantagens como o hardware otimizado mas seu feito de partindo do zero conseguir organizar o conhecimento para jogar vários jogos e vencer um software especializado é marcante.

A IA empregada no AlphaZero pode ser empregada em muitas outras soluções. Uma dessas soluções - não é a mesma solução, porém um outro algoritmo -  é o SEED (Search for Extraordinary Experiences Division) da Eletronic Arts - EA que tem ensinado a si mesmo a jogar o multiplayer do Battlefield 1. Veja a evolução do desempenho do SEED.

SEED aprendendo Battlefield 1

"Godhead - Deus Cabeça"
A outra novidade é um "Deus", há uma proposta para criar uma divindade baseada em IA. Esta iniciativa é de um engenheiro de computação, empreendedor, milionário que está envolto numa briga judicial entre Uber e Google chamado Anthony Levandowsky. A briga judicial não tem nenhuma relação com a proposta da divindade de IA. Levandowsky acredita em IA irá ultrapassar a inteligência humana possibilitando o crescimento tecnológico sem precedentes. Levandowsky registrou a organização religiosa chamada Way of the Future (WOFT) que conduzirá os homens ao entendimento e adoração do "Godhead" e assim contribuir com a melhoria da sociedade. A WOTF vai financiar a pesquisa que vai criar o "Godhead" a si mesmo pelo aprendizado. Não sei se ele conseguiu, mas há pelo menos um site da "igreja" em www.wayofthefuture.church em que há um resumo das crenças e um formulário para pessoas interessadas em seguir "Godhead". Levandowsky quer atrair principalmente entusiastas de IA para seguir nesta comunidade religiosa tecnológica.

Com esses exemplos bem diferentes e até inusitado eu espero ter demonstrado a variedade das soluções de IA que estão sendo propostas e invadindo o nosso mundo e nosso cotidiano.

segunda-feira, 12 de fevereiro de 2018

Inteligência Artificial - ao infinito e além... Parte 1

É patente que o avanço tecnológico já entregou muitos produtos e ferramentas à sociedade que a transformaram, cada um com suas vantagens e desvantagens. A força da inovação não vai parar e sempre novos produtos e soluções vão continuar sendo ofertados modificando formas de trabalho, meio de vida, profissões, etc. É um setor significativo do comércio mundial e a tendência é de crescimento.

Como escrevi no artigo anterior sobre o futuro da indústria automobilística na qual os carros mui provavelmente serão elétricos, autônomos e as pessoas vão alugar carros invés de comprá-los. Será a smartphonização dos carros, mas isso já foi tratado anteriormente.

Quero abordar desta vez, outro aspecto desse avanço tecnológico. Muitos experimentos, produtos e soluções foram lançados tendo como principal diferencial uma solução de inteligência artificial. No artigos de carros, a IA está como provedor de solução essencial, no artigo de robôs ela também está lá viabilizando as soluções e aplicações.

Pois bem a IA é a ferramenta que possibilita e alavanca essas soluções e há uma série de novidades nessa área. Quero destacar algumas e você poderá tirar suas próprias conclusões.

LawGeex
A LawGeex é uma empresa que oferece uma solução de IA para análise de contratos. O mote é otimizar a revisão de contratos e assim diminuir os erros e agilizar o processo. Desde 2014 a empresa oferece como serviço a análise legal de contratos mais comuns do mercado. LawGeex utiliza uma combinação de algoritmos de aprendizado de máquina, dados em nuvem, processamento de linguagem natural para interpretar os contratos e compará-los com contratos padrões bem ajustados. Em países em que o direito é um terreno sólido esta solução mudará com certeza a formação de novos profissionais da área legal. Atualmente já há empresas concorrentes da LawGeex como a eBrevia que oferece serviço similar.



Watson
Watson é um sistema da IBM (software em um hardware otimizado). A IBM havia desenvolvido o  supercomputador DeepBlue que vencera o campeão mundial de xadrez Garry Kasparov em 1997. O DeepBlue utilizava principalmente seu poder computacional para vencer. Em busca de outro desafio a IBM decidiu em 2004 desenvolver uma solução que vencesse o programa Jeopardy (programas de perguntas e respostas). Watson concorrendo com humanos venceu o programa em 2011. Foi mais um feito extraordinário pois o Watson foi desenvolvido para entender linguagem humana e procurar respostas. A mudança entre o DeepBlue e o Watson foi gigantesca pois se propunham a resolver problemas bem diferentes, o DeepBlue era quase um sistema de força bruta que testava todas as alternativas com um certo grau de expertise, entretanto o Watson utiliza principalmente a análise de dados para propor soluções e aprendizado de máquina aprendendo continuamente à medida que interage.


Hoje Watson é utilizado em diversas áreas, atualmente é utilizado nas seguintes áreas:
i) Analisar massa de dados e detectar padrões para diagnósticos médicos, mercado financeiro, previsão meteorológica, etc.
ii) Criar chatbots (um robô que conversa) para atendimento a clientes;
iii) Processamento de linguagem natural para análise de texto avançada;
iv) Classificar e marcar conteúdo visual através de aprendizagem de máquina;
v) Tradução de idiomas;
vi) Transformar discursos tanto de áudio para texto como de texto para áudio. Um exemplo desse uso está neste link em que qualquer texto entre várias idiomas é lido com perfeição. A transformação de áudio em português não é tão perfeita, mas a leitura de um texto em português é bem executada.

sexta-feira, 9 de junho de 2017

Bem vindo à insegurança total

Broken Authentication or Session Management badge
Em 12 de maio de 2017 o mundo foi surpreendido com o ataque do ransomware Wannacry.

O ataque do Wannacry teve o maior impacto de ataques afetando mais de 200000 computadores ao redor do mundo, parando empresas dos mais diferentes ramos de atuação. No Brasil foram afetados a Vivo, o Tribunal de Justiça de São Paulo e o Hospital Sírio-Libanês.


Softwares mal intencionado como o Wannacry não é novidade já desde 1989 se noticiou sobre softwares tinham comportamento similar.

Mas neste post não quero abordar o ramsonware em si, pois o ataque foi bem detalhado em vários sites. Deixo uma lista de links onde se poderá encontrar detalhes do ataque.
1. O que é ransomware ?
2. Como o ransomware se propaga ?
3. O que é o Wannacry ? 
4. Como pedir resgate de equipamentos sequestrados ?

O que quero abordar é como sociedade fica à mercê do mal uso de informações digitais. A cronologia do ataque nos mostra como estamos vulneráveis:

14/Mar/2017 - A Microsoft publicou uma atualização de segurança para que corrigia a vulnerabilidade no protocolo SMB - O Microsoft Security Bulletin MS17-010.

14/Abr/2017 - O grupo Shadow Brokers divulga dados roubados da NSA (National Security Agency) - a superpoderosa agência de espionagem americana. Entre os dados divulgados incluíam exploits (programas que exploram uma vulnerabilidade do sistema) que atacavam várias fraquezas no protocolo Server Message Block (SMB).

12/Mai/2017 - Ocorreu o maior ataque cibernético com a utilização justamente dos exploits em máquinas Windows não atualizadas.

Pois bem, as ferramentas de invasão foram vazadas como tendo sido roubadas da NSA e a NSA as utilizou para fazer seu "trabalho ofensivo". A NSA em nenhum momento preveniu a Microsoft ou a comunidade acerca desse problema específico. O grupo Shadow Brokers é que fez a divulgação como sendo somente uma de muito mais coisa não divulgada.

Vários artigos no Ars Technica nos dão um vislumbre no mundo de insegurança e perigo a que estamos expostos como o informa como hackers ligados a NSA esconderam-se por 14 anos, desenvolvendo e utilizando ferramentas sofisticadas de invasão e espionagem - foram chamados de Equation Group.

Na descrição do ataque WannaCry o Ars Technica deixou bem claro que o EternalBlue é somente uma vulnerabilidade que pode ser explorada em computadores não atualizados. Mas fica bem claro que há várias outras vulnerabilidades e exploits que podem ser usados para espionar, roubar e sequestrar máquinas e instalações.

Assim chegamos ao ponto que gostaria de ressaltar - já que estamos tão expostos, tão vulneráveis, já que a privacidade foi comprometida em troca de serviços e comodidade, já que nossa vida moderna mais facilitada e integrada por serviços digitais... teremos condições de fazer a crítica para não sucumbir totalmente às soluções digitais ? Vejam que atualmente a vida digital está indo para a adição de serviços digitais em que a inteligência artificial está em pleno desenvolvimento. Uma vez integrada que estas entregas digitais estejam utilizando inteligência artificial desenvolvida e avançada, haverá escapatória para nós ?

É óbvio que a vida moderna é influenciada e moldada pela tecnologia, grandes empresas, governos, grupos hackers podem com as ferramentas corretas dirigir, influenciar e determinar a vida de muitas pessoas com suas soluções e facilidades, principalmente quando os grandes estão cada vez maiores. Devemos ter uma olhar crítico sobre essas facilidades e dependências que nos são inicialmente oferecidas e em segundo plano impostas de modo a não haver como nos livrar. O impacto na vida individual pode ser pequeno, mas olhando um pouco mais longe grande parte da forma como as sociedades se organizam e vivem.