Conteúdo


Dados inteligentes, Parte 1

Preste atenção aos dados para aproveitar ao máximo a inteligência artificial, o aprendizado de máquina e a computação cognitiva

Comments

Conteúdos da série:

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

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

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

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

Ao pensar em inteligência artificial (IA), o que vem à mente? Provavelmente, uma variedade de categorias de técnicas, como sistemas especialistas baseados em regras, aprendizado de máquina e processamento de linguagem natural. Se você tiver conhecimento suficiente para aprofundar-se um pouco mais, provavelmente pensará em encadeamento de avanço e retrocesso, redes neurais, lógica bayesiana, armazenamento em cluster e outros sistemas classificadores. Se isso tudo for novo para você, recomendo a leitura do tutorial "Um guia para iniciantes sobre inteligência artificial, aprendizado de máquina e computação cognitiva", de M. Tim Jones, antes de retornar para continuar com este tutorial.

Se a ênfase do seu conceito de IA está dentro do que eu já mencionei, você não está sozinho. A maioria das pessoas, desde amadores em computador até desenvolvedores qualificados, pensam nos algoritmos e nos mecanismos ao pensarem em IA. Com certeza isso é muito importante, mas não considera um fator crucial que separa os projetos de IA de sucesso e os sem sucesso: os dados. IA requer dados, geralmente uma grande quantidade de dados, e o ideal é que esses dados sejam de alta qualidade. Um dos motivos pelos quais IA começou a ficar mais conhecida e que a está levando à era da computação cognitiva é que a web facilita muito a localização de dados em grande quantidade.

Isso não surpreende quando consideramos que as técnicas de IA surgiram como maneiras de converter modos de percepção humana em processos de computador. Pense na quantidade de dados que uma criança recebe ao desenvolver suas percepções. Quantos objetos elas precisam ver primeiro para que consigam compreender com segurança todos os ambientes que visualizam. Quantas elocuções elas precisam ouvir para que consigam falar. Quantos textos elas precisam observar para que consigam ler. Em quantos estudos e com quantas lições, exemplos e testes de reforço elas precisam trabalhar para que se tornem especialistas em um assunto. Esse vasto campo de informações que os humanos absorvem ao longo do tempo é fundamental para nossa própria inteligência, e isso também vale para a inteligência artificial.

Quase tudo que admiramos sobre a inteligência humana se resume ao reconhecimento de padrões, uma procura entre possíveis percepções para determinar qual delas corresponde melhor aos estímulos em questão. Tudo se resume à capacidade baseada em neurônios de executar análises estatísticas complicadas em estágios rapidamente. Uma boa perspectiva é lembrar que não existe nenhuma linha divisória especial entre os métodos estatísticos e IA. IA é apenas uma maneira de aplicar aquilo que o homem consegue descobrir por sua própria natureza, ou seja, otimizações inteligentes adaptadas na evolução humana para aplicar métodos estatísticos ao reconhecimento de padrões.

Nos primórdios da computação, as expectativas sobre o que os computadores poderiam fazer eram altas, e os pioneiros em IA como Alan Turing, John von Neumann e John McCarthy concentraram-se em como criar os programas que poderiam levar à IA. Eles tiveram excelentes ideias e muitas delas ainda são as bases da IA atual, mas eles descobriram rapidamente que as grandes promessas de que uma IA poderosa seria fácil de atingir eram exageradas. Isso causou sérios problemas para a credibilidade da pesquisa deles e foi estabelecido um padrão de repetição, no qual alguém inventa um novo conjunto de técnicas promissoras e, quando ele não funciona tão bem como o esperado, ocorre um períodos de inatividade de ceticismo de IA. Para evitar esse problema em seu próprio trabalho, é importante ter um bom conhecimento sobre o papel dos dados em IA. Este tutorial explica isso.

Limitações históricas

Olhando para trás podemos entender que um dos motivos para as dificuldades encontradas pelos pioneiros de IA era a dificuldade de inserir grandes quantidades de dados em seus algorítimos inteligentes. A memória de acesso aleatório (RAM) do computador foi chamada de "núcleo" por um bom tempo e, às vezes, ainda é porque ela foi originada como núcleos magnetizados de anéis de metal conectados por circuitos. Isso exigia uma engenharia elaborada e, mesmo após a revolução dos chips semicondutores, a RAM continuou sendo um luxo. Foi somente há cerca de 30 anos que Bill Gates fez sua declaração de que "640 K de memória seria suficiente para qualquer pessoa", ultrapassada agora que muitos de nós esperam que o computador venha com, no mínimo, 8 GB, ou seja, mais de 13 milhões de vezes o que Bill Gates declarou.

A pequena disponibilidade da RAM significava inicialmente que a maior parte do trabalho de IA precisava ocorrer em fatias reduzidas de informações que eram recombinadas em respostas mais amplas. Esse tipo de abordagem não era eficiente. O próximo problema era como armazenar grandes quantidades de dados que representavam coisas como o corpus de treinamento de aprendizado de máquina. Os pioneiros de IA tinham que lidar com sistemas muito limitados como placas perfuradas e, até mesmo com o surgimento das unidades magnéticas, o armazenamento sempre teve um custo altíssimo, até recentemente. As imagens a seguir mostram a tendência dos custos de memória e armazenamento físico ao longo das décadas.

Trend of cost reduction for memory over decades
Trend of cost reduction for memory over decades
Trend of cost reduction for hard storage over decades
Trend of cost reduction for hard storage over decades

O sucesso e a grande escala da web somente foram possíveis depois que os custos de RAM e de armazenamento durável atingiram níveis muito baixos, que antes eram impensáveis. Com isso, as pessoas e instituições podem digitalizar enormes quantidades de dados que representam atividades humanas e, graças à tendência de abertura da disponibilidade de dados, esses recursos estão disponíveis para que os desenvolvedores cheguem a um grau que torna a IA cada vez mais prática.

Começando com perceptrons

Um dos primeiros algorítimos de aprendizado de máquina foi o perceptron, um sistema para implementar classificadores binários. Um classificador binário é uma função que toma uma entrada e determina se ela é ou não é membro de uma classe. Exemplos incluem uma função que toma um conjunto de características de um objeto e determina se ele é um barco ou que toma uma análise espectral de um arquivo de áudio e determina se é o som de um violão. Essas respostas ("barco", "não barco", "violão" e "não violão") da classificação são chamadas de rótulos.

O primeiro perceptron foi desenvolvido para reconhecer imagens e foi implementado inteiramente em hardware. Ele foi treinado sendo exposto a um conjunto de imagens de treinamento, em que cada imagem tinha um resultado esperado, ou seja, o rótulo. Era possível alimentá-lo com algumas imagens e seus rótulos, que é um processo conhecido como aprendizado supervisionado.

Também existem técnicas de aprendizado de máquina nas quais os rótulos não são fornecidos no conjunto de treinamento e o algoritmo precisa usar técnicas estatísticas sofisticadas para identificar clusters que possam indicar os rótulos resultantes. Isso é conhecido como treinamento não supervisionado e é um tópico mais avançado. As considerações dos dados são semelhantes em ambos os casos, portanto, para simplificar, a discussão sobre aprendizado de máquina neste tutorial concentra-se em aprendizado supervisionado. Na verdade, a maior parte da discussão neste tutorial usa aprendizado de máquina supervisionado como exemplo, mas considerações mais amplas são semelhantes para outros algoritmos de IA.

Aqui está o ponto crucial sobre os perceptrons: todas essas imagens no conjunto de treinamento são dados. Talvez você não pense nelas imediatamente como dados porque elas foram gerenciadas originalmente em formato analógico. Por exemplo, as imagens podem ser uma pilha de impressões de fotografia de coisas a serem classificadas como barcos ou não barcos, anotadas cuidadosamente com os rótulos de perceptron esperados. Esse processo pode não ter utilizado RAM ou armazenamento em disco no momento por motivo de praticidade da situação, mas trata-se de dados.

Aprendizado de máquina moderno e dados de treinamento

Atualmente, a RAM e o armazenamento ficaram baratos e, além disso, há vários bilhões de imagens na web que podem ser usadas como um conjunto de treinamento para uma rede neural visualmente perceptiva. A baixa do custo de dados de grande volume levou a um aumento da disponibilidade desses dados e a maioria dos aplicativos de IA usam dados obtidos da web em algum tipo de formato.

O truque é entender que, se você adquirir um bilhão de JPGs de barcos e de itens aleatórios que não sejam barcos, você não conseguirá um conjunto de treinamento adequado. Controle e qualidade são importantes. É necessário limpar as imagens desnecessárias? É necessário mudar o zoom ou melhorar a resolução? Se várias imagens que não sejam barcos forem alimentadas na rede neural anotadas como se fossem barcos, a rede neural resultante será um classificador mais fraco do que poderia ser.

Ter o algoritmo certo é importante para as redes neurais, mas preparar um conjunto de treinamento é ainda mais importante e, em vários aspectos, mais difícil. É possível solicitar que um grupo de especialistas confiáveis e altamente treinados examine os bilhões de JPGs e rotule-os para o treinamento, mas isso seria obviamente caro e demorado. Esse processo poderia ser feito por colaboração coletiva, com pessoas muito menos qualificadas classificando as imagens de alguma forma, resultando em um maior volume de dados de treinamento a um custo mais baixo, mas a qualidade seria duvidosa. O resultado poderia ser uma proporção muito maior de não barcos anotados como barcos.

É possível usar um algoritmo de IA com um bom nível de confiança para preparar o corpus de treinamento para outro programa. Por exemplo, se você confia que a rede neural A é boa em classificar barcos, é possível executar a coleção bruta de imagens nessa rede e usar suas classificações como anotações para transformá-las em um conjunto de treinamento adequado para a rede neural B. Isso poderia trazer uma boa combinação de volume e qualidade. Os principais problemas aqui são o problema de autoinicialização e a função de feed-forward de erro.

O problema de autoinicialização ocorre porque as redes neurais tendem a ser adaptadas a um determinado propósito. Um bom classificador de aviões não pode ser usado para desenvolver um conjunto de treinamento para um bom classificador de barcos, portanto, sempre é necessário preparar novos corpus do zero.

O problema de feed-forward é que a rede neural A pode não ser tão boa quanto você acredita que ela seja para classificar barcos. Talvez seus pontos fracos estejam ocultos no alto volume de trabalho que ela é capaz de executar. Nesse caso, ela poderia transmitir esses pontos fracos para a rede neural B. Esse feed-forward de erro é, na verdade, um dos maiores problemas na aplicação de IA. Em um sentido mais amplo, esse problema pode se manifestar sempre que vários sistemas automatizados trabalham em algum tipo de coordenação e os pontos fracos de percepção geralmente são ampliados. Como vou discutir mais adiante, esses pontos fracos poderia causar sérios custos sociais e econômicos.

O conjunto de dados da flor iris

O reconhecimento diretamente das imagens é um tipo de aprendizado de máquina, mas é mais comum encontrar usos práticos de aprendizado de máquina nos quais as entradas são descrições numéricas dos recursos. Em vez de ter um algoritmo trabalhando diretamente nos pixels de uma imagem de rosto para identificar uma pessoa, ele poderia trabalhar em um conjunto de vetores de números representando características como o tamanho e a cor dos olhos, do nariz, da boca e do contorno do rosto.

Em 1935, o botânico Edgar Anderson assumiu um estudo de campo e publicou o documento "A iris da Península de Gaspé". Neste documento constavam 150 observações mensuradas de características de amostras da flor iris de três espécies diferentes: iris setosa, iris virginica e iris versicolor. Especificamente o comprimento e a largura das sépalas e pétalas. Em 1936, o estatístico e biólogo Ronald Fisher usou o conjunto de dados do Anderson para ilustrar técnicas de classificador estatístico que mais tarde resultariam em aprendizado de máquina de computador.

iris setosa, iris virginica, and iris versicolor
iris setosa, iris virginica, and iris versicolor

O conjunto de dados da flor iris tornou-se um ícone no reduto de IA e é usado frequentemente como um conjunto de treinamento para apresentar o aprendizado de máquina a novos desenvolvedores. Ele oferece suporte para aprendizado supervisionado porque o Anderson incluiu a espécie iris (o rótulo) com as medidas da característica (as amostras).

O conjunto de dados iris é famoso não apenas devido ao seu papel histórico no início do aprendizado de máquina, mas também devido às dificuldades dos problemas que ele começou a ilustrar. Por exemplo, a iris setosa é separável de forma linear das outras duas espécies, mas as outras duas estão em cluster, portanto, a separação linear não é possível. Esse é um detalhe técnico, mas que levou a um entendimento muito importante sobre as limitações dos diferentes tipos de classificadores. Os perceptrons são classificadores exclusivamente lineares, portanto, funcionam para alguns aspectos do conjunto de dados iris, mas não para outros.

iris data plot
iris data plot

Muitas melhorias na tecnologia de aprendizado de máquina foram possibilitadas pela presença desses dados de amostra cientificamente sólidos e estatisticamente compreensíveis. Por exemplo, foi descoberto que a inclusão de várias camadas de redes neurais solucionava muitas das limitações encontradas na aplicação de percepções, mesmo usando conjuntos de treinamento de alta qualidade como os dados da iris. Apenas alguns de computação são tão sensíveis ao cuidado e ao feed quanto o aprendizado de máquina, e esse fato continua de modo que os especialistas atuais precisam desses dados de alta qualidade para aproveitar ao máximo suas máquinas.

Das iris ao globo ocular

As redes neurais e os conjuntos de dados que as treinam ficaram definitivamente mais sofisticados desde a era do Perceptron, mas um dos grandes motivos para o domínio cada vez maior da tecnologia de IA é que mais pessoas estão canalizando a atividade de seus neurônios reais pela Internet.

Sempre que você faz uma pesquisa na web, sempre que você faz um post ou uma interação em uma mídia social, até mesmo quando você clica em uma parte de um site e não em outra, você está contribuindo com dados ativos sobre seus hábitos, interesses e preferências para os algoritmos. A maioria desses algoritmos não está no alto escalão da sofisticação de IA — modelos estatísticos simples como os métodos bayesianos são muito populares entre essas interações on-line de mineração para os mercados, — mas eles não precisam estar. A experiência mostra que quanto maior a quantidade de dados confiáveis que os algoritmos podem acessar, menor é a sofisticação necessária.

Estabelecer o contexto das ações é uma parte fundamental para estabelecer o valor dos dados que alimentam esses algoritmos. O fato de que uma pessoa estava em um site de moda quando clicou em um determinado anúncio enquanto outra pessoa estava em um site de esporte torna-se um sinal incorporado no corpus. Essa aplicação de contexto é importante, embora de maneiras diferentes, ao considerar outros tipos de dados que alimentam IA. Por exemplo, se você pudesse incluir informações sobre a localização geográfica de uma flor iris em suas medidas de pétala e sépala, provavelmente seria possível treinar um classificador ainda mais preciso.

No entanto, há limites para isso. Se você fornecer muitos detalhes por item de dados, cada um sendo tecnicamente chamado de dimensão, será possível cair na chamada "maldição da dimensionalidade". Esse é um termo genérico que cobre vários problemas, mas a ideia comum é que quando há muitas dimensões, exemplos que deveriam ser semelhantes podem se tornar tão separados no espaço em que o algoritmo está procurando que ele nunca consegue organizá-los efetivamente em clusters. Uma consequência disso é somada à questão de que à medida que você inclui dimensões, o número de exemplos de treinamento necessário aumenta exponencialmente.

Uma etapa comum na preparação de dados para IA é reduzir o número de dimensões no espaço de procura buscando um tubo de distribuição, que é um padrão matemático em um subconjunto de dimensões em que o armazenamento em cluster ocorre com mais facilidade. A técnica mais comum para fazer isso é chamada de Análise de Componentes Principais (PCA).

Reduction of dimensionality from 1024 (image pixels) to 2 (rotation and scale)
Reduction of dimensionality from 1024 (image pixels) to 2 (rotation and scale)

Do lado esquerdo há imagens da letra A para reconhecimento visual. Se cada imagem tiver 32 por 32 pixels e estiver exclusivamente em preto e branco, ela será representada nativamente como um vetor de 1024, que é matematicamente um espaço dimensional de 1024. Obviamente, como pessoa, ao olhar para isso, você percebe imediatamente que se trata da mesma imagem girada e dimensionada. Seria possível tomar o grau de rotação e a escala como duas dimensões separadas e resultar em uma redução de dimensionalidade de 1024 para 2, como é ilustrado do lado direito. O que você consegue fazer em sua mente é uma redução de dimensionalidade dos detalhes completos pixel a pixel para duas variáveis intrínsecas de rotação e escala.

Obviamente, esse é um exemplo muito simplificado e na prática a redução de dimensionalidade pode ser bem complicada, mas trata-se tanto de sofisticação matemática quanto de um entendimento profundo dos dados em si.

Macacos na máquina de escrever

Uma das formas em que mais podemos entender o contexto, seja intuitivamente ou em ciência e tecnologia, é na linguagem natural. Ter um computador que entenda linguagem, gere linguagem e até mesmo execute tradução de linguagem sempre foi um dos principais objetivos de IA. Na verdade, o melhor e mais conhecido teste do sucesso da IA, o Teste de Turing, é aprovado quando o computador consegue ter uma conversa convincente com uma pessoa (ou seja, entender a linguagem e gerar linguagem em resposta).

Na maior parte da história do processamento de linguagem natural, essa ramificação relevante da IA, a abordagem concentrou-se nos algoritmos, nos sistemas de programação de gramática e no gerenciamento de vocabulário, tudo com pouco sucesso. Novamente, mais recentemente, à medida que enormes quantidades de dados sobre linguagem humana e até mesmo fala em áudio passaram a ficar disponíveis online, as técnicas foram alteradas para absorver esses dados em massa, e o sucesso foi garantido. Todos vimos a rapidez com que os robôs de bate-papo melhoraram, assim como as traduções por máquina e os agentes móveis em nossos telefones. Esses itens são treinados usando um vasto corpus de dados de texto e fala, anotados com o máximo de contexto possível.

Apenas para dar uma ideia disso, uma das curiosidades mais antigas em NLP é o uso de matrizes de correlação de letra estatística para gerar o que parece um texto natural. A ideia é extraída da antiga ideia filosófica de que macacos digitando em uma máquina de escrever poderiam acabar gerando o trabalho de Shakespeare. Obviamente, a probabilidade desse cenário é tão pequena que não se espera que isso aconteça em hipótese alguma. No entanto, se combinarmos a máquina de escrever do macaco com modelos estatísticos observados da linguagem, mesmo que as ações do macaco sejam consideradas aleatórias, será factível que o macaco produza uma comunicação engajante.

Como você já deve ter percebido, o ponto é que o desenvolvimento desses modelos estatísticos exige dados, por exemplo, com que frequência certas letras ou palavras ocorrem em relação umas às outras. Um modelo comum para isso é chamado de n-grama, no qual há uma matriz de frequência que mostra com que frequência nos dados de treinamento cada sequência de letras ocorre. Por exemplo, um 3-grama de um texto típico em inglês mostraria um valor bem alto para a sequência "ING" e um valor baixo para a sequência "HMF."

A imagem a seguir é um gráfico dos 20 principais bigramas (n-gramas bidimensionais) em Hamlet de Shakespeare, ignorando a pontuação e os espaços, e tratando todas as letras como minúsculas.

Chart of top 20 bigrams in Hamlet
Chart of top 20 bigrams in Hamlet

A fonte e a natureza dos dados de treinamento são importantes. Se você usar os modelos estatísticos dos trabalhos originais de Dante, o resultado soará como um italiano, com uma chance muito menor de produzir os trabalhos de Shakespeare em um determinado período de tempo. Usar as estatísticas de épicos e livros sagrados hindus ou dos próprios trabalhos de Shakespeare resultaria em efeitos semelhantes.

Se você cometer o erro de criar modelos estatísticos das três tradições literárias mencionadas, o resultado provavelmente será um macaco ou um robô ininteligível realmente implementado, que demorará ainda mais tempo para produzir algo comunicável. Portanto, para esse caso, não basta apenas alimentar o algoritmo com cada vez mais dados ocultos. Deve-se prestar atenção à fonte e entender como as informações de entrada afetam a saída.

O perigo da propensão

O problema ao tentar reunir esses dados com um contexto claro em escala é que é muito difícil remediar as consequências indesejadas. Já ocorreram casos famosos em que o direcionamento de propaganda online baseado em algoritmos exibiu tendências que poderiam ser interpretadas como sexismo, racismo ou outras propensões proibidas, causando problemas de relações públicas para os proprietários.

Existem vários motivos que podem causar isso. Em alguns casos, a propensão pode ser inerente nos dados que treinam os algoritmos. Esse é um problema comum em termos mais amplos, mesmo na ciência e na política. É importante proteger-se contra essas propensões e questionar todas as suposições de pessoas ou sistemas que reúnem os dados, mas isso é extremamente difícil. A vigilância constante é a única solução.

Um problema ainda mais complicado surge quando os dados não contêm algum aspecto humano de seu contexto, o que cria propensões totalmente indesejadas. Alguma coisa na apresentação de uma propaganda em um site frequentado por um determinado grupo demográfico poderia aumentar seu sucesso, e isso se tornaria dados codificados no algoritmo de uma maneira que pareceria discriminatória. Novamente, não há outra solução além da vigilância constante e da revisão dos padrões surgidos ao longo do tempo, porque as pessoas ainda são melhores detectores de problemas no contexto social do que os algoritmos.

Novamente, há paralelos interessantes em NLP. A Microsoft revelou um robô de IA no Twitter e, embora os algoritmos não tenham sido revelados, ficou claro que o corpus das interações com o usuário foram usados para desenvolver seus modelos de linguagem. Após um bombardeio de comentários desfavoráveis dos usuários, ele rapidamente foi adaptado para realizar postagens antissociais virais sobre si e os criadores precisaram colocá-lo off-line o quanto antes.

Você não deseja ser um desenvolvedor que será aplaudido no primeiro dia de lançamento de um poderoso aplicativo e ser vaiado no sexto dia, ou até mesmo perder seu emprego, depois que esse aplicativo acabar absorvendo e exibindo propensões suficientes para causar uma calamidade de RP aos funcionários.

Conclusão

Você aprendeu a importância dos dados para a criação de aplicativos cognitivos e de inteligência artificial, e como essa importância tem sido constante em toda a história da disciplina, estando conectada aos seus sucessos e fracassos históricos. Você também aprendeu como a enorme quantidade de dados digitalizados disponíveis online revitalizou a IA de seus períodos de inatividade e levou suas conquistas a uma posição central, afetando muitas vidas e muitos negócios. O período atual de sucesso e entusiasmo vem com seus próprios perigos, pois as anomalias e propensões imprevistas nos dados que alimentam IA podem causar efeitos terríveis, sejam eles sociais ou até mesmo de reação regulamentar.

Isso tudo pode ser um conhecimento interessante e útil, mas como o ciclo de vida de desenvolvimento de software (SDLC) é aplicado aos dados de IA na prática? Vou responder a essa pergunta no próximo tutorial, entrando em detalhes sobre o SDLC e ilustrando como é possível aplicá-lo de forma efetiva para solucionar os problemas discutidos até agora.


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=1056814
ArticleTitle=Dados inteligentes, Parte 1: Preste atenção aos dados para aproveitar ao máximo a inteligência artificial, o aprendizado de máquina e a computação cognitiva
publish-date=01192018