AI: A Tecnologia é Madura? Estamos Prontos?

A IA generativa é uma ferramenta fantasticamente poderosa, mas a alta velocidade de implementação na tecnologia moderna significa que quaisquer contratempos ou problemas de adoção precoce são enfrentados por milhões de pessoas antes que eles sejam resolvidos.

Escultura de areia com o tema robot
Imagem: pexels.com

O nosso ordenamento legal simplesmente não foi concebido para responder a um ambiente em rápida mudança como este, o que significa que todos no mercado estão à mercê dos pioneiros, mas têm poucos recursos se forem afetados negativamente.

No momento as empresas estão se movendo rápido demais e quebrando as coisas de todo mundo, o que está causando problemas que não podemos resolver antes que novos problemas sejam introduzidos. Eu estou à espera – enquanto faço minha parte – da ação dos legisladores sobre uma boa forma de garantir que as pessoas sejam devidamente protegidas e as empresas regulamentadas, sem estrangular o crescimento e o desenvolvimento.

Perguntas

Quanto ao que pergunto no título, a verdade é que todo o movimento que vemos em torno da IA tem pouco a ver com a tecnologia e mais a ver com o chamado hype, e com o quão suscetíveis nos tornamos a ele. Na feroz competição social, estamos dispostos a destruir a sociedade ao deixar que esses papagaios estocásticos façam nosso trabalho sujo de abusar de outros humanos em busca da satisfação dos desejos mais torpes e irracionais (dinheiro e sexo).

Não é de estranhar que um mal-estar paire no ar. O que me deprime é a quantidade de pessoas que entram no comboio sem qualquer reserva. Esses produtos e as pessoas que os idealizam, desde a forma como são construídos até a forma como são vendidos e como são usados, estão ingerindo nossa toxicidade sistêmica e amplificando-a em poder e velocidade.

Recentemente circulou uma carta aberta implorando às empresas geradoras de Grandes Modelos Linguísticos [LLM] e Difusão de Imagem que pausassem seus lançamentos públicos por um período de tempo para que a sociedade possa discutir o que essas coisas realmente são e o que será permitido a elas fazer ou não fazer. Cartas abertas são sempre uma estratégia ingênua, e neste caso específico sem a menor possibilidade de ganhar força. Vimos isso acontecer em menor escala com o desastre causado pela destituição de Sam Altman e pela reconquista do conselho da OpenAI; quaisquer considerações éticas foram literalmente deixadas de lado e vilanizadas, enquanto os jogadores de má-fé, que prometiam a lua enquanto pediam o nosso dinheiro são elogiados como exemplo de liderança.

Mas o que me surpreende mesmo são as minhas próprias conclusões sobre o quão vil é toda esta situação e quão pouca esperança tenho de uma resolução decente.

Anotação de Imagem como Metadado EXIF

Longo demais; não vou ler: Este artigo questiona práticas correntes na anotação de imagens para visão de computador e propõe armazenar anotações como metadados da imagem, dispensando o arquivo de texto pareado.

Uma das milhares de Imagens do ‘Caprichoso’, nosso dataset de gado zebuino. Breve no GitHub – Imagem: Cownt CC BY-NC-SA 4.0 Deed

Não sei se a prática teve origem na tentativa de contornar limitações tecnológicas dos primórdios. Trabalhando com visão de computador sempre achei um tanto desconcertante que seja preciso criar um arquivo de texto [sidecar file] – contendo as coordenadas das regiões de interesse e das caixas delimitadoras [bounding boxes] – para trabalhar em ‘tandem’ com o arquivo da imagem, quando o próprio arquivo de imagem possui um ambiente ideal, até mesmo Turing-completo [como o JPEG XL], para armazenar esses dados de uma forma estruturada. Isso parece muito ineficiente.

A proposta aqui é tentar simplificar o sistema de arquivos do dataset, eliminando os arquivos de texto secundários, e verificar se há algum ganho importante que justifique mudanças no atual paradigma do processo de treinamento, pelo menos para pequenos conjuntos de dados e tarefas de ajuste fino.

Os arquivos secundários, por definição, armazenam dados (geralmente metadados) que não são suportados pelo formato de um arquivo de origem. Obviamente, isso não é verdade com os arquivos de imagem digital modernos.

Procuro também entender os problemas técnicos e conceituais – e porque não dizer, éticos – relacionados à inserção/escrita/leitura de dados nessas estruturas/ambientes, bem como verificar se há algo a ganhar no processo de treinamento, pelo menos para pequenos datasets, datasets proprietários e/ou tarefas de ajuste fino.

Criar uma tag EXIF personalizada

De acordo com a Wikipedia [Inglês] “O padrão XMP foi projetado para ser extensível, permitindo aos usuários adicionar seus próprios tipos personalizados de metadados”.

Em um mundo perfeito, essa tag personalizada teria seu próprio tipo de dados. Para este exercício usaremos a vocação natural que as tags XMP têm para lidar com strings.

Uma imagem digital, além da informação ótica contida nos pixels, têm um amplo setor dedicado a armazenar informações gerais sobre outros detalhes. Esse setor é dividido em um grande número de campos de metadados, chamados ‘tags’, que armazenam informações específicas sobre o arquivo, como velocidade do obturador, exposição, condições ambientais, localização do dispositivo e inúmeros outros bits. Uma tabela, em outras palavras.

Há um grande número de tags XMP [link em inglês por falta de um em português – lusófonos, precisamos despertar para a tecnologia]. Os diversos dispositivos disponíveis no mercado adotam diversos formatos, sendo EXIF um entre eles.

Tags definidas pelo usuário

Precisamos então criar uma tag para conter nosso rótulo; nossa própria tag EXIF.

No mundo perfeito deste exercício, uma tag ‘Label’ para imagens estaria incluída na especificação XMP e populá-la seria responsabilidade das ferramentas de anotação.

As anotações são parte integrante da aprendizagem de máquina supervisionada. Em uma sessão de trabalho, a ferramenta de anotação normalmente cria, no momento em que um anotador seleciona a região da imagem que contém o item a ser rotulado, um arquivo de texto contendo as coordenadas da anotação da imagem, estruturado em um determinado formato – json, xml, CSV, etc.

São essas coordenadas que permitem ao sistema de AI sobrepor as “caixas delimitadoras” [‘bounding boxes’] – aqueles quadrados já familiares que delimitam os itens-alvo para detecção, como na imagem que ilustra este post. Esse arquivo de texto vive em um casamento indissolúvel com o arquivo de imagem e, para fins de visão de computador computacional, são sempre referenciados juntos.

Um argumento comum é que este esquema de separação imagem/texto permite maior flexibilidade nas anotações, atomização do dataset, etc. Mas contraponho o argumento de que nada é muito diferente quando todos são metadados.

Em uma etiqueta adequadadamente formatada, os dados de texto permanecem compartimentados e manipulá-los não será mais difícil do que manipular um arquivo de texto. Ainda é perfeitamente possível manter o conteúdo das tags sincronizado com arquivos de texto mantidos fora do dataset. O dataset não precisa mais de um sistema de arquivos [FileSystem]. Além disso, “grandes datasets de arquivos pareados têm custos consideráveis, bem como preocupações com a baixa qualidade” (Jia et al., 2021)[0].

Simplificar o dataset

Vamos então nos livrar do arquivo de texto e armazenar nossas anotações como uma tag EXIF do arquivo de imagem. Existem muitos módulos disponíveis em Python para esta tarefa, mas pouca diversidade. Muitos estão desatualizados. Uma pesquisa nos canais Anaconda (conda, conda-forge) e PyPi (pip) retorna módulos como pyexiv2; piexif e PyExifTool. Este último é um ‘wrapper’ Python para o ExifTool, que é uma aplicação escrita em Pearl. É meu preferido no momento. Não detalharei aqui as peculiaridades de cada um.

Com exiftool é possível executar manipulações avançadas em tags. Vamos usá-lo para criar uma nova tag chamada ‘Label’:

O processo envolve editar o arquivo exif.config contendo as tags que queremos definir, conforme estipulado na documentação do módulo:

%Image::ExifTool::UserDefined = (
    # Todas as tags EXIF tags são adicionadas à tabela principal ‘Main table’
    'Image::ExifTool::Exif::Main' => {
        # Example 1.  EXIF:NewEXIFTag
        0xd000 => {
            Name => 'Label',
            Writable => 'int16u',
            WriteGroup => 'IFD0',
        },
        # definir mais tags abaixo...
    }

O espaço de tags EXIF é domínio dos fabricantes de hardware. Programas comuns de edição de imagens como Gimp, Photoshop e outros oferecem maneiras de acessar e editar tags EXIF em seus ambientes.

Intervenções programáticas via Python, C++ requerem abordagens mais técnicas e usuários experientes.

Alternativamente, para uma versão mais simples do experimento, podemos pular a construção de tags personalizadas e usar – após renomeá-las adequadamente – uma ou duas das tags predefinidas na especificação EXIF e disponíveis na maioria dos dispositivos. Exemplos dessas são as tags UserComments, MakerNotes, etc.

Neste experimento, a anotação do rótulo da imagem será serializada para uma tag personalizada chamada ‘Label’ [1] na tabela XMP/EXIF da imagem – assumindo que a tag tenha sido criada ou renomeada no exif.config

def writeToEXIFtag (dadosAnotados)
     #pseudocódigo por enquanto
     Imagem.Exif.Label = dadosAnotados

em vez do arquivo de texto emparelhado [json, xml, csv, etc.]

 def writeToJSONFile(path, fileName, data):
     fileName = fileName.split(".")[0]
     filePathNameWExt = path + '/' + fileName + '.json'
     with open(filePathNameWExt, 'w') as fp:
         json.dump(data,fp)

como no processo usual.

Neste projeto, para maior praticidade [integração com outros módulos, etc.], o melhor caminho parece ser utilizar ambientes virtuais, como virtualenv e conda. Dificilmente é possível reunir exatamente os mesmos pacotes em ambas as plataformas. No momento estou utilizando ambientes que configurei com módulos que montei através da prática não muito limpa de misturar conda+pip. Ainda tenho coisas para descobrir – não tenho muita experiência com Pearl e estou tendo dificuldade em fazer com que tudo [exiftool + pyexiftool] funcione junto.

A favor

  • Processamento mais eficiente [a verificar].
  • Os arquivos de imagem do conjunto de dados podem ser renomeados e usados em qualquer outro dataset sem trabalho adicional.
  • Sem problemas com formatos diferentes. Esses Xlabels [rótulos EXIF] podem coexistir com os arquivos de anotação pareados.
  • A simplicidade traz ganhos pedagógicos; uma curva de aprendizagem [humana] menos acentuada.
  • Câmeras podem pré-anotar imagens automaticamente – pelo menos categorias universais, como COCO [isso é um ‘Pró’?].

Contra

  • Esse esquema reduz em muito a flexibilidade dos dados [a verificar]
  • Aumento do tamanho do conjunto de dados [a verificar]
  • Menos controle sobre conjuntos de dados e anotações [a verificar]
  • Os problemas habituais da economia de vigilância [câmeras detectando, identificando, classificando…]
  • <Insira seu Contra aqui>

Epílogo

Não tenho conhecimento de ideias semelhantes e gostaria de saber se existem. Eu também gostaria de saber se na verdade estou chegando atrasado a uma solução já rejeitada. Ainda estou nos estágios iniciais e receber feedback é parte fundamental do processo.

Estarei relatando os progressos [ou falta de]. Tenho o esqueleto do repositório no GitHub[2], e vou estar lapidando e finalizando a versão inicial nos próximos dias. É um projeto modesto – praticamente todo o README está neste post, porque a ideia é muito simples, como eu creio que todos podem ver.

[0] Scaling Up Visual and Vision-Language Representation Learning With Noisy Text Supervision https://arxiv.org/pdf/2102.05918.pdf

[1] A questão de se criar novas tags, ou renomear alguma existente, [ex. UserComments → Label], ou ambos, ou ainda outra opção com outro tipo de dados, está aberta, assim como a questão de se usar tags simples ou combinadas – por exemplo, para atomizar as coordenadas das caixas delimitadoras e outras informações

[2] https://github.com/VoxLeone/XLabel


APÊNDICE

Para criar uma tag personalizada usando o pyexiftool, você precisa ter a biblioteca pyexiftool instalada em seu ambiente Python. Como mencionado no artigo, pyexiftool é um ‘wrapper’ Python para exiftool, que é uma aplicação escrita nativamente em Pearl. Aqui está um exemplo de função que cria uma tag personalizada em uma imagem usando o pyexiftool:

import exiftool

def create_custom_tag(image_path, tag_name, tag_value):
    with exiftool.ExifTool() as et:
        et.execute(f'-{tag_name}={tag_value}', image_path)

# Exemplo de uso:
image_path = "caminho/para/imagem.jpg"
tag_name = "XMP:CustomTag"
tag_value = "Valor da tag personalizada"

create_custom_tag(image_path, tag_name, tag_value)

Substitua ‘caminho/para/imagem.jpg‘ pelo caminho real para a imagem em que você deseja criar a tag. Defina tag_name como o nome desejado para sua tag e tag_value como o valor que você deseja atribuir a ela.

Esta função vai então usar pyexiftool para executar a ferramenta exiftool em seu sistema e definir a tag personalizada na imagem especificada.

É preciso ter o exiftool instalado em seu sistema para que esta biblioteca funcione corretamente.

Inteligência Artificial com os Pés no Chão

Acabo de ler a coluna que Bruce Schneier e Nathan Sanders escrevem no NYTimes de hoje e é revigorante ver dois grandes luminares abordando as questões multifacetadas que cercam a IA.

Imagem de robôs atendentes
Imagem: pexels.com

No artigo eles destacam com a fluência de sempre os potenciais benefícios – lembrando-nos que a IA não envolve apenas robôs e assistentes de voz; é uma ferramenta de base que pode, de fato, impulsionar o progresso da humanidade. Contudo, a sua ênfase nos riscos sublinha uma preocupação premente. O desconforto em torno da presença da IA, do deslocamento dos empregos e das ameaças superinteligentes é palpável.

É claro que a evolução descontrolada da IA pode resultar em problemas não antecipados; nós não sabemos o quanto não sabemos. Como acontece com qualquer avanço tecnológico, existem riscos. Nossa missão enquanto tecnologistas profissionais deve ser permanecer atentos a eles com a cabeça fria, para garantir que todo o potencial positivo possível da IA seja aproveitado.

O clamor dos autores por regulamentação me parece oportuno. Como salientam, com razão, a tecnologia muitas vezes ultrapassa a regulamentação – eu diria que ela sempre ultrapassa. Mas legislar sobre IA é uma caminhada na corda bamba. Seja muito rigoroso e você vai sufocar o crescimento e a inovação; seja demasiado brando e você corre o risco de colher consequências desagradáveis.

Schneier e Sanders não chegam a se aprofundar em uma análise comparativa entre os modelos existentes em todo o mundo, estudando sucessos e fracassos. Ao todo, é uma leitura convincente que exige introspecção. Embora tenham iluminado o caminho a seguir, garantir a integração segura e eficaz da IA nos negócios humanos requer um esforço coletivo – os decisores políticos, os tecnólogos e o público em geral devem dar as mãos. Esse artigo é um passo crucial na promoção desse diálogo.

Pés no chão

Investi muitas horas ouvindo especialistas em IA e especialistas de outras áreas discutirem as implicações, benefícios e riscos. Ao longo dos últimos seis anos tenho lido, estudado sistematicamente, me graduado e me aprofundado. Tenho hoje experiência própria em IA, onde desenvolvo e lidero uma equipe na construção de soluções específicas de IA para várias categorias de processos – principalmente industriais, de otimização de energia e recentemente o agronegócio – em breve cownt.com.br :). Comentar AI é praticamente a razão da existência deste e outros blogs hoje – incluindo o blog de Schneier, que acompanho muito de perto.

Se tudo a respeito da IA se resumisse a isso, a Inteligência Artificial seria 95% bondade. Eu e outros empreendedores poderiamos continuar com nossos projetos sem maiores preocupações éticas.

Mas a tecnologia agora está abrindo uma série de caixas de Pandora e está em aceleração crescente. A minha opinião é que a) os riscos podem ser geridos, em teoria, mas b) é muito pouco provável que nós, humanos, consigamos fazê-lo. Mitigar os riscos óbvios requer colaboração, transparência, sabedoria, um eleitorado informado, funcionários e representantes governamentais competentes e contenção empresarial em todos os países.

Não só esses elementos basicos não estão disponíveis nos dias de hoje, mas, historicamente, nunca fomos capazes de cooperar a esta escala com algo que se aproximasse desta complexidade. Especialmente quando há dinheiro a ser ganho ou vantagens a serem obtidas para entidades individuais. Em vez disso, naturalmente espero que no caminho caiamos em algumas das armadilhas óbvias.

Eu adoraria estar errado, mas simplesmente não consigo imaginar a classe política contribuindo para medidas sensatas ou proporcionando uma supervisão sensata (exemplo A: as audiências do Facebook e do TikTok no EUA. Exemplo B: a total ausência de discussão desses assuntos no Brasil). A segurança da sociedade diante da disseminação da AI no momento está a depender apenas da responsabilidade individual dos empreendedores.

Pés na lama

A avaliação mais preocupante não vem dos futuristas, mas sim dos analistas da Goldman-Sachs, que projetam 300 milhões de empregos perdidos até 2030 nos EUA e na UE. Algo em torno de 42 milhões por ano. O relatório menciona novos empregos decorrentes do trabalho com IA, mas não diz quantos. Um número semelhante (um terço de todas as horas de trabalho automatizadas até 2030) provém dos analistas mais futuristas – e menos financeiros – do Instituto McKinsey.

Serão trabalhadores em empregos de colarinho branco, especialmente o que chamo de empregos de “camisa pólo”. A IA generativa pode, por exemplo, tornar os veículos autonomos definitivamente seguros para implantação em massa. Pode substituir muitos de nós que trabalhamos em help desks e no atendimento ao cliente.

Sim. Apertem os cintos para as maiores mudanças culturais e laborais desde a invenção da máquina a vapor. As tecnologias de mudança de paradigma surgidas no śeculo 18 e 19 representaram melhorias incrementais da capacidade humana. A IA, por sua vez, substitui completamente ou em parte, tudo o que fazemos no trabalho moderno.

Minha esperança? Dado esse nível de automatização, precisamos começar a pensar em tributar de maneira eficiente os proprietários das grandes plataformas de IA e proporcionar um rendimento garantido aos demais cidadãos. No momento não consigo ver alternativas realistas a isso se queremos evitar o colapso da ordem social.

AI não é Páreo para as Sutilezas Humanas

Faço uma resenha crítica de um artigo muito pertinente publicado no MIT Press Reader , de autoria dos psicólogos Amos Tversky e Daniel Kahneman. O trabalho trata de dois grandes grupos de problemas e suas e implicações e correlações com o pensamento humano e com a inteligência de máquina.

As nuances humanas
Imagem: Pexels.com

A ênfase das abordagens computacionais da inteligência que nos acostumamos a ver no noticiário tem sido colocada em problemas formais e bem estruturados; problemas que têm um objetivo claro e um número definido de soluções possíveis. Esses problemas são os que podem ser, portanto, resolvidos por um algoritmo.

Mas nós, humanos, somos criativos, irracionais e inconsistentes. Concentrar-se nesses problemas bem estruturados às vezes pode ser enganoso e improdutivo – como o proverbial bêbado a procurar as chaves perdidas ao redor do poste, só porque ali é onde a luz brilha mais forte.

Os autores argumentam que existem dois grupos de problemas que são muito típicos da inteligência humana e merecem um olhar atento.

Um grupo contém os chamados problemas de insight. Os problemas de insight geralmente não podem ser resolvidos por um procedimento passo a passo, como um algoritmo, ou, quando podem, o processo se torna extremamente tedioso. Em vez disso, os problemas de insight exigem a reestruturação da própria abordagem do solucionador do problema.

Outro grupo são os problemas de procedimento [no artigo original é usada a expressão “problems of path” – problemas de caminho]. Em problemas de procedimento o solucionador tem disponível uma representação, que inclui um estado inicial, um estado objetivo e um conjunto de ferramentas ou operadores que podem ser aplicados para percorrer a representação. Em problemas de insight o solucionador não tem essas balizas.

Com problemas de procedimanto o solucionador geralmente pode avaliar quão próximo o estado atual do sistema está do estado objetivo. A maioria dos algoritmos de aprendizado de máquina depende desse tipo de avaliação.

Com problemas de insight, por outro lado, muitas vezes é difícil determinar se houve algum progresso até que o problema seja essencialmente resolvido. O que chamaríamos “efeito eureka” ou “momento aha!”, uma compreensão repentina de uma solução anteriormente incompreensível.

Insights são para humanos

De acordo com os autores, os problemas de insight podem ser representados de diversas maneiras. A maneira como você pensa sobre um problema, ou seja, como você representa o problema, pode ser fundamental para resolvê-lo.

Muito pouco se sabe sobre como resolvemos problemas de insight. Esses problemas são normalmente difíceis de estudar em laboratório com muita profundidade, porque as pessoas tễm uma dificuldade natural em descrever as etapas que percorrem para resolvê-los. A maior parte desses problemas pode ser resolvida com a obtenção de um ou dois insights secundários capazes de mudar a natureza do enfoque sobre eles.

Todos nós sabemos que as pessoas nem sempre se comportam da maneira estritamente sistemática necessária para o pensamento rigorosamente lógico. Esses desvios não são falhas ou erros no pensamento humano, mas características essenciais sem as quais provavelmente a inteligência não evoluiria.

Normalmente não parecemos prestar muita atenção às partes formais de um problema – especialmente quando fazemos escolhas arriscadas. Tversky e Kahneman descobriram que as pessoas fazem escolhas diferentes quando apresentadas às mesmas alternativas, dependendo de como essas alternativas sejam descritas.

Em alguns dos testes realizados, as pessoas preferiam o resultado certo ao incerto, quando o certo era enquadrado num tom positivo, e preferiam a alternativa incerta à certa, quando a certa era enquadrada num tom negativo. Com efeito, a estrutura ou tom das alternativas modulou a disposição dos participantes em aceitar o risco.

Nossas decisões, sejam elas corretas ou incorretas, sempre são produzidas pelos mesmos processos cognitivos. Ao contrário dos computadores, somos relativamente limitados no que podemos manter na memória ativa ao mesmo tempo.

Processos rápidos, processos lentos

Temos uma complexidade no nosso pensamento e processos intelectuais que nem sempre trabalha a nosso favor. Tiramos conclusões precipitadas. Somos mais facilmente persuadidos pelos argumentos que se adequam às nossas visões preconcebidas, ou que são apresentados num contexto ou noutro. Às vezes nos comportamos como computadores, mas na maioria das vezes somos desleixados e inconsistentes.

Daniel Kahneman descreve a mente humana como consistindo de dois sistemas, um que é rápido, relativamente impreciso e automático, e um outro que é lento, deliberado, e demora para chegar a uma conclusão mas, quando finalmente chega, é consistentemente mais preciso.

O primeiro sistema, diz ele, é ativado quando você vê a imagem de uma pessoa e percebe que ela está com raiva e provavelmente gritará. O segundo sistema é acionado quando você tenta resolver um problema de multiplicação como 17 × 32. O reconhecimento da raiva, em essência, surge em nossa mente sem nenhum esforço óbvio, mas o problema de matemática requer esforço deliberado e talvez a ajuda de lápis e papel (ou uma calculadora).

O que ele chama de segundo sistema está muito próximo do estado atual da inteligência artificial. Envolve esforços deliberados e sistemáticos que exigem o uso de invenções cognitivas.

O desenvolvimento dos sitemas computacionais inteligentes concentrou-se no tipo de trabalho realizado pelo sistema deliberado, embora o sistema automático ativado pelo reflexo possa ser tão ou mais importante. E pode ser mais desafiador de emular em um computador.

Mais fatos interessantes [em inglês] seguindo o link:

https://thereader.mitpress.mit.edu/ai-insight-problems-quirks-human-intelligence/

Uma (muito) Rápida Introdução à ‘Inteligência Artificial’

O poder de computação ao alcance das pessoas começou a crescer rapidamente, aos trancos e barrancos, na virada do milênio, quando as unidades de processamento gráfico (GPUs) começaram a ser aproveitadas para cálculos não gráficos, uma tendência que se tornou cada vez mais difundida na última década.

Ainda não temos uma Teoria da Mente, que possa nos dar uma base para a construção de uma verdadeira inteligência senciente. Aqui a distinção entre as disciplinas que formam o campo da Inteligência Artificial

Mas as demandas da computação de “Aprendizado Profundo” [Deep Learning] têm aumentado ainda mais rápido. Essa dinâmica estimulou os engenheiros a desenvolver aceleradores de hardware voltados especificamente para o aprendizado profundo [o que se conhece popularmente como ‘Inteligência Artificial’], sendo a Unidade de Processamento de Tensor (TPU) do Google um excelente exemplo.

Aqui, descreverei resumidamente o processo geral do aprendizado de máquina. Em meio a reportagens cataclísmicas anunciando o iminente desabamento do Céu, precisamos saber um pouco sobre como os computadores realmente executam cálculos de redes neurais.

Visão geral

Quase invariavelmente, os neurônios artificiais são ‘construídos’ [na verdade eles são virtuais] usando um software especial executado em algum tipo de computador eletrônico digital.

Esse software fornece a um determinado neurônio da rede várias entradas e uma saída. O estado de cada neurônio depende da soma ponderada de suas entradas, à qual uma função não linear, chamada função de ativação, é aplicada. O resultado, a saída desse neurônio, torna-se então uma entrada para vários outros neurônios, em um processo em cascata.

As camadas de neurônios interagem entre si. Cada círculo representa um neurônio, em uma visão muito esquemática. À esquerda (em amarelo) a camada de entrada. Ao centro, em azul e verde, as camadas ocultas, que refinam os dados, aplicando pesos variados a cada neurônio. À direita, em vermelho, a camada de saída, com o resultado final.

Por questões de eficiência computacional, esses neurônios são agrupados em camadas, com neurônios conectados apenas a neurônios em camadas adjacentes. A vantagem de organizar as coisas dessa maneira, ao invés de permitir conexões entre quaisquer dois neurônios, é que isso permite que certos truques matemáticos de álgebra linear sejam usados ​​para acelerar os cálculos.

Embora os cálculos de álgebra linear não sejam toda a história, eles são a parte mais exigente do aprendizado profundo em termos de computação, principalmente à medida que o tamanho das redes aumenta. Isso é verdadeiro para ambas as fases do aprendizado de máquina:

  • O treinamento – processo de determinar quais pesos aplicar às entradas de cada neurônio.
  • A inferência – processo deflagrado quando a rede neural está fornecendo os resultados desejados.
Concepção do processo de treinamento de máquina, dos dados brutos, à esquerda, ao modelo completo.

Matrizes

O que são esses misteriosos cálculos de álgebra linear? Na verdade eles não são tão complicados. Eles envolvem operações com matrizes, que são apenas arranjos retangulares de números – planilhas, se preferir, menos os cabeçalhos de coluna descritivos que você encontra em um arquivo Excel típico.

É bom que as coisas sejam assim, porque o hardware de um computador moderno é otimizado exatamente para operações com matriz, que sempre foram o pão com manteiga da computação de alto desempenho – muito antes de o aprendizado de máquina se tornar popular. Os cálculos matriciais relevantes para o aprendizado profundo se resumem essencialmente a um grande número de operações de multiplicação e acumulação, em que pares de números são multiplicados entre si e seus produtos somados.

Ao longo dos anos, o aprendizado profundo foi exigindo um número cada vez maior dessas operações de multiplicação e acumulação. Considere LeNet, uma rede neural pioneira, projetada para fazer classificação de imagens. Em 1998, demonstrou superar o desempenho de outras técnicas de máquina para reconhecer letras e numerais manuscritos. Mas em 2012 o AlexNet, uma rede neural que processava cerca de 1.600 vezes mais operações de multiplicação e acumulação do que o LeNet, foi capaz de reconhecer milhares de diferentes tipos de objetos em imagens.

Gráfico tridimensional ilustrando o processo de inferência, partindo de dados brutos dispersos (embaixo à direita) até o refinamento final (após muitas iterações de inferência), onde o resultado (ou predição) é obtido.

Aliviar a pegada de CO2

Avançar do sucesso inicial do LeNet para o AlexNet exigiu quase 11 duplicações do desempenho de computação. Durante os 14 anos que se passaram, a lei de Moore ditava grande parte desse aumento. O desafio tem sido manter essa tendência agora que a lei de Moore dá sinais de que está perdendo força. A solução de sempre é simplesmente injetar mais recursos – tempo, dinheiro e energia – no problema.

Como resultado, o treinamento das grandes redes neurais tem deixado uma pegada ambiental significativa. Um estudo de 2019 descobriu, por exemplo, que o treinamento de um determinado tipo de rede neural profunda para o processamento de linguagem natural emite cinco vezes mais CO2 do que um automóvel durante toda a sua vida útil.

Os aprimoramentos nos computadores eletrônicos digitais com certeza permitiram que o aprendizado profundo florescesse. Mas isso não significa que a única maneira de realizar cálculos de redes neurais seja necessariamente através dessas máquinas. Décadas atrás, quando os computadores digitais ainda eram relativamente primitivos, os engenheiros lidavam com cálculos difíceis como esses usando computadores analógicos.

À medida que a eletrônica digital evoluiu, esses computadores analógicos foram sendo deixados de lado. Mas pode ser hora voltar a essa estratégia mais uma vez, em particular nestes tempos em que cálculos analógicos podem ser feitos oticamente de forma natural.

Nos próximas postagens vou trazer os mais recentes desenvolvimentos em fotônica aplicada ao aprendizado de máquina – em uma arquitetura analógica! Estamos, sem dúvida, vivendo tempos interessantes neste campo promissor.

Fonte de pesquisa: spectrum.ieee.org