Robótica de IA com a plataforma de dados IRIS da InterSystems

Autor: Sergey Lukyanchikov, Engenheiro de vendas da InterSystems

Corrigindo a Terminologia


Não se espera que um robô seja imenso ou humanóide, ou mesmo material (em desacordo com a Wikipedia , embora este último suavize a definição inicial em um parágrafo e admita a forma virtual de um robô). Um robô é um automatizado, do ponto de vista algorítmico, um automatizado para execução autônoma (algorítmica) de tarefas concretas. Um detector de luz que aciona as luzes da rua à noite é um robô. Um software de e-mail que separa e-mails em "externo" e "interno" também é um robô.

A inteligência artificial (num sentido aplicado e restrito, a Wikipedia interpreta-a de maneira diferente novamente) é um algoritmo para extrair dependências dos dados. Ele não executará nenhuma tarefa por si só, pois seria necessário implementá-lo como processos analíticos concretos (dados de entrada, mais modelos, mais dados de saída, mais controle de processo). O processo analítico que atua como um "portador de inteligência artificial" pode ser iniciado por um ser humano ou por um robô. Pode ser parado por qualquer um dos dois também. E gerenciado por qualquer um deles também.

Interação com o meio ambiente


A inteligência artificial precisa de dados adequados para análise. Quando um analista começa a desenvolver um processo analítico, os dados para o modelo são preparados pelo próprio analista. Geralmente, ele cria um conjunto de dados com volume e recursos suficientes para serem usados ​​no treinamento e teste do modelo. Uma vez que a precisão (e em casos menos frequentes, a "estabilidade local" no tempo) do resultado obtido se torna satisfatória, um analista típico considera seu trabalho realizado. Ele está certo? Na realidade, o trabalho está apenas pela metade. Resta garantir uma "execução ininterrupta e eficiente" do processo analítico - e é aí que nosso analista pode ter dificuldades.

As ferramentas usadas para desenvolver mecanismos de inteligência artificial e aprendizado de máquina, exceto nos casos mais simples, não são adequadas para uma interação eficiente com o ambiente externo. Por exemplo, podemos (por um curto período de tempo) usar o Python para ler e transformar dados do sensor de um processo de produção. Mas o Python não será a ferramenta certa para o monitoramento geral da situação e para alternar o controle entre vários processos de produção, aumentando e diminuindo os recursos de computação correspondentes, analisando e tratando todos os tipos de "exceções" (por exemplo, indisponibilidade de uma fonte de dados, falha na infraestrutura, problemas de interação do usuário etc.). Para isso, precisaremos de uma plataforma de gerenciamento e integração de dados. E quanto mais carregado, mais variado será o nosso processo analítico, mais alto será o nível de nossas expectativas em relação à integração da plataforma e aos componentes "DBMS". Um analista criado em linguagens de script e ambientes de desenvolvimento tradicionais para criar modelos (incluindo utilitários como "notebooks") enfrentará a quase impossibilidade de garantir ao processo analítico uma implementação produtiva eficiente.

Adaptabilidade e adaptabilidade


A mutabilidade do ambiente se manifesta de diferentes maneiras. Em alguns casos, mudará a essência e a natureza das coisas gerenciadas pela inteligência artificial (por exemplo, entrada de uma empresa em novas áreas de negócios, requisitos impostos por reguladores nacionais e internacionais, evolução das preferências do cliente relevantes para a empresa, etc.). Nos outros casos - a assinatura de informações dos dados provenientes do ambiente externo se tornará diferente (por exemplo, novos equipamentos com novos sensores, canais de transmissão de dados com melhor desempenho, disponibilidade de novas tecnologias de "rotulagem" de dados, etc.).

Um processo analítico pode "se reinventar" à medida que a estrutura do ambiente externo muda? Vamos simplificar a pergunta: quão fácil é ajustar o processo analítico se a estrutura do ambiente externo mudar? Com base em nossa experiência, a resposta a seguir é clara e triste: nas implementações mais conhecidas (não por nós!), Será necessário pelo menos reescrever o processo analítico e, provavelmente, reescrever a IA que ele contém. Bem, reescrever de ponta a ponta pode não ser o veredicto final, mas fazer a programação para adicionar algo que reflita a nova realidade ou alterar a "parte da modelagem" pode ser realmente necessário. E isso pode significar uma sobrecarga proibitiva - especialmente se as mudanças no ambiente forem frequentes.

Agência: o limite da autonomia?


O leitor já deve ter percebido que seguimos na direção de uma realidade cada vez mais complexa proposta à inteligência artificial. Enquanto toma nota das possíveis "consequências do lado do instrumento". Na esperança de finalmente podermos responder aos desafios emergentes.

Estamos agora abordando a necessidade de equipar um processo analítico com o nível de autonomia, para que ele possa lidar não apenas com a mutabilidade do ambiente, mas também com a incerteza de seu estado. Nenhuma referência a uma natureza quântica do ambiente é pretendida aqui (discutiremos em uma de nossas publicações adicionais); simplesmente consideramos a probabilidade de um processo analítico encontrar o estado esperado no momento esperado no "volume" esperado. Por exemplo: o processo “pensou” que conseguiria concluir uma execução de treinamento do modelo antes da chegada de novos dados para aplicar o modelo, mas “falhou” em concluí-lo (por exemplo, por várias razões objetivas, a amostra de treinamento continha mais registros do que normalmente). Outro exemplo: a equipe de rotulagem adicionou um lote de nova impressora no processo, um modelo de vetorização foi treinado usando esse novo material, enquanto a rede neural ainda usa a vetorização anterior e está tratando como "ruído" algumas informações extremamente relevantes. Nossa experiência mostra que superar essas situações requer dividir o que antes era um único processo analítico em vários componentes autônomos e criar para cada agente resultante a sua "projeção em buffer" do ambiente. Vamos chamar essa ação (adeus, Wikipedia) de agente de um processo analítico. E vamos chamar de agência a qualidade adquirida por um processo analítico (ou melhor, por um sistema de processos analíticos) devido ao agente.

Uma tarefa para o robô


Neste ponto, tentaremos criar uma tarefa que precisaria de uma IA robotizada com todas as qualidades mencionadas acima. Não será necessário um longo caminho para chegar às idéias, especialmente devido à riqueza de casos e soluções muito interessantes para os casos publicados na Internet - simplesmente reutilizaremos um desses casos / soluções (para obter os dois tarefa e formulação da solução). O cenário que escolhemos é sobre a classificação de postagens (“tweets”) na rede social do Twitter, com base em seus sentimentos. Para treinar os modelos, temos amostras bastante grandes de tweets "rotulados" (por exemplo, com sentimento especificado), enquanto a classificação será realizada em tweets "sem rótulo" (por exemplo, sem sentimento especificado):

imagem
Figura 1 Formulação da tarefa de classificação de texto baseada em sentimentos (análise de sentimentos)

Uma abordagem para criar modelos matemáticos capazes de aprender com textos rotulados e classificar textos não rotulados com sentimentos desconhecidos é apresentada em um ótimo exemplo publicado na Web.

Os dados para o nosso cenário foram gentilmente disponibilizados na Web.

Com tudo o que precede em mãos, poderíamos começar a "montar um robô" - no entanto, preferimos complicar a tarefa clássica adicionando uma condição: dados rotulados e não rotulados são alimentados no processo analítico como arquivos de tamanho padrão como o processo "Consome" os arquivos já alimentados. Portanto, nosso robô precisará começar a operar com volumes mínimos de dados de treinamento e melhorar continuamente a precisão da classificação repetindo o treinamento do modelo em volumes de dados em crescimento gradual.

Para o workshop da InterSystems


Demonstraremos, tomando o cenário apenas formulado como exemplo, que o InterSystems IRIS e o ML Toolkit, um conjunto de extensões, podem robotizar a inteligência artificial. E alcance uma interação eficiente com o ambiente externo para os processos analíticos que criamos, mantendo-os adaptáveis, adaptáveis ​​e agentes (os "três A").

Vamos começar com a agência. Implementamos quatro processos de negócios na plataforma:

imagem
Figura 2 Configuração de um sistema de processos de negócios baseado em agente com um componente para interação com Python

  • GENERATOR - à medida que os arquivos gerados anteriormente são consumidos pelos outros processos, gera novos arquivos com dados de entrada (rotulados - tweets positivos e negativos - assim como tweets sem rótulo)
  • BUFFER - como os registros já armazenados em buffer são consumidos pelos outros processos, lê novos registros dos arquivos criados por GENERATOR e exclui os arquivos depois de ler os registros deles
  • ANALISADOR - consome registros do buffer não marcado e aplica a eles o RNN treinado (rede neural recorrente), transfere os registros "aplicados" com os respectivos valores de "probabilidade de serem positivos" adicionados a eles, ao buffer de monitoramento; consome registros de buffers rotulados (positivos e negativos) e treina a rede neural com base neles
  • MONITOR - consome registros processados ​​e transferidos para seu buffer pela ANALYZER, avalia as métricas de erro de classificação demonstradas pela rede neural após o último treinamento e aciona um novo treinamento da ANALYZER

Nosso sistema de processos baseado em agentes pode ser ilustrado da seguinte maneira:

imagem
Figura 3 Fluxos de dados no sistema baseado em agente

Todos os processos em nosso sistema estão funcionando independentemente um do outro, mas estão ouvindo os sinais um do outro. Por exemplo, um sinal para o processo GENERATOR começar a criar um novo arquivo com registros é a exclusão do arquivo anterior pelo processo BUFFER.

Agora vamos ver a adaptabilidade. A adaptabilidade do processo analítico em nosso exemplo é implementada através do "encapsulamento" da IA ​​como um componente independente da lógica do processo transportador e cujas principais funções - treinamento e previsão - são isoladas uma da outra:

imagem
Figura 4 Isolamento das principais funções da IA ​​em um processo analítico - treinamento e previsão usando modelos matemáticos

Como o fragmento acima mencionado do processo ANALYZER faz parte do "loop infinito" (que é acionado na inicialização do processo e funciona até o desligamento de todo o sistema baseado em agente), e como as funções de IA são executadas simultaneamente, o processo é capaz de adaptar o uso da IA ​​à situação: modelos de treinamento, se necessário, prevendo, com base na versão disponível dos modelos treinados, caso contrário. A necessidade de treinar os modelos é sinalizada pelo processo MONITOR adaptável que funciona independentemente do processo ANALYZER e aplica seus critérios para estimar a precisão dos modelos treinados pelo ANALYZER:

imagem
Figura 5 Reconhecimento do tipo de modelo e aplicação das respectivas métricas de precisão pelo processo MONITOR

Continuamos com adaptabilidade. Um processo analítico no InterSystems IRIS é um processo comercial que possui uma representação gráfica ou XML na forma de uma sequência de etapas. As etapas, por sua vez, podem ser sequências de outras etapas, loops, verificações de condições e outros controles de processo. As etapas podem executar código ou transmitir informações (também podem ser código) para tratamento por outros processos e sistemas externos.

Se houver necessidade de alterar um processo analítico, temos a possibilidade de fazer isso no editor gráfico ou no IDE. Alterar o processo analítico no editor gráfico permite adaptar a lógica do processo sem programar:

imagem
Figura 6 Processo ANALYZER no editor gráfico com o menu aberto para adicionar controles de processo

Finalmente, é a interação com o meio ambiente. No nosso caso, o elemento mais importante do ambiente é o conjunto de ferramentas matemáticas Python. Para interação com Python e R, as extensões funcionais correspondentes foram desenvolvidas - Python Gateway e R Gateway . Permitir uma interação confortável com um conjunto de ferramentas concreto é a principal funcionalidade. Já podíamos ver o componente para interação com o Python na configuração do nosso sistema baseado em agente. Demonstramos que os processos de negócios que contêm IA implementada usando a linguagem Python podem interagir com o Python.

O processo ANALYZER, por exemplo, carrega as funções de treinamento e previsão de modelos implementadas no InterSystems IRIS usando a linguagem Python, como é mostrado abaixo:

imagem
Figura 7 Função de treinamento do modelo implementada no processo ANALYZER no InterSystems IRIS usando Python

Cada uma das etapas deste processo é responsável por uma interação específica com o Python: uma transferência de dados de entrada do contexto IRIS da InterSystems para o contexto Python, uma transferência de código para execução no Python, um retorno dos dados de saída do contexto Python para o contexto IRIS da InterSystems .

O tipo de interação mais utilizado em nosso exemplo é a transferência de código para execução em Python:

imagem
Figura 8 Código Python implantado no processo ANALYZER no InterSystems IRIS é enviado para execução no Python

Em algumas interações, há um retorno dos dados de saída do contexto Python para o contexto IRIS da InterSystems:

imagem
Figura 9 Rastreio visual da sessão do processo ANALYZER com uma visualização da saída retornada pelo Python em uma das etapas do processo

Iniciando o robô


Lançando o robô aqui neste artigo? Por que não, aqui está a gravação do nosso webinar em que (além de outras histórias interessantes de IA relevantes para a robotização!) O exemplo discutido em nosso artigo foi demonstrado. O tempo do seminário on-line é sempre limitado, infelizmente, e ainda preferimos mostrar nosso trabalho da maneira mais ilustrativa possível - e, portanto, compartilhamos abaixo uma visão mais completa dos resultados produzidos (7 sessões de treinamento, incluindo o treinamento inicial, em vez de apenas 3 no webinar):

imagem
Figura 10 Robô atingindo uma AUC estável acima de 0,8 na previsão

Esses resultados estão alinhados com nossas expectativas intuitivas: à medida que o conjunto de dados de treinamento é preenchido com tweets positivos e negativos "rotulados", a precisão do nosso modelo de classificação melhora (isso é comprovado pelo aumento gradual dos valores da AUC mostrados na previsão).

Que conclusões podemos tirar no final do artigo:

• InterSystems IRIS é uma plataforma poderosa para robotização de processos que envolvem inteligência artificial

• A inteligência artificial pode ser implementada no ambiente externo (por exemplo, Python ou R com seus módulos contendo algoritmos prontos para uso) e na plataforma InterSystems IRIS (usando bibliotecas de funções nativas ou escrevendo algoritmos nas linguagens Python e R). O InterSystems IRIS assegura a interação com conjuntos de ferramentas de IA externos, permitindo combinar seus recursos com sua funcionalidade nativa

• O IRIS da InterSystems robotiza a IA aplicando “três A”: processos de negócios adaptáveis, adaptáveis ​​e de agente (ou processos analíticos)

• O InterSystems IRIS opera IA externa (Python, R) por meio de kits de interações especializadas: transferência / retorno de dados, transferência de código para execução, etc. Um processo analítico pode interagir com vários conjuntos de ferramentas matemáticas

• O InterSystems IRIS consolida em uma única plataforma os dados de modelagem de entrada e saída, mantém o histórico e o controle de versão dos cálculos

• Graças ao IRIS da InterSystems, a inteligência artificial pode ser usada como mecanismo analítico especializado ou incorporada em soluções OLTP e integração

Para aqueles que leram este artigo e se interessaram pelos recursos do InterSystems IRIS como uma plataforma para desenvolver e implantar mecanismos de aprendizado de máquina e inteligência artificial, propomos uma discussão mais aprofundada dos possíveis cenários relevantes para sua empresa e uma definição colaborativa dos próximos passos. O e-mail de contato da nossa equipe de especialistas em AI / ML é MLToolkit@intersystems.com .

Source: https://habr.com/ru/post/pt478822/


All Articles