inteligência artificial

O que é e como funciona Machine Learning?

Olá Web Developer!

Você provavelmente já deve ter ouvido o termo Machine Learning. Há momentos que parece algo muito fora da realidade, vindo de ficção científica. Porém, veremos aqui de forma bem simplificada o que é Machine Learning e como é possível as máquinas aprenderem.

O que é Machine Learning?

Machine Learning (também conhecido como Aprendizado de Máquina) é a aplicação da Inteligência Artificial de modo a permitir que máquinas possam aprender. Assim, podemos obter certos resultados sem precisar programar um sistema manualmente.

Onde podemos usar Machine Learning?

Qualquer sistema que precise tomar alguma decisão pode se beneficiar de Machine Learning, principalmente quando temos que tomar decisões baseadas em imensas quantidades de dados.

O exemplo mais comum são os carros autônomos. Outro exemplo bem conhecido é o catálogo de séries e filmes da Netflix, que te indica algo que provavelmente você gostará ao comparar o seu perfil com o de outros usuários parecidos.

Também podemos analisar movimentações bancárias para identificar fraudes, fazer previsões metereológicas, fazer uma análise do mercado financeiro, realizar diagnósticos médicos, etc.

Desenvolvedor Python Pleno
Formação: Desenvolvedor Python Pleno
Aprenda como trabalhar com banco de dados relacionais em aplicações Python utilizando a DB API e o MySQL.
CONHEÇA A FORMAÇÃO

Programação Comum vs Machine Learning

Se você desenvolve softwares sabe que ao programar nós precisamos de duas coisas: regras (o código que escreveremos) e dados (conjuntos de valores, normalmente fornecidos pelo usuário). Com esses dois itens, nosso programa nos entrega uma resposta.

Como exemplo, imagine que a gente queira criar um programa que indica se uma cor é clara ou escura. E então a gente precisa criar uma lógica para saber se uma cor é clara ou escura para finalmente escrevermos o código. Depois, nosso código irá receber as cores para então dar uma resposta, indicando se a cor é clara ou escura.

No Machine Learning nós mudamos um pouco o fluxo. Se quiséssemos que um programa nos diga se uma cor é clara ou escura, nós indicaríamos algumas cores (dados) e já indicaríamos se determinada cor é clara ou escura (respostas).

Com isso nós recebemos a regra, a qual a máquina irá usar para dizer se outras cores que ela ainda não conhece são claras ou escuras. Com isso teremos um programa que faz o que queremos sem a necessidade de termos nos preocupado em criar uma lógica e passar isso para o código com alguma linguagem de programação.

Isso pode parecer bobo, já que podemos descobrir se uma cor é clara ou escura com uma simples fórmula que é encontrada facilmente na Internet e pode ser escrita em poucas linhas de código.

function isDark(R, G, B){
    return (( R * 299 + G * 587 + B * 114) / 1000) <= 127;
}

Porém, imagine que ao invés disso você precise programar um sistema para controlar um carro pela cidade, obedecendo a sinalização, leis, evitando obstáculos, etc. Você consegue imaginar quantas linhas (e quantos IF’s) teria que escrever? Sem contar no tanto de possibilidades incomuns que podem acontecer, que obrigatoriamente necessitaria do carro poder saber tomar uma decisão que não esteja em sua programação.

Seria totalmente inviável escrever manualmente um código assim, sendo muito mais simples ensinar o sistema o que se deve fazer em cada ocasião e ele aprender com erros e acertos, até chegar ao ponto dele poder tomar suas próprias decisões em futuros eventos para o qual ele não foi programado.

Mas como as máquinas tomam decisões?

Existem vários tipos de algoritmos utilizados para o aprendizado de máquinas como Naïve Bayes, SVM, K-means, etc. Quando estudamos Machine Learning aprendemos os principais para poder escolher qual é o melhor para cada situação. Você não precisa necessariamente saber programar estes algoritmos, pois normalmente você utilizará bibliotecas que já possuem funções que os implementam.

Um dos que eu mais gosto de mostrar como exemplo é o KNN (k-Nearest Neighbors – K vizinhos mais próximos). Imagine que a gente pegue o código de algumas cores e joguemos em um plano cartesiano, simplesmente para podermos ter uma ideia visual do que acontece.
Vamos imaginar que obtemos o seguinte resultado:

Vamos dizer que os pontos vermelhos indicam as cores claras e os pontos azuis indicam as cores escuras. Nós mesmos indicamos quais são as cores claras e escuras ao computador. Isso se chama treinamento, etapa em que ensinamos a máquina. Portanto, é importante assegurar que a gente não tenha dados incorretos.

Após o treinamento, imagine que a máquina acabou de receber uma cor que nunca viu antes, que será indicada pelo ponto verde na imagem a seguir:

E agora, é uma cor clara ou escura? O KNN verifica quem são os vizinhos mais próximos. Podemos indicar quantos vizinhos queremos analisar.

Veja que se formos olhar os três pontos mais próximos do ponto verde, teremos 2 vermelhos e 1 azul. Então o computador classificaria esta nova cor como uma cor clara.

Conclusão

Machine Learning é basicamente possibilitar que sistemas possam aprender a tomar decisões a partir de certos algoritmos que fazem análise de dados, os quais devem estar bem formatados e organizados para evitar passar informações erradas ao computador na fase de treinamento.

Os lugares onde podemos aplicar Machine Learning são inúmeros, nos possibilitando desenvolver sistemas cada vez mais inteligentes para auxiliar nossas vidas.

Tendências de TI para 2019

O ano já começou a todo vapor! Por isso, nada melhor do que estar por dentro das tendências na área de TI para 2019. Além das coisas mudarem muito rápido, sempre aparece alguma novidade. Então, vamos começar o ano nos atualizando com as novidades e quais tecnologias continuam em alta neste ano que se inicia.

DevOps

Hoje em dia, quem conhece a cultura e as ferramentas DevOps conquista um bom destaque no mercado. Neste ano, a previsão é que este segmento da área de TI fique mais aquecido ainda.

Relembrando: DevOps é um modelo que combina práticas e ferramentas com a intenção de aumentar a capacidade de uma empresa distribuir seus serviços de forma muito mais rápida. Ela visa também a integração da área de desenvolvimento com a área de operação, pois assim conseguimos alcançar uma maior qualidade nas entregas, além de evitar falhas de comunicação entre as áreas, bem como atrasos e retrabalhamos nos projetos.

Essa é uma prática que vem ganhando muito destaque por causa dos processos de integração contínua e entrega contínua. As entregas são menores, visando as liberações de versões mais seguras, além dos ciclos de desenvolvimento menores, fazendo com que a qualidade aumente.

Outro ponto muito importante é o auxílio que ele traz no gerenciamento e controle sobre o ambiente e infraestrutura. Como a infraestrutura é gerenciada através de técnicas de desenvolvimento de software, tanto ela quanto os servidores são implantados muito rapidamente.

Docker DevOps - Para desenvolvedores
Curso de Docker DevOps - Para desenvolvedores
CONHEÇA O CURSO

Mas, como podemos implementar a cultura e as ferramentas DevOps?

Existem diversas ferramentas para nos ajudar. Possivelmente, você já deve ter ouvido falar sobre Docker. O Docker é um exemplo, assim como o Kubernetes, o Openshift, o Jenkins e outras ferramentas. Essas ferramentas facilitam a criação e manutenção desses ambientes, geralmente baseados em containers. Com elas, você consegue criar, implantar, migrar e muito mais, de um ambiente para outro, de maneira muito eficiente, rápida e segura.

Inteligência Artificial

A Inteligência Artificial continuará em alta, pois cada vez mais empresas estão utilizando ferramentas de IA para melhorar suas operações.

Hoje, podemos dar vários exemplos do uso de ferramentas de IA que impactam em nosso dia a dia. Um exemplo bem palpável é a popularização do uso de chatbots de atendimento ao cliente, que está sendo inserida para melhorar o suporte e rapidez nas informações. Outro exemplo é o algoritmo de reconhecimento facial que o Facebook utiliza para identificar pessoas em uma foto.

Entre as ferramentas de IA que vêm ficando mais populares e que continuarão em alta em 2019, nós podemos citar o TensorFlow. O TensorFlow é uma biblioteca de software muito poderosa para computação numérica usando grafos computacionais, sendo o principal software para desenvolvimento em Deep Learning e aplicações de Inteligência Artificial.

Outra ferramenta de IA que podemos citar e que vêm ganhando cada vez mais demanda pelo mercado de trabalho é o Azure Cognitive Services, da Microsoft. O Cognitive Services amplia o acesso de APIs de aprendizado de máquina.

Esses serviços permitem a criação de aplicativos inteligentes com algoritmos e funcionalidades avançadas (como reconhecimento de objetos em fotos, visão computacional, reconhecimento de fala e outras), podendo ser utilizados em apps, sites e bots para que eles entendam as necessidades do usuário, tudo isso sem precisar de conhecimentos específicos em IA. Todos estes serviços são oferecidos através de APIs e aplicações hospedadas no ambiente do Microsoft Azure, ou seja, através de Cloud Computing.

Frameworks de gestão

Apesar de não ser uma novidade, os frameworks de gestão sempre estarão em alta, pois o mercado em geral vem ficando cada vez mais alinhado com as boas práticas de gestão alinhadas com os processos de desenvolvimento.

Hoje, é imprescindível saber pelo menos um pouco sobre os principais frameworks como ITIL, SCRUM, Kanban e outros. Esses frameworks são importantes por estabelecerem boas práticas de TI no mundo corporativo, fazendo com que a gestão de projetos seja simples, dinâmica e com foco na melhoria geral dos resultados.

O ITIL é um dos frameworks mais adotados atualmente, tendo como foco o alinhamento dos serviços de TI aos objetivos do negócio. Após a sua adoção, os processos de TI tendem a ficar mais consistentes, além da maior eficácia na entrega dos serviços.

Visando ajudar o gerenciamento desses serviços, um outro framework também muito utilizado hoje em dia é o Scrum. Ele é muito aplicado a projetos de desenvolvimento de software, dividindo o trabalho em tarefas menores e incrementais, sempre monitoradas por meio de reuniões diárias. Tudo isso para que os objetivos sejam alcançados da melhor maneira possível.

Outro framework de gestão que vem se destacando cada vez mais é o Kanban. Ele é um quadro onde você sinaliza através de cartões ou post-its o andamento da sua tarefa, com a intenção de que todos os envolvidos do projeto saibam o que está acontecendo. É uma ótima ferramenta, pois além de ser bem visual, você consegue se manter atualizado rapidamente com relação ao andamento do projeto.

Curso de
CONHEÇA O CURSO

Concluindo

Essas são algumas das tendências que continuam em alta nesse ano. Certamente, as melhores vagas na área de TI em 2019 exigirão que você conheça alguns dos tópicos que foram abordados. Aqui na TreinaWeb, além de cursos das tendências que abordamos neste artigo, também existem diversos cursos de desenvolvimento de software e muitos outros que vão fazer você alavancar sua carreira na área de TI.