Executando verificação de segurança...
3

Além dos transformers - Neuro Symbolic AI

OK, desde 2018 a palavras transformers vem cada vez mais aparecendo no cotidiano popular. Inteligencias com ChatGPT, Copilot ou mesmo Apple Intelligence. Mas como dizia o sábio.

Para quem só usa martelo, todos os problemas são pregos.

Acredito que quem está no Tabnews já assistiu o vídeo onde o nosso querido Michael Teló da programação fez uma série de robôs para produzirem vídeos automaticamente. E para isso ele utilizou do IBM-WATSON que para mim é a melhor inteligência artificial que temos até hoje e não estamos usando o modelo de transformer.


IBM-Watson é um conjunto de algoritmos e heurísticas de AI para diversas finalidades que utiliza um tipo de Rede Neural avançada conhecida como Rede Neuro-Simbólica que é um palavreado muito grande para o processo de usar probabilidade como backend e simbologismo como frontend.

Para começar a explicar isso, precisamos voltar para a linguagem mais amada por mim. Prolog que apesar de eu não usar tanto como linguagem própria, gosto do seu motor de inferência para resolver algumas questões.

Veja, com o simbologismo conseguimos adicionar lógica via regras como por exemplo.

O que é um avó? Ele é o pai do meu pai ou o pai da minha mãe. Então um avó é o pai dos meus parentes.

No Prolog, você começa definindo alguns fatos sobre a relação de parentesco:

mae(eliza, paulo).    % Eliza é mãe de Paulo
pai(joao, paulo).     % João é pai de Paulo
pai(gustavo, eliza).  % Gustavo é pai de Eliza
pai(jose, joao).      % José é pai de João

Depois, você define regras para estabelecer como um avô é relacionado a um neto. Aqui estão as regras para isso vamos usar o sistema de parentesco.

parentes(X, Y) :- pai(X, Y).   % X é pai de Y
parentes(X, Y) :- mae(X, Y).   % X é mãe de Y

E com isso podemos determinar uma regra avô para determinar quem é o avó.

avo(Z, Y) :- 
    parentes(X, Y),  % X é pai ou mãe de Y
    parentes(Z, X).  % Z é pai ou mãe de X

Resumidamente é o mesmo que dizer que:

Z é avô de Y se houver um X que é pai ou mãe de Y, e Z é pai ou mãe de X. Isso permite encontrar avôs através da relação de pais e filhos.

graph TD
Eliza -->|mãe| Paulo;
João -->|pai| Paulo;
Gustavo -->|pai| Eliza;
José -->|pai| João;

Só com algo simples vindo de uma linguagem de 1972 eu já consigo chegar a muita coisa como sistemas especialistas e sistemas de memória de conhecimento. Agora a AI neuro-simbólica é o mesmo que juntar isso com a "criatividade" em um modelo "vivo" que pode ser continuamente treinado.

Mas com uma Neuro-Simbólica, as abordagens se tornam virtualmente finitas. Basicamente tudo o que um computador pode fazer a IA neuro simbólica poderá fazer com algum nível de treino. Muito menos do que o convencional para gerar o modelo e realizar um fine-tuning.

Pode se tornar menos aleatória e reduzir altamente a quantidade de "alucinações" enquanto fica dezenas de vezes mais leve para computação tradicional. Sendo que um modelo mais simples seria o suficiente para dar o "start".

Com isso gostaria de terminar esse post, dizendo que o futuro não importa tanto se o passado não for condizente. Passamos mais de 70 anos estudando AI até chegar ao ponto de hoje e vamos passar mais tantos anos tentando melhora-la.

Então hoje em dia não é motivo para alarde, até porque vou repetir um milionésimo de vezes ISTO É UMA BOLHA, E BOLHAS ESTOURAM, no momento que o chatgpt, a openAI e softwares baseados em AI baterem sua lei de retornos decrescentes atingir seu limite, a bolha estoura e vamos continuar com nossas vidinhas de dev normalmente como fazemos.

O que for bom, a gente guarda na maleta, o que for ruim a gente joga fora ou busca novas soluções. Mas, a única certeza é que nem hoje e nem nunca uma tecnologia vai substituir um trabalhador do conhecimento.

Porque conhecimento é uma coisa que não pode ser automatizada.

Alan Turing em seu paper original sobre o computador já previu que teria coisas que o computador não seria capaz de fazer, e se vocês estão com a cabeça no lugar sabem que é o mesmo que dizer tem coisas que a AI não podem fazer.


Código completo em prolog para quem quiser testar um pouco

:- initialization(main).

mae(eliza, paulo). % eliza e mae de paulo

pai(joao, paulo). % joao e pai de paulo
pai(gustavo, eliza). %gustavo e pai de eliza
pai(jose, joao). %jose e pai de joao

parentes(X, Y) :- pai(X, Y).
parentes(X, Y) :- mae(X, Y).

avo(Z, Y) :- 
    parentes(X, Y),  % X é pai ou mãe de Y
    parentes(Z, X).  % Z é pai ou mãe de X
    
main :- 
    findall(Z, avo(Z, paulo), Lista), % Coleta todos os avôs de Paulo
    ( Lista \= [] -> 
        write(Lista), nl 
    ),
    !.
Carregando publicação patrocinada...