Home > Gestão

Repensando o desenvolvimento de software na era da inteligência artificial

Mudança em direção aos dados empurra empresas à urgência de repensarem o software, as ferramentas e processos necessários

Maria Korolov, CIO (EUA)

12/09/2019 às 8h27

Foto: Shutterstock

À medida que as empresas buscam a inteligência artificial para impulsionar sua transformação digital, o desenvolvimento de software também mudará drasticamente.

É verdade que as organizações estão preparadas para o fato de que os desenvolvedores precisam acelerar os algoritmos de aprendizado de máquina e as redes neurais e estão ansiosas para ver como a IA automatizará muitas funções de desenvolvimento. Por outro lado, o que muitas empresas estão perdendo é que a natureza do próprio software está mudando.

Hoje, os aplicativos são determinísticos. Eles são construídos em torno de loops e diversas possibilidades de decisão. Se um aplicativo não funcionar corretamente, os desenvolvedores analisam o código e usam as ferramentas de depuração para rastrear o fluxo da lógica e, em seguida, reescrevem o código para corrigir esses bugs.

Mas não é assim que os aplicativos são desenvolvidos quando os sistemas são alimentados por IA e aprendizado de máquina. Sim, algumas empresas às vezes escrevem um novo código para os algoritmos, mas a maior parte do trabalho é feita em outro lugar, pois eles escolhem algoritmos padrão de bibliotecas de código aberto ou as opções disponíveis em suas plataformas de inteligência artificial.

Esses algoritmos são então transformados em sistemas de trabalho, selecionando os conjuntos de treinamento corretos e informando aos algoritmos quais pontos de dados - ou recursos - são os mais importantes.

Essa mudança em direção aos dados, como o coração do desenvolvimento de sistemas de software, está fazendo com que as empresas de ponta repensem não apenas como desenvolvem software, mas também os tipos de ferramentas e processos necessários para navegar com êxito nessa mudança de paradigma.

Apresentando o 'Software 2.0'

No Spark + AI Summit, no ano passado, o diretor de IA da Tesla, Andrej Karpathy, falou sobre como a empresa automobilística está em transição para essa nova maneira de desenvolver código, que ele chamou de Software 2.0.

Os algoritmos de otimização baseados em IA, como redes neurais, apontam para um problema, tentam várias soluções com base nos critérios de avaliação até encontrar a o melhor resultado possível. Assim, por exemplo, o sistema poderia procurar milhões de imagens para aprender a distinguir carros e pedestres.

"Estamos projetando menos e as coisas funcionam melhor", disse Karpathy.

Mas o que acontece quando essa abordagem não funciona? Por exemplo, quando os carros autônomos de Tesla tiveram problemas para descobrir se ligavam os limpadores de para-brisa enquanto dirigiam pelos túneis, a solução não era mergulhar nos algoritmos de aprendizado de máquina para descobrir a resposta.

Em vez disso, a empresa descobriu que seus dados de treinamento não tinham exemplos suficientes de carros passando por túneis. A solução foi retirar mais imagens dos carros em túneis e enviá-las aos humanos para classificação.

"Como estudante de doutorado, passei muito tempo com modelos e algoritmos e como você realmente treina essas redes", declarou Karpathy. "Mas na Tesla, passo a maior parte do tempo analisando os conjuntos de dados."

Mas gerenciar dados de treinamento não é tão simples quanto fazer com que os humanos olhem para um conjunto de imagens e as rotulem. Primeiro, os desenvolvedores precisam de um entendimento profundo dos próprios dados. Por exemplo, um sistema que visualiza imagens estáticas de carros que mudam de faixa dificilmente descobrirá que o pisca-alerta de um carro está acionado. Para resolver esse problema, é necessário voltar às imagens de treinamento e classificá-las de maneira diferente.

No entanto, alterar a maneira como as imagens são rotuladas significa que muitas imagens anteriormente categorizadas terão que ser classificadas novamente. Além disso, os humanos podem cometer erros ao rotular imagens, ou discordar entre si, ou as próprias imagens podem ser confusas. Isso significa que deve haver um processo de escalada de problemas e rastreamento deles.

Quando a Tesla iniciou esse trabalho, os processos e ferramentas para gerenciar essa nova abordagem para a criação de software não existiam.

"No software 1.0, temos IDEs para nos ajudar a escrever código", explicou Karpathy. "Mas agora, em vez de escrever o código explicitamente, estamos acumulando e gerenciando os conjuntos de dados, e eles são efetivamente o código. Quais são os IDEs para conjuntos de dados?"

Do código aos dados

Alex Spinelli, que chefiou a Alexa na Amazon antes de se tornar CTO da LivePerson no ano passado, viu essa transformação do processo de desenvolvimento em primeira mão.

Segundo o especialista, agora os desenvolvedores devem saber que há dados suficientes, com os exemplos certos, para garantir que um algoritmo tenha o combustível necessário para continuar trabalhando. "Na verdade, estamos criando alguns novos algoritmos para as indústrias que apoiamos."

Há mais de 20 anos a LivePerson ajuda empresas como a Home Depot, Adobe, HSBC e L'Oreal a se comunicar com seus clientes. Em 2016, a companhia iniciou uma mudança de paradigma ao passar para os chatbots com inteligência artificial.

Para desenvolver seus chatbots, a empresa começou com exemplos categorizados como perguntas de clientes. "Eu tenho 100 mil versões de maneiras como as pessoas dizem 'Quero pagar minha conta'", afirma Spinelli. "Esse é o começo."

Quando houver dados suficientes, o próximo desafio é descobrir quais atributos são importantes. Um sistema automatizado pode obter correlações, mas pode não ser capaz de determinar a causalidade, por exemplo. Só porque os relógios costumam tocar ao nascer do sol não significa que os alarmes façam o sol nascer.

"São tomadas decisões sobre como ponderar determinados atributos ou características dos dados", acrescenta. "Você precisa de especialistas que passam muito tempo pensando sobre esses problemas."

Hoje, dependendo do cliente, a LivePerson pode entender entre 65 a 90% das perguntas dos clientes, e a empresa está continuamente tentando melhorar esse percentual usando tecnologias de IA, além de contribuições humanas.

Viés é o novo bug

Quando os sistemas de inteligência artificial não funcionam, há três abordagens principais para resolver a questão.

Primeiro, o problema pode estar no próprio algoritmo. Mas isso não significa que os desenvolvedores precisam mergulhar no código. Frequentemente, a falha está na seleção do algoritmo errado para o trabalho. "Alguém tem que decidir que esse algoritmo é melhor que aquele", diz Spinelli. "Isso ainda é um desafio humano."

A seguir, há o ajuste do algoritmo. Quais recursos o algoritmo está analisando e qual é o peso de cada um? Em situações em que o algoritmo apresenta seus próprios recursos, isso pode ser extremamente complicado.

Um sistema que prevê se alguém tem um bom risco de crédito pode observar um número fixo de pontos de dados e seu processo de raciocínio pode ser extraído e analisado.

Mas um sistema que, digamos, identifique gatos em imagens, pode criar um processo completamente ininteligível para os seres humanos. Isso pode causar problemas de conformidade para empresas de serviços financeiros ou colocar a vida das pessoas em risco em aplicativos de assistência médica e carros autônomos.

Depois, há problemas causados ​​pelos próprios dados. "De onde você está coletando seus dados, de quais grupos são - tudo isso pode criar viés", explica Spinelli. "Pode ser um viés contra grupos étnicos ou sexo, ou apenas um viés que tem um resultado comercial negativo."

Descobrir se o problema está no algoritmo, no ajuste ou nos dados pode ser muito desafiador. "O mundo está em uma situação única no momento em que a tecnologia sai dos laboratórios de pesquisa e entra diretamente na produção", revela o especialista.

"Você vê muitas coisas vindas de cientistas que não têm muita experiência na execução de sistemas de missão crítica", e ainda existem poucos padrões e práticas recomendadas na área. "Eles estão evoluindo, mas é um grande problema. Não está maduro neste momento."

Tomemos, por exemplo, o fato de que a maioria dos algoritmos disponíveis no mercado não tem a capacidade de explicar por que uma decisão específica foi tomada.

A LivePerson usa os algoritmos de processamento de linguagem natural de código aberto Ernie, do Baidu, e Bert, do Google. "Eles têm recursos decentes de auditoria e rastreabilidade", afirma Spinelli. "Mas, no geral, é bastante raso."

Quando a LivePerson cria o seu próprio algortimo, esse tipo de funcionalidade é um requisito. "Criamos nossos algoritmos de maneira que haja rastreabilidade, para que você possa perguntar ao algoritmo: 'Por que você fez essa resposta?' e ele dirá: 'Aqui está o que eu vi, aqui está como eu o li e como o classifiquei'."

O controle para IA sobre dados

Encontrar e corrigir problemas nos sistemas de IA já é bastante difícil. Porém, correções e melhorias contínuasdo modelo resultam em mudanças frequentes no sistema.

Os processos tradicionais de desenvolvimento de software têm controle de versão para acompanhar quais linhas de código foram alteradas e quem as fez. Mas o que acontece quando as alterações não estão no código, mas nos dados ou no ajuste? Ou quando os sistemas possuem loops de feedback integrados para aprendizado contínuo?

"Você não pode alterar os dados de treinamento porque não possui resultados reproduzíveis", explica Ken Seier, arquiteto chefe de dados e IA da Insight, empresa de consultoria em tecnologia e integração de sistemas.

Para o especialista, as ferramentas tradicionais de DevOps ficam aquém. "Você precisa adicionar novas etapas ao pipeline para os dados."

As equipes de desenvolvimento que constroem uma nova instância de um modelo de IA precisam capturar instantaneamente os dados usados ​​e armazená-los em um repositório. "Em seguida, entre em um ambiente de teste onde eles o executariam em cenários conhecidos, incluindo cenários de auditoria e de conformidade, e em conjuntos de dados de teste para garantir que eles tenham um certo nível de precisão".

A maioria das empresas está construindo essas ferramentas por conta própria. Apesar disso, os principais fornecedores de plataformas de IA na nuvem estão
implementando muitas dessas funcionalidades.

Da mesma forma, processos automatizados para alterar a forma como os modelos são ajustados devem ser desenvolvidos e para testar vários algoritmos para ver qual funciona melhor em situações específicas.

Idealmente, se um algoritmo sair do previsto, um processo automatizado poderá treinar novamente o modelo para que tudo volte a funcionar novamente. Com o desenvolvimento de software tradicional, isso pode ser tão simples quanto reverter para uma versão de trabalho anterior. Mas com a IA isso pode não ser possível.

"O que acontece quando o software não funciona e eles não podem treiná-lo novamente?", questiona Seier. "Você consegue e depende de operadores humanos? Você tem um processo comercial que permita aos humanos tomar essas decisões? Com ​​carros autônomos, isso significa que eles desligarão o carro?"

Lidando com a deriva

Os dados de treinamento geralmente são ligados ao tempo. Quando as condições mudam, o modelo se torna menos eficaz. Para lidar com esse desvio, as empresas precisam testar continuamente seus modelos em relação a dados reais para garantir que o sistema siga em funcionamento.

"Se eles tiverem uma janela de 30 dias para treinar o modelo, então a cada duas semanas eles deveriam pegar uma nova janela de 30 dias e identificar se havia um problema", diz Seier.

Isso pode se complicar muito rapidamente quando o sistema de IA altera o comportamento que está observando.

Digamos, por exemplo, que um sistema de IA analise dados históricos para ver quando é mais provável que o equipamento da fábrica quebre. Se a fábrica usar as previsões para alterar o cronograma de reparo, as previsões não serão mais válidas - mas treinar novamente o modelo com novos dados causará mais um conjunto de problemas, pois as máquinas começarão a quebrar novamente sem a intervenção da IA.

"Um dos desafios dos carros autônomos é lidar com outros carros autônomos", observa Seier. "Eles são treinados em um ambiente com carros operados por humanos, e carros autônomos se comportam de maneira diferente."

Krishna Gade, cofundador e CEO da Fiddler Labs, empresa de IA, diz que gostaria de ver um ambiente de desenvolvimento integrado para IA e sistemas de aprendizado de máquina que tenha os dados como foco central.

"Precisamos de um IDE que permita fácil importação e exploração de dados", afirma Gade. "Os notebooks Jupyter são úteis, mas têm seus próprios problemas, incluindo a falta de ferramentas de versão e revisão".

À medida que mais modelos são colocados em produção, o gerenciamento de várias versões se torna importante. "O Git pode ser reutilizado para modelos. No entanto, não será escalável para grandes conjuntos de dados."

O desafio da segurança de dados

À medida que as empresas adotam práticas de desenvolvimento de software baseadas em IA, elas também enfrentam um novo conjunto de desafios de segurança para os quais muitos não estão preparados.

Por exemplo, quando os sistemas são criados por cientistas de dados em vez de engenheiros de software tradicionais, a questão da segurança pode ser pensada tardiamente. Os algoritmos de IA de código aberto e de terceiros podem ter seus próprios problemas, incluindo vulnerabilidades e falhas de segurança.

"É fundamental que os desenvolvedores usem o código mais recente e atualizado", diz Michael Clauser, chefe global de dados da Access Partnership, empresa global de políticas públicas que atende o setor de tecnologia.

"É uma aposta segura que as maiores empresas de Internet com muitos dados estão investindo em pequenas coisas de segurança cibernética em seu próprio
desenvolvimento e implantação de IA. Provavelmente não é o caso de empresas iniciantes que precisam de recursos mais interessados ​​em mostrar o que sua IA pode fazer e quais problemas ela pode resolver do que se preocupar com um hacker que um dia fará dela um problema."

Os algoritmos de IA também precisam interagir com os sistemas tradicionais, incluindo bancos de dados e interfaces de usuário. Erros são comuns, até mesmo quando especialistas em segurança estão envolvidos no processo de segurança.

Além disso, os sistemas de IA geralmente são criados nas novas plataformas de IA na nuvem. Os riscos de segurança aqui ainda não são bem conhecidos. Mas o grande desafio de segurança da IA ​​são os dados. Os sistemas de IA requerem acesso a dados operacionais, bem como dados de treinamento e dados de teste. As empresas geralmente esquecem de amarrar os dois últimos conjuntos. Além disso, os cientistas de dados preferem construir seus modelos de IA para usar dados de teste, em vez de trabalhar com dados criptografados ou tokenizados. Uma vez operacionalizados esses sistemas, a falta de criptografia se torna uma grande vulnerabilidade.

Uma empresa que atualmente lida com os riscos potenciais de segurança de seus sistemas de IA é a Box, fabricante de compartilhamento de arquivos online. A companhia está trabalhando no uso da IA ​​para extrair metadados para melhorar a pesquisa, classificação e outros recursos operacionais. No entanto, para construir os novos sistemas de IA, a Box está tomando cuidado para não ignorar seus níveis tradicionais de controles de segurança.

"Para qualquer oferta, tanto de IA como de outras, temos um processo de desenvolvimento seguro", diz Lakshmi Hanspal, CISO da empresa. "Está alinhado aos padrões de segurança ISO. Existem muitos pipelines dentro da Box, mas todos seguem um processo semelhante com a segurança projetada." As práticas da Box atualmente incluem criptografia, registro, monitoramento, autenticação e controles de acesso.

De acordo com David Linthicum, diretor de estratégia em nuvem da Deloitte & Touche, muitas empresas, no entanto, não incorporam segurança ao processo de desenvolvimento de IA. De fato, cerca de 75% das organizações resolvem lidar com as questões de segurança depois de alguma ocorrência. "E fazer isso depois do fato é como tentar trocar os pneus do caminhão quando o caminhão está descendo a rua", observa.

 

Junte-se a nós e receba nossas melhores histórias de tecnologia. Newsletter Newsletter por e-mail