Olá!
Muito tem se falado sobre inteligência artificial ultimamente, mas a verdade é que apesar de ser um assunto muito pautado poucas pessoas sabem realmente o que é a inteligência artificial e como ela funciona.
Essa não é exatamente a minha especialidade (sou programador de sistemas embarcados lembram? rs), mas pra quem tem curiosidade sobre o tema este pode ser um bom post introdutório.
Começando pelo básico, o que é inteligência? Essa é uma pergunta com muitas resposta, mas uma definição da qual gosto diz que a inteligência se resume a capacidade de resolver problemas atípicos no menor tempo possível, o fato dos problemas serem atípicos é o que caracteriza a inteligência, afinal um problema típico pode ser catalogado, descrito e estudado e com isso podemos desenvolver uma metodologia que se resume a uma série de passos que levam a sua resolução! Já um problema atípico exige dinâmica e raciocínio para sua resolução.
Imagine algo do cotidiano, como por exemplo quando seu carro fura um pneu... Podemos descrever um algoritmo para lidar com essa situação tipo
1 2 3 4 5 6 7 8 9 10 11 12 13 | void irq_handler_pneu_furado(context * carro) { if (carro->estepe != 0) { trocar_pneu(); } else { chamar_guincho(); } } |
Pronto, problema resolvido, certo? Até que Sim! Só que na verdade NÃO.
Esse método resolve apenas 1 dos milhares de defeitos que um carro pode apresentar, então nós humanos temos que usar a nossa inteligência para prever cada um dos defeitos que podem ocorrer, estuda-los e descrever detalhadamente uma metodologia para lidar com cada um desses defeitos.
Basicamente é assim que as maquinas funcionam (e é por isso que aviões caem e navios afundam), elas são completamente burras e só sabem obedecer um conjunto de instruções e passos ordenado a elas previamente por um humano. Por mais que por vezes essas maquinas pareçam ter alguma inteligência, elas continuam sendo cegamente obedientes, só que nesses casos o humano que as programou considerou um numero maior de variáveis e por tanto existem mais situações com as quais elas podem lidar, mas ainda estão limitadas a um numero de passos descritos previamente por um humano. Basicamente tudo no nosso mundo funciona assim...
Nós Humanos somos inteligentes, porem também somos extremamente preguiçosos. As maquinas fazem todo o nosso trabalho pesado, nos restando apenas o trabalho de pensar, mas por que não ensinar as maquinas a pensar também? Teoricamente só precisamos entender como nosso cérebro trabalha, replicar esse mesmo mecanismo em uma maquina e pronto!
É nesse ponto que descobrimos que no momento a inteligência artificial é completamente impossível (mesmo quando consideramos a ciência de fronteira)... Nosso cérebro é uma grande e complexa estrutura baseada em células chamadas neurônios, os neurônios usam reagentes químicos para executar interações sinápticas entre sí, sendo que cada neurônio esta conectado a outros milhares de neurônios, numa complexa rede que trabalha simultaneamente e perfeitamente sincronizada... E o nosso cérebro tem 86 BILHÕES de neurônios.
Mesmo se desconsiderarmos o fato que não conhecemos completamente o funcionamento do cérebro humano, ainda chegamos a um beco sem saída quando o assunto é desenvolver uma maquina com poder computacional suficiente para simular algo tão complexo! Então reproduzir um cérebro humano esta completamente fora de cogitação (o cérebro de uma minhoca talvez seja até possível).
Se não podemos replicar a inteligência humana em uma maquina como podemos ensinar uma maquina a pensar??? A resposta é simples, nós não podemos!
Maaaaas, podemos trapacear... E isso é feito copiando (na cara de
pau mesmo) outro processo biológico que a natureza fez o favor de desenvolver
e aprimorar para a gente, a "Seleção Natural".
A Seleção
Natural nós diz que características que sejam benéficas para um individuo de
determinada espécie tendem a favorecer esse individuo lhe conferindo uma
vantagem competitiva sobre os demais e com isso ele tem mais chances de
sobreviver e se reproduzir, passando essa característica adiante para seus
descendentes, com o passar de gerações essa característica tende a se tornar
mais acentuada.
Parece complicado? Mas não é, eu explico... Quando vemos um inseto verdinho parecido com uma folha pensamos que esse inseto se adaptou e copiou o formato da folha para poder sobreviver, mas na verdade é o contrario, o que acontece é que todos os outros insetos que não se pareciam com folhas foram devorados por predadores!
Neste caso a seleção natural
favoreceu os insetos que tinham uma boa camuflagem, os que tinham camuflagem
ruim viraram jantar de pardal, com isso apenas os que conseguiam se esconder
no meio em que viviam foram sobrevivendo e perpetuando seus genes, como
pardais sempre precisam comer eles trataram de selecionar sempre os insetos
mais bem camuflados e o fizeram comendo os insetos menos camuflados, assim ao
longo do tempo os insetos que foram cada vez mais se parecendo com folhas
foram os que sobreviveram. Então podemos grosseiramente dizer que a natureza
"treinou" os insetos para se parecerem com folhas.
Partindo dessa premissa nós humanos copiamos esse conceito e desenvolvemos uma técnica baseados nisso para treinar nossas maquinas, apelidamos essa técnica carinhosamente de "Algoritmos Genéticos".
O conceitos é basicamente o mesmo da Seleção Natural, vamos evidenciar uma característica que nós desejamos e vamos deixar a seleção agir! Para aplicar isso na pratica usamos um pouco de lógica Fuzzy!
A lógica Fuzzy trabalha com valores não absolutos, ou seja, ao invés de nos limitarmos a um universo de respostas binário onde temos uma resposta que seja verdadeira ou falsa(zero ou um, ligado ou desligado, etc.) podemos ter valores intermediários quais quer dentro de um espaço quase infinito que vai do totalmente falso, até o totalmente verdadeiro.
Você deve estar pensando, "Tá, legal! Mas como aplicamos isso na inteligência artificial?" Simples, na seleção natural as características são inseridas aleatoriamente nos indivíduos e são "testadas" pelo meio, nós sabemos o resultado que queremos (trocar um pneu por exemplo), então vamos usar a logica fuzzy para adicionar a aleatoriedade na equação, ai basta adicionar o meio virtual que vai selecionar e descartar os resultados não satisfatórios.
Então ao invés de descrever um série de passos que diz exatamente o que
a maquina tem que fazer nós vamos criar um ambiente com diversas variáveis,
chutar atribuir um valor para esses parâmetros, rodar o
teste, selecionar os melhores resultados, esses resultado são isolados e em
cima deles geramos uma nova rodada de valores que serão aplicados a próxima
geração de indivíduos... E assim vamos refinando os valores até chegarmos na
solução ideal.
A vantagem desse método é que nós não precisamos especificar exatamente o que a maquina precisa fazer, apenas lhe damos os parâmetros e deixamos ela encontrar o melhor caminho sozinha.
Por exemplo, imagine que precisamos achar um valor Y entre 1 e 10.000 para chegar a um ponto X. Então criamos 10 indivíduos e atribuímos a cada um deles um valor proporcionalmente distribuído dentro do nosso espaço amostral(500, 1500, 2500, 3500, etc. por exemplo), rodamos a simulação e vemos qual desses indivíduos se aproximou mais de X, isolamos esse individuo e descartamos os outros 9, em cima desse individuo que teve o melhor desempenho nós preparamos a próxima geração.
Digamos que o individuo que tem um valor Y=7500 teve o melhor desempenho (se aproximou mais do valor ideal de X), então usamos isso de parâmetro para gerar a próxima geração de indivíduos reduzindo o nosso espaço amostral... Vamos gerar mais 10 indivíduos (7000,7100,7200,... etc.) e repetimos o teste, isolamos o individuo que mais se aproximou de X e reduzimos de novo o espaço amostral até chegar ao valor X desejado, se continuarmos nesse ritmo em mais duas gerações vamos descobrir o valor ideal de Y!
E é assim que a inteligência artificial funciona, obviamente que esse é um exemplo simplista e linear, usado apenas par provar o conceito. Para problemas reais o numero de parâmetros, indivíduos e de gerações podem ser gigantescos, por isso mesmo treinar sistemas de inteligência artificial mais complexos é uma tarefa extremamente difícil!
E também é por isso que é errado chamar isso de inteligência
artificial, afinal nós apenas pulamos uma etapa na automatização de processos,
deixamos as maquinas encontrarem os passos que levam a solução, mas elas ainda
são completamente incapazes de pensar, uma inteligência artificial nesses
moldes pode aprender a trocar o pneu de um carro da melhor maneira possível,
mas ela não saberia resolver nenhum outro problema além desse, ou seja, ela
ainda é incapaz de lidar com problemas atípicos! Para qualquer outra tarefa o
processo teria que ser completamente refeito do zero, já que pra cada processo
o ambiente/variáveis não é o mesmo.
Isso sem contar que o
resultado nem sempre é o desejado e desastres são tão comuns quanto acertos,
isso por que precisamos injetar esse sistema com o máximo de informação
possível e o resultado por vezes é um mistério... Por exemplo, vocês acham que
o Bil Gates esperava que o Bot de twitter dele virasse nazista?
Acham que a IBM esperava que o "Computador Super inteligente" deles (o Watson) começasse a xingar e usar palavrões quando tentaram ensinar a ele linguagem informal?
Ou acham que o partido comunista chinês esperava que o Chat Bot deles
os chamassem de corruptos e inúteis? (ok, dessa vez a inteligência artificial
até tinha razão, mas mesmo assim foi um resultado inesperado para seus
criadores).
Eu gostei! Acho que maquinas são iguais a crianças pequenas de vez em quando. Você ensina o que elas tem de fazer e elas fazem.
ResponderExcluirConcordo contigo em tudo:
ResponderExcluir"Uma maquina poderá resolver muitos problemas, não poderá criar nenhum sozinha".
O problema esta no CRIAR.
Quando conseguirmos isso, seremos realmente deuses.
Excelente sua explanação , como as maquinas reagem a comandos automatizados criados pelo homem, nunca serão capazes de forma natural entender como os problemas acontecem.
ResponderExcluir