«

»

nov 06 2017

Machine Learning e o Engenheiro de Redes

Machine Learning e o Engenheiro de Redes.

 

 

Como em posts anteriores, vamos iniciar fazendo a pergunta clássica:

“Como a Machine Learning pode afetar a vida de um Engenheiro de Redes e/ou SysAdmin?”

Nosso objetivo não é esgotar o assunto, mas sim fazer uma breve síntese sobre o tema e mostrar aos profissionais de redes onde e como a Machine Learning poderá interferir nas tarefas diárias, assim como apresentar aplicações que deverão melhorar substancialmente a produtividade de um Engenheiro de Redes e/ou SysAdmin.

O tema não é novo e, lamentavelmente, não é tratado nos programas dos cursos Superiores de Tecnologia em Redes de computadores do País. Nem como componente curricular e tampouco em disciplinas optativas interdisciplinares.

Tudo começou em 1950 com Alan Turing propondo o conceito de uma “Machine Learning” que poderia aprender e tornar-se artificialmente inteligente. Naquele momento o conceito era discutido apenas de forma teórica por parte dos cientistas da computação. A semente plantada por Turing foi sendo regada por diversos cientistas durante 67 anos e talvez o resultado que chamou mais atenção, para a comunidade leiga, foi quando o Deep Blue da IBM, utilizando os conceitos de Machine Learning, bate o campeão mundial no xadrez da época, o russo Garry Kasparov.

Associado, pela proposta de Turing, como um ramo da Inteligência Artificial, os cientistas – nos primeiros anos da pesquisa – sonhavam em construir máquinas complexas — possibilitadas por computadores que emergiam na época — que possuíssem as mesmas características da inteligência humana. Alguns diretores de cinema, levaram esses sonhos para a ficção cientifica e nos contaram histórias empolgantes como :HAL, 2001 uma Odisseia no espaço , Arthur C. Clarke, Stanley Kubrick, de 1968; O Homem Bicentenário, Chris Columbus, 1999;  I.A, Steven Spielberg ,2001 ; Eu, Robô, Alex Proyas,2004 ; ELA (Sistema Operacional Samantha, Spike Jonze ,2013 e outros. Mas a I.A tem suas limitações e ainda não permite criar algo do tipo, pelo menos não ainda.

Mas, o que é, na verdade, uma Machine Learning?

Existem várias definições para Machine Learning: as dos dicionários, as formais; formais com símbolos matemáticos; etc. Vamos definir da forma mais simplista possível.

Machine Learning é a utilização de algoritmos (programas), em princípio simples, associados com grandes conjuntos de dados de tal forma que possa “aprender” padrões existente nestes dados e fazer adivinhações (inferências) no universo pesquisado.

Então ao invés de implementar, manualmente, as rotinas de software, com centenas de linhas de código, com um conjunto específico de instruções para completar uma tarefa em particular, a Máquina é “treinada” usando uma quantidade grande de dados e algoritmos que dão e ela – a Máquina –  a habilidade de “aprender” como executar a tarefa, como por exemplo: classificar e-mails em SPAM ou não SPAM; Detecção de fraudes, Previsão de falhas de determinados equipamentos e muito mais.

Porque só agora a Machine Learning está tendo tanta relevância?

Em ciências e na própria Tecnologia da Informação, algumas ideias, descobertas e/ou criações ou estão muito a frente de seu tempo ou precisam de algum fato ou condições ou evolução tecnológica para que sejam aceitas ou tenham sucesso.

Em 1972 a Xerox criou o Xerox Alto o primeiro computador pessoal com interface gráfica da história, suportava o Smalltalk , ícones e mouse, já utilizava todos os conceitos gráficos hoje presentes no Windows e MAC. Um outro exemplo foi o NeXT, projeto do Steve Jobs criado em 1985 quando estava fora da Apple. Um último exemplo – para não nos estendermos nesse tema – foi o PDA, avó dos SmartPhones, criado em 1990 já previa todas as funcionalidades do smartphones mais potentes dos dias de hoje. Todos esses projetos estavam muito a frente de seu tempo e tiveram um consagrado fracasso.

No caso da Machine Learning, na época de sua concepção, já haviam muitos algoritmos e técnicas matemáticas e estatísticas, contudo – o fator preponderante para seu sucesso –  foi a evolução da ciência de dados que se deu com a Internet dando a luz aos conceitos: Data Warehouse, Data Mining, Data Smart, Big Data, Computação em Nuvem, etc. E Isto só foi possível a partir da década de 90.

O que pode, de fato, fazer uma Machine Learning?

Existem muitas aplicações que você utiliza no dia a dia e que, implicitamente, empregam o conceito de Machine Learning. Vejamos alguns exemplos:

Aplicações em nossa vida cotidiana

Waze.

O aplicativo Waze, através de milhares de dados relativos a rotas e colaborações, aprende em tempo real com os próprios usuários quais são os melhores caminhos e faz as recomendações para você sair dos congestionamentos economizar tempo, combustível e dinheiro;

Netflix

As recomendações – de filmes ou series -que a Netflix te faz são baseadas em Machine Learning. A Netflix é um exemplo de empresa que utiliza todos recursos / conceitos implícitos em uma Machine Learning.

Assistente Pessoal.

Quem não teve a curiosidade de utilizar ou já utilizou o Cortana (Microsoft), Siri (Apple), Google Now e Tina (Android)?

Cada um, desses assistentes, tem sua peculiaridade, mas em suas funções básicas funcionam muito bem. Este é mais um exemplo de pesquisas avançadas na área de Machine Learning.

Amazon

A Amazon tem investido fortemente em seu projeto conhecido como Alexa, com um grande foco em reconhecimento de voz. Ford e GE já anunciaram que passarão a adotar a tecnologia para comando de voz. A Ford adotará a tecnologia em seus automóveis e a GE em diversos eletrodomésticos.

Outras Aplicações

Sistema de previsão meteorológica. Hoje nossos meteorologistas têm um grande índice de acerto em suas previsões, devido a utilização de Machine Learning.

Os carros autônomos do Google que dirigem sozinhos. Essa é a essência de Machine Learning.

Saber o que os clientes estão dizendo sobre você no Twitter. Machine Learning combinado com a criação de regra linguística.

Detecção de fraudes? Um dos usos mais óbvios e importantes em nosso mundo de hoje.

Previsão de falhas em equipamento.

Detecção de invasão na rede.

Filtragem de spams no e-mail.

E no universo das redes & internet?

Algoritmo de pesquisa do Google

Dentro deste universo temos várias aplicações, talvez a mais despercebida pela maioria das pessoas é o algoritmo de busca do Google. Já na barra de busca quando você digita algumas letras de uma palavra, a aplicação tenta adivinhar a palavra ou frase que você – está pensando – deseja pesquisar.

Gerenciamento de Redes

A plataforma DNA Center da Cisco contém componentes de Machine Learning. Embarcada nos switches da série Catalyst 9000, a DNA Center gerencia políticas de acesso e privilégios para dispositivos e aplica controles de segurança específicos através das ferramentas de segurança. A Cisco diz que a DNA Center será capaz de analisar o tráfego e reconhecer as infecções por malware com base na maneira (padrão de comportamento) como eles movem pacotes pela rede

Otimização do caminho WAN

Uma rede utilizando tecnologia de Machine Learning poderia detectar períodos sazonais na Internet e prever quando haverá tráfego de pico (por exemplo, em um determinado dia da semana, no período da manhã ou tarde), antecipar dinamicamente o congestionamento e tomar medidas proativas para desviar o tráfego para caminhos alternativos.

Segurança de rede

O arsenal das ferramentas de ataques é impressionante e a combinação desse ferramental com a sutileza de novos artefatos de emboscadas eletrônicas são assustadoras.

O problema é que as nuances desses atentados eletrônicos evoluem o tempo todo, enquanto que a atual abordagem de segurança empregada tem como base as assinaturas / comportamentos racionais para proteger as vulnerabilidades conhecidas.

Uma provável solução utilizando Machine Learning, seria criar um modelo normal – baseado em observações de dados coletados (Logs) – para o comportamento da rede e detectar outliers. Toda vez que essas anomalias fossem identificadas um alerta seria disparado para os administradores da rede.

Detecção de erros

A Cisco sugeriu que sua Rede de Auto-aprendizagem poderia potencialmente identificar os dispositivos de rede mal desenvolvidos (com falhas de software e hardware) que não poderiam ser identificados com ferramentas tradicionais.

Seria uma ferramenta importante em um projeto de rede prevendo diversos dispositivos de vários fabricantes, como por exemplo uma rede IoT

Mas, qual o pré-requisito para ingressar no universo ML?

Como ML é associada a algoritmos, você certamente estará fazendo as seguintes perguntas: Preciso ser um bom programador e ter conhecimentos avançados de matemática para ingressar no universo de ML?

Nossas respostas são que para o nível principiante, você não precisa ter essas habilidades, mas à medida que for utilizando algoritmos mais sofisticados, deverá procurar ajuda nessas áreas de conhecimento.

Em algum momento você terá que começar a aprender programação. Perceba que a SDN está batendo à sua porta, ou você abre esta porta  ou invariavelmente terá sua carreira, de Engenheiro de Redes ou SysAdmim, encurtada. Leia nosso artigo “Um “SysAdmin” precisa conhecer Linguagem de Programação?

Inicialmente, você não precisará escrever uma única linha de código, basta aprender a utilizar duas categorias de softwares destinados a aplicação de ML. Estas categorias subdividem-se em: Ambientes Gráficos e Ambientes Orientados a Scripts.

Ambientes Gráficos:

Weka: É uma bancada gráfica de Machine Learning que fornece um explorador para preparar dados, executar algoritmos e revisar os resultados;

BigML: É um serviço que está na Nuvem e através de um web browser é possível enviar seus dados, prepará-lo e executar algoritmos sobre ele. Ele fornece interfaces limpas e fáceis de usar para configurar algoritmos e revisar os resultados;

Orange: É uma ferramenta de design para programação visual, que permite conectar conjuntamente a preparação de dados, os algoritmos e a avaliação de resultados para criar “programas” de Machine Learning.

Ambientes Orientados a Scripts:

Scikit-Learn: É um ambiente de script e biblioteca escritos com Python, fornecendo algoritmos de Machine Learning e pré-processamento de dados. Ele fornece uma grande quantidade de documentação e exemplos para iniciantes em ML;

Waffles: É uma coleção de ferramentas de linha de comando com objetivo de preparar e visualizar dados, executar algoritmos e resumir resultados.

Estes são os requisitos para um iniciante em ML, à medida que sinta necessidade de soluções mais sofisticadas, você perceberá a necessidade de aprender uma linguagem de programação – inicialmente Phyton –  e reforçar seus conhecimentos em estatística descritiva, probabilística e para um nível avançado a álgebra linear.

Recomendamos ainda a inscrição em alguns dos diversos cursos de ML, assim como a consulta aos seguintes livros sobre o assunto:

CONWAY, D.; WHITE, J. M.; Machine Learning for Hackers; 1ª Ed.; O’Reilly Media, Inc.; 2012

SEGARAN, T.; Programming Collective Intelligence; 1ª Ed.; O’Reilly Media, Inc.; 2007.

FRANK, E.; WITTEN, I. H; Data Mining: Practical Machine Learning Tools and Techniques; 2ª Ed.; Morgan Kaufmann; 2005.

Concluindo, certamente a Machine Learning, juntamente com SDN afetarão a maneira como um SysAdmin ou Engenheiro de Redes gerenciarão uma Rede de Computadores, principalmente aquelas de médio e grande porte.

O avanço da ML é tão grande que a indústria já procura por Machine Learning Engineer, para desenvolver e resolver problemas de ML. Alguns grandes players na indústria de TI, como a Microsoft, já desenvolveram formações e certificações na área de ML.

A IA limitada, certamente está longe de tornar realidade os sonhos dos cineastas citados neste post, mas a ML é uma realidade que você profissional de redes não pode ignorar.

Vamos lá, arregace as mangas e vamos iniciar nossa aprendizagem em Machine Learning.

Até o próximo post.

JC Vitorino, Sócio Diretor da CloudCampus

Professor Universitário há mais de 30 anos, Mestre em Engenharia da Computação pela USP/IPT e Bacharel em Matemática pela PUC/SP



Comente usando o Facebook!
0
0

Deixe uma resposta