top of page

Programação convencional e Inteligência Artificial

Atualizado: 6 de out. de 2021

Para compreender o modo pelo qual programamos as máquinas é importante entender como é possível a comunicação com elas. As máquinas são sistemas eletroeletrônicos acionados com tensão elétrica, sendo assim, elas podem estar em dois estados, ligado e desligado. Por meio desses estados é possível criar uma linguagem de comunicação, por exemplo, para o estado ligado podemos atribuir o valor 1, e para o estado desligado podemos atribuir o valor 0. A partir disso, podemos gerar código usando sequências de zeros e uns. Por exemplo, tomando um conjunto de 8 lâmpadas dispostas linearmente, uma ao lado da outra, acendendo a segunda e a última lâmpada temos a letra A (01000001) caracterizada, o alfabeto inteiro pode ser descrito por esses códigos, também chamados de código binário. A diferença desse exemplo para os casos reais é que os circuitos ligados e desligados são transistores e/ou microcontroladores. Houve um tempo que para nos comunicarmos com uma máquina tínhamos que usar a linguagem delas, linguagem de máquina ou linguagem de baixo nível, 0 e 1 ou, ligado e desligado - imaginem nomear tudo o que nossa razão consegue conceber usando apenas 0 e 1 ou mão aberta e fechada. Depois, houve a necessidade de criar uma linguagem mais acessível a nós: linguagens de alto nível. Estas possuem mais símbolos, são mais complexas e próximas daquelas com as quais nos comunicamos. Dessa forma, também foram criados os tradutores (compiladores) que traduzem as linguagens de alto nível para a de baixo nível. Como podemos intuir, é inacreditável que as máquinas consigam fazer tudo que fazem usando apenas dois sinais. De modo análogo, é igualmente extraordinária a capacidade que o cérebro possui de processar dados e informações por impulsos elétricos, processos sinápticos. No caso das máquinas, é possível realizar tarefas e funções complexas com vocabulário limitado porque as máquinas modernas conseguem processar 10 quintilhões de dados em bilionésimos de segundos. Esse processamento é obtido por um computador pessoal (PC) básico, comum no mercado (64 bits de processamento e clock de 1 GHz). Existem outros fatores que limitam o desempenho dos processadores, mas foge do escopo dessa discussão -. Em suma, embora as máquinas tenham apenas dois sinais para se comunicar, a velocidade com que elas processam informações é tão grande que compensa a limitação do vocabulário.

Como fora discutido, se comunicar com as máquinas por meio de sua linguagem nativa é uma tarefa árdua. As linguagens de alto nível e os compiladores ajudaram a popularizar a programação, porque acrescentou a elas mais vocábulos. Embora essa linguagem esteja mais próxima da linguagem matemática que da linguagem verbal escrita/oral e/ou corporal com as quais nos comunicamos cotidianamente, ela é mais acessível e inteligível que a linguagem de máquina. Dentre os termos comumente utilizadas na linguagem de alto nível, podemos citar: incluir, se/senão, se/então, enquanto, para (for), imprimir, mudar, retornar, caso, refazer, principal etc. Para que as tarefas sejam executadas, é necessário que o computador realize as etapas que as compõem (algoritmo) em uma sequência lógica de ações, sem ambiguidade, subjetividade e/ou abstrações. É muito difícil representar ideias abstratas com vocabulários e contextos limitados. Um bom exemplo disso é traduzirmos com exatidão expressões, palavras ou situações que são próprias de uma língua e não existem em outra. No filme Amistad, que conta a história de uma insurreição em um navio espanhol que transportava pessoas de origem africana que seriam comercializadas como escravos. Após a insurreição, o navio chega à Costa dos Estados Unidos. O período em que se passa a história é o início das discussões que geraram a guerra da secção americana. O fato gera inúmeras disputas pela posse do navio e tripulação e o impasse de tornarem as pessoas livres e não mercadorias. Em meio à disputa judicial, Cinque, o responsável pela insurreição, escolhido como líder dos africanos, não consegue compreender que o julgamento tenha tantas etapas. Ele questiona o fato de ganhar em uma etapa, haver a possiblidade de se recorrer da sentença e criar mais julgamentos, mantendo-os em uma situação indefinida durante o trânsito em julgado. Para Cinque e seus companheiros não existe um tempo verbal que traduza a possibilidade, pois em cultura e língua, não há margem para situações indefinidas: ou é, ou não é; ou está livre, ou está condenado. Mesmo com um tradutor que o auxilia, não concebe a ideia da indefinição. Nesse caso, há uma limitação por existirem visões de mundo diferentes que são expressas cada uma em sua língua. Além disso, o resultado dessa indefinição poderia durar anos - o julgamento é o gato Schrödinger das relações sociais, lembrando que após o trânsito em julgado o juiz irá abrir a caixa -. Essa forma de programar o computador a fim de resolver um problema é que chamaremos de programação “tradicional”.

Na programação convencional, o código é o artefato primário do software, ou seja, é o conjunto de instruções que a máquina irá seguir para realizar uma tarefa. Na Inteligência Artificial (IA), o artefato primário é uma coleção de dados e o algoritmo/código é usado para encontrar padrões nesse conjunto de dados. Existe uma dimensão da nossa inteligência que é associar padrões e classificar esses padrões. Por exemplo: em uma foto, vê-se um fogão, geladeira, mesa, cadeiras, pia etc. Podemos classificar essa imagem, a chamaremos de cozinha. Em programação convencional seria impossível fazer um algoritmo que lê a forma como os pixels (conjunto de pontos que compõem uma imagem) se distribuem em uma imagem de forma a atribuí-la uma característica, classificação ou mesmo uma representação matemática. Apesar de existirem lógicas e/ou equações para representar objetos, podem ser muito complexas e, talvez, impossíveis de serem representadas pelos comandos já citados. Embora não percebamos, nosso vocabulário está carregado de padrões, de tal modo que, quando nos comunicamos, as palavras podem estar associadas a sons, imagens, contextos, ideias. Imagine que para nos comunicar dependamos apenas de dois gestos ou sinais gráficos, mão fechada e mão aberta, sim e não. Será que conseguiríamos criar todas as ideias que temos hoje com apenas dois sinais gráficos ou gestos?

Pensando na programação convencional, não é possível criar um software para reconhecer imagens. Todavia, é possível treinar/ensinar uma máquina para realizar essa função. Esse aprendizado é semelhante ao modo como os humanos aprendem a reconhecer objetos. Para ensinar uma máquina a reconhecer um cachorro, precisamos pegar várias imagens de cachorros e dizer para a máquina: isso é um cachorro. A máquina armazenará essas imagens em um banco de dados que consultará sempre que precisar reconhecer esse animal. Ao exigir que a máquina apresente uma imagem de cachorro, o programador poderá atribuir valor ao feedback da máquina, indicando se a imagem apresentada corresponde ou não ao animal. Dessa forma, a máquina irá excluir e incluir imagens no banco de dados automaticamente. Ainda é possível que ela busque por si mesma imagens de cachorros em bancos de dados robustos, como os que existem na internet, comparando-as a imagens de cachorro com aquelas contidas em seu banco de dados. Se ela encontrar imagens com padrões que diferem dos que possui, ela irá inserir essa nova informação se a divergência for aceitável. Se a máquina tiver acesso a uma foto que tem metade de um cachorro, irá descartá-la. Para reconhecer um cachorro a partir de partes dele, teremos que treiná-la para essa finalidade. Embora não saibamos, provavelmente já tenhamos ajudado a treinar algumas IA, em alguns aplicativos de comunicação, ao finalizarmos uma ação, é-nos pedido um feedback, devemos informar se o serviço estava bom ou ruim. Será que o feedback é apenas uma pesquisa de satisfação, ou estamos treinando a máquina de algum modo? O que ocorre é que durante a transmissão, a potência do sinal da rede pode oscilar, nesse sentido, o software irá ajustar a qualidade de imagem e áudio a fim de entregar o melhor serviço mediante aquelas limitações. O Google Maps, ao final de uma etapa, pede um feedback, então, a IA irá usar essa informação para se aperfeiçoar. Além disso, num GPS tradicional, digitamos um dado de entrada, um endereço, e ele nos fornecerá a rota. Existe um banco de dados de rotas que está armazenada no GPS e escolheremos uma delas para chegarmos ao objetivo. A comunicação realizada por satélite irá nos informar em que ponto da trajetória nos encontramos. No Maps, a rota pode ser revisada em tempo real e os dados de entrada são atualizados automaticamente. Dependendo do tráfego, o aplicativo poderá até nos oferecer rotas alternativas, também pode interagir com os usuários para aperfeiçoar o serviço.

Em resumo, o algoritmo convencional recebe uma informação (entrada) que será processada por uma lógica/código e fornecerá um resultado (saída). Em oposição a isso, um algoritmo de aprendizado de máquina, entradas e saídas pré-definidas são fornecidas ao software, isto é, as perguntas e as respectivas respostas são fornecidas ao software e ele encontrará uma lógica/padrão que as relacionem. O interessante que a lógica desenvolvida pelo software é inacessível ao programador, o modo com que a IA processa essa informação semelhante a uma caixa preta. A partir desse padrão, novas perguntas/problemas poderão ser respondidas/resolvidos. Outra diferença fundamental entre a IA e o software convencional é que o software nunca muda, realiza a mesma função indefinidamente a menos que os humanos os atualizem.

A Inteligência Artificial demanda que uma grande quantidade de dados seja processada e analisada, por essa razão, na maioria das vezes, é necessário que a máquina funcione de maneira descentralizada. Podemos ter um aplicativo cujo funcionamento exija um banco de dados maior que o armazenamento do próprio aparelho, sendo assim, é necessário que pela rede, o aplicativo acesse um banco de dados externo. Esse banco de dados também é conhecido como nuvem ou cloud e desempenha uma função determinante para que a IA seja possível. O processamento de informação também pode ser descentralizado e realizado por um supercomputador.

Essa tecnologia traz em seu bojo uma infinidade de possibilidade de uso: nas indústrias de fármacos, de cosméticos, de materiais, cinematográfica, de saúde etc. Todavia, as mudanças sociais que delas podem ou serão geradas são igualmente preocupantes. Com as redes sociais é possível fazer um banco de dados individualizado de potenciais consumidores: por meio das fotos que as redes e aplicativos nos pedem permissão para ter acesso, é possível saber nossas opções de cinema, música, lazer, culinária, esportes, orientação política, sexual etc. Dessa forma, essas plataformas conseguem nos vender de modo individualizado por anunciantes. O mesmo produto pode ser anunciado de modo diferente para cada perfil psicológico do cliente, permitirá a criação de propaganda individualizada. Além disso, esse produto só será anunciado para os consumidores suscetíveis a consumi-lo. Com as deepfakes de imagem e voz, ficará quase impossível detectar uma fake news. Sem contar que nossa concepção da realidade e da arte, será totalmente revisada. Recentemente, um grupo coreano recriou um IA do Freddie Mercury cantando afinadíssimo em diferentes idiomas. Adicionalmente, as IA poderão criar e disseminar discursos xenofóbicos, raciais e misóginos de um modo mais “eficiente” do que geralmente ocorrem. Por essa razão, devemos estar atentos e pautar o quanto antes uma discussão séria sobre ética na inteligência artificial.

Para finalizar, deixarei uma pergunta para reflexão, já que a inteligência artificial apresenta infinitas possibilidades: a inteligência artificial necessita ser regulamentada?


Discussões interessantes sobre IA:



Fernando Modesto Borges de Oliveira

Posts recentes

Ver tudo

1 Comment


Muito interessante Fernando! Rico conteúdo!

Like
bottom of page