Aprendizado de máquina - Machine learning

O aprendizado de máquina ( ML ) é o estudo de algoritmos de computador que podem ser aprimorados automaticamente por meio da experiência e do uso de dados. É visto como parte da inteligência artificial . Algoritmos de aprendizado de máquina constroem um modelo baseado em dados de amostra, conhecidos como " dados de treinamento ", a fim de fazer previsões ou decisões sem serem explicitamente programados para isso. Os algoritmos de aprendizado de máquina são usados ​​em uma ampla variedade de aplicações, como na medicina, filtragem de e-mail , reconhecimento de fala e visão computacional , onde é difícil ou inviável desenvolver algoritmos convencionais para realizar as tarefas necessárias.

Um subconjunto do aprendizado de máquina está intimamente relacionado à estatística computacional , que se concentra em fazer previsões usando computadores; mas nem todo aprendizado de máquina é aprendizado estatístico. O estudo da otimização matemática fornece métodos, teoria e domínios de aplicação para o campo do aprendizado de máquina. A mineração de dados é um campo de estudo relacionado, com foco na análise exploratória de dados por meio do aprendizado não supervisionado . Algumas implementações de aprendizado de máquina usam dados e redes neurais de uma forma que imita o funcionamento de um cérebro biológico. Em sua aplicação em problemas de negócios, o aprendizado de máquina também é conhecido como análise preditiva .

Visão geral

Os algoritmos de aprendizagem funcionam com base em que estratégias, algoritmos e inferências que funcionaram bem no passado provavelmente continuarão a funcionar bem no futuro. Essas inferências podem ser óbvias, como "uma vez que o sol nasceu todas as manhãs nos últimos 10.000 dias, provavelmente nascerá amanhã de manhã também". Eles podem ter nuances, como "X% das famílias têm espécies geograficamente separadas com variantes de cores, então há uma chance de Y% de que existam cisnes negros desconhecidos ".

Os programas de aprendizado de máquina podem realizar tarefas sem serem explicitamente programados para isso. Envolve computadores aprendendo com os dados fornecidos para que realizem certas tarefas. Para tarefas simples atribuídas a computadores, é possível programar algoritmos que informam à máquina como executar todas as etapas necessárias para resolver o problema em questão; por parte do computador, nenhum aprendizado é necessário. Para tarefas mais avançadas, pode ser desafiador para um ser humano criar manualmente os algoritmos necessários. Na prática, pode ser mais eficaz ajudar a máquina a desenvolver seu próprio algoritmo, em vez de fazer com que programadores humanos especifiquem cada etapa necessária.

A disciplina de aprendizado de máquina emprega várias abordagens para ensinar os computadores a realizar tarefas onde nenhum algoritmo totalmente satisfatório está disponível. Nos casos em que existe um grande número de respostas potenciais, uma abordagem é rotular algumas das respostas corretas como válidas. Isso pode ser usado como dados de treinamento para o computador melhorar o (s) algoritmo (s) que ele usa para determinar as respostas corretas. Por exemplo, para treinar um sistema para a tarefa de reconhecimento digital de caracteres, o conjunto de dados MNIST de dígitos manuscritos tem sido freqüentemente usado.

História e relações com outros campos

O termo aprendizado de máquina foi cunhado em 1959 por Arthur Samuel , um IBMista americano e pioneiro no campo de jogos de computador e inteligência artificial . Também o sinônimo computadores de autoaprendizagem foi usado neste período de tempo. Um livro representativo da pesquisa de aprendizado de máquina durante a década de 1960 foi o livro de Nilsson sobre Máquinas de Aprendizagem, lidando principalmente com aprendizado de máquina para classificação de padrões. O interesse relacionado ao reconhecimento de padrões continuou na década de 1970, conforme descrito por Duda e Hart em 1973. Em 1981, foi apresentado um relatório sobre o uso de estratégias de ensino para que uma rede neural aprenda a reconhecer 40 caracteres (26 letras, 10 dígitos e 4 símbolos especiais ) a partir de um terminal de computador.

Tom M. Mitchell forneceu uma definição mais formal e amplamente citada dos algoritmos estudados no campo do aprendizado de máquina: "Diz-se que um programa de computador aprende com a experiência E com relação a alguma classe de tarefas T e medida de desempenho P se seu desempenho nas tarefas em T , conforme medido por P , melhora com a experiência E. " Esta definição das tarefas que envolvem o aprendizado de máquina oferece uma definição fundamentalmente operacional, em vez de definir o campo em termos cognitivos. Isso segue a proposta de Alan Turing em seu artigo " Computing Machinery and Intelligence ", em que a questão "As máquinas podem pensar?" é substituída pela pergunta "As máquinas podem fazer o que nós (como entidades pensantes) podemos fazer?".

O aprendizado de máquina moderno tem dois objetivos, um é classificar os dados com base em modelos que foram desenvolvidos e o outro é fazer previsões para resultados futuros com base nesses modelos. Um algoritmo hipotético específico para classificar dados pode usar a visão computacional de toupeiras juntamente com o aprendizado supervisionado, a fim de treiná-lo para classificar as toupeiras cancerosas. Onde, um algoritmo de aprendizado de máquina para negociação de ações pode informar o negociante de futuras previsões potenciais.

Inteligência artificial

Aprendizado de máquina como subcampo da IA
Parte do aprendizado de máquina como subcampo da IA ​​ou parte da IA ​​como subcampo do aprendizado de máquina

Como um empreendimento científico, o aprendizado de máquina surgiu da busca por inteligência artificial. No início da IA ​​como disciplina acadêmica , alguns pesquisadores estavam interessados ​​em que as máquinas aprendessem com os dados. Eles tentaram abordar o problema com vários métodos simbólicos, bem como com o que era então denominado " redes neurais "; estes eram principalmente perceptrons e outros modelos que mais tarde foram descobertos como reinvenções dos modelos lineares generalizados de estatística. O raciocínio probabilístico também foi empregado, especialmente no diagnóstico médico automatizado .

No entanto, uma ênfase crescente na abordagem lógica baseada no conhecimento causou uma cisão entre a IA e o aprendizado de máquina. Os sistemas probabilísticos eram atormentados por problemas teóricos e práticos de aquisição e representação de dados. Em 1980, os sistemas especialistas passaram a dominar a IA, e as estatísticas estavam em baixa. O trabalho na aprendizagem simbólica / baseada no conhecimento continuou dentro da IA, levando à programação lógica indutiva , mas a linha de pesquisa mais estatística estava agora fora do campo da IA ​​propriamente dita, no reconhecimento de padrões e recuperação de informações . A pesquisa de redes neurais foi abandonada pela IA e pela ciência da computação na mesma época. Essa linha, também, foi continuada fora do campo de IA / CS, como " conexionismo ", por pesquisadores de outras disciplinas, incluindo Hopfield , Rumelhart e Hinton . Seu principal sucesso veio em meados da década de 1980 com a reinvenção da retropropagação .

O aprendizado de máquina (ML), reorganizado como um campo separado, começou a florescer na década de 1990. O campo mudou seu objetivo de alcançar inteligência artificial para resolver problemas solucionáveis ​​de natureza prática. Ele mudou o foco das abordagens simbólicas que herdara da IA ​​e passou a usar métodos e modelos emprestados da estatística e da teoria da probabilidade .

Em 2020, muitas fontes continuam a afirmar que o aprendizado de máquina continua sendo um subcampo da IA. A principal discordância é se todo o ML faz parte da IA, pois isso significaria que qualquer pessoa que usa o ML pode alegar que está usando IA. Outros têm a visão de que nem todo o ML faz parte da IA, onde apenas um subconjunto "inteligente" do ML faz parte da IA.

A questão de qual é a diferença entre ML e AI é respondida por Judea Pearl em The Book of Why . Assim, o ML aprende e prevê com base em observações passivas, enquanto a IA implica em um agente que interage com o ambiente para aprender e realizar ações que maximizam sua chance de atingir seus objetivos com sucesso.

Mineração de dados

O aprendizado de máquina e a mineração de dados geralmente empregam os mesmos métodos e se sobrepõem significativamente, mas enquanto o aprendizado de máquina se concentra na previsão, com base nas propriedades conhecidas aprendidas com os dados de treinamento, a mineração de dados se concentra na descoberta de propriedades (anteriormente) desconhecidas nos dados (isto é a etapa de análise de descoberta de conhecimento em bancos de dados). A mineração de dados usa muitos métodos de aprendizado de máquina, mas com objetivos diferentes; por outro lado, o aprendizado de máquina também emprega métodos de mineração de dados como "aprendizado não supervisionado" ou como uma etapa de pré-processamento para melhorar a precisão do aluno. Grande parte da confusão entre essas duas comunidades de pesquisa (que muitas vezes têm conferências e periódicos separados, ECML PKDD sendo uma grande exceção) vem dos pressupostos básicos com os quais trabalham: no aprendizado de máquina, o desempenho é geralmente avaliado em relação à capacidade de reproduzir o conhecimento conhecido , enquanto na descoberta de conhecimento e mineração de dados (KDD) a tarefa principal é a descoberta de conhecimento até então desconhecido . Avaliado com relação ao conhecimento conhecido, um método não informado (não supervisionado) será facilmente superado por outros métodos supervisionados, enquanto em uma tarefa KDD típica, os métodos supervisionados não podem ser usados ​​devido à indisponibilidade de dados de treinamento.

Otimização

O aprendizado de máquina também tem laços íntimos com a otimização : muitos problemas de aprendizado são formulados como a minimização de alguma função de perda em um conjunto de exemplos de treinamento. As funções de perda expressam a discrepância entre as previsões do modelo sendo treinado e as instâncias reais do problema (por exemplo, na classificação, deseja-se atribuir um rótulo às instâncias e os modelos são treinados para prever corretamente os rótulos pré-atribuídos de um conjunto de exemplos).

Generalização

A diferença entre otimização e aprendizado de máquina surge do objetivo de generalização: enquanto os algoritmos de otimização podem minimizar a perda em um conjunto de treinamento, o aprendizado de máquina se preocupa em minimizar a perda em amostras invisíveis. Caracterizar a generalização de vários algoritmos de aprendizagem é um tópico ativo de pesquisa atual, especialmente para algoritmos de aprendizagem profunda .

Estatisticas

Aprendizado de máquina e estatística são campos intimamente relacionados em termos de métodos, mas distintos em seu objetivo principal: a estatística extrai inferências populacionais de uma amostra , enquanto o aprendizado de máquina encontra padrões preditivos generalizáveis. Segundo Michael I. Jordan , as ideias de aprendizado de máquina, desde princípios metodológicos a ferramentas teóricas, têm uma longa pré-história na estatística. Ele também sugeriu o termo ciência de dados como um espaço reservado para chamar o campo geral.

Leo Breiman distinguiu dois paradigmas de modelagem estatística: modelo de dados e modelo algorítmico, em que "modelo algorítmico" significa mais ou menos os algoritmos de aprendizado de máquina como floresta aleatória .

Alguns estatísticos adotaram métodos de aprendizado de máquina, levando a um campo combinado que eles chamam de aprendizado estatístico .

Teoria

Um objetivo central de um aluno é generalizar a partir de sua experiência. Generalização, neste contexto, é a capacidade de uma máquina de aprendizado de executar com precisão em novos exemplos / tarefas não vistos depois de ter experimentado um conjunto de dados de aprendizado. Os exemplos de treinamento vêm de alguma distribuição de probabilidade geralmente desconhecida (considerada representativa do espaço de ocorrências) e o aluno deve construir um modelo geral sobre esse espaço que lhe permita produzir previsões suficientemente precisas em novos casos.

A análise computacional de algoritmos de aprendizado de máquina e seu desempenho é um ramo da ciência da computação teórica conhecida como teoria de aprendizado computacional . Como os conjuntos de treinamento são finitos e o futuro é incerto, a teoria de aprendizagem geralmente não oferece garantias de desempenho dos algoritmos. Em vez disso, os limites probabilísticos do desempenho são bastante comuns. A decomposição de polarização-variância é uma forma de quantificar o erro de generalização .

Para o melhor desempenho no contexto de generalização, a complexidade da hipótese deve corresponder à complexidade da função subjacente aos dados. Se a hipótese for menos complexa do que a função, o modelo ajustou os dados de forma insuficiente. Se a complexidade do modelo for aumentada em resposta, o erro de treinamento diminui. Mas se a hipótese for muito complexa, o modelo está sujeito a sobreajuste e a generalização será mais pobre.

Além dos limites de desempenho, os teóricos da aprendizagem estudam a complexidade do tempo e a viabilidade da aprendizagem. Na teoria de aprendizagem computacional, um cálculo é considerado viável se puder ser feito em tempo polinomial . Existem dois tipos de resultados de complexidade de tempo . Resultados positivos mostram que uma determinada classe de funções pode ser aprendida em tempo polinomial. Resultados negativos mostram que certas classes não podem ser aprendidas em tempo polinomial.

Abordagens

As abordagens de aprendizado de máquina são tradicionalmente divididas em três categorias amplas, dependendo da natureza do "sinal" ou "feedback" disponível para o sistema de aprendizado:

  • Aprendizagem supervisionada : O computador é apresentado com exemplos de entradas e suas saídas desejadas, fornecidas por um "professor", e o objetivo é aprender uma regra geral que mapeia entradas em saídas.
  • Aprendizagem não supervisionada : nenhum rótulo é dado ao algoritmo de aprendizagem, deixando-o sozinho para encontrar a estrutura em sua entrada. O aprendizado não supervisionado pode ser um objetivo em si (descobrir padrões ocultos nos dados) ou um meio para um fim ( aprendizado de recursos ).
  • Aprendizagem por reforço : um programa de computador interage com um ambiente dinâmico no qual deve realizar um determinado objetivo (como dirigir um veículo ou jogar um jogo contra um oponente). À medida que navega no espaço do problema, o programa recebe um feedback análogo às recompensas, que ele tenta maximizar.

Aprendizagem supervisionada

Uma máquina de vetores de suporte é um modelo de aprendizado supervisionado que divide os dados em regiões separadas por um limite linear . Aqui, o limite linear divide os círculos pretos dos brancos.

Algoritmos de aprendizado supervisionado constroem um modelo matemático de um conjunto de dados que contém as entradas e as saídas desejadas. Os dados são conhecidos como dados de treinamento e consistem em um conjunto de exemplos de treinamento. Cada exemplo de treinamento possui uma ou mais entradas e a saída desejada, também conhecida como sinal de supervisão. No modelo matemático, cada exemplo de treinamento é representado por uma matriz ou vetor, às vezes chamado de vetor de recursos, e os dados de treinamento são representados por uma matriz . Por meio da otimização iterativa de uma função objetivo , os algoritmos de aprendizado supervisionado aprendem uma função que pode ser usada para prever a saída associada a novas entradas. Uma função ideal permitirá que o algoritmo determine corretamente a saída para entradas que não faziam parte dos dados de treinamento. Diz-se que um algoritmo que melhora a precisão de seus resultados ou previsões ao longo do tempo aprendeu a realizar essa tarefa.

Os tipos de algoritmos de aprendizagem supervisionada incluem aprendizagem ativa , classificação e regressão . Os algoritmos de classificação são usados ​​quando as saídas são restritas a um conjunto limitado de valores e os algoritmos de regressão são usados ​​quando as saídas podem ter qualquer valor numérico dentro de uma faixa. Por exemplo, para um algoritmo de classificação que filtra emails, a entrada seria um email de entrada e a saída seria o nome da pasta na qual arquivar o email.

O aprendizado por similaridade é uma área de aprendizado de máquina supervisionado intimamente relacionada à regressão e classificação, mas o objetivo é aprender com os exemplos usando uma função de similaridade que mede o quão semelhantes ou relacionados dois objetos são. Ele tem aplicações em classificação , sistemas de recomendação , rastreamento de identidade visual, verificação de rosto e verificação de palestrante.

Aprendizagem não supervisionada

Algoritmos de aprendizagem não supervisionados pegam um conjunto de dados que contém apenas entradas e encontram estrutura nos dados, como agrupamento ou agrupamento de pontos de dados. Os algoritmos, portanto, aprendem com os dados de teste que não foram rotulados, classificados ou categorizados. Em vez de responder ao feedback, os algoritmos de aprendizagem não supervisionados identificam pontos em comum nos dados e reagem com base na presença ou ausência de tais pontos em comum em cada novo dado. Uma aplicação central da aprendizagem não supervisionada é no campo da estimativa de densidade em estatística , como encontrar a função de densidade de probabilidade . Embora o aprendizado não supervisionado englobe outros domínios que envolvem resumir e explicar recursos de dados.

A análise de agrupamento é a atribuição de um conjunto de observações em subconjuntos (chamados agrupamentos ) de forma que as observações dentro do mesmo agrupamento sejam semelhantes de acordo com um ou mais critérios pré-designados, enquanto as observações retiradas de agrupamentos diferentes são diferentes. Diferentes técnicas de agrupamento fazem suposições diferentes sobre a estrutura dos dados, muitas vezes definidas por alguma métrica de semelhança e avaliadas, por exemplo, pela compactação interna , ou a semelhança entre membros do mesmo cluster, e separação , a diferença entre os clusters. Outros métodos são baseados em densidade estimada e conectividade de gráfico .

Aprendizagem semissupervisionada

A aprendizagem semissupervisionada fica entre a aprendizagem não supervisionada (sem nenhum dado de treinamento rotulado) e a aprendizagem supervisionada (com dados de treinamento completamente rotulados). Alguns dos exemplos de treinamento estão sem rótulos de treinamento, mas muitos pesquisadores de aprendizado de máquina descobriram que dados não rotulados, quando usados ​​em conjunto com uma pequena quantidade de dados rotulados, podem produzir uma melhoria considerável na precisão do aprendizado.

Na aprendizagem supervisionada fracamente , os rótulos de treinamento são barulhentos, limitados ou imprecisos; no entanto, esses rótulos costumam ser mais baratos de se obter, resultando em conjuntos de treinamento eficazes e maiores.

Aprendizagem por reforço

O aprendizado por reforço é uma área do aprendizado de máquina que se preocupa com como os agentes de software devem realizar ações em um ambiente de modo a maximizar alguma noção de recompensa cumulativa. Devido à sua generalidade, o campo é estudado em muitas outras disciplinas, como teoria dos jogos , teoria do controle , pesquisa operacional , teoria da informação , otimização baseada em simulação , sistemas multiagentes , inteligência de enxame , estatística e algoritmos genéticos . No aprendizado de máquina, o ambiente é normalmente representado como um processo de decisão de Markov (MDP). Muitos algoritmos de aprendizagem por reforço usam técnicas de programação dinâmica . Os algoritmos de aprendizagem por reforço não pressupõem o conhecimento de um modelo matemático exato do MDP e são usados ​​quando modelos exatos são inviáveis. Algoritmos de aprendizagem por reforço são usados ​​em veículos autônomos ou para aprender a jogar contra um oponente humano.

Redução de dimensionalidade

A redução da dimensionalidade é um processo de redução do número de variáveis ​​aleatórias em consideração pela obtenção de um conjunto de variáveis ​​principais. Em outras palavras, é um processo de redução da dimensão do conjunto de recursos, também chamado de "número de recursos". A maioria das técnicas de redução de dimensionalidade pode ser considerada como eliminação ou extração de recurso. Um dos métodos populares de redução da dimensionalidade é a análise de componentes principais (PCA). O PCA envolve a alteração de dados de dimensões superiores (por exemplo, 3D) para um espaço menor (por exemplo, 2D). Isso resulta em uma dimensão menor de dados (2D em vez de 3D), enquanto mantém todas as variáveis ​​originais no modelo sem alterar os dados. A hipótese múltipla propõe que conjuntos de dados de alta dimensão ficam ao longo de variedades de baixa dimensão , e muitas técnicas de redução de dimensionalidade fazem essa suposição, levando à área de aprendizagem de múltiplas e regularização de múltiplas .

Outros tipos

Outras abordagens foram desenvolvidas que não se encaixam perfeitamente nessa categorização tripla e, às vezes, mais de uma é usada pelo mesmo sistema de aprendizado de máquina. Por exemplo , modelagem de tópicos , meta-aprendizagem .

A partir de 2020, o aprendizado profundo se tornou a abordagem dominante para muitos trabalhos em andamento na área de aprendizado de máquina.

Auto-aprendizagem

A autoaprendizagem como um paradigma de aprendizagem de máquina foi introduzida em 1982 junto com uma rede neural capaz de autoaprendizagem chamada crossbar adaptive array (CAA). É um aprendizado sem recompensas externas e sem conselhos externos do professor. O algoritmo de autoaprendizagem CAA calcula, de forma transversal, as decisões sobre ações e emoções (sentimentos) sobre situações de consequência. O sistema é impulsionado pela interação entre cognição e emoção. O algoritmo de autoaprendizagem atualiza uma matriz de memória W = || w (a, s) || de modo que em cada iteração execute a seguinte rotina de aprendizado de máquina:

 In situation s perform an action a;
 Receive consequence situation s’;
 Compute emotion of being in consequence situation v(s’);
 Update crossbar memory  w’(a,s) = w(a,s) + v(s’).

É um sistema com apenas uma entrada, situação se apenas uma saída, ação (ou comportamento) a. Não há uma entrada de reforço separada nem uma entrada de conselho do ambiente. O valor retropropagado (reforço secundário) é a emoção em relação à situação de consequência. O CAA existe em dois ambientes, um é o ambiente comportamental onde se comporta, e o outro é o ambiente genético, de onde inicialmente e apenas uma vez recebe emoções iniciais sobre as situações a serem encontradas no ambiente comportamental. Depois de receber o vetor do genoma (espécie) do ambiente genético, o CAA aprende um comportamento de busca de objetivos, em um ambiente que contém situações desejáveis ​​e indesejáveis.

Aprendizagem de recursos

Vários algoritmos de aprendizagem visam descobrir melhores representações das entradas fornecidas durante o treinamento. Os exemplos clássicos incluem análise de componentes principais e análise de cluster. Os algoritmos de aprendizado de recursos, também chamados de algoritmos de aprendizado de representação, freqüentemente tentam preservar as informações em sua entrada, mas também as transformam de uma maneira que as torna úteis, geralmente como uma etapa de pré-processamento antes de realizar a classificação ou previsões. Esta técnica permite a reconstrução das entradas provenientes da distribuição de geração de dados desconhecida, embora não seja necessariamente fiel às configurações que são implausíveis nessa distribuição. Isso substitui a engenharia de recursos manuais e permite que uma máquina aprenda os recursos e os use para executar uma tarefa específica.

O aprendizado de recursos pode ser supervisionado ou não supervisionado. No aprendizado supervisionado de recursos, os recursos são aprendidos usando dados de entrada rotulados. Os exemplos incluem redes neurais artificiais , perceptrons multicamadas e aprendizado de dicionário supervisionado . No aprendizado de recursos não supervisionado, os recursos são aprendidos com dados de entrada não rotulados. Os exemplos incluem aprendizagem de dicionário, análise de componentes independentes , autoencoders , fatoração de matrizes e várias formas de agrupamento .

Algoritmos de aprendizado múltiplo tentam fazer isso sob a restrição de que a representação aprendida é de baixa dimensão. Algoritmos de codificação esparsos tentam fazer isso sob a restrição de que a representação aprendida é esparsa, o que significa que o modelo matemático tem muitos zeros. Algoritmos de aprendizagem de subespaço multilinear objetivam aprender representações de baixa dimensão diretamente de representações de tensor para dados multidimensionais, sem remodelá-los em vetores de dimensões superiores. Algoritmos de aprendizado profundo descobrem vários níveis de representação, ou uma hierarquia de recursos, com recursos de nível superior e mais abstratos definidos em termos de (ou geração) de recursos de nível inferior. Argumentou-se que uma máquina inteligente é aquela que aprende uma representação que desemaranha os fatores subjacentes de variação que explicam os dados observados.

O aprendizado de recursos é motivado pelo fato de que as tarefas de aprendizado de máquina, como classificação, muitas vezes requerem entradas que são matematicamente e computacionalmente convenientes para serem processadas. No entanto, os dados do mundo real, como imagens, vídeo e dados sensoriais, não renderam tentativas de definir algoritmicamente os recursos específicos. Uma alternativa é descobrir esses recursos ou representações por meio de exame, sem depender de algoritmos explícitos.

Aprendizagem de dicionário esparsa

O aprendizado de dicionário esparso é um método de aprendizado de recursos em que um exemplo de treinamento é representado como uma combinação linear de funções básicas e é considerado uma matriz esparsa . O método é fortemente NP-difícil e difícil de resolver aproximadamente. Um método heurístico popular para aprendizagem de dicionário esparso é o algoritmo K-SVD . O aprendizado de dicionário esparso foi aplicado em vários contextos. Na classificação, o problema é determinar a classe à qual pertence um exemplo de treinamento nunca antes visto. Para um dicionário onde cada classe já foi construída, um novo exemplo de treinamento é associado à classe que é melhor representada esparsamente pelo dicionário correspondente. O aprendizado de dicionário esparso também foi aplicado na eliminação de ruído de imagens . A ideia principal é que um patch de imagem limpa pode ser representado esparsamente por um dicionário de imagens, mas o ruído não.

Detecção de anomalia

Na mineração de dados , a detecção de anomalias, também conhecida como detecção de outlier, é a identificação de itens raros, eventos ou observações que levantam suspeitas por diferirem significativamente da maioria dos dados. Normalmente, os itens anômalos representam um problema, como fraude bancária , defeito estrutural, problemas médicos ou erros em um texto. As anomalias são chamadas de outliers , novidades, ruídos, desvios e exceções.

Em particular, no contexto de abuso e detecção de intrusão de rede, os objetos interessantes geralmente não são objetos raros, mas explosões inesperadas de inatividade. Este padrão não adere à definição estatística comum de um outlier como um objeto raro, e muitos métodos de detecção de outlier (em particular, algoritmos não supervisionados) falharão em tais dados, a menos que tenham sido agregados apropriadamente. Em vez disso, um algoritmo de análise de cluster pode ser capaz de detectar os microclusters formados por esses padrões.

Existem três categorias amplas de técnicas de detecção de anomalias. As técnicas de detecção de anomalias não supervisionadas detectam anomalias em um conjunto de dados de teste não rotulado sob a suposição de que a maioria das instâncias no conjunto de dados são normais, procurando por instâncias que parecem se ajustar menos ao restante do conjunto de dados. As técnicas de detecção de anomalias supervisionadas requerem um conjunto de dados que foi rotulado como "normal" e "anormal" e envolve o treinamento de um classificador (a principal diferença para muitos outros problemas de classificação estatística é a natureza inerentemente desequilibrada da detecção de valores discrepantes). Técnicas de detecção de anomalia semissupervisionada constroem um modelo que representa o comportamento normal de um determinado conjunto de dados de treinamento normal e, em seguida, testam a probabilidade de uma instância de teste ser gerada pelo modelo.

Aprendizagem de robôs

Na robótica do desenvolvimento , é como os humanos que executam tarefas servais e controlados pelos computadores, sua parte da computação e seu algoritmo, algoritmos de aprendizagem de robôs geram suas próprias sequências de experiências de aprendizagem, também conhecidas como currículo, para adquirir cumulativamente novas habilidades por meio da exploração autoguiada e interação social com humanos. Esses robôs usam mecanismos de orientação como aprendizagem ativa, maturação, sinergias motoras e imitação.

Regras de associação

O aprendizado de regras de associação é um método de aprendizado de máquina baseado em regras para descobrir relacionamentos entre variáveis ​​em grandes bancos de dados. A intenção é identificar regras fortes descobertas em bancos de dados usando alguma medida de "interesse".

O aprendizado de máquina baseado em regras é um termo geral para qualquer método de aprendizado de máquina que identifica, aprende ou desenvolve "regras" para armazenar, manipular ou aplicar conhecimento. A característica definidora de um algoritmo de aprendizado de máquina baseado em regras é a identificação e utilização de um conjunto de regras relacionais que representam coletivamente o conhecimento capturado pelo sistema. Isso contrasta com outros algoritmos de aprendizado de máquina que comumente identificam um modelo singular que pode ser aplicado universalmente a qualquer instância para fazer uma previsão. As abordagens de aprendizado de máquina baseadas em regras incluem sistemas de classificação de aprendizado, aprendizado de regras de associação e sistemas imunológicos artificiais .

Com base no conceito de regras fortes, Rakesh Agrawal , Tomasz Imieliński e Arun Swami introduziram regras de associação para descobrir regularidades entre produtos em dados de transações de grande escala registrados por sistemas de ponto de venda (POS) em supermercados. Por exemplo, a regra encontrada nos dados de vendas de um supermercado indicaria que, se um cliente comprar cebolas e batatas juntos, é provável que também compre carne para hambúrguer. Essas informações podem ser usadas como base para decisões sobre atividades de marketing, como preços promocionais ou colocação de produtos . Além da análise de cesta de compras , as regras de associação são empregadas hoje em áreas de aplicação, incluindo mineração de uso da Web , detecção de intrusão , produção contínua e bioinformática . Em contraste com a mineração de sequência , o aprendizado de regras de associação normalmente não considera a ordem dos itens dentro de uma transação ou entre as transações.

Os sistemas classificadores de aprendizado (LCS) são uma família de algoritmos de aprendizado de máquina baseados em regras que combinam um componente de descoberta, normalmente um algoritmo genético , com um componente de aprendizado, realizando aprendizado supervisionado , aprendizado por reforço ou aprendizado não supervisionado . Eles procuram identificar um conjunto de regras dependentes do contexto que coletivamente armazenam e aplicam o conhecimento de maneira fragmentada para fazer previsões.

A programação lógica indutiva (ILP) é uma abordagem para o aprendizado de regras usando a programação lógica como uma representação uniforme para exemplos de entrada, conhecimento prévio e hipóteses. Dada uma codificação do conhecimento de fundo conhecido e um conjunto de exemplos representados como um banco de dados lógico de fatos, um sistema ILP derivará um programa lógico hipotético que envolve todos os exemplos positivos e nenhum negativo. A programação indutiva é um campo relacionado que considera qualquer tipo de linguagem de programação para representar hipóteses (e não apenas a programação lógica), como programas funcionais .

A programação lógica indutiva é particularmente útil em bioinformática e processamento de linguagem natural . Gordon Plotkin e Ehud Shapiro estabeleceram a base teórica inicial para o aprendizado de máquina indutivo em um ambiente lógico. Shapiro construiu sua primeira implementação (Model Inference System) em 1981: um programa Prolog que inferia indutivamente programas lógicos a partir de exemplos positivos e negativos. O termo indutivo aqui se refere à indução filosófica , sugerindo uma teoria para explicar os fatos observados, ao invés de indução matemática , provando uma propriedade para todos os membros de um conjunto bem ordenado.

Modelos

Executar o aprendizado de máquina envolve a criação de um modelo , que é treinado em alguns dados de treinamento e pode processar dados adicionais para fazer previsões. Vários tipos de modelos têm sido usados ​​e pesquisados ​​para sistemas de aprendizado de máquina.

Redes neurais artificiais

Uma rede neural artificial é um grupo interconectado de nós, semelhante à vasta rede de neurônios em um cérebro . Aqui, cada nó circular representa um neurônio artificial e uma seta representa uma conexão da saída de um neurônio artificial para a entrada de outro.

Redes neurais artificiais (RNAs), ou sistemas conexionistas , são sistemas de computação vagamente inspirados nas redes neurais biológicas que constituem os cérebros dos animais . Esses sistemas "aprendem" a executar tarefas considerando exemplos, geralmente sem serem programados com nenhuma regra específica de tarefa.

Uma RNA é um modelo baseado em uma coleção de unidades conectadas ou nós chamados " neurônios artificiais ", que modelam vagamente os neurônios em um cérebro biológico . Cada conexão, como as sinapses em um cérebro biológico , pode transmitir informações, um "sinal", de um neurônio artificial para outro. Um neurônio artificial que recebe um sinal pode processá-lo e, em seguida, sinalizar neurônios artificiais adicionais conectados a ele. Em implementações comuns de RNA, o sinal em uma conexão entre neurônios artificiais é um número real , e a saída de cada neurônio artificial é calculada por alguma função não linear da soma de suas entradas. As conexões entre neurônios artificiais são chamadas de "bordas". Neurônios artificiais e bordas normalmente têm um peso que se ajusta à medida que o aprendizado avança. O peso aumenta ou diminui a força do sinal em uma conexão. Os neurônios artificiais podem ter um limite tal que o sinal só é enviado se o sinal agregado cruzar esse limite. Normalmente, os neurônios artificiais são agregados em camadas. Diferentes camadas podem realizar diferentes tipos de transformações em suas entradas. Os sinais viajam da primeira camada (a camada de entrada) para a última camada (a camada de saída), possivelmente depois de atravessar as camadas várias vezes.

O objetivo original da abordagem da RNA era resolver problemas da mesma forma que um cérebro humano faria. No entanto, com o tempo, a atenção mudou para a execução de tarefas específicas, levando a desvios da biologia . As redes neurais artificiais têm sido usadas em uma variedade de tarefas, incluindo visão computacional , reconhecimento de fala , tradução automática , filtragem de rede social , jogos de tabuleiro e videogames e diagnóstico médico .

O aprendizado profundo consiste em várias camadas ocultas em uma rede neural artificial. Essa abordagem tenta modelar a maneira como o cérebro humano processa luz e som em visão e audição. Algumas aplicações bem-sucedidas de aprendizado profundo são a visão computacional e o reconhecimento de fala .

Árvores de decisão

O aprendizado da árvore de decisão usa uma árvore de decisão como um modelo preditivo para ir de observações sobre um item (representado nos ramos) para conclusões sobre o valor alvo do item (representado nas folhas). É uma das abordagens de modelagem preditiva usadas em estatística, mineração de dados e aprendizado de máquina. Os modelos de árvore em que a variável de destino pode assumir um conjunto discreto de valores são chamados de árvores de classificação; nessas estruturas de árvore, as folhas representam rótulos de classe e os ramos representam conjunções de recursos que levam a esses rótulos de classe. As árvores de decisão nas quais a variável de destino pode assumir valores contínuos (normalmente números reais ) são chamadas de árvores de regressão. Na análise de decisão, uma árvore de decisão pode ser usada para representar visualmente e explicitamente as decisões e a tomada de decisão . Na mineração de dados, uma árvore de decisão descreve os dados, mas a árvore de classificação resultante pode ser uma entrada para a tomada de decisão.

Máquinas de vetores de suporte

Máquinas de vetores de suporte (SVMs), também conhecidas como redes de vetores de suporte, são um conjunto de métodos de aprendizado supervisionado usados ​​para classificação e regressão. Dado um conjunto de exemplos de treinamento, cada um marcado como pertencente a uma das duas categorias, um algoritmo de treinamento SVM constrói um modelo que prevê se um novo exemplo se enquadra em uma categoria ou em outra. Um algoritmo de treinamento SVM é um classificador não probabilístico , binário e linear , embora existam métodos como o escalonamento de Platt para usar o SVM em uma configuração de classificação probabilística. Além de realizar a classificação linear, os SVMs podem realizar com eficiência uma classificação não linear usando o que é chamado de truque do kernel , mapeando implicitamente suas entradas em espaços de recursos de alta dimensão.

Ilustração de regressão linear em um conjunto de dados.

Análise de regressão

A análise de regressão abrange uma grande variedade de métodos estatísticos para estimar a relação entre as variáveis ​​de entrada e seus recursos associados. Sua forma mais comum é a regressão linear , onde uma única linha é desenhada para melhor ajustar os dados fornecidos de acordo com um critério matemático, como mínimos quadrados ordinários . O último é frequentemente estendido por métodos de regularização (matemática) para mitigar overfitting e viés, como na regressão de cume . Ao lidar com problemas não lineares, os modelos go-to incluem regressão polinomial (por exemplo, usada para ajuste de linha de tendência no Microsoft Excel), regressão logística (frequentemente usada em classificação estatística ) ou mesmo regressão de kernel , que introduz não linearidade por tirar vantagem do truque do kernel para mapear implicitamente as variáveis ​​de entrada para um espaço de dimensão superior.

Redes bayesianas

Uma rede bayesiana simples. A chuva influencia se o aspersor é ativado, e tanto a chuva quanto o aspersor influenciam se a grama está molhada.

Uma rede bayesiana, rede de crenças ou modelo gráfico acíclico direcionado é um modelo gráfico probabilístico que representa um conjunto de variáveis ​​aleatórias e sua independência condicional com um gráfico acíclico direcionado (DAG). Por exemplo, uma rede bayesiana pode representar as relações probabilísticas entre doenças e sintomas. Dados os sintomas, a rede pode ser usada para calcular as probabilidades da presença de várias doenças. Existem algoritmos eficientes que realizam inferência e aprendizagem. Redes bayesianas que modelam sequências de variáveis, como sinais de voz ou sequências de proteínas , são chamadas de redes Bayesianas dinâmicas . As generalizações de redes bayesianas que podem representar e resolver problemas de decisão sob incerteza são chamadas de diagramas de influência .

Algorítmos genéticos

Um algoritmo genético (AG) é um algoritmo de busca e técnica heurística que simula o processo de seleção natural , utilizando métodos como mutação e crossover para gerar novos genótipos na esperança de encontrar boas soluções para um determinado problema. No aprendizado de máquina, algoritmos genéticos foram usados ​​nas décadas de 1980 e 1990. Por outro lado, técnicas de aprendizado de máquina têm sido usadas para melhorar o desempenho de algoritmos genéticos e evolutivos .

Modelos de treinamento

Normalmente, os modelos de aprendizado de máquina exigem muitos dados para funcionarem bem. Normalmente, ao treinar um modelo de aprendizado de máquina, é necessário coletar uma grande amostra representativa de dados de um conjunto de treinamento. Os dados do conjunto de treinamento podem ser tão variados quanto um corpus de texto, uma coleção de imagens e dados coletados de usuários individuais de um serviço. O overfitting é algo a se observar ao treinar um modelo de aprendizado de máquina. Modelos treinados derivados de dados tendenciosos podem resultar em previsões distorcidas ou indesejadas. O enviesamento algorítmico é um resultado potencial de dados não totalmente preparados para o treinamento.

Aprendizagem federada

O aprendizado federado é uma forma adaptada de inteligência artificial distribuída para treinar modelos de aprendizado de máquina que descentraliza o processo de treinamento, permitindo que a privacidade dos usuários seja mantida por não precisar enviar seus dados para um servidor centralizado. Isso também aumenta a eficiência ao descentralizar o processo de treinamento para muitos dispositivos. Por exemplo, o Gboard usa aprendizado de máquina federado para treinar modelos de previsão de consulta de pesquisa nos telefones celulares dos usuários, sem ter que enviar pesquisas individuais de volta ao Google .

Formulários

Existem muitos aplicativos para aprendizado de máquina, incluindo:

Em 2006, o provedor de serviços de mídia Netflix realizou a primeira competição do " Prêmio Netflix " para encontrar um programa para prever melhor as preferências do usuário e melhorar a precisão de seu algoritmo de recomendação de filme Cinematch existente em pelo menos 10%. Uma equipe conjunta formada por pesquisadores da AT&T Labs -Research em colaboração com as equipes Big Chaos e Pragmatic Theory construiu um modelo de conjunto para ganhar o Grande Prêmio em 2009 por US $ 1 milhão. Pouco depois de o prêmio ser concedido, a Netflix percebeu que as avaliações dos espectadores não eram os melhores indicadores de seus padrões de visualização ("tudo é uma recomendação") e mudou seu mecanismo de recomendação de acordo. Em 2010, o The Wall Street Journal escreveu sobre a empresa Rebellion Research e seu uso de aprendizado de máquina para prever a crise financeira. Em 2012, o cofundador da Sun Microsystems , Vinod Khosla , previu que 80% dos empregos dos médicos seriam perdidos nas próximas duas décadas para o software de diagnóstico médico de aprendizado de máquina automatizado. Em 2014, foi relatado que um algoritmo de aprendizado de máquina foi aplicado no campo da história da arte para estudar pinturas de belas artes e que pode ter revelado influências anteriormente não reconhecidas entre os artistas. Em 2019, a Springer Nature publicou o primeiro livro de pesquisa criado usando aprendizado de máquina. Em 2020, a tecnologia de aprendizado de máquina foi usada para ajudar a fazer diagnósticos e auxiliar os pesquisadores no desenvolvimento de uma cura para o COVID-19. O aprendizado de máquina foi recentemente aplicado para prever o comportamento ecológico do ser humano. Recentemente, a tecnologia de aprendizado de máquina também é aplicada para otimizar o desempenho do smartphone e o comportamento térmico com base na interação do usuário com o telefone.

Limitações

Embora o aprendizado de máquina tenha sido transformador em alguns campos, os programas de aprendizado de máquina geralmente falham em entregar os resultados esperados. As razões para isso são inúmeras: falta de dados (adequados), falta de acesso aos dados, viés de dados, problemas de privacidade, tarefas e algoritmos mal escolhidos, ferramentas e pessoas erradas, falta de recursos e problemas de avaliação.

Em 2018, um carro autônomo do Uber não conseguiu detectar um pedestre, que morreu após uma colisão. As tentativas de usar o aprendizado de máquina na área de saúde com o sistema IBM Watson falharam mesmo depois de anos e bilhões de dólares investidos.

O aprendizado de máquina tem sido usado como uma estratégia para atualizar as evidências relacionadas à revisão sistemática e ao aumento da carga de revisores relacionada ao crescimento da literatura biomédica. Embora tenha melhorado com conjuntos de treinamento, ainda não foi desenvolvido o suficiente para reduzir a carga de trabalho sem limitar a sensibilidade necessária para as próprias descobertas.

Tendência

As abordagens de aprendizado de máquina, em particular, podem sofrer de diferentes enviesamentos de dados. Um sistema de aprendizado de máquina treinado especificamente em clientes atuais pode não ser capaz de prever as necessidades de novos grupos de clientes que não estão representados nos dados de treinamento. Quando treinado em dados criados pelo homem, o aprendizado de máquina provavelmente detectará os preconceitos constitucionais e inconscientes já presentes na sociedade. Os modelos de linguagem aprendidos com os dados mostraram conter tendências humanas. Descobriu-se que os sistemas de aprendizado de máquina usados ​​para avaliação de risco criminal são tendenciosos contra os negros. Em 2015, as fotos do Google costumavam marcar pessoas negras como gorilas, e em 2018 isso ainda não estava bem resolvido, mas o Google ainda estava usando a solução alternativa para remover todos os gorilas dos dados de treinamento e, portanto, não foi capaz de reconhecer gorilas reais em tudo. Problemas semelhantes com o reconhecimento de pessoas não brancas foram encontrados em muitos outros sistemas. Em 2016, a Microsoft testou um chatbot que aprendeu com o Twitter e rapidamente adotou uma linguagem racista e sexista. Devido a esses desafios, o uso eficaz do aprendizado de máquina pode demorar mais para ser adotado em outros domínios. A preocupação com a justiça no aprendizado de máquina, ou seja, reduzir o preconceito no aprendizado de máquina e impulsionar seu uso para o bem humano é cada vez mais expressa por cientistas de inteligência artificial, incluindo Fei-Fei Li , que lembra aos engenheiros que "Não há nada artificial na IA ... É inspirado por pessoas, é criado por pessoas e, o mais importante, causa impacto em pessoas. É uma ferramenta poderosa que estamos apenas começando a entender e que é uma responsabilidade profunda. ”

Sobreajuste

A linha azul pode ser um exemplo de ajuste excessivo de uma função linear devido ao ruído aleatório.

Estabelecer-se com uma teoria ruim e excessivamente complexa que se ajusta a todos os dados de treinamento anteriores é conhecido como overfitting . Muitos sistemas tentam reduzir o sobreajuste recompensando uma teoria de acordo com o quão bem ela se ajusta aos dados, mas penalizando a teoria de acordo com o quão complexa é a teoria.

Outras limitações

Os alunos também podem decepcionar "aprendendo a lição errada". Um exemplo de brinquedo é que um classificador de imagens treinado apenas em imagens de cavalos marrons e gatos pretos pode concluir que todas as manchas marrons são provavelmente cavalos. Um exemplo do mundo real é que, ao contrário dos humanos, os classificadores de imagens atuais muitas vezes não fazem julgamentos principalmente da relação espacial entre os componentes da imagem e aprendem relações entre pixels que os humanos ignoram, mas que ainda se correlacionam com imagens de certos tipos de objetos reais. Modificar esses padrões em uma imagem legítima pode resultar em imagens "adversárias" que o sistema classifica incorretamente.

Vulnerabilidades adversas também podem resultar em sistemas não lineares ou de perturbações não padronizadas. Alguns sistemas são tão frágeis que alterar um único pixel adversário previsivelmente induz a erros de classificação.

Avaliações de modelo

A classificação de modelos de aprendizado de máquina pode ser validada por técnicas de estimativa de precisão, como o método de validação , que divide os dados em um conjunto de treinamento e teste (convencionalmente 2/3 de conjunto de treinamento e 1/3 de designação de conjunto de teste) e avalia o desempenho do modelo de treinamento no conjunto de teste. Em comparação, o método de validação cruzada K-fold particiona aleatoriamente os dados em K subconjuntos e, em seguida, K experimentos são realizados, cada um considerando, respectivamente, 1 subconjunto para avaliação e os subconjuntos K-1 restantes para treinar o modelo. Além dos métodos de validação e validação cruzada, bootstrap , que amostra n instâncias com substituição do conjunto de dados, pode ser usado para avaliar a precisão do modelo.

Além da precisão geral, os investigadores freqüentemente relatam sensibilidade e especificidade, significando Taxa de True Positive (TPR) e True Negative Rate (TNR), respectivamente. Da mesma forma, os investigadores às vezes relatam a taxa de falsos positivos (FPR), bem como a taxa de falsos negativos (FNR). No entanto, essas taxas são razões que não revelam seus numeradores e denominadores. A característica operacional total (TOC) é um método eficaz para expressar a capacidade de diagnóstico de um modelo. O TOC mostra os numeradores e denominadores das taxas mencionadas anteriormente, portanto, o TOC fornece mais informações do que a característica de operação do receptor comumente usada (ROC) e a área associada sob a curva (AUC) do ROC.

Ética

O aprendizado de máquina apresenta uma série de questões éticas . Os sistemas que são treinados em conjuntos de dados coletados com vieses podem exibir esses vieses durante o uso ( viés algorítmico ), digitalizando preconceitos culturais. Por exemplo, em 1988, a Comissão de Igualdade Racial do Reino Unido descobriu que a St. George's Medical School estava usando um programa de computador treinado a partir de dados de funcionários de admissões anteriores e este programa negou quase 60 candidatos que foram considerados mulheres ou não -Nomes que parecem europeus. O uso de dados de contratação de empregos de uma empresa com políticas de contratação racistas pode levar a um sistema de aprendizado de máquina que duplica o preconceito, pontuando os candidatos por similaridade com os candidatos anteriores bem-sucedidos. A coleta responsável de dados e documentação de regras algorítmicas usadas por um sistema, portanto, é uma parte crítica do aprendizado de máquina.

A IA pode ser bem equipada para tomar decisões em campos técnicos, que dependem fortemente de dados e informações históricas. Essas decisões dependem da objetividade e do raciocínio lógico. Como as línguas humanas contêm preconceitos, as máquinas treinadas em corpora de linguagem também aprenderão necessariamente esses preconceitos.

Outras formas de desafios éticos, não relacionados a preconceitos pessoais, são vistos na área de saúde. Existem preocupações entre os profissionais de saúde de que esses sistemas podem não ser projetados no interesse do público, mas como máquinas de geração de renda. Isso é especialmente verdadeiro nos Estados Unidos, onde existe um antigo dilema ético de melhorar os cuidados de saúde, mas também aumentar os lucros. Por exemplo, os algoritmos podem ser projetados para fornecer aos pacientes testes ou medicamentos desnecessários nos quais os proprietários proprietários do algoritmo participam. Há potencial para o aprendizado de máquina na área de saúde para fornecer aos profissionais uma ferramenta adicional para diagnosticar, medicar e planejar caminhos de recuperação para os pacientes, mas isso requer que esses vieses sejam mitigados.

Hardware

Desde a década de 2010, os avanços nos algoritmos de aprendizado de máquina e no hardware de computador levaram a métodos mais eficientes para treinar redes neurais profundas (um subdomínio estreito específico do aprendizado de máquina) que contêm muitas camadas de unidades ocultas não lineares. Em 2019, as unidades de processamento gráfico ( GPUs ), muitas vezes com aprimoramentos específicos de IA, substituíram as CPUs como o método dominante de treinamento de IA em nuvem comercial em grande escala. A OpenAI estimou a computação de hardware usada nos maiores projetos de aprendizado profundo de AlexNet (2012) a AlphaZero (2017) e encontrou um aumento de 300.000 vezes na quantidade de computação necessária, com uma linha de tendência de tempo de duplicação de 3,4 meses.

Redes Neuromórficas / Físicas Neurais

Uma rede neural física ou computador neuromórfico é um tipo de rede neural artificial em que um material eletricamente ajustável é usado para emular a função de uma sinapse neural . A rede neural "física" é usada para enfatizar a confiança no hardware físico usado para emular neurônios, em oposição às abordagens baseadas em software. Mais geralmente, o termo é aplicável a outras redes neurais artificiais nas quais um memristor ou outro material de resistência ajustável eletricamente é usado para emular uma sinapse neural.


Programas

Os pacotes de software contendo uma variedade de algoritmos de aprendizado de máquina incluem o seguinte:

Software gratuito e de código aberto

Software proprietário com edições gratuitas e de código aberto

Software proprietário

Diários

Conferências

Veja também

Referências

Fontes

Leitura adicional

links externos