Conteúdo


Dados inteligentes, Parte 2

Aplique o ciclo de vida de desenvolvimento de software aos dados que alimentam os aplicativos de IA

Comments

Conteúdos da série:

Esse conteúdo é a parte # de # na série: Dados inteligentes, Parte 2

Fique ligado em conteúdos adicionais dessa série.

Esse conteúdo é parte da série:Dados inteligentes, Parte 2

Fique ligado em conteúdos adicionais dessa série.

A inteligência artificial (IA) está em alta e seus interesses buscaram assuntos de encadeamento de avanço e retrocesso, redes neurais, aprendizado profundo, lógica bayesiana, armazenamento em cluster, sistemas de classificação e outros assuntos semelhantes. Essas são todas técnicas de IA, mas a mágica desconhecida em IA provém de fornecer um grau de respeito semelhante tanto à quantidade quanto à qualidade significativa dos dados que ela exige. Na verdade, a IA precisa de big data. No meu tutorial anterior "Dados inteligentes, Parte 1", ofereci uma introdução aprofundada sobre o papel dos dados em IA. Neste tutorial, vou explicar como aplicar a versão iterativa do ciclo de vida de desenvolvimento de software (SDLC) já conhecido aos dados com aplicativos de IA em mente. Embora haja diversos algoritmos que usam dados de diferentes maneiras, o aprendizado de máquina, de uma forma ou de outra, está promovendo a maior parte da explosão de IA atual. Por esse motivo e acompanhando o tutorial anterior, a maior parte das discussões e dos exemplos neste tutorial continua enfatizando o aprendizado de máquina.

O ciclo de vida de dados de IA

A melhor maneira de pensar na coleta, na preparação e no uso efetivo dos dados para IA é em paralelo com o ciclo de vida de desenvolvimento de software. No mesmo sentido que os recentes desenvolvimentos ágeis, eu prefiro uma abordagem bem definida mas iterativa para gerenciar dados para IA em vez de uma abordagem rígida de "cascatas".

Os desenvolvedores já devem estar familiarizados com o SDLC iterativo. Quando um projeto é iniciado, ele entra no quadrante de planejamento e requisitos, após o qual as iterações continuaram ao longo de todo o ciclo de vida do software, realmente colocando o "ciclo" no ciclo de vida. Existem variantes dessa ideia, incluindo as que tratam a implementação como uma saída do processo após os testes.

Iterative SDLC
Iterative SDLC

Obviamente, os desenvolvedores geralmente pensam nesses estágios em termos de especificação funcional, esquemas de bancos de dados, interface de código e diagramas de estrutura, código de programa e casos de teste. O design deve conter diagramas do fluxo de dados preferencialmente, mas com muita frequência parece que os dados são tratados somente de forma fragmentada no SDLC, o que é prejudicial para o desenvolvimento de IA.

Planejamento e requisitos

O mais importante que a equipe pode fazer, sobretudo, incorporar a necessidade de dados no planejamento juntamente com a definição geral do problema e o entendimento do ambiente de desenvolvimento. Se a equipe estiver usando uma das várias técnicas de IA que exigem exemplos de treinamento, ela deverá decidir que tipo de dados de treinamento precisam ser adquiridos. Isso depende de que tipo de dados está disponível e também da instrução do problema e dos requisitos, porque quanto mais semelhantes os dados de treinamento forem do espectro de resultados necessário para o software implementado, maior será a chance de sucesso.

Pode haver um tipo de loop de feedback em que a falta de disponibilidade de dados de treinamento adequados causa uma modificação nos requisitos da solução. Talvez os requisitos originais possam ser restaurados em iterações futuras. Digamos que, por exemplo, a equipe esteja desenvolvendo um programa identificador de flor iris, mas apenas esteja disponível inicialmente para o treinamento o famoso conjunto de dados iris (consulte Parte 1 para obter mais informações sobre isso). A equipe pode decidir que para as primeiras iterações, o objetivo seja reconhecer uma Iris setosa das outras duas espécies com um alto grau de confiança, mas aceitar uma confiança menor para distinguir a Iris virginica da Iris versicolor. À medida que técnicas melhores ou dados melhores ficam disponíveis nas iterações mais tardias, aumentam as expectativas de uma classificação confiável das três.

Análise e design

É necessário reunir as origens de dados brutos para IA durante a análise e o design do código. Ao começar a reunir esses dados você começará a entender como eles precisam ser vetados, aumentados, mantidos e avaliados. Determine os limites de formato e os parâmetros logo no início, como o tamanho mínimo e máximo das imagens ou a duração do áudio. No caso de algo como o conjunto de dados de iris, não se esqueça de controlar as unidades. Evite que as medições feitas em polegadas sejam misturadas com as medições feitas em centímetros. Lembre-se das palavras do seu antigo professor de matemática: tudo precisa ser anotado com unidades em todos os lugares, no próprio valor dos dados, como um tipo de dados abstratos ou talvez no esquema de dados. Em qualquer caso, pode ser interessante incluir algum tipo de validação ou conversão de unidade no código ou nas instruções para a revisão do especialista.

Uma coisa importante, mas geralmente ignorada, que deve ser incluída no design de dados é a procedência. De onde veio cada item de dados e em que nível é possível rastreá-lo? Qual foi sua cadeia de custódia entre pessoas ou sistemas antes de chegar ao seu aplicativo? Como exatamente seu aplicativo o alterou, usando algoritmos ou revisão de especialista? Se você encontrar anomalias, fontes de propensão ou outros problemas, a procedência poderá ser a chave para entender quais dados em um corpus agregado maior precisam ser corrigidos ou descartados. Isso também é importante para a melhoria contínua dos sistemas. À medida que seu aplicativo amadurece e você melhora seu entendimento de quais técnicas e processos são efetivos e quais são deficientes, passa ser possível incluir esse mesmo entendimento das origens de dados.

A Parte 1 contém uma explicação mais completa sobre dimensionalidade. Este estágio também é quando deve-se decidir ou reconsiderar a dimensionalidade dos dados para amostras de treinamento ou para ser trabalhada pelos algoritmos. Incluir mais detalhes aos dados prejudica o desempenho? Isso melhora os resultados ou prejudica sua confiabilidade, talvez devido à maldição da dimensionalidade? Geralmente é na análise e no design que se estabelece as técnicas para a redução da dimensionalidade.

Fluxo de dados

Os diagramas do fluxo de dados (DFDs) são artefatos de design importante, mas pouco utilizado. Eles foram descritos inicialmente em detalhes como uma parte fundamental do processo de engenharia de software no final da década de 70, no volume de grande influência Design estruturado, de Ed Yourdon e Larry Constantine. Esse trabalho foi baseado no trabalho anterior de David Martin de Gerald Estrin. Desenvolvedores em áreas como segurança online aprenderam a importância de um diagrama do fluxo de dados para um aplicativo bancário online que passa do navegador do usuário remoto por camadas cada vez mais seguras nos sistemas de reconciliação de funções administrativas de apoio e de livro razão do varejo. Um nível semelhante de descrição detalhada é uma parte importante para restringir o processo de preparação de dados de IA, o que também é um fator importante para o sucesso em campo.

Os DFDs para dados de IA tendem a ser baseados em técnicas comuns de aquisição e preparação de dados. A figura a seguir é uma versão abstrata de um DFD que precisa ser atualizado com as etapas mais específicas que você está executando, com base na natureza do espaço do seu problema, na natureza dos dados e nos algoritmos que você está empregando.

Abstract data flow diagram for AI
Abstract data flow diagram for AI

Um diagrama do fluxo de dados está relacionado a dados, não a processos. As caixas arrendondadas são processos, mas eles devem ser descritos em relação ao que fazem com os dados. As setas são as chaves que mostram as etapas pelas quais os dados passam no processo.O repositório final dos dados é o corpus do aplicativo. Embora os DFDs não estejam relacionados ao fluxo do processo, eu incluí o ícone de ciclo como um lembrete de que o processo deve ser contínuo, com novos dados sendo adquiridos e direcionados no corpus conforme a orientação da análise, como os resultados da pontuação de preenchimento.

Para ajudá-lo a especializar um DFD para seus próprios projetos, aqui está uma descrição de parte dos processos abstratos que estão incluídos neste exemplo.

  • A aquisição de dados é o processo de obter dados brutos que serão finalmente incorporados no corpus. Ela pode ocorrer por digitalização ou extração de dados — extração de força bruta de dados de alguma fonte na web — ou de algum outro local.
  • A preparação dos dados é o processo de converter os dados no formato necessário para a entrada, além de detectar e anotar os dados com suas características de metadados mecanicamente compreensíveis, incluindo a procedência. É aqui que você também tenta identificar itens de dados discretos e eliminar os duplicados.
  • A limpeza de dados é o processo de avaliar os itens de dados identificados e marcados, para corrigir ou remover os que estão corrompidos, incompletos ou imprecisos.
  • A pontuação e a incorporação são a aplicação de análise estatística para assegurar o funcionamento geral do corpus resultante. Cada item deve ser pontuado de acordo com sua aplicabilidade às necessidades da manutenção do corpus. O preenchimento inteiro dos itens a serem incluídos no corpus pode ser pontuado para assegurar que sua composição maximize a eficiência e a precisão dos algoritmos.

Um modelo popular para a etapa de pontuação é a análise exploratória de dados (EDA), que envolve várias combinações de visualizações de relacionamentos entre as diferentes variáveis no preenchimento. Realizar um trabalho completo de EDA é um fator importante para reduzir a dimensionalidade com sucesso.

Neste tutorial, eu vou passar para os estágios posteriores do SDLC, mas é muito importante absorver a disciplina de que a análise e a preparação de dados é uma atividade contínua em todos os estágios do SDLC para IA.

Implementação e teste

Uma das principais lições iniciais do SDLCs, por meio das várias metodologias que surgiram para o desenvolvimento de software, é colocar a implementação real em seu lugar. A maioria das pessoas entra na programação porque a considera uma atividade interessante. É entusiasmante instruir o computador passo a passo e depois vê-lo realizar algo especial. Também há um certo entusiasmo em buscar erros e descobrir melhorias para os algoritmos.

Esse fator psicológico sempre significa que os desenvolvedores acabam tendo uma tendência de querer passar para o estágio de implementação o mais rápido possível e de não enfatizar suficientemente o planejamento, a análise, o design, os testes estruturados, o gerenciamento de sistemas e outros aspectos que garantem o sucesso dos projetos. Esses outros estágios podem parecer cansativos em comparação com a codificação real, mas a experiência e a disciplina de engenharia mostram, por exemplo, que as causas comuns para problemas de projetos e para excessos de custo e tempo incluem falhas ao coordenar os requisitos com clareza e falta de atenção aos testes estruturados.

No diagrama do SDLC, é possível observar que a implementação é realmente a última pequena parte da análise e do design, e essa ênfase é transferida para os dados. A atenção aos dados durante o estágio de implementação é, em grande parte, uma questão de assegurar que o design seja acomodado na codificação dos algoritmos de forma confiável.

Isso tudo muda durante os testes. Em um aplicativo de IA, a etapa de testes é quando todo o trabalho realizado para reunir e preparar os dados pode ser visto como bem ou mal sucedido. Os dados de treinamento passam pelos algoritmos e são comparados com os resultados esperados. Os resultados esperados podem ter sido derivados no processo original de adquirir o corpus de treinamento ou talvez tenham sido derivados das iterações anteriores do SDLC. O arco de teste e avaliação é enfatizado principalmente ao desenvolver aplicativos de IA, e este ponto crítico também é o motivo pelo qual a IA geralmente exige mais iterações do SDLC do que outros casos para ficar pronta para produção.

Avaliação... e o ciclo continua

No centro do teste está uma comparação estruturada entre os resultados esperados e reais, uma avaliação mecânica para saber se o algoritmo processa as amostras de treinamento conforme o esperado. Esse é apenas o início do processo de assegurar-se de que IA produza resultados úteis confiáveis. A avaliação geralmente é supervisionada por especialistas que operam com dados não planejados de possíveis aplicativos reais. Se você estiver desenvolvendo um agente móvel, provavelmente haverá um conjunto de frases registradas de diversos falantes conhecidos dizendo algo como "qual é a população de Gana?" e será possível comparar a resposta da voz com a resposta esperada. A avaliação pode incluir o processo de fazer com que outros falantes façam a mesma pergunta ou uma variação, como "qual é a população da Nigéria?" e os especialistas que avaliam o resultado poderão ter uma noção melhor de como o agente poderá atuar em condições mais realistas.

O processo de avaliação geralmente inclui a implementação do aplicativo e seu uso por testadores beta e, em seguida, clientes. O feedback de todos esses dados informará as próximas fases de planejamento, que alimentará as próximas iterações. Talvez os relatórios de campo indiquem que o agente teve problemas para distinguir a pergunta "qual é a população de Gana?" da pergunta "qual é a população da Guiana?" com alguns falantes. Isso poderá se tornar uma amostra importante para treinamento e teste nas próximas iterações.

Conclusão

O primeiro tutorial explicou a importância dos dados para a criação de aplicativos cognitivos e de IA, como essa importância tem sido constante em toda a história da disciplina e de que forma ela está conectada aos sucessos e fracassos históricos de IA. Neste tutorial, eu expliquei como manipular dados de IA com a mesma disciplina aplicada ao código, em um processo paralelo ao código. Aplique o SDLC tradicional e iterativo para aproveitar ao máximo os benefícios oferecidos pela grande oferta de dados disponíveis atualmente, continuando vigilante em relação aos perigos.


Recursos para download


Temas relacionados


Comentários

Acesse ou registre-se para adicionar e acompanhar os comentários.

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=80
Zone=Cognitive computing
ArticleID=1056815
ArticleTitle=Dados inteligentes, Parte 2: Aplique o ciclo de vida de desenvolvimento de software aos dados que alimentam os aplicativos de IA
publish-date=01192018