Mostrando postagens com marcador Redes Neurais. Mostrar todas as postagens
Mostrando postagens com marcador Redes Neurais. Mostrar todas as postagens

quarta-feira, 19 de junho de 2019

Rede neural aprende usando apenas luz, sem nenhum componente eletrônico

Rede neural aprende usando apenas luz, sem nenhum componente eletrônico
Este "hardware" surpreendente, sem nenhum componente eletrônico, aprendeu a identificar imagens com precisão. [Imagem: Ozcan Lab/UCLA]
Rede neural de luz
No ano passado, uma equipe do MIT apresentou um chip que usa luz em vez de eletricidade para fazer os cálculos usados por sistemas de inteligência artificial conhecidos como "aprendizagem profunda", um tipo de rede neural artificial que imita a forma como o cérebro aprende acumulando exemplos.
Agora, Xing Lin e Aydogan Ozcan, da Universidade da Califórnia em Los Angeles, criaram um sistema de processamento fotônico ainda mais simples: os cálculos com luz são feitos usando folhas fabricadas por uma impressora 3D, sem nenhum componente eletrônico.
E não se deixe enganar pela simplicidade: A rede de aprendizagem profunda óptica permite que os algoritmos computacionais sejam executados à velocidade da luz.
A vantagem é que esta é uma maneira mais barata, escalável e eficiente de criar sistemas de inteligência artificial, que estão acelerando as fronteiras da ciência, por exemplo, na análise de imagens médicas, tradução de idiomas, classificação de imagens e muito mais.
Neurônios artificiais de luz
O processador é formado por uma série de superfícies opticamente difrativas, impressas em 3-D e superpostas em camadas, que trabalham em conjunto para processar as informações.
Batizada de Rede Neural Profunda Difrativa (D2NN: Diffractive Deep Neural Network), o sistema funciona conforme cada ponto em uma determinada camada transmite ou reflete uma onda de luz que chega.
Desta forma, cada ponto funciona como um neurônio artificial, que é conectado a outros neurônios das camadas seguintes por difração óptica - a difração é o redirecionamento, ou espalhamento, da onda quando ela encontra um obstáculo.
Pode-se ajustar cada neurônio artificial - o modo como ele trata a informação - alterando-se a fase e a amplitude da onda de luz que o atinge.
Rede neural aprende usando apenas luz, sem nenhum componente eletrônico
Esquema de funcionamento da Rede Neural Profunda Difrativa. [Imagem: Ozcan Lab/UCLA]
Aprendizado profundo
Como demonstração, Li treinou o sistema expondo-o a 55.000 imagens de dígitos manuscritos - imagens do zero até o nove.
Após o treinamento, a D2NN conseguiu reconhecer esses números com 91,75% de precisão, e Li já vislumbra meios de aumentar ainda mais a precisão acrescentando camadas neurais adicionais.
A equipe também destaca que este sistema pode ser facilmente ampliado usando diferentes métodos de fabricação 3D, outros componentes ópticos e outros mecanismos de detecção e redirecionamento da luz.
Bibliografia:

All-optical machine learning using diffractive deep neural networks
Xing Lin, Yair Rivenson, Nezih T. Yardimci, Muhammed Veli, Yi Luo, Mona Jarrahi, Aydogan Ozcan
Science
DOI: 10.1126/science.aat8084

quarta-feira, 27 de dezembro de 2017

Estados magnéticos exóticos abrem caminho para redes neurais em hardware

Estados magnéticos exóticos abrem caminho para redes neurais em hardware
As setas coloridas indicam as polarizações norte e sul - o maior interesse está nas conjunções dessas polarizações, que criam estados exóticos nunca antes vistos.[Imagem: Gartside et al. - 10.1038/s41565-017-0002-1]
Além do binário
Virtualmente toda a computação depende do armazenamento dos dados em memórias magnéticas. Cada bit é essencialmente definido com a direção em que estão apontando ímãs microscópicos - se ele aponta para o norte é 0, se para o sul é 1.
Agora, Jack Gartside e seus colegas do Imperial College de Londres descobriram como gravar qualquer padrão magnético em nanofios - gravar diferentes padrões magnéticos significa que os sistemas de armazenamento, como os discos rígidos, podem não ficar mais limitados a 0 ou 1.
Mais do que isso, a equipe demonstrou que sua técnica funciona como base para processadores neuromórficos, um hardware que funciona de forma mais parecida com o cérebro humano, e para as redes neurais artificiais.
Redes neurais em hardware
A novidade consiste no aproveitamento de estados magnéticos exóticos, como o ponto onde três pólos sul se encontram. Essa junção representa um sistema complexo, que pode ser usado para emular muitos sistemas complexos encontrados na natureza, como a forma como nossos cérebros processam informações.
Sistemas de computação projetados para processar informações como o cérebro são conhecidos como redes neurais artificiais. Já existem poderosas redes neurais baseadas em software, mas o interesse maior tem sido sua criação em hardware, com ganhos de eficiência incalculáveis.
"Com este novo método de escrita, nós abrimos a possibilidade de treinar esses nanofios magnéticos para que eles resolvam problemas úteis. Se tivermos sucesso, isso trará as redes neurais em hardware mais próximas da realidade," disse Gartside.
Além das aplicações em computação, o método pode ser usado para estudar aspectos fundamentais dos sistemas complexos, criando estados magnéticos que estão longe de serem ótimos - como três polos iguais juntos - e ver como o sistema responde.
A demonstração ainda é complicada do ponto de vista prático, dependendo da ponta de um microscópio de força atômica, mas não há em tese nada que impeça a automação do processo, como se fosse a cabeça magnética de um disco rígido.

Bibliografia:

Realization of ground state in artificial kagome spin ice via topological defect-driven magnetic writing
Jack C. Gartside, Daan M. Arroo, David M. Burn, Victoria L. Bemmer, Andy Moskalenko, Lesley F. Cohen, Will R. Branford
Nature Nanotechnology
DOI: 10.1038/s41565-017-0002-1

terça-feira, 26 de setembro de 2017

Guia prático para a aplicação de Machine Learning nos negócios

Mary Branscombe, CIO/EUA

Publicada em 23 de setembro de 2017 no site CIO


Resultado de imagem para machine learning

O Machine Learning está transformando negócios. Mas ainda que a tecnologia avance, as empresas continuam lutando para tirar proveito dela, em grande parte porque não entendem como implementar estrategicamente Machine Learning no atendimento de objetivos de negócios. O Hype não ajudou, semeando confusão sobre o que é exatamente a tecnologia, o quão bem funciona e o que pode fazer para sua empresa.
Aqui, nós fornecemos um olhar claro sobre o aprendizado da máquina e como pode ser usado hoje.
O que é?
Machine Learning é um subconjunto de Inteligência Artificial que permite que os sistemas aprendam e prevejam resultados sem programação explícita. Muitas vezes, é usado de forma intercambiável com o termo IA porque é a técnica de IA que teve o maior impacto no mundo real até agora, e é o que você provavelmente usará em sua empresa. Chatbots, recomendações de produtos, filtros de spam, carros autônomos e uma enorme variedade de outros sistemas aproveitam o Aprendizado de Máquinas, assim como "agentes inteligentes" como Siri e Cortana.

Em vez de escrever algoritmos e regras que tomem decisões diretamente, ou tentar programar um computador para "ser inteligente" usando conjuntos de regras, exceções e filtros, o Machine Learning ensina sistemas informáticos a tomar decisões aprendendo com grandes conjuntos de dados. Os sistemas baseados em regras rapidamente se tornam frágeis quando precisam explicar a complexidade do mundo real; A Aprendizagem Automática pode criar modelos que representam e generalizam padrões nos dados que você usa para treiná-lo, e pode usar esses modelos para interpretar e analisar novas informações.
O Aprendizado Automático da máquina é adequado para a classificação, que inclui a capacidade de reconhecer texto e objetos em imagens e vídeos, bem como encontrar padrões e associações  em dados ou segmentar dados em clusters (por exemplo, encontrar grupos de clientes). O Machine Learning também é adepto da previsão , como o cálculo da probabilidade de eventos ou resultados de previsão. E pode ser usado para gerar dados faltantes; por exemplo, a versão mais recente do CorelDRAW usa Machine Learning para interpolar o curso suave que você está tentando extrair de vários cursos difíceis que você faz com a caneta.
O coração do Machine Learning são os algoritmos. Alguns, como regressões, k-means clustering e suporte de máquinas vetoriais, estão em uso há décadas. A chave para o uso efetivo  está na combinação do algoritmo certo com o seu problema.
Redes Neurais
Uma Rede Neural é um algoritmo de Aprendizado de Máquina construído em uma rede de nós interconectados que funcionam bem para tarefas como reconhecimento de padrões.

Não são um novo algoritmo, mas a disponibilidade de grandes conjuntos de dados e processamento mais poderoso (especialmente as GPUs, que podem lidar com grandes fluxos de dados em paralelo) as tornaram úteis na prática. Apesar do nome, as Redes Neurais são baseadas apenas vagamente em neurônios biológicos. Cada nó em uma rede neural possui conexões para outros nós que são acionados por entradas. Quando desencadeada, cada nó adiciona um peso à sua entrada para marcar a probabilidade de que ele faça ou não a função desse nodo. Os nós são organizados em camadas fixas tarvés das quais os dados fluem, ao contrário do cérebro, que cria, remove e reorganiza regularmente conexões de sinapse.
Deep Learning
O Deep Learning é um subconjunto do Machine Learning baseado em Redes Neurais profundas, que têm muitas camadas para realizar a aprendizagem em várias etapas. As chamadas Convolutional Deep Neural Networks geralmente realizam o reconhecimento da imagem ao processar uma hierarquia de recursos em que cada camada procura objetos mais complicados. Por exemplo, a primeira camada de uma rede profunda que reconhece raças de cães pode ser treinada para encontrar a forma do cachorro em uma imagem, a segunda camada pode observar texturas como pele e dentes, com outras camadas reconhecendo ouvidos, olhos, caudas e outras características e o nível final que distingue as diferentes raças. Já as Recursive Deep Neural Networks são usadas ​​para reconhecimento de fala e processamento de linguagem natural, onde a seqüência e o contexto são importantes.

Existem muitos kits de ferramentas de aprendizado profundo de código aberto disponíveis que você pode usar para criar seus próprios sistemas. Theano , Torch Caffe são escolhas populares, e o TensorFlow, do Google e o Microsoft Cognitive Toolkit permitem que você use vários servidores para criar sistemas mais poderosos com mais camadas em sua rede.
O Microsoft Distributed Machine Learning Toolkit colabora com vários desses kits de ferramentas de Deep Learning e e outras bibliotecas de Machine Learning, e tanto a AWS como a Azure oferecem máquinas virtuais com ferramentas de aprendizado profundas pré-instaladas.
Aprendizado de Máquinas na prática
Os resultados do Machine Learning são uma certeza percentual de que os dados que você está procurando correspondem ao que seu modelo está treinado para encontrar. Assim, uma Deep Learning treinada para identificar as emoções de fotografias e vídeos de rostos das pessoas pode marcar uma imagem como "97,6% de felicidade 0,1% tristeza 5,2% surpresa 0,5% neutro 0,2% raiva 0,3% desprezo 0,01% detesto 12% de medo". ML gera probabilidades e incerteza, não resultados exatos.

O Probabilistic Machine Learning  usa o conceito de probabilidade para permitir que você realize a aprendizagem automática sem a escrita de algoritmos Em vez dos valores estabelecidos das variáveis ​​na programação padrão, algumas variáveis ​​na programação probabilística têm valores que se enquadram em um alcance conhecido e outros têm valores desconhecidos. Trate os dados que deseja entender como se fosse o resultado deste código e você pode trabalhar para trás para preencher o que esses valores desconhecidos deveriam ser para produzir esse resultado. Com menos codificação, você pode fazer mais prototipagem e experimentação; A Probabilistic Machine Learningtambém é mais fácil de depurar.
Esta é a técnica que o recurso Clutter no Outlook usa para filtrar mensagens que são menos propensas a serem interessantes para você com base nas mensagens que você leu, respondeu e excluiu no passado. Ele foi construído com Infer.NET, um framework .NET que você pode usar para construir seus próprios sistemas probabilísticos.
Já Computação Cognitiva é o termo que a IBM usa para suas ofertas do Watson, porque em 2011, quando uma versão anterior ganhou o Jeopardy, o termo IA não estava na moda; Ao longo das décadas em que foi trabalhado, a IA passou por períodos alternados de hype e fracasso.
O Watson não é uma única ferramenta. É uma mistura de modelos e APIs que você também pode obter de outros fornecedores, como Salesforce, Twilio, Google e Microsoft. Estes oferecem os chamados serviços "cognitivos", como reconhecimento de imagem, incluindo reconhecimento facial, reconhecimento de fala (falante), compreensão de linguagem natural, análise de sentimentos e outras API de reconhecimento que se parecem com habilidades cognitivas humanas. Quer se trate da Watson ou dos Microsoft Cognitive Services, o termo cognitivo é realmente apenas uma marca de marketing para designar uma coleção de tecnologias (muito úteis). Você poderia usar essas APIs para criar um chatbot a partir de uma página de FAQ existente que pode responder a consultas de texto e também reconhecer fotos de produtos para fornecer as informações de suporte corretas ou usar fotos de etiquetas de prateleiras para verificar os níveis de estoque. Programação com o poder da IBM: Com a IBM Cloud, um jovem desenvolvedor criou um chatbot e ajudou motoristas a economizarem milhões Patrocinado 
Muitas APIs "cognitivas" usam Deep Learning, mas você não precisa saber como elas foram construídas porque muitos funcionam como APIs REST que você chama de seu próprio aplicativo. Alguns permitem criar modelos personalizados a partir de seus próprios dados. O Salesforce Einstein possui um serviço de reconhecimento de imagem personalizado e as APIs Cognitivas da Microsoft permitem que você crie modelos personalizados para texto, fala, imagens e vídeo.
Isso é facilitado pela transferência de aprendizagem, que é menos uma técnica e mais um efeito colateral útil de redes profundas. Uma Rede Neural Profunda que foi treinada para fazer uma coisa, como traduzir entre inglês e mandarim, descobre uma segunda tarefa, como traduzir entre inglês e francês, de forma mais eficiente. Isso pode ser porque os números muito longos que representam, digamos, as relações matemáticas entre palavras como "bigs" e "larges" são até certo ponto comuns entre as linguas, mas nós realmente não sabemos.
A transferência de aprendizagem não é bem compreendida, mas pode permitir que você obtenha bons resultados de um conjunto de treinamento menor. O Microsoft Custom Vision Service usa transferência de aprendizagem para treinar um reconhecedor de imagem em apenas alguns minutos, usando 30 a 50 imagens por categoria, em vez de milhares, geralmente necessárias para obter resultados precisos.
IA
Crie seu próprio sistema de aprendizagem de máquinas
Se você não quer APIs pré-construídas, e você tem os dados para trabalhar, há uma enorme variedade de ferramentas criar sistemas de Machine Learning, desde scripts R e Python, até análises preditivas usando Spark e Hadoop, para ferramentas específicas da AI e estruturas.

Em vez de configurar sua própria infraestrutura, você pode usar serviços de Deep Learnig na nuvem para criar modelos de dados. Com os serviços em nuvem, você não precisa instalar uma variedade de ferramentas. Além disso, esses serviços desenvolvem mais conhecimentos necessários para obter resultados bem-sucedidos.
Amazon Machine Learning oferece vários modelos de Machine Learning que você pode usar com dados armazenados em S3, Redshift ou R3, mas você não pode exportar os modelos e o tamanho do conjunto de treinamento é bastante limitado. O Azure ML Studio, da Microsoft, por sua vez, possui uma gama mais ampla de algoritmos, incluindo Deep Learning, além de pacotes R e Python, e uma interface gráfica de usuário para trabalhar com eles. Também oferece a opção de usar o Azure Batch para carregar periodicamente conjuntos de treinamento extremamente amplos, e você pode usar seus modelos treinados como APIs para seus próprios programas e serviços. Existem também recursos de aprendizado de máquina, como o reconhecimento de imagens incorporados em bancos de dados em nuvem, como o SQL Azure Data Lake, para que você possa fazer sua máquina aprendendo onde seus dados estão.
Aprendizagem supervisionada
Muitas técnicas de Machine Learning utilizam a aprendizagem supervisionada, em que uma função é derivada de dados de treinamento rotulados. Os desenvolvedores escolhem e rotulam um conjunto de dados de treinamento, colocam uma proporção desses dados para testes e marcam os resultados do sistema de Machine Learning para ajudá-lo a melhorar. O processo de treinamento pode ser complexo, e os resultados são muitas vezes probabilidades, com um sistema sendo, por exemplo, 30 por cento mais seguro de ter reconhecido um cachorro em uma imagem, 80 por cento seguro de que encontrado um gato, e talvez até com 2 por cento certeza de ter encontrado uma bicicleta. Os feedeback dos desenvolvedores iajudam o sistema definir a melhor a resposta no futuro.

É importante não treinar o sistema com precisão aos dados de treinamento; Isso é chamado de superposição e significa que o sistema não poderá generalizar para lidar com novas entradas. Se os dados mudam significativamente ao longo do tempo, os desenvolvedores precisarão treinar o sistema devido ao que alguns pesquisadores referem como "ML rot".
Algoritmos de aprendizado de máquina - e quando usá-los
Se você já sabe quais são os rótulos de todos os itens do seu conjunto de dados, atribuir rótulos a novos exemplos é um problema de classificação. Se você está tentando prever um resultado como o preço de venda de uma casa com base em seu tamanho, isso é um problema de regressão porque o preço da casa é uma categoria contínua e não discreta. (Prever se uma casa irá vender por mais ou menos do que o preço pedido é um problema de classificação, porque estas são duas categorias distintas).

Se você não conhece todos os rótulos, não pode usá-los para treinamento; Em vez disso, você classifica os resultados e deixa o seu sistema criar regras que façam sentido, a partir de  respostas corretas ou erradas, no que é conhecido como aprendizagem não supervisionada. O algoritmo de ML não supervisionado mais comum é o clustering, que deriva a estrutura dos seus dados, observando as relações entre variáveis ​​nos dados. O sistema de recomendação de produtos da Amazon que diz o que as pessoas que compraram um item também tendem a comprar usa aprendizado não supervisionado.
Com o reinforcement learning, o sistema aprende como ver ao ver o que acontece. Você configura um conjunto claro de recompensas para que o sistema possa julgar o sucesso de suas ações. O aprendizado de reforço é adequado ao jogo porque há recompensas óbvias. O DeepMind AlphaGo do Google usou o reinforcement learning para aprender Go. O Project Malmo, da Microsoft, permite que os pesquisadores usem o Minecraft como um ambiente de aprendizagem de reforço. E um bot construído com o algoritmo de aprendizagem de reforço da OpenAI recentemente venceu vários jogadores de primeira linha no jogo Dota 2, da Valve .
A complexidade da criação de recompensas precisas e úteis limitou o uso da aprendizagem de reforço, mas a Microsoft vem usando uma forma específica de aprendizagem de reforço chamado contextual bandits (com base no conceito de multi-armed slot machine) para melhorar significativamente as taxas de clique na MSN. Esse sistema já está disponível no Microsoft Custom Decision Service API. A Microsoft também está usando um sistema de aprendizagem de reforço em um piloto onde os chatbots do serviço ao cliente monitoram o quão úteis são suas respostas automatizadas.
Combinando algoritmos de aprendizagem de máquinas para obter melhores resultados
Muitas vezes, é preciso mais de um método de Machine Learning para obter o melhor resultado. Os sistemas ensemble learning usam múltiplas técnicas de ML combinadas. Por exemplo, o sistema DeepMind, que bateu jogadores humanos experientes no Go, usa não apenas o aprendizado de reforço, mas também o aprendizado profundo e o aprendizado supervisionado para aprender com milhares de partidas gravadas entre jogadores humanos. Essa combinação às vezes é conhecida como aprendizagem semi-supervisionada.

Da mesma forma, o sistema de ML usado pelo Microsoft Kinect para reconhecer os movimentos humanos foi construído com uma combinação de um sistema discriminatório - no qual a Microsoft alugou um sistema de captura de movimento de Hollywood, extraiu a posição do esqueleto e rotulou as partes do corpo para classificar qual das várias posturas conhecidas em que estava - e um sistema generativo, que usou um modelo das características de cada postura para sintetizar milhares de imagens para dar ao sistema um conjunto de dados suficientemente grande para aprender.
A análise preditiva muitas vezes combina diferentes técnicas de ML. Um modelo pode marcar qual a probabilidade de um grupo de clientes estar em condições de churn, com outro modelo que preveja qual canal você deve usar para entrar em contato com cada pessoa com uma oferta que possa mantê-los como clientes.
Navegando pelas desvantagens do aprendizado da máquina
Como os sistemas de aprendizado de máquinas não estão explicitamente programados para resolver problemas, é difícil saber como um sistema chegou aos seus resultados. Isso é conhecido como um problema de "caixa preta", e pode ter consequências, especialmente em indústrias reguladas.

À medida que o Machine Learning se torna mais amplamente utilizado, você precisará explicar por que seus sistemas fazem o que fazem. Alguns mercados - habitação, decisões financeiras e cuidados de saúde - já possuem regulamentos que exigem que você dê explicações para as decisões. Você também pode querer transparência algorítmica para que você possa auditar o desempenho do sistema de Machine Learning. Os detalhes dos dados de treinamento e os algoritmos em uso não são suficientes. Existem muitas camadas de processamento não-linear que ocorrem dentro de uma Deep Learning, tornando muito difícil entender por que uma rede profunda está tomando uma decisão específica. Uma técnica comum é usar outro sistema de Machine Learning para descrever o comportamento do primeiro.
Você também precisa estar ciente dos perigos do viés algorítmico, como quando um sistema de Machine Learning reforça o viés em um conjunto de dados que associa homens com esportes e mulheres com tarefas domésticas porque todos os seus exemplos de atividades esportivas têm fotos de homens e todas as pessoas retratadas nas cozinhas são mulheres. Ou quando um sistema que correlaciona informações não médicas toma decisões que prejudicam as pessoas com uma determinada condição médica.
O Machine Learning será tão bom quanto os dados de treinamento que ele usa para construir seu modelo e os dados que ele processa, por isso é importante examinar os dados que você está usando. Sistema ML também não compreendem os dados ou os conceitos por trás deles como uma pessoa consegue fazer.
Há muitos problemas de reconhecimento e classificação que o aprendizado da máquina pode resolver de forma mais rápida e eficiente do que os humanos, mas, considerando o futuro previsível, Machine Learning deve ser considerado como um conjunto de ferramentas para apoiar as pessoas no trabalho em vez de substituí-las.

quarta-feira, 16 de agosto de 2017

Desenvolvimento de soluções cognitivas IoT para detecção de anomalias através de deep learning

Redação iMasters em 07/08/2017

Introduzindo redes de memória de curto e longo prazo e de deep learning – Detectando anomalias nos dados da série temporal IoT usando deep learning
Série de conteúdo:
Este conteúdo é parte 1 de 5 na série: Desenvolvimento de soluções cognitivas IoT para detecção de anomalia usando deep learning
Embora as previsões sejam sempre controversas, o Gartner diz que há 8,4 bilhões de dispositivos IoT conectados em 2017 (sem contar smartphones) e alguns analistas dizem que até 2020 haverá 50 bilhões. Mesmo que seja superestimado, em breve o número de dispositivos IoT excederá o número de seres humanos no planeta. E adivinhe, todos esses dispositivos estão gerando dados continuamente; dados que são inúteis, a menos que você possa analisá-los.
Um sistema cognitivo fornece um conjunto de capacidades tecnológicas, como inteligência artificial (AI), processamento de linguagem natural, aprendizado de máquina e aprendizado de máquina avançado para ajudar a analisar todos esses dados. Os sistemas cognitivos podem aprender e interagir naturalmente com humanos para obter informações sobre os dados e ajudá-lo a tomar melhores decisões. No meu último artigo, afirmei que a computação cognitiva não é apenas uma interação homem-computador (IHC), é uma aprendizagem de máquina avançada conduzida por algoritmos poderosos (modelos) e capacidades de processamento de dados quase ilimitadas.
Para entender um sistema cognitivo que usa sensores IoT e análise de deep learning, primeiro você precisa entender o salto da aprendizagem de máquina avançada para as redes neurais. Neste artigo, tento ajudá-lo a dar esse salto. Nas próximas semanas, apresentarei três tutoriais diferentes sobre a detecção de anomalias em dados de séries temporais no Apache Spark usando os frameworks de aprendizagem profunda Deeplearning4j, ApacheSystemML e TensorFlow (TensorSpark) para ajudá-lo a entender completamente como desenvolver soluções cognitivas IoT para detecção de anomalias usando a aprendizagem profunda.
Da aprendizagem de máquinas para redes neurais e aprendizagem profunda
Se um sistema cognitivo é baseado em modelos, você precisa olhar primeiro para o que é um modelo de aprendizagem de máquina. É um modelo estatístico (caixa preta) que em contraste a um modelo físico (caixa branca) foi treinado com dados para aprender um padrão oculto.
Veja a Tabela 1. Ela contém dados históricos sobre diferentes parâmetros, observações mensuradas  em um pipeline de fabricação e um resultado binário.
Tabela 1. Modelo de aprendizagem em máquina
Part No.Max Temp. 1Min Temp. 1Max Vibration 1Outcome
100353512Healthy
101363521Healthy
13056463412Faulty
Neste exemplo altamente artificial, os números falam por si mesmos. Como você pode imaginar, uma alta temperatura e alta vibração levaram a uma parte defeituosa. A causa raiz dessa situação deve ser o resultado de um rolamento quebrado em uma máquina.
Neste exemplo, um algoritmo de aprendizagem de máquina (supervisionado) é capaz de considerar todos esses dados (e muito mais) para aprender e prever falhas a partir de dados puros. O componente que esse algoritmo produz é chamado de modelo de aprendizagem de máquina.
Um tipo especial de algoritmo de aprendizagem de máquina é uma rede neural. Ela é altamente adaptável aos dados e é capaz de aprender qualquer função matemática oculta entre os dados e o resultado. O único senão com redes neurais é a enorme quantidade de recursos computacionais e dados que elas precisam para executar bem. Então, por que estou falando sobre redes neurais artificiais? Nós vivemos em um mundo IoT com enormes quantidades de dados disponíveis e também (quase) energia computacional ilimitada disponível usando a nuvem. Esta situação torna as redes neurais especialmente interessantes para o processamento de dados IoT.
As redes neurais são inspiradas pelo cérebro humano, assim como as redes de deep learning. A principal diferença entre uma rede neural e uma rede deep learning é a adição de múltiplas camadas neurais. O exemplo mais óbvio de como a aprendizagem profunda está superando o aprendizado de máquina tradicional é o reconhecimento da imagem. Todo sistema de última geração usa um tipo especial de rede neural de deep learning (chamada rede neural de convolução) para executar suas tarefas.
Por exemplo, os algoritmos de reconhecimento de imagem baseados em aprendizagem profunda são capazes de distinguir partes saudáveis de partes defeituosas em uma pipeline de fabricação. Eu chamaria isso de inteligência da máquina e está disponível como no IBM Watson Visual Recognition Service. Para este exemplo particular, a máquina pode realizar a mesma tarefa com a mesma precisão que um ser humano. A única vantagem da máquina é que ela nunca dorme, nunca está doente e nunca se machuca. E, se você precisa dobrar a produtividade, basta duplicar a quantidade de recursos de hardware ou de nuvem. Mas a aplicação de uma análise de causa de raiz sobre o porquê das partes às vezes serem defeituosas continua sendo o domínio de especialistas humanos. No entanto, esse cenário é onde as soluções cognitivas aplicam aprendizagem profunda.
De fato, um serviço de reconhecimento visual retorna muito mais informações do que apenas um resultado binário de “saudável” ou “defeituoso”. Assim como um humano, o serviço detecta estruturas e regiões nas imagens que se desviam da norma. Agora, se você estivesse correlacionando todos os dados de sensores de som e vibração com todos os dados de reconhecimento visual, tenho certeza de que um sistema desse tipo poderia detectar a causas raiz das falhas tão bem quanto ou até mesmo melhor do que os humanos.
Como as redes neurais artificiais funcionam
Se os sensores IoT conectados a um corretor de mensagens (como a Plataforma IBM Watson IoT baseada em MQTT) são o sistema nervoso central das soluções cognitivas, então o deep learning é o cérebro. E, para entender o deep learning, você precisa de uma compreensão básica de regressão, perceptrons, redes neurais biológicas e artificiais e camadas ocultas.
Comece com regressão linear e logística
Existe uma tonelada de literatura científica sobre a regressão, então vou tentar dar uma explicação do caminho curto adaptada para desenvolvedores. Considere a Tabela 2. É o mesmo que a Tabela 1, exceto que aqui eu tornei o resultado uma representação binária.
Tabela 2. Dados da rede neural artificial
Part No.Max Temp. 1Min Temp. 1Max Vibration 1Outcome
1003535121
1014635211
130564634120
É muito fácil escrever um pedaço de software para fazer a classificação.
1def  predict  (datapoint): 
2     if  datapoint.MaxVibration1 > 100 :
3         return 0
4     else :
5         return 1
Este exemplo de um modelo de caixa branca é onde seu conhecimento do sistema físico subjacente (ou um especialista em domínio que examina os dados) ajudou a criar algumas regras. A ideia de aprendizagem de máquina é fazer com que as máquinas aprendam essas regras a partir de dados. E a forma como este aprendizado é realizado é usando um esqueleto e um algoritmo de otimização para preencher as partes faltantes do esqueleto. Eu usarei esse esqueleto (regressão linear):
1def  predict (dp) :
2     return  a + b * dp.MaxTemp1 + c * dp.MinTemp1 + d * dp.MaxVibration1
Como você pode ver, se eu escolher os parâmetros b e c para ser 0, a para ser 1 e d para ser -0,0002930832 (que é -1/3412), acabo bastante próximo do resultado necessário. E a boa notícia é que os parâmetros a, b, c e d podem ser aprendidos a partir de um algoritmo. O resultado: aprendizado de máquina!
Você pode notar que os resultados não são exatamente 1 ou 0 porque a regressão linear é um modelo contínuo (tentando prever os valores do tipo flutuador). Mas o que eu quero é um classificador binário. Deixe-me transformar este algoritmo em um modelo de regressão logística apenas adicionando uma função auxiliar chamada sigmoid.
1import  math
2  
3def  sigmoid (x):
4    return  1 / (1  +  math.exp( - x))
5  
6def  predict (dp):
7    return  sigmoid(a + b * dp.MaxTemp1 + c * dp.MinTemp1 + d * dp.MaxVibration1)
A função sigmoide não faz outra coisa além de comprimir um intervalo de infinito negativo para infinito positivo para um intervalo de 0 – 1. A única coisa que preciso fazer é definir um limite, por exemplo, transformando valores <0,5 para 0 e> 0,5 para 1 .
Figura 1. O intervalo do mapa de função sigmóide
A rede neural mais simples: perceptron
Você já dominou a rede neural mais simples: um perceptron. É semelhante a um modelo de regressão logística – com algumas diferenças insignificantes. Mas o termo “redes neurais” soa muito mais frio, não é? Olhe para o perceptron na Figura 2.
Figura 2. Um perceptron
Eu tenho nossa entrada para o modelo x_1 para x_n, e os parâmetros do modelo w_1 para w_n. E, então, eu somo tudo e comprimo com uma função de ativação (por exemplo, sigmoid). Se eu escrever este modelo um pouco diferente, ele parece isso:
1out(x_1,x_2,…,x_n) = activation_function(w_0+w_1*x_1+w_2*x_2++w_n*x_n)
E se eu substituir activation_function com sigmoid, volto à regressão logística. A única coisa é que agora parece um pouco mais a estrutura de um cérebro. Mas como é o cérebro humano?
Das redes neurais biológicas às redes neurais artificiais
Olhe para o neurônio biológico na Figura 3. Em termos matemáticos, os dendritos são as “entradas” onde os dados a ascendentes são alimentados, o corpo da célula (e as sinapses) calculam a soma e a “função de ativação”, e o “resultado” é enviado para a jusante sobre o axônio para subsequentes neurônios a jusante.
Figura 3. Neurônio biológico
E porque é divertido (pelo menos é para mim), olhe a Figura 4 sobre uma sinapse biológica conectando neurônios (bioquimicamente) juntos. Esta figura representa o conjunto de valores w_n no perceptron.
Figura 4. Sinapse biológica
Se você prender vários neurônios juntos, você terá um cérebro ou uma rede neural artificial como mostrado na Figura 5.
Figura 5. Rede neural artificial
A diferença está na camada oculta
A maior diferença entre essa rede artificial e o perceptron é a camada oculta. Sobre o que é tudo isso? É útil? Talvez. Pelo menos no cérebro humano, as camadas ocultas parecem ser úteis porque temos centenas de camadas escondidas empilhadas em nosso cérebro. Neste exemplo de rede neural feed-forward na Figura 6, você pode ver que os modelos estão empilhados.
Figura 6. Empilhamento de camadas de rede neural para reconhecimento de imagem
Não pode vê-lo? Veja como este modelo seria exibido em uma linguagem de programação. Mas antes de fazer isso, deixe-me dizer-lhe um segredo. Um segredo que os matemáticos usam para assustar a todos. Mas é totalmente simples. Estou falando sobre a multiplicação de vetores. Então, o que é um vetor? Apenas uma lista de números, nada mais. Os programadores podem chamá-lo de uma matriz. E a multiplicação em vetores é definida de maneira ligeiramente diferente. Diz que se você tem um vetor x = (x_1, x_2, …, x_n) e outro vetor w = (w_1, w_2, …, w_n) e se você multiplicar x*w o resultado é um valor único: w_1*x_1+w_2*x_2+…+w_n*x_n
Este modelo parece familiar para você? Caso não seja, veja novamente a regressão linear. Eu posso computar um único neurônio calculando sigmoid (x*w). E porque o Python não suporta a multiplicação de vetores por padrão, eu posso usar uma biblioteca chamada numpy para fazer isso. Vou começar a computar um único neurônio:
1import numpy as np
2  
3datapoint = {" MaxTemp1 ": 35 , " MinTemp1 ": 35 , " MaxVibration1 ": 12 }
4  
5#randomly initialize weights
6w_layer1 = np.random.rand(4)
7  
8def  neuron1 (dp):
9    x = np.array([ 1 ,dp[" MaxTemp1 "],dp[" MinTemp1 "],dp[" MaxVibration1 "]])
10    return  sigmoid(x.dot(w_layer1))
11  
12print (neuron1 ( datapoint ) )
Se eu quiser computar vários neurônios ao mesmo tempo (por exemplo, todos os neurônios de uma camada), então eu posso usar esta função várias vezes. Mas os matemáticos inventaram mais uma coisa para confundir você (no caso de você ter sobrevivido à multiplicação de vetores): multiplicação da matriz. Nas redes neurais, você pode aplicar cálculos como em regressão linear várias vezes em paralelo, e você pode escrever isso como uma multiplicação de matriz nesta forma.
Mais uma vez, eu suponho que nossa entrada está no vetor x = (x_1, x_2, …, x_n). Mas agora eu quero calcular todos os neurônios na camada oculta ao mesmo tempo. Em vez de multiplicar x por um vetor de peso w para calcular um único neurônio, multiplico x com uma matriz de peso w =
w_1_1,  w_1_2,.., w_1_m
w_2_1,  w_2_2,.., w_2_m
w_n_1,  w_n_2,.., w_n_m
A multiplicação da matriz define w*x =
(w_1_1*x_1,  w_1_2*x_2,.., w_1_m*x_n,
w_2_1*x_1,  w_2_2*x_2,.., w_2_m*x_n,
w_n_1*x_1,  w_n_2*x_2,.., w_n_m*x_n)
Meu resultado é um vetor de valores flutuadores que eu, então, posso alimentar na próxima camada. Aqui o mesmo código no Python:
1import numpy as np
2  
3#make sigmoid function applicable to vectors instead of scalars only
4def  sigmoid (z):
5    s =  1.0  / ( 1.0  + np.exp(- 1.0  * z))
6      return  s
7  
8datapoint = {" MaxTemp1 ": 35 , " MinTemp1 ": 35 , " MaxVibration1 ": 12 }
9  
10#randomly initialize weights, now as a matrix for the four hidden layer neurons
11w_layer1 = np.random.rand(4,4)
12  
13def  layer 1 (dp):
14    x = np.array([ 1 ,dp[" MaxTemp1 "],dp[" MinTemp1 "],dp[" MaxVibration1 "]])
15      return  sigmoid(x.dot(w_layer1))
16  
17print ( layer 1 ( datapoint ) )
Como você pode ver, o fragmento de código x.dot (w_layer1) não muda nada. Mas, internamente, uma multiplicação de matriz é aplicada em vez de uma multiplicação vetorial porque w_layer1 é agora uma matriz em vez de um vetor. Finalmente, preciso adicionar a camada de saída e, então, acabei:
1w_layer2 = np.random.rand( 5 , 2 )
2  
3def  layer2 (x):
4    x = np.concatenate(([ 1 ],x))
5      return  sigmoid(x.dot(w_layer2))
6  
7print (layer2(layer1(datapoint)))
Claro, a matriz de peso w não está treinada, mas apenas inicializada aleatoriamente. O treinamento de uma rede neural está além do escopo deste artigo.
Nota: Esta rede neural aleatória emite dois números de flutuação. Esses números são as probabilidades de um item pertencente a uma classe ou a outra. Novamente, porque a rede neural não está treinada, esses números não fazem sentido por enquanto.
[ 0.97435552   0.89144977]
Aprofundando na camada oculta
Qual é o propósito da camada oculta? Cada camada pode ser vista como um algoritmo de aprendizagem de máquina individual por si própria. A saída de uma camada a montante é usada como entrada e sua saída é passada para a próxima camada, que então a leva como entrada para a próxima camada, e assim por diante. Esse comportamento significa que, ao empilhar camadas e criar uma rede neural profunda, o sistema está aprendendo representações intermédias de dados para ajudar uma camada a jusante a apresentar melhor desempenho. O exemplo mais inspirador é o sistema de visão do cérebro humano. As primeiras camadas (as que estão logo após seus fotorreceptores) não reconhecem rostos, carros e gatos, mas reconhecem formas como linhas, círculos, retângulos e pontos. Quanto mais profundo você vai, mais coisas uma camada pode reconhecer… até que você eventualmente reconheça toda a imagem.
Isso me leva à conclusão desta seção: Uma rede neural de feed-forward profunda pode aprender qualquer função matemática (contanto que sejam fornecidos dados suficientes e poder de computação para treiná-la).
Os dados da série temporal precisam de redes de memória de curto e longo prazo
Espero que esteja convencido de que as redes neurais são bastante poderosas. Mas, infelizmente, quando se trata de dados da séries temporais (e os dados IoT são principalmente dados de séries temporais), as redes de feed-forward têm um senão. Essas redes são ruins ao reconhecer as sequências porque elas não possuem memória. Uma solução para este problema é a adição de ciclos de feedback.
Figura 7. Ciclos de Feedback
Esses ciclos de feedback de alguma maneira consertam o problema porque agora a rede pode se lembrar. Mas funciona apenas em eventos temporariamente fechados. Se a rede deve lembrar de eventos temporais mais distantes, as células de memória devem ser adicionadas aos neurônios para obter uma rede de memória de curto e longo prazo (LSTM) como mostrado na Figura 8.
Figura 8. Redes de memória de curto e longo prazo
O treinamento precisa de poder de computação
Qual a desvantagem de uma rede LSTM? Ela precisa de muitos dados e muito poder de computação para alcançar um bom desempenho ao usar redes neurais. A boa notícia é que os cartões atuais da unidade de processamento gráfico (GPU) têm o mesmo poder de computação que um cluster de núcleo de 16.000 em 2009. E a IBM está no processo de liberar um chip neuromórfico como uma oferta do IBM Watson Group com o mesmo poder de computação, mas consumindo apenas 3 watts. Portanto, há esperança para futuras melhorias no desempenho e economia de energia.
As redes LSTM estão superando os algoritmos de última geração na previsão de séries temporais e detecção de anomalia, conforme descoberto nas seguintes publicações:
  • Redes de Memória de Curto e Longo Prazo para Detecção de Anomalia em Séries Temporais;
  • Aprendizagem profunda para Modelagem de Séries Temporais CS 229 Relatório Final do Projeto;
  • Detecção de anomalia baseada em Autoencoder Variacional usando Probabilidade de Reconstrução.
As redes LSTM podem aprender qualquer algoritmo
Por que estou falando tudo isso para um cenário cognitivo IoT? Uma vez que uma rede LSTM é Turing completa. Isso significa que uma rede LSTM pode aprender qualquer algoritmo que um computador possa executar. Ponto final.
E isso contrasta com muitos dos algoritmos de aprendizado de máquinas de última geração que são usados para previsões de séries temporais e detecções de anomalia, que são as disciplinas sobre as quais o IoT cognitivo trata. Em aplicações cognitivas IoT, você precisa prever o Estado futuro do sistema para tomar medidas regulatórias antecipadamente, ou você quer ser notificado se algo estiver fora de ordem.
Então, qual é o problema com os algoritmos de última geração? Nenhum. Estou dizendo que as LSTM geralmente funcionam melhor do que a última geração; às vezes significativamente, às vezes um pouco, e raramente pior (especialmente se você tiver dados suficientes para treinar o sistema). Depende do seu caso de uso, se o ganho em precisão justificar os custos computacionais adicionais.
Caso de uso de demonstração: Detecção de anomalias para dados de séries temporais IoT
Eu quero que você comece a pensar neste caso de uso de demonstração. Este caso de uso será a base para os tutoriais de acompanhamento. Considere a tarefa de detectar anomalias em dados de sensores de vibração (acelerômetro) que medem um rolamento. Você deve anexar um sensor ao rolamento, como mostrado na Figura 9.
Figura 9. Sensor do acelerômetro em um rolamento
“Um atractor de Lorenz é um modelo físico teórico de equações diferenciais comuns proposto em 1963 por Edward Lorenz, um dos pioneiros na teoria do caos. (Você pode ler mais sobre os sistemas Lorenz neste artigo da Wikipedia). No modelo, x, y e z compõem o estado do sistema. No nosso caso, as intensidades de vibração atuais do rolamento a serem simuladas, onde t é tempo e σ (sigma), ρ (rho), β (beta) são os parâmetros do sistema. Para mudar este modelo de estado saudável para estado defeituoso, estou apenas alterando ligeiramente os parâmetros σ (sigma), ρ (rho), β (beta), o que resulta em uma trajetória completamente diferente do estado do sistema x, y e z em relação a tempo.”
Um sensor de acelerômetro registra vibrações em cada um dos três eixos geométricos x, y e z. Existem sensores mais sofisticados que também levam em consideração os padrões de movimento rotativo, mas estamos bem com esse simples, pois pode ser encontrado em todo smartphone. (Se quiser aprender como acessar e analisar o acelerômetro em seu smartphone, você pode seguir este tutorial.) Como é difícil levar esse sistema com você, preciso implementar um simulador no Node-RED para gerar dados usando um modelo físico de atração Lorenz. Eu usarei esses dados gerados nos tutoriais para detectar anomalias, basicamente prevendo quando um rolamento está prestes a quebrar.
Posso mudar o gerador de dados de teste entre dois estados: saudável e defeituoso. A Figura 10 é um gráfico de fase que mostra as três dimensões de vibração em uma série temporal em um estado saudável.
Figura 10. Gráfico de fase de um estado saudável
Com o mesmo gráfico de fase da Figura 10, você pode observar quando alterar os parâmetros do modelo físico levemente para obter um estado defeituoso.
Figura 11. Gráfico de fase em um estado defeituoso
Se você não está familiarizado com os gráficos de fase, aqui está um gráfico de execução na Figura 12 e Figura 13 para os valores de três eixos (novamente em estado saudável e defeituoso).
Figura 12. Gráfico de execução em um estado saudável
Figura 13. Gráfico de execução em um estado defeituoso
Uma técnica comum é transformar esses dados do tempo para o domínio da frequência usando DFT (transformação discreta de Fourier) ou wavelets. Novamente, estou mostrando na Figura 14 e na Figura 15 o DFT para estados saudáveis e defeituosos.
Figura 14. Transformação de Fourier discreta de estado saudável
Figura 14. Transformação de Fourier discreta de estado defeituoso
Você pode ver claramente que o estado defeituoso tem mais energia e frequências adicionais presentes. Estes dados seriam suficientes para treinar um classificador como você aprendeu antes. Mas nós podemos fazer melhor. Construiremos um sistema capaz de aprender um comportamento normal a partir de dados, e depois de ver novos dados (não vistos) (ou padrões sequenciais) ele emitirá um alerta.
Esse sistema é um auto-encoder baseado em LSTM como mostrado na Figura 16.
Figura 16. Modelo do auto-encoder LSTM
Este sistema comprime a grande quantidade de dados através de um gargalo neural para tentar reconstruir os mesmos dados que viu, mas, obviamente, usando um gargalo, perde grandes quantidades de dados irrelevantes. Essa rede neural aprende como um sistema normalmente se comporta e, assim que novos padrões são vistos, tem dificuldade para reconstruir os dados e eleva um alerta.
Conclusão
Neste ponto, você deve ter uma compreensão suficiente das redes neurais e sobre o que a aplicação de conceitos de deep learning aos seus dados pode fazer pelos seus dados IoT em seu sistema cognitivo.
No próximo conjunto de tutoriais, vou focar no uso de diferentes tecnologias no Apache Spark para implementar um sistema de deep learning e no consolidar ainda mais sua compreensão sobre o impacto que tal tecnologia pode ter em seus sistemas. Vou falar sobre soluções de código aberto e abertas por padrão em execução no IBM Cloud, como Deeplearning4j, Apache SystemML e TensorFlow (TensorSpark).
Recursos para download
***
Romeo Kienzler faz parte do time de colunistas internacionais do iMasters. A tradução do artigo é feita pela Redação iMasters, com autorização do autor, e você pode acompanhar o artigo em inglês no link: https://www.ibm.com/developerworks/analytics/library/iot-deep-learning-anomaly-detection-1/index.html