E a vaca não foi para o brejo
Ao longo de minha vida profissional fui programador e analista de sistemas por 15 anos; iniciei em 1976 com apenas 18 anos. Atualmente ainda escrevo pequenas rotinas, algoritmos, pois adoro programar. Durante os anos como programador, além de eu ser protagonista de algumas, ouvi de colegas sobre diversas mensagens esdrúxulas que os programadores acrescentaram em seus programas e apareceram para os usuários em momentos inesperados. A melhor mensagem, até agora, foi a que meu amigo Werner Keske colocou em seu famoso sistema.
A mensagem, pasmem, era: “A vaca foi pro brejo” (1).
O programa não poderia chegar nessa situação e se chegou não há uma solução plausível. É algo completamente inesperado e inaceitável.
Me dá arrepios quando vejo caminhões sendo controlados por programas ou aviões controlados por pilotos automáticos.
Qualquer programador pensa duas vezes antes de confiar em algo assim. Imagine um piloto em apuros e o computador diz para ele: “A vaca foi pro brejo.”
Programas, máquinas triviais, devem ser muito bem testados (2). Atualmente existem mecanismos nos compiladores que permitem que determinadas exceções sejam detectadas a priori e tratadas de alguma forma mais esperta, mas ainda restam os casos em que não se pode continuar sem grandes efeitos colaterais indesejados.
Testar os programas tradicionais exaustivamente, com diversas variáveis e situações, é importante para que se force o programa a passar por todas as suas estruturas e comandos. Todas as situações possíveis devem ser verificadas e os resultados conferidos. Isso nos remete à causalidade, onde os efeitos, ou os resultados, num programa, podem ser todos conhecidos.
Para cada causa tem um efeito que pode ser prognosticado. Por outro lado, meu amigo Luiz Henrique Reis Pfau recordou de uma frase do famoso cientista holandês da computação, Dijkstra: “Program testing can at best show the presence of errors but never their absence.” (3)
[O teste de um programa pode, na melhor das hipóteses, mostrar a presença de erros, mas nunca sua ausência.]
O ROBÔ E EU
Recentemente, ao ter que me submeter a uma cirurgia para correção de uma hérnia inguinal, o Dr. Pedro Trauczynski me perguntou seu eu desejava fazer por laparoscopia ou robótica.
O Hospital Santa Isabel de Blumenau, pioneiro no estado de Santa Catarina, oferece a opção robótica.
O hospital realizou o primeiro procedimento em junho de 2019.
Em 2019 foram realizadas mais de 100 cirurgias utilizando esse método. (4)
No início fiquei me perguntando: e se durante a cirurgia aparecer uma mensagem para o médico afirmando “A vaca foi pro brejo”?
Ao final, após explicações detalhadas do Dr. Pedro, que mostrou vídeos e detalhes do procedimento, entendi as vantagens para o paciente e as facilidades para o médico; me decidi então pela alternativa robótica.
O Dr. Pedro faz questão de enfatizar que o robô utilizado para cirurgias não é autônomo.
Ele auxilia na precisão e acuracidade das ações do médico.
Ele, robô, obedece a comandos do médico. Em outras palavras, um médico cirurgião, auxiliado por um robô, ganha em acurácia e eficiência, dadas as imagens em 3D aumentadas e principalmente na precisão que o robô permite nas ações.
É muito bom trabalhar na área de tecnologia e verificar como a medicina se utiliza dela para melhorar os procedimentos médicos.
A utilização de inteligência artificial, machine learning (ML) [aprendizado de máquina] também está revolucionando algumas áreas da medicina. (5)
Alguns se perguntam como uma máquina aprende? Como funcionam esses novos algoritmos de aprendizado de máquina?
Há muitas formas para a criação de programas que aprendem, mas em geral são utilizadas três técnicas básicas: aprendizado sem supervisão, com supervisão e aprendizado por reforço. Todas se baseiam em dados históricos.
Não é objetivo detalhar essas modalidades de ML, mas a mais utilizada é a modalidade com supervisão.
Nos casos em que se procura uma doença específica, por exemplo, se utiliza o aprendizado de máquina com supervisão, em que são fornecidos dois conjuntos de dados para o computador: imagens e os resultados dos exames tanto de pacientes saudáveis quanto dos diagnosticados com a doença, realizados por agentes humanos, médicos. Assim o computador pode aprender a diagnosticar novos casos com bases em imagens e diagnósticos históricos.
Os médicos podem medir os acertos do algoritmo, fazendo seus diagnósticos e comparando com o resultado do programa.
Os parâmetros do programa são ajustados constantemente, pelos cientistas de dados, para melhorar a precisão. Em geral esses algoritmos conseguem chegar a uma precisão de 90% o que é bastante relevante e superior à média quando realizado por um humano.
Deve-se considerar que o computador vai aprender com dados históricos, diagnósticos feitos anteriormente por médicos, sendo assim, haverá vieses ligados às decisões humanas anteriores.
O computador “tende” a decidir como os humanos decidiram anteriormente.
Não se pode descartar erros, pois os computadores repetirão sem qualquer senso crítico.
Feitas as ressalvas anteriores, há que se considerar que no geral diagnósticos podem ser obtidos de forma mais rápida e com maior acuracidade, quando realizados por computadores, pois computadores não se cansam e não se estressam, além disso, eles podem extrair padrões de milhares de ocorrências, inacessíveis aos humanos.
Dados, ainda que incipientes para seres humanos analisarem, podem ter informações relevantes, identificadas por um computador, com padrões que determinem se o indivíduo já está no início de uma enfermidade que seria detectada somente após evidências mais significativas.
Diagnósticos precoces aumentam as chances de cura ou permitem tratamentos que prolonguem a vida dos pacientes.
Ao final só posso afirmar que, no meu caso, o robô se comportou muito bem.
A recuperação da cirurgia foi ótima.
Claro que, o mais importante de tudo, foi a equipe médica competente que soube se utilizar de uma ferramenta tecnológica genérica que permite realizar diversos tipos de cirurgia, inclusive a que se aplicava ao meu problema.
O computador não é somente hardware ou somente software.
Ele não é uma coisa e nem outra.
É algo diferente.
Quando um programa está sendo executado existe uma simbiose entre o hardware e o software. Na história se percebe uma coevolução entre o hardware e o software.
Quanto mais hardware, mais softwares complexos puderam ser desenvolvidos e softwares complexos exigiram o desenvolvimento de hardwares mais potentes em termos de velocidade e capacidade de armazenamento. Mas, o que torna o computador tão especial é justamente essa junção. Um mesmo hardware pode dar vida a muitos algoritmos diferentes e ele mesmo transmuta-se em algo que não era.
Um jovem vê um computador como divertimento, um médico como um auxiliar preciso, um administrador como uma ferramenta de gestão, um programador como uma forma de auferir renda e um matemático como uma grande, potente e rápida calculadora.
Pedro Domingos afirma que se voltássemos no tempo, no início do século 20, e disséssemos às pessoas que uma máquina seria inventada em breve e que resolveria problemas de todas as áreas do conhecimento, a mesma máquina para todos os problemas, ninguém acreditaria. Elas diriam que cada máquina só pode fazer uma única coisa: máquinas de costura não datilografam e máquinas de escrever não costuram. (6)
Parabéns ao Dr. Pedro Trauczynski, à direção do Hospital Santa Isabel, a todos os médicos, em especial àqueles que se dedicam à inovação, às enfermeiras e enfermeiros e toda a equipe da área administrativa e financeira, que juntos oferecem para Blumenau, e para Santa Catarina, um serviço de alta qualidade.
(1) No dia 30 de julho de 2017 estive no sítio do Werner Keske para comemorar seu aniversário. Lá encontrei muitos amigos da área de informática. O Luiz Henrique Reis Pfau, brilhante analista de sistemas, que também trabalhou no Cetil, contou de um técnico que tinha posto uma mensagem “E agora José?” Além disso, após a saída dele da empresa, outros programadores que precisaram alterar seus programas, encontraram nomes de variáveis como “BoquinhaLinda”, em homenagem a uma profissional, que também trabalhava no Cetil, que ele admirava.
(2) Ao perguntar ao Werner Keske, se eu poderia utilizar a mensagem do programa dele, “A vaca foi pro brejo”, como exemplo para um livro, ele lembrou-me da minha mensagem, “Estou em loop” e respondeu-me que sim, que eu poderia citá-lo e escreveu o seguinte no e-mail de resposta:
“De qualquer forma acho divertida a ideia de ter num programa a autoconsciência de que ele está em loop. Isso são os primórdios da inteligência artificial, os programas ficam com TOC, Transtorno Obsessivo e Compulsivo […] só são superiores a tudo isso os programadores que têm a habilidade de fazerem com que as máquinas consigam autodiagnosticar-se com TOC.” KESKE, Werner. A vaca foi pro brejo. [mensagem pessoal]. Mensagem recebida por em 27 de setembro de 2016.
(3) DIJKSTRA, Edsger Wybe In: RICHARDS, Hamilton. Edsger Wybe Dijkstra. Disponível em: <https://amturing.acm.org/award_winners/dijkstra_1053701.cfm>. Acesso em: nov. 2021.
(4) CIRURGIA ROBÓTICA. Disponível em:< http://www.santaisabel.com.br/especialidades/121/cirurgia-robotica>. Acesso em: nov. 2021.
(5) Na empresa Fácil (www.facil.com.br) utilizamos IA com muito sucesso na área de advocacia.
(6) DOMINGOS, Pedro. O algoritmo mestre; tradução: Aldir José Coelho Corrêa da Silva. São Paulo: Novatec, 2017, p. 57-58.
Artigo do autor publicado no Noticenter em 29/11/2021 e reproduzido aqui - <https://www.noticenter.com.br/n.php?ID=29207&T=e-a-vaca-nao-foi-para-o-brejo>