Unixtopia

main/ artigos/

Inteligência Artificial

É uma área da ciência da computação cujo esforço está em fazer computadores simularem o pensamento de humanos e possivelmente outros seres vivos biologicamente. Pode incluir fazer computadores jogarem jogos como xadrez, comporem músicas, pintarem imagens, entenderem e processarem áudio, imagens e texto em alto nível de abstração e compreensão, como tradução entre línguas naturais, fazer previsões sobre sistemas complexos como mercado de ações ou clima ou até mesmo exibir um comportamento humano geral, como emoção simulada. Embora o foco atual em IA seja no aprendizado de máquina e especialmente em redes neurais, existem muitas outras abordagens e modelos utilizáveis, como algoritmos de busca de árvore de estados feitos à mão que podem simular e até mesmo superar o comportamento de humanos em áreas especializadas. Há uma preocupação que ainda é motivo de discussão sobre os perigos de desenvolver uma IA poderosa, pois isso poderia levar a uma singularidade tecnológica na qual uma IA superinteligente pode assumir o controle de todo o mundo sem que os humanos sejam capazes de retomar o controle. Embora ainda seja provável que seja um futuro distante e muitas pessoas digam que o perigo não é real, a questão parece ser sobre quando, em vez de se. IA se tornou uma palavra da moda capitalista. Eles tentam colocar aprendizado de máquina em tudo apenas para esse rótulo de IA, e, claro, para um monopólio de inchaço.

Em 2023, a IA de rede neural se tornou extremamente avançada no processamento de informações visuais, textuais e de áudio e está avançando rapidamente. Redes como difusão estável agora são capazes de gerar imagens, ou modificar as existentes, com resultados principalmente indistinguíveis de fotos reais apenas a partir de uma breve descrição textual em linguagem simples. A IA de texto para vídeo está surgindo e já dando bons resultados. A IA é capaz de escrever programas de computador a partir de descrição de texto em linguagem simples. Os chatbots, especialmente o ChatGPT proprietário, são assustadoramente semelhantes aos humanos e já podem manter conversas principalmente indistinguíveis de conversas humanas reais, ao mesmo tempo em que mostram conhecimento e inteligência extraordinários, o chatbot pode raciocinar corretamente sobre conceitos matemáticos avançados em um nível muito mais alto do que a média humana.

A IA se tornou popular e está em todo lugar, normies estão baixando aplicativos de IA em seus telefones que fazem coisas engraçadas com suas imagens enquanto as espionam. Em jogos como xadrez ou até mesmo videogames de estratégia, a IA neural já está há anos superando em muito o melhor dos humanos por quilômetros.

Detalhes

Como programadores, vamos primeiro responder a isso, o que realmente é IA para nós? Um programador e matemático normalmente simplifica a IA para significar apenas isso, computador tomando decisões. Vamos esquecer o cérebro humano, emoção, psicologia e todo esse tipo de coisa por um segundo e focar apenas em uma coisa, tomada de decisão e como programar computadores para que eles tomem uma decisão inteligente a partir de dados de entrada. Cada sistema de IA nunca faz nada mais do que apenas dar uma olhada na situação atual, estado, contexto, dados, apenas um monte de números, e de todas as ações possíveis que podem ser tomadas a partir daqui, ele tenta escolher a melhor, gerar outro número. Seja fazendo o melhor movimento no xadrez, decidindo qual animal é capturado em uma foto, escolhendo como traduzir uma palavra do inglês para o espanhol ou escolhendo qual pixel desenhar na tela para que o resultado se assemelhe à arte humana, o problema é sempre reduzido a apenas derivar um número de alguns outros números.

IA para nós, portanto, nada mais é do que uma função matemática de estado, gerando ação levando a outro estado. Também exigiremos que essa função seja uma função matemática pura, verdadeira e determinística, sem aleatoriedade, a função sempre retornará o mesmo resultado para a mesma entrada, a entrada depende somente do estado que damos a ela. Em um caso extremo, toda IA que trabalha com memória finita poderia então ser literalmente apenas uma tabela definindo a melhor ação para qualquer estado, mas é claro, tais tabelas seriam grandes e difíceis de fazer manualmente, então normalmente tentamos criar algoritmos que façam o trabalho de tal tabela sem ocupar tanto espaço. Claro que às vezes queremos aleatoriedade, por exemplo no xadrez podemos querer que nossa IA às vezes faça um movimento diferente na mesma posição, mas essa aleatoriedade adicionada sempre pode, e deve, ser implementada fora da nossa função de IA, podemos adicionar um parâmetro de semente extra à nossa IA que afetará sua escolha, ou podemos fazer uma IA que apenas classifique a qualidade de cada movimento e então fazer nosso bot de xadrez (construído em cima dessa IA) escolher aleatoriamente entre, digamos, 3 melhores movimentos conforme julgado pela IA.

A IA moderna de aprendizado de máquina, rede neural, não é exceção aqui, ela também implementa uma função matemática pura nesse sentido. Ainda estamos enfrentando o mesmo problema, estamos apenas tentando resolvê-lo treinando uma rede que fará boas escolhas. Essa abordagem consiste principalmente em criar uma boa estrutura de rede, com bons parâmetros, como número de neurônios e camadas, codificar os estados de boas maneiras, como mapear problemas do mundo real para números que representam o estado, e treinar bem a rede usando conjuntos de dados corretos, algoritmos de treinamento. Essa arte é muito complexa e não pode ser detalhada aqui em profundidade.

A abordagem tradicional sem aprendizado de máquina é um pouco diferente, ela é baseada na programação manual de algoritmos de busca de espaço de estado em vez de modelos de treinamento. Do ponto de vista do SMR, essa é provavelmente a maneira mais KISS, preferível, suficiente para muitos tipos de problemas sem precisar de máquinas extremamente poderosas ou grandes conjuntos de dados. Em essência, fazemos isso, percebemos que os estados são basicamente nós e as ações são conexões entre os nós, obtemos um espaço de estado que é um gráfico meta-matemático. Nosso programa está sempre em algum estado, em algum nó, e as ações que ele pode tomar são caminhos que ele pode tomar no gráfico, então nossa IA está nos ajudando a viajar pelo gráfico para que possamos ir de qualquer estado em que estamos para um melhor, idealmente o melhor possível.

Existem muitos algoritmos, heurísticas e otimizações diferentes aqui, como busca em profundidade, busca em largura, Monte Carlo e minimax com poda alfa-beta. Ele normalmente apenas percorrem recursivamente o espaço local, ou seja, dão uma olhada nos estados próximos ao atual e então dizem em qual direção o melhor estado está. Vamos nos lembrar de que isso não precisa ser apenas xadrez e movimentos de xadrez, isso pode se aplicar a pilotar um avião virtual ou resolver uma equação. Novamente, toda a arte da busca no espaço de estados não pode ser coberta aqui em profundidade.

Para resumir, vamos comparar novamente as duas abordagens mencionadas no exemplo do xadrez. O aprendizado de máquina de rede neural tentará treinar uma rede, poderíamos quase dizer apenas força bruta tentando muitos parâmetros diferentes para a rede, que dá uma olhada no tabuleiro de xadrez, que será codificado em números, e então, por algum tipo de mágica complexa que está realmente escondida de nós, de alguma forma, produz o movimento correto, bem, na prática, ele apenas pontua a posição, mas vamos negligenciar isso agora. Treinar essa rede levará muito tempo, dados e eletricidade, resultará em uma rede que escolherá bons movimentos sem que saibamos como realmente funciona, apenas sabemos que funciona, e a rede será apenas uma rede que filtra números de entrada em um número de saída. A abordagem tradicional de busca de estado, por outro lado, será um algoritmo feito à mão que verificará todos os movimentos possíveis até certa profundidade e, em seguida, retornará o movimento que ele descobriu que levará a uma posição que parece a melhor.

Aqui sabemos exatamente o que está acontecendo, temos um algoritmo simulando o cálculo do movimento humano, olhando para frente no jogo para bons movimentos, e o algoritmo funciona iterativamente, ou seja, ele tem que executar muitas etapas e playouts para realmente ver como o jogo evolui com diferentes movimentos. A busca de estado às vezes é combinada com redes neurais, bons mecanismos de xadrez ainda fazem a busca de estado tradicional, mas empregam uma rede neural para decidir o quão boa é cada posição. Dessa forma, obtemos o melhor dos dois mundos.