Aqui estão algumas diretrizes para criar soluções confiáveis de aprendizado de máquina sem cair em armadilhas éticas.

Leia nosso artigo sobre

.

Introdução

O uso do aprendizado de máquina como um meio de tomada de decisão tornou-se onipresente. Muitos dos resultados dos serviços que usamos todos os dias são o resultado de uma decisão tomada pelo aprendizado de máquina. Como consequência, estamos vendo uma redução gradual da intervenção humana em áreas que afetam todos os aspectos de nossa vida diária e onde qualquer falha no julgamento do modelo algorítmico pode ter implicações adversas. Portanto, é essencial definir diretrizes adequadas para criar soluções de aprendizado de máquina confiáveis e responsáveis, levando em consideração a ética como um pilar fundamental.

Nos últimos anos, a ética na aprendizagem de máquina teve um aumento significativo na pesquisa acadêmica, com grandes conferências, como a FACCT e AIES, bem como em grandes empresas de tecnologia que estão formando equipes de rápido crescimento para enfrentar os desafios éticos.

A ética em IA é um assunto amplo que abrange muitos tópicos, como privacidade, data governance, bem-estar social e ambiental, responsabilidade algorítmica etc. Neste artigo, vamos nos concentrar principalmente nos seguintes componentes da ética no aprendizado de máquina: justiça, explicabilidade e rastreabilidade. Primeiro, discutiremos o que está em jogo e por que é obrigatório prestar atenção à ética. Em seguida, exploraremos como estruturar e desenvolver seu projeto de aprendizado de máquina tendo a ética em mente e como acompanhar a ética depois de implantada na produção.

Por que devemos prestar atenção à ética

Com os algoritmos de aprendizado de máquina e o conjunto de abstrações e hipóteses subjacentes a eles se tornando cada vez mais complexos, tornou-se um desafio compreender e entender completamente todas as possíveis consequências de todo o sistema.
Houve vários exemplos reais de alto nível de algoritmos de aprendizado de máquina injustos que resultaram em resultados subótimos e discriminatórios. Entre eles, o conhecido exemplo do COMPAS. O COMPAS era um software comercial amplamente utilizado que mede o risco de uma pessoa voltar a cometer outro crime, que foi comparado ao julgamento humano normal em um estudo e, posteriormente, descobriu-se que era tendencioso em relação aos afro-americanos: O COMPAS tinha maior probabilidade de atribuir uma pontuação de risco mais alta aos infratores afro-americanos do que aos caucasianos com o mesmo perfil.

No campo da PNL, o gênero biais foi detectado nas primeiras versões do Google Translate, o que foi resolvido em 2018 e mais recentemente.

No campo da atribuição de crédito, a Goldman Sachs estava sendo investigada por usar um algoritmo de IA que supostamente discriminava women ao conceder limites de crédito maiores a homens do que women em seus cartões Apple.

No campo da saúde, um algoritmo de previsão de risco usado em mais de 200 milhões de pessoas nos EUA demonstrou preconceito racial.

Sem uma estrutura claramente definida sobre como analisar, identificar e atenuar vieses, os riscos de cair em armadilhas éticas podem ser bastante altos. Portanto, é cada vez mais importante definir diretrizes adequadas para criar modelos que produzam resultados apropriados e justos, especialmente em domínios que envolvem pessoas. A criação de uma IA confiável faz com que os usuários finais se sintam seguros ao usá-la e permite que as empresas exerçam mais controle sobre seu uso a fim de aumentar a eficiência e, ao mesmo tempo, evitar qualquer dano. Para que sua IA seja confiável, o senhor precisa começar a pensar em ética antes mesmo de processar o data e desenvolver algoritmos.

Como pensar em ética antes mesmo do início de seu projeto

A ética deve ser considerada desde o início de um novo projeto, principalmente na fase de definição do problema. O senhor deve ter em mente os usuários finais visados, bem como o objetivo da solução proposta, para estabelecer a análise correta e a estrutura de gerenciamento de riscos para identificar os danos diretos ou indiretos que podem ser induzidos pela solução. O senhor deve se perguntar: nessas condições, minha solução poderia levar a decisões que poderiam ser distorcidas em favor de um subgrupo específico de usuários finais?

Portanto, é fundamental criar KPIs para rastrear os métodos que realizam a eficácia de sua estratégia de gerenciamento de riscos. Uma estrutura robusta também poderia incorporar, quando possível, um mecanismo ético de redução de riscos.
Ao lidar com um assunto delicado que tem um alto potencial de risco, é necessário estender o tempo alocado para a fase de exploração e construção a fim de injetar uma análise de avaliação ética completa e atenuação de preconceitos estratégias.

O senhor também deve estabelecer mecanismos que facilitem o sistema de IA. auditabilidade e  reprodutibilidade . Um rastreamento lógico deve estar disponível para inspeção, de modo que qualquer problema possa ser revisado ou investigado mais a fundo. Isso é feito por meio da aplicação de um bom nível de rastreabilidade por meio de documentação, registro, rastreamento e controle de versão.

Cada fonte de data e transformação de data também deve ser documentada para que as escolhas feitas para processar o data sejam transparentes e rastreáveis. Isso permite identificar as etapas que podem ter injetado ou reforçado um viés.

Como incluir a ética ao desenvolver seu projeto data

Para incluir a ética no desenvolvimento de seu projeto data, é importante incluir pelo menos três componentes: justiça, explicabilidade e rastreabilidade.

Equidade

A primeira etapa na maioria dos projetos de aprendizado de máquina geralmente é a coleta do data. Seja passando pelo processo de coleta do data ou usando um conjunto de data existente, o conhecimento de como a coleta foi realizada é fundamental. Normalmente, não é viável incluir toda a população-alvo, de modo que os recursos e rótulos podem ser amostrados em um subconjunto, filtrados com base em alguns critérios ou agregados. Todas essas etapas podem introduzir um viés estatístico que pode ter consequências éticas.

Viés de representação

decorre da forma como definimos e coletamos amostras de uma população. Por exemplo, a falta de diversidade geográfica em conjuntos data, como o ImageNet, demonstrou um viés em relação aos países ocidentais. Como resultado da viés de amostragem, Se o senhor não tiver uma visão geral, as tendências estimadas para uma população podem não ser generalizadas para o data coletado de uma nova população.

Portanto, é necessário definir protocolos adequados de coleta de data e analisar a diversidade do data recebido e informar à equipe quaisquer lacunas ou riscos detectados. O senhor precisa coletar o data da forma mais objetiva possível. Por exemplo, garantindo, por meio de alguma análise estatística, que a amostra seja representativa da população ou do grupo que o senhor está estudando e, na medida do possível, combinando dados de várias fontes para garantir a diversidade do data.
É obrigatório documentar as descobertas e todo o processo de coleta do data.

Na verdade, há muitas fontes possíveis de preconceito que podem existir de várias formas, algumas das quais podem levar à injustiça em diferentes tarefas de aprendizado downstream.
Como o núcleo dos algoritmos de aprendizado de máquina supervisionado é o data de treinamento, os modelos podem aprender seu comportamento com o data, que pode sofrer com a inclusão de vieses históricos ou estatísticos não intencionais. Viés histórico podem se infiltrar no processo de geração do data, mesmo com uma amostragem e seleção de recursos perfeitas. A persistência desses vieses pode levar a uma discriminação não intencional contra determinados grupos ou indivíduos, o que pode exacerbar o preconceito e a marginalização.

Nem todas as fontes de viés estão enraizadas no data; o pipeline completo de aprendizado de máquina envolve uma série de escolhas e práticas ao longo do caminho, desde o pré-processamento do data até a implantação do modelo.
Não é fácil identificar desde o início se e como os problemas podem surgir. É necessária uma análise completa para identificar os problemas emergentes. Dependendo do caso de uso, do tipo de data e do objetivo da tarefa, serão aplicados métodos diferentes.
Nesta seção, exploraremos algumas técnicas para identificar e atenuar o viés ético por meio de um caso de uso ilustrativo. Primeiro, apresentaremos o problema, depois veremos como medir o viés e, por fim, usaremos algumas técnicas para atenuar o viés durante o pré-processamento, o processamento e o pós-processamento.

Declaração do problema

Digamos que o senhor esteja criando um algoritmo de pontuação no setor bancário para automatizar o targeting de clientes que se beneficiarão ou não de um negócio premium. O senhor recebe um conjunto de data histórico que contém muitos recursos em seu data significativo sobre seus clientes, bem como o alvo binário “elegível para um negócio premium”. Os elementos de PII (informações pessoais identificáveis) foram previamente removidos do dataset, de modo que não haverá nenhum problema de privacidade em jogo (nesse caso, o serviço de prevenção de perda de data do Google cloud é uma excelente ferramenta para realizar a tarefa de desidentificação de seu data sensível).
Esse caso de uso pode parecer um tanto fictício, mas o problema está próximo de um caso de uso real com o qual lidamos no passado em um setor diferente.

Medindo o viés

A primeira etapa da análise é explorar o data para identificar os recursos sensíveis, o valor privilegiado e o rótulo favorável.

Recursos sensíveis (ou às vezes chamado de atributos protegidos) são características que dividem uma população em grupos que deveriam ter paridade em termos de benefícios recebidos. Essas características podem ter um potencial discriminatório em relação a determinados subgrupos. Por exemplo: sexo, gênero, idade, situação familiar, classificação socioeconômica, estado civil etc. e qualquer proxy data derivado deles (por exemplo, a localização geográfica ou os valores das contas podem atuar como proxies para a classificação socioeconômica, pois, em algumas situações, observa-se que eles podem estar fortemente correlacionados) são características sensíveis.

A valor privilegiado de uma característica sensível denota um grupo que teve, historicamente, uma vantagem sistemática.

A rótulo favorável Durante a fase de preparação do data, etapas como dividir o data, subamostragem ou superamostragem, lidar com valores ausentes e outliers podem introduzir viés se não forem realizadas com cuidado. As proporções de valores ausentes ou discrepantes entre subgrupos em características sensíveis podem ser uma primeira etapa na identificação de viés. Algumas estratégias de imputação podem introduzir viés estatístico, por exemplo, imputar os valores ausentes da característica de idade do cliente pela sua mediana.

Em nosso exemplo de pontuação, desenhamos o gráfico de como o treinamento data é distribuído entre os gêneros em relação à meta “elegível para uma oferta premium”:

Podemos ver que a distribuição do alvo é desequilibrada em favor do gênero Masculino. Vamos supor que o valor do privilégio seja Masculino onde gênero é um recurso sensível e o rótulo favorável é “elegível para um acordo premium”. Além disso, isso poderia corresponder a um viés de representação no data. De fato, em um caso em que a equidade é respeitada, pode-se garantir que as distribuições no data sejam totalmente equilibradas ou correspondam às distribuições no data demográfico.

Nesse ponto, o senhor pode ficar tentado a simplesmente descartar os recursos sensíveis do seu dataset, mas foi demonstrado que a remoção de atributos sensíveis não é necessariamente suficiente para tornar seu modelo justo. O modelo poderia usar outros recursos que se correlacionam com o recurso sensível removido, reproduzindo vieses históricos. Para dar um exemplo, um recurso A poderia estar fortemente correlacionado à idade de um cliente, portanto, se o data for tendencioso em relação a uma determinada faixa etária (a tendência histórica poderia resultar em discriminação com base na idade na contratação, promoção etc.), essa tendência será codificada no recurso A e a remoção da idade de um cliente não aliviará o problema. Ao manter o recurso sensível no data, quando necessário, o senhor pode ter maior controle sobre as medições e a atenuação de preconceito e justiça.

Métricas de viés

Há várias definições de justiça e métricas de justiça. Podemos dividir a justiça em justiça individual e equidade do grupo. A justiça individual dá previsões semelhantes a indivíduos semelhantes, enquanto a justiça de grupo trata grupos diferentes de forma igual.

Para obter a justiça do grupo, queremos que a probabilidade de um resultado positivo seja a mesma, independentemente de a pessoa estar ou não protegida (por exemplo, o senhor pode ter uma visão mais ampla do que a do grupo), feminino) ou não.
Uma métrica de grupo simples é comparar a porcentagem de resultados favoráveis para os grupos privilegiados e não privilegiados (em nosso exemplo, o gênero Masculino que são “elegíveis para um acordo premium” em comparação com o gênero Feminino que são “qualificados para uma oferta premium”). O senhor pode calcular essa comparação como uma diferença entre as duas porcentagens, o que leva ao seguinte diferença de paridade estatística métrica (também chamada de paridade demográfica):

Para que não haja diferença em resultados favoráveis entre grupos privilegiados e não privilegiados, a diferença de paridade estatística deve ser igual a 0.
Sobre a questão da métrica de justiça individual, há a consistência que mede o grau de similaridade dos rótulos de indivíduos semelhantes usando um algoritmo de vizinho mais próximo:

Não vamos nos concentrar nesse assunto, mas o leitor interessado pode verificar o seguinte artigo.
O senhor pode usar a prática biblioteca AIF360 que permite que o senhor calcule muitas métricas de justiça.
Tudo o que o senhor precisa fazer é envolver o dataframe no PadrãoDataset. O AIF360 usa um PadrãoDataset que envolve um Pandas DataFrame com muitos atributos e métodos específicos para processar e medir vieses éticos. Em seguida, o usuário pode usar isso como uma entrada para o BinaryLabelDatasetMetric que calculará um conjunto de métricas úteis.

params_aif =
# Criar aif360 StandardDatasets
train_standard_dataset = PadrãoDataset(df=train_dataframe,
**params_aif)
privileged_groups = []
unprivileged_groups = []
trem_bldm = BinaryLabelDatasetMetric(train_standard_dataset,
unprivileged_groups=unprivileged_groups,
privileged_groups=privileged_groups)

Uma vez medido no treinamento data do nosso exemplo de pontuação, observamos uma diferença média de paridade estatística de -0,21, o que indica que o grupo privilegiado Masculino teve 21% mais resultados positivos no conjunto de treinamento data.

Mitigação de vieses

Os métodos que têm como alvo os vieses algorítmicos geralmente são divididos em três categorias:

  • Pré-processamento. As técnicas de pré-processamento atuam no data de treinamento e tentam transformá-lo de modo que a discriminação subjacente seja removida.

  • Em processamento. As técnicas de processamento atuam nos algoritmos de aprendizado para remover a discriminação durante o processo de treinamento do modelo, incorporando alterações na função objetiva ou impondo uma restrição.

  • Pós-processamento. Técnicas de pós-processamento que utilizam um modelo já treinado e transformam suas previsões de modo que elas satisfaçam as restrições implícitas na métrica de justiça selecionada. É particularmente útil no caso em que o algoritmo só pode tratar o modelo aprendido como uma caixa preta, sem qualquer capacidade de modificar o data de treinamento ou o algoritmo de aprendizado.

Usamos uma técnica de pré-processamento no data de treinamento para otimizar a diferença de paridade estatística. Aplicamos o Repesagem (mais detalhes neste artigo) que é implementado no AIF360 para ponderar os exemplos de forma diferente em cada combinação (grupo, rótulo) a fim de garantir a equidade antes da classificação.

RW = Reweighing(unprivileged_groups=unprivileged_groups,
                privileged_groups=privileged_groups)

reweighted_train = RW.fit_transform(train_standard_dataset)

O atributo instance weights (pesos da instância) foi alterado para reequilibrar o recurso sensível em relação ao alvo. Ao fazer isso, o Repesagem atenuou o viés de grupo no treinamento data: uma nova medida da diferença de paridade estatística é completamente reequilibrada de -0,21 para 0.

Há outros algoritmos de mitigação de viés de pré-processamento implementados no AIF360, como o DisparateImpactRemover que é uma técnica que edita os valores dos recursos para aumentar a equidade do grupo e, ao mesmo tempo, preservar a ordem de classificação dentro dos grupos (mais informações a seguir). artigo) ou LFR (Aprendizagem de representação justa), que é uma técnica de pré-processamento que encontra uma representação latente que codifica o data, mas obscurece as informações sobre os atributos protegidos (mais informações no seguinte artigo).

Em seguida, treinamos dois modelos de classificadores, um no data de treinamento original e o outro no data reponderado. Observamos que a reponderação teve apenas um impacto fraco no desempenho, perdendo 1% do Pontuação F1.

Também testamos um algoritmo de processamento interno em nosso caso de uso de exemplo: desmascaramento contraditório que melhorou significativamente as métricas de viés do grupo (a diferença de paridade estatística foi dividida por 2) com pouca deterioração no desempenho do modelo (cerca de 1% na pontuação F1).

Portanto, pode haver uma compensação entre as métricas de desempenho e de polarização. Aqui a deterioração é bem pequena, mas em algumas situações o comprometimento pode ser mais grave. Essas informações devem ser levadas ao conhecimento da equipe e das partes interessadas apropriadas, que podem tomar decisões sobre como lidar com esse problema.

Agora que temos modelos treinados, podemos explorar suas previsões e investigar o desequilíbrio em relação ao resultado favorável entre os gêneros. Há muitas ferramentas, como Ferramenta What-if ou Aequitas que permitem que o senhor examine o comportamento de modelos de aprendizado de máquina treinados e investigue o desempenho e a equidade do modelo em subgrupos.

Como ilustração, o senhor pode usar o Aequitas para gerar tabelas cruzadas e visualizações que apresentem várias métricas de viés e desempenho distribuídas entre os subgrupos. Por exemplo, podemos comparar rapidamente as taxas positivas verdadeiras dos classificadores que foram treinados no data original e no data reponderado. Vemos que essa taxa foi equilibrada e, portanto, permite maior equidade de gênero em relação ao resultado favorável do modelo de ser elegível para um negócio premium.

Como técnica de pós-processamento, interagimos com o limite de classificação. Um modelo de classificação geralmente nos fornece as probabilidades associadas à realização de cada classe como uma previsão. Essa probabilidade pode ser usada como está ou convertida em um valor binário.
Para identificar a classe correspondente às probabilidades obtidas, é necessário definir um limite de classificação (também chamado de limite de decisão). Qualquer valor acima desse limite corresponderá à categoria positiva “é elegível para um acordo premium” e vice-versa para valores abaixo desse limite.
Ao traçar a métrica de desempenho e a métrica de viés (aqui 1 - impacto díspar) em todos os limites de classificação, podemos definir o limite ideal. Isso nos ajuda a escolher o limite adequado para maximizar o desempenho e minimizar o viés.

Na figura à esquerda, vemos que, se empurrarmos o limite para a esquerda, diminuindo um pouco o desempenho, podemos melhorar a métrica de polarização.
Além disso, como esperado, observamos um claro aprimoramento da métrica de viés de grupo no modelo reponderado (figura à direita), que poderia ser melhorado ainda mais escolhendo outro limite de classificação, mas às custas do desempenho.

Explicabilidade

Outro pilar fundamental para criar modelos de aprendizado de máquina confiáveis é a explicabilidade. Explicabilidade é a capacidade de explicar os processos técnicos do sistema de IA e o raciocínio por trás das decisões ou previsões que o sistema de IA faz, podendo, portanto, quantificar a influência de cada recurso/atributo nas previsões. Usar modelos facilmente interpretáveis em vez de modelos de caixa preta, tanto quanto possível, é uma boa prática.

Há muitos métodos para obter a explicabilidade dos modelos. Esses métodos podem ser agrupados em duas categorias:

  • Explicabilidade intrínseca em que o próprio modelo fornece a importância ou os pesos dos recursos.

    Explicabilidade post-hoc em que pequenas alterações de entrada são aproveitadas para inferir a importância do recurso.

  • Em processamento. As técnicas de processamento atuam nos algoritmos de aprendizado para remover a discriminação durante o processo de treinamento do modelo, incorporando alterações na função objetiva ou impondo uma restrição.

Aqui, aplicaremos um famoso método post-hoc, o SHAP (SHapley Additive exPlanations); para obter mais informações, recomendamos que o senhor explore este recurso muito abrangente sobre o assuntoForma é uma biblioteca que implementa uma abordagem teórica de jogos para explicar o resultado de qualquer modelo de aprendizado de máquina.
Vamos observar o impacto do algoritmo Reweighing na explicabilidade do modelo:

Lembrete rápido sobre como ler os Shap's calor das abelhas parcelas:

  • Os recursos são classificados de cima para baixo, do mais importante para o menos importante.

  • A cor corresponde à amplitude dos valores do recurso. Quanto mais vermelha for a cor, menor será o valor e vice-versa para o azul.

  • O eixo horizontal corresponde à direção da influência do recurso na previsão do alvo. Por exemplo, em nosso exemplo de pontuação, os valores negativos terão o impacto de influenciar a previsão para a classe “não elegível para um acordo premium” e vice-versa para os valores positivos.

À esquerda, temos a capacidade de explicação do modelo original, onde observamos que, nesse caso, a variável gênero tem um poder preditivo muito forte e que o gênero Feminino tem um impacto que influencia a decisão em relação à meta “não elegível para uma oferta premium”, com uma grande diferença em relação ao gênero Masculino.

Podemos ver no gráfico à direita, nesse caso em que o modelo foi treinado no data reponderado, que a importância do recurso de gênero diminuiu bastante. Ele agora faz parte dos recursos menos importantes. Além disso, a influência da classe feminina vs. masculina na previsão do alvo é muito mais equilibrada (as cores estão próximas de 0 no valor de Shapley).

Rastreabilidade

Outro aspecto essencial no processo de criação de algoritmos de aprendizado de máquina confiáveis é a rastreabilidade dos resultados e a boa reprodutibilidade dos experimentos. Isso facilita a identificação de qual versão de um modelo foi colocada em produção para que possa ser auditada caso seu comportamento cause danos e não esteja mais em conformidade com os valores éticos da empresa.

Para isso, é preciso ser capaz de rastrear e registrar cada versão do modelo e seu treinamento associado data, hiperparâmetros e resultados. Várias ferramentas podem realizar essa tarefa: Mlflow é uma ótima opção que permite gerar rapidamente uma interface da Web que centraliza todas as execuções e, ao mesmo tempo, salva os artefatos no armazenamento de sua escolha. Cada versão do experimento pode ser rastreada com o hash do commit associado. Cada uma dessas versões conterá todos os elementos registrados pelo MLflow.

Aqui está um ferramenta que abrimos no Artefact e que permite que o senhor implemente um MLflow seguro em um projeto GCP com um único comando.

Também é uma boa prática criar um Folha de dados para cada modelo, o que corresponde a um cartão de identidade do modelo que resume vários elementos que rastreiam as etapas de pré-processamento, as métricas de desempenho, as métricas de viés etc.

Essas carteiras de identidade são entregues pelos cientistas do data às equipes de operação do modelo, permitindo que elas determinem se o modelo é adequado à sua situação. Para obter mais detalhes sobre a metodologia de criação de um FactSheet, recomendamos o seguinte artigo. O FactSheet também pode ser armazenado, em forma de tabela, por exemplo, no MLFlow junto com o modelo associado.

Como fazer o acompanhamento da ética depois de implantada

Depois que o modelo é implantado, o senhor precisa garantir que ele seja usado para a finalidade para a qual foi pensado, projetado e criado. O viés de implantação ocorre quando há uma incompatibilidade entre o problema que um modelo pretende resolver e a maneira como ele é realmente usado. Isso acontece com frequência quando um sistema é desenvolvido e avaliado como se fosse totalmente autônomo, quando na realidade ele faz parte de um sistema sociotécnico complexo governado por um grande número de tomadores de decisão.

O data de produção pode se desviar ao longo do tempo, o que pode resultar na degradação do desempenho do algoritmo, o que poderia injetar viés. O rastreamento da qualidade do data de produção e do desvio do data, monitorando as distribuições do novo data em comparação com o data usado para treinar os modelos, deve ser uma etapa no pipeline de produção para gerar os alertas adequados quando necessário e definir quando o retreinamento é obrigatório.

O pipeline de produção deve ser projetado de forma que haja uma maneira de desativar o modelo atual ou reverter para uma versão anterior.

Conclusão

Neste artigo, apresentamos algumas boas práticas e protocolos para orientá-lo na criação de pipelines de aprendizado de máquina que minimizem o risco de cair em armadilhas éticas.

Este artigo mal arranhou a superfície do vasto assunto que é a IA ética e apenas tocou em alguns dos ferramentas interessantes que estão sendo desenvolvidos e que já estão disponíveis.
Como vimos, a maneira mais lógica de abordar explicitamente os problemas de equidade é declarar um conjunto de características selecionadas como potencialmente discriminatórias e, em seguida, investigar por meio desse prisma o viés ético. Essa técnica simples, no entanto, tem uma falha, pois a discriminação pode ser o resultado de uma combinação de características que não são discriminatórias por si só. Além disso, em muitos casos, o senhor não terá acesso a nenhum recurso sensível (mais sobre esse assunto aqui).
A avaliação da equidade é uma tarefa complexa que depende da natureza do problema. Abordar um problema de pontuação com base em data tabular não será o mesmo que atenuação de preconceitos no processamento de linguagem natural.

Esperamos que o compartilhamento de nossa perspectiva e metodologias possa inspirá-lo em seus próprios projetos! Obrigado por ler, não hesite em seguir a tecnologia Artefact blog se o senhor quiser ser notificado quando nosso próximo artigo for lançado!