;(function() { window.createMeasureObserver = (measureName) => { var markPrefix = `_uol-measure-${measureName}-${new Date().getTime()}`; performance.mark(`${markPrefix}-start`); return { end: function() { performance.mark(`${markPrefix}-end`); performance.measure(`uol-measure-${measureName}`, `${markPrefix}-start`, `${markPrefix}-end`); performance.clearMarks(`${markPrefix}-start`); performance.clearMarks(`${markPrefix}-end`); } } }; /** * Gerenciador de eventos */ window.gevent = { stack: [], RUN_ONCE: true, on: function(name, callback, once) { this.stack.push([name, callback, !!once]); }, emit: function(name, args) { for (var i = this.stack.length, item; i--;) { item = this.stack[i]; if (item[0] === name) { item[1](args); if (item[2]) { this.stack.splice(i, 1); } } } } }; var runningSearch = false; var hadAnEvent = true; var elementsToWatch = window.elementsToWatch = new Map(); var innerHeight = window.innerHeight; // timestamp da última rodada do requestAnimationFrame // É usado para limitar a procura por elementos visíveis. var lastAnimationTS = 0; // verifica se elemento está no viewport do usuário var isElementInViewport = function(el) { var rect = el.getBoundingClientRect(); var clientHeight = window.innerHeight || document.documentElement.clientHeight; // renderizando antes, evitando troca de conteúdo visível no chartbeat-related-content if(el.className.includes('related-content-front')) return true; // garante que usa ao mínimo 280px de margem para fazer o lazyload var margin = clientHeight + Math.max(280, clientHeight * 0.2); // se a base do componente está acima da altura da tela do usuário, está oculto if(rect.bottom < 0 && rect.bottom > margin * -1) { return false; } // se o topo do elemento está abaixo da altura da tela do usuário, está oculto if(rect.top > margin) { return false; } // se a posição do topo é negativa, verifica se a altura dele ainda // compensa o que já foi scrollado if(rect.top < 0 && rect.height + rect.top < 0) { return false; } return true; }; var asynxNextFreeTime = () => { return new Promise((resolve) => { if(window.requestIdleCallback) { window.requestIdleCallback(resolve, { timeout: 5000, }); } else { window.requestAnimationFrame(resolve); } }); }; var asyncValidateIfElIsInViewPort = function(promise, el) { return promise.then(() => { if(el) { if(isElementInViewport(el) == true) { const cb = elementsToWatch.get(el); // remove da lista para não ser disparado novamente elementsToWatch.delete(el); cb(); } } }).then(asynxNextFreeTime); }; // inicia o fluxo de procura de elementos procurados var look = function() { if(window.requestIdleCallback) { window.requestIdleCallback(findByVisibleElements, { timeout: 5000, }); } else { window.requestAnimationFrame(findByVisibleElements); } }; var findByVisibleElements = function(ts) { var elapsedSinceLast = ts - lastAnimationTS; // se não teve nenhum evento que possa alterar a página if(hadAnEvent == false) { return look(); } if(elementsToWatch.size == 0) { return look(); } if(runningSearch == true) { return look(); } // procura por elementos visíveis apenas 5x/seg if(elapsedSinceLast < 1000/5) { return look(); } // atualiza o último ts lastAnimationTS = ts; // reseta status de scroll para não entrar novamente aqui hadAnEvent = false; // indica que está rodando a procura por elementos no viewport runningSearch = true; const done = Array.from(elementsToWatch.keys()).reduce(asyncValidateIfElIsInViewPort, Promise.resolve()); // obtém todos os elementos que podem ter view contabilizados //elementsToWatch.forEach(function(cb, el) { // if(isElementInViewport(el) == true) { // // remove da lista para não ser disparado novamente // elementsToWatch.delete(el); // cb(el); // } //}); done.then(function() { runningSearch = false; }); // reinicia o fluxo de procura look(); }; /** * Quando o elemento `el` entrar no viewport (-20%), cb será disparado. */ window.lazyload = function(el, cb) { if(el.nodeType != Node.ELEMENT_NODE) { throw new Error("element parameter should be a Element Node"); } if(typeof cb !== 'function') { throw new Error("callback parameter should be a Function"); } elementsToWatch.set(el, cb); } var setEvent = function() { hadAnEvent = true; }; window.addEventListener('scroll', setEvent, { capture: true, ive: true }); window.addEventListener('click', setEvent, { ive: true }); window.addEventListener('resize', setEvent, { ive: true }); window.addEventListener('load', setEvent, { once: true, ive: true }); window.addEventListener('DOMContentLoaded', setEvent, { once: true, ive: true }); window.gevent.on('allJSLoadedAndCreated', setEvent, window.gevent.RUN_ONCE); // inicia a validação look(); })();
  • AssineUOL
Topo

Robôs já tomam decisões que deveriam ser do governo brasileiro, diz ONG

Getty Images
Imagem: Getty Images

Carlos Madeiro

Colaboração para Tilt

23/02/2021 15h20

Um levantamento inédito produzido pela ONG (organização não-governamental) Transparência Brasil mostra que a IA (inteligência artificial) já é usada em larga escala por órgão públicos no país. Ao mesmo tempo em que elas ajudam a otimizar processos, também interferem em tomadas de decisões —que deveriam ser dos humanos— e, em alguns casos, ameaçam a privacidade das pessoas.

O estudo catalogou 44 programas de IA em uso no país e mostrou que 64% deles produzem uma decisão de forma autônoma ou oferecem informações que servem de apoio para uma tomada de decisão. O problema é que esses "robôs" nem sempre são transparentes ou respeitam a privacidade dos dados dos cidadãos.

Um dos exemplos de uso de IA no poder público vem do judiciário, como Tilt mostrou em março de 2020: robôs criados pelos tribunais ajudam a realizar, em segundos, tarefas que um ser humano levaria dias para concluir.

Em muitos casos, o objetivo é simplificar dados para apoiar uma tomada de decisão da istração pública. Mas nem sempre é assim: a IA pode excluir a parte humana da história e colocar dados sigilosos em risco.

"Os chatbots para atendimento a cidadãos, por exemplo, podem excluir pessoas que não usem linguagem formal ao escrever, ou que não tenham domínio da tecnologia, e comprometer o o a direitos como a saúde", afirma Juliana Sakai, diretora de operações da Transparência Brasil.

Impacto na vida real

Para conseguir os dados do estudo, a Transparência Brasil fez um questionário, enviado a órgãos da istração pública direta e indireta, além de pedidos por meio da LAI (Lei de o à Informação) e buscas em bases que já são abertas ao público.

O questionário, elaborado em parceria com a CGU (Controladoria-Geral da União), o Ministério da Ciência, Tecnologia e Inovação e o Centro de Estudos sobre Tecnologias Web do NIC.br (Núcleo de Informação e Coordenação do Ponto BR), foi enviado em setembro de 2020 a 319 órgãos do executivo federal, além de órgãos do legislativo e judiciário.

Com base nos dados coletados, foram avaliados 6.195 endereços de sites governamentais, explica Manoel Galdino, diretor executivo da Transparência. "Hoje nós temos uma transparência muito baixa sobre como o Estado garante que ele não está violando nossos direitos. O objetivo é a gente chamar a atenção, ter esse mapeamento", diz.

Galdino explica que uma tomada de decisão pode sofrer impactos por conta da IA. E esses impactos podem ter consequências importantes para a população, que pode ser excluída ou discriminada, ou ter sua privacidade violada pela istração pública.

O estudo cita dois exemplos que nos ajudam a entender os riscos. Um deles é o PalasNet, da Polícia Federal, que usa um algoritmo de reconhecimento de imagem para combater abuso sexual infantil. "Obviamente é muito importante que a privacidade dessas crianças seja preservada. No momento em que esse algoritmo é implementado, precisamos ter garantia de que o número de pessoas que vai ter o a esse banco de dados seja o menor possível, e que os dados sejam preservados ao máximo", diz.

Outro exemplo citado é o Weka, uma ferramenta usada por uma universidade federal, a UFSM (Universidade Federal de Santa Maria), no Rio Grande do Sul, que tenta prever a possibilidade de estudantes do ensino superior desistirem do curso.

"E aí são vários dados dos estudantes que são utilizados para treinar a ferramenta. Só que nós precisamos ter cuidado de garantir que essa ferramenta não acabe discriminando grupos que, por razões de um racismo estrutural, de desigualdades sociais, possam ter uma taxa maior de evasão escolar, criando assim um ciclo vicioso de estigmatização, do tipo: 'não vamos conceder uma bolsa porque essa pessoa tem uma taxa muito alta para abandonar'", pontua.

O relatório da ONG traz recomendações para um uso responsável de ferramentas de IA pelo poder público, como utilização de bases de dados representativas (com participação paritária de negros e indígenas, por exemplo), além de tornar esses dados transparentes.

"Durante a coleta é importante verificar se os dados escolhidos para o conjunto de treinamento do modelo representam bem todos os grupos e populações que serão afetadas por ele. Ou, ainda, se contêm alguma discriminação na sua criação que pode vir a reproduzir e intensificar algum tratamento ou padrão discriminatório. E é preciso garantir o a informações públicas relativas aos algoritmos usados pelo setor público", completa Juliana Sakai.