Você está na página 1de 14

INTELIGÊNCIA ARTIFICIAL E MACHINE LEARNING: O GUIA

COMPLETO.

O curso Inteligência Artificial e Machine Learning: O Guia Completo tem objetivo de


um guia completo sobre inteligência artificial e Machine Learning pois essa área de artificial ela
está sendo muito comentada hoje em dia e muitas pessoas querem saber mais sobre essa área e
muitas vezes tem dificuldades em saber qual a área de deve começar a estudar.

O curso mostra quais as principais áreas de inteligência artificial como os algoritmos de


busca, onde a ideia é quando tem um problema no estado inicial ao estado final e você quer
traçar uma rota para você sair de um estado por exemplo da cidade A até a cidade B e para isso
existem alguns algoritmos de busca como a busca gulosa e a busca estrela (A*). Os algoritmos
de otimização o Hill climb que é a subida da encosta Simulated annealing que é a temporar
simulada e também algoritmos genéticos. A implementação se trata de inserir manualmente
esses algoritmos usando o Python.

Esses são os pontos críticos da utilização terão uma base de dados de voos e o objetivo é
retornar como passagens de voos para um grupo de pessoas e também trabalhar com outro
estudo de caso simulando uma empresa que precisa transportar produtos em um caminhão e o
caminhão. Todas os módulos que utilizam a linguagem Python são desenvolvidos na plataforma
do Google Colab nesse caso não será necessário fazer a instalação adicional de ferramentas
outras IDE's.

O programa Python

A linguagem Python foi criada no ano de 1991 por um pesquisador desenvolvedor


chamado Guido van Rossum de origem holandesa e ele que foi responsável pelo
desenvolvimento dessa linguagem que foi criada em 1991.

Algumas vantagens e características da linguagem Python é ser simples e de fácil


aprendizado sendo o principal objetivo do desenvolvimento dela, diferentemente de outras
linguagens de programação, e por isso acaba sendo um pouco mais difícil para aprender os
conceitos.

Ela é portátil e essa palavra indica que ela funcionará no Windows, Linux e Mac e nos
diversos sistemas operacionais e o mesmo código funcionará em todas as plataformas. Ela
possui vários recursos para desenvolvimento WEB hoje em dia muitas aplicações web são
desenvolvidas utilizando Python sendo muito utilizada para inteligência artificial. A maioria dos
framewords mais avançados para trabalhar com inteligência artificial como por exemplo o
tensor flow do Google foi desenvolvido nessa linguagem de programação.

Também para trabalhar com Big Data, ou seja, quando se tem a manipulação de muitos
dados linguagem Python é muito interessante para esses cenários para área de ciência de dados,
para fazer análise dos dados, e a questão estatística também, computação gráfica e
processamento digital de imagens o Python é muito adequado para esses cenários também.
O outro item é sobre a popularidade dessa linguagem de programação e há atualmente
um crescimento maior ainda dessa linguagem por isso é muito importante ter um conhecimento
sobre o Python onde é possivel abrir mais as portas para o mercado de trabalho principalmente
por essa inteligência artificial e ao tópico que os dias estão sendo muito falado e se o usuário
souber a linguagem Python ele consequentemente conseguirá trabalhar mais facilmente em
inteligência artificial.

Terminologia de inteligência artificial.

Engloba uma visão geral de quase todas as áreas dentro da inteligência artificial pois
conhecendo essas áreas podemos decidir qual é a melhor técnica para um determinado tipo de
problema.

A primeira área é uma das mais antigas que são sistemas especialistas que a ideia é
coletar o conhecimento que um especialista humano possui em uma determinada área ou uma
base de dados e o sistema é capaz de dar respostas utilizando esses dados do especialista
humano, como por exemplo vamos supor que existe um médico especialista em doenças
cardíacas ele vai colocar todo o conhecimento dele dentro de um sistema e quando você vai
fazer algum tipo de pergunta, por exemplo: Qual doença é caracterizada pelo sintoma A, B e C ?
Então o sistema vai fazer a busca nessa base de dados e vai dar a resposta.

Sobre os sistemas especialistas essa não é uma área tão utilizada assim coisas e existem
técnicas mais avançadas. Outra área são os algoritmos de busca que é quando você tem um
ponto inicial e um ponto final e é necessário ter um algoritmo para traçar a melhor rota sendo
muito utilizado em sistemas de GPS quando você indica a cidade de origem e a cidade destino.

Outro exemplo de são os algoritmos de otimização que tem muitas aplicabilidades nas
empresas por exemplo uma empresa tem o objetivo de maximizar o lucro e minimizar as
despesas. Esses algoritmos podem ser utilizados para essa tarefa como por exemplo vamos
supor que você tenha um caminhão e precisa carregar vários produtos. Então qual é o melhor
conjunto de produtos que você deve carregar para maximizar o lucro da empresa?

Outra área que certa forma também é bastante antiga e hoje em dia não é tão utilizada é
o raciocínio baseado em casos e o exemplo pode ser a área jurídica aonde você tem vários
casos passados e quando uma pessoa comete um crime o juiz precisa fazer análise dos casos
anteriores para tomar decisão no caso atual. Então você armazena os casos anteriores em uma
base de dados de casos e quando você quiser recuperar os casos similares você utiliza alguns
algoritmos específicos que vão retornar nos casos são os mais parecidos.

Outra área é a lógica difusa também chamada de lógica Fuzzy que é muito utilizada
principalmente empresas para fazer controle de equipamentos que precisam ser desligados
automaticamente caso eles estejam aquecendo demais e por exemplo e temos a área de
Machine Learning essa que é a área mais relevante hoje em dia dentro da inteligência artificial
com a maior parte das aplicações modernas são feitas utilizando essas técnicas e basicamente
são algoritmos que aprendem por meio de bases de dados.

E dentro também nas áreas de Machine Learning existe essa outra área de Deep
Learning que faz a utilização de redes neurais para a resolução de problemas complexos, ou
seja, aquelas com aplicações mais modernas que são feitas utilizando essas técnicas deep
learning como por exemplo detecção de objetos, carros autônomos descoberta de vacinas de
novos medicamentos, e assim por diante.
Outra área é a ciência de dados inclusive existe a profissão que é um cientista de dados
e basicamente utiliza algoritmos de Machine Learning para trazer em sites para as empresas
para ajudar na tomada de decisão.

O processamento de linguagem natural que a ideia trabalhar com textos ou também se


trabalha com fala onde exemplos clássicos são Chef Bolton, ou seja, aqueles robôs de conversa
que interage quando você está no atendimento com uma empresa. E ainda ao invés de falar com
uma pessoa o Chef Bolton vai resolver o problema para você e também pode ser utilizado para
fala onde o algoritmo analisa a sua fala e faz a geração de legendas automáticas.

Outra área é a mineração de dados que envolve a exploração dos dados em geral
utilizando técnicas de Machine Learning nos seus algoritmos para listar bases de dados e temos
a área da visão computacional que como o próprio nome indica é para colocar a visão em
computadores como se fosse a visão humana e alguns exemplos são: detecção de faces,
reconhecimento facial, criação automática de imagens (aquelas imagens chamadas de faces) e
são faces de pessoas que nunca existiram e são criadas utilizando essa técnica de visão
computacional.

Os sistemas multiagente que a ideia de se ter vários agentes que se comunicam para
resolver um determinado problema um exemplo clássico é caso você queira comprar um carro
você precisa acessar o site das lojas e verificar carro por carro modelo por modelo ligar para as
lojas e tentar fazer negociação com os vendedores humanos em um sistema multiagente podem
existir vários vendedores inteligentes em cada loja e esses agentes negociam entre si para te
darem a melhor oferta sem necessidade de se ter um vendedor humano entre aspas.

E por fim temos essa outra área que é a computação afetiva que a ideia de simular
emoções em robôs em agentes ou para que os agentes os robôs eles identifiquem qual emoção
que você tá passando por exemplo vamos supor que você tá fazendo um curso online e existe
um agente de computação afetiva que está analisando suas expressões baseado nas suas
expressões tem como identificar se você está entendendo ou não está entendendo o conteúdo e
caso você não esteja entendendo o conteúdo o próprio agente inteligente podem direcionar uma
tarefa complementar ou explicar o conteúdo de uma forma diferente por exemplo e estas foram
algumas das principais áreas de inteligência artificial.

ALGORITMOS DE BUSCA

Teoria sobre buscas.

À resolução de problemas utilizando algoritmos de busca se utiliza dos componentes de


um problema que são: Estado Inicial, Estado Final, Espaço de estado, Ações para passar de
um estado a outro, solução. Portanto um Algoritmo serve para representar uma solução para
um problema sendo uma linguagem intermediária entre a humana e as de programação.

O ponto de partida é chamado de Estado Inicial que se desloca ate o objetivo onde
queremos chegar que é o Estado Final. Porém entre o Estado Inicial até Estado Final tem um
espaço chamado de Espaço de estado que se refere a todas as possíveis soluções que unem ou
orientam Estado Inicial até o Estado Final. O quarto componente são as ações para passar de
um estado a outro e por fim temos como resultado a solução (trajeto ou caminho que leva do
Estado Inicial até o Estado Final).

Exemplos práticos é o jogo das peças (8-PUZZLE) que se trata de organizar os números
naturais de 1 ao 8 em ordem crescente num tabuleiro onde os deslocamentos da primeira peça
(Estado Inicial) são o Espaço de estado e cada movimento a partir da primeira peça movida
são ações para passar de um estado a outro até se encontre a solução (os numerais em ordem
crescente no tabuleiro). O Estado Final é quando a ultima peça é colocada em ordem. Outro
exemplo são deslocamentos de um lugar ao outro onde podemos encontrar a solução para que o
Estado Inicial se uma até o Estado Final por múltiplas rotas.

O jogo da velha em uma configuração em que se podem marcar com o X ou com a


bolinha na horizontal ou vertical essas possibilidades são ações para passar de um estado a
outro (marcações no tabuleiro) dentro do Espaço de estado (possibilidades de vencer o jogo) e
se chegar ao Estado Final (quando um dos 2 jogadores vence o jogo) e assim se encontra a
solução (trajeto ou caminho que leva do Estado Inicial até o Estado Final).

A função do Algoritmo é identificar dentre o Espaço de estado qual é o melhor


caminho que leva o Estado Inicial até o Estado Final.

HEURÍSTICA.

A heurística é uma técnica empregada para que o Algoritmo possa escolher qual é a
melhor possibilidade de solução para o Estado Inicial se deslocar até o Estado Final. No jogo
de xadrez são muitas peças e as peças têm movimentações diferentes tem se a informação que o
numero de possibilidades para se escolher a melhor jogada no xadrez é 10 56 (1 seguido de 56
zeros) que é um número maior que o numero de elétrons no universo o que nos levar afirmar
que um computador não consegue processar tamanha quantidade de informações.

Quando trabalhamos com Algoritmos de busca dificilmente vamos conseguir traçar


todas as possibilidades de solução, e para que se diminua o espaço desses dados podemos
utilizar a heurística sendo uma forma de resolver um problema. E envolve um cálculo
matemático que vai indicar para qual direção seguir a resolução do problema sem verificar todas
as possibilidades, indicando o quão perto ou o quão longe está da solução problema.

VETOR ORDENADO.

Outra técnica de organizar os dados e levar o Estado Inicial até o Estado Final é
através de vetores ordenados onde os dados estão organizados na ascendente ou decrescente de
valores – chave, ou seja, com o menor valor no índice (os valores estão em ordem no vetor) e
cada célula mantendo um valor maior que a célula abaixo. Não existe uma ordem entres esses
elementos.

A busca com algoritmos é um método bastante utilizado em programação, pois


necessitamos de informações que podem ser adquiridas através dela. Os vetores são uma de
verificar a existência de um valor que está inserido nele. No caso de intervalos numéricos o
vetor quer encontrar a solução de qual o melhor ponto dentro de um intervalo que satisfaz o
problema. A ordenação consiste em dispor elementos sejam numéricos ou letras em uma
sequência, seguindo algum critério.

A ordenação se faz com a inserção de um elemento. No vetor não ordenado não


precisa respeitar uma ordem. Portanto vemos que a ordenação consiste em dispor elementos em
uma determinada sequência, seguindo algum critério (vetor ordenado) ou não (vetor não
ordenado). Por exemplo, uma sequencia numérica e na linguagem de programação são os dados
numéricos, pode ser crescente ou decrescente. Como no exemplo abaixo:

1 – 2 – 4 – 5 – 8.

Outro método de busca se utilizando algoritmos é a Busca Linear realizada quando um


algoritmo simples faz a pesquisa de um elemento em um vetor desordenado, mas de modo
sequencial de forma que o primeiro elemento da sequencia terá o índice 0.

A busca binária se utiliza de operadores lógicos encontra um item em uma lista


ordenada de itens e funciona utilizando a média N/2 na porção da lista que deve conter o
elemento, até reduzir as localizações possíveis a apenas uma.

CRIAÇÃO DO MAPA DAS CIDADES.

Um problema a ser resolvido na busca com algoritmos muito comum é explorar o grafo
a partir de um vértice. Por exemplo, dada uma cidade Arad no ponto de partida ou estado
inicial até Bucareste, por quais outras cidades (espaço de estado) eu consigo chegar seguindo
as estradas do grafo (ações para passar de um estado a outro) até o estado Final (cidade
Bucareste) e encontrar a solução do problema?
Na prática de implementação em um vetor para criação de mapas de cidades podemos
obter grafos no programa Phyton onde os operadores de implementação que através de funções
e comandos específicos obtém a lista de vértices adjacentes (que seriam as cidades adjacentes
ao ponto inicial Arad) a um determinado vértice do grafo e assim se cria a estrutura do grafo e
verificamos como podemos percorrer esse grafo para encontrar a melhor solução que leva a
cidade Arad no ponto de partida ou estado inicial até Bucareste (estado final).

GRAFO - BUSCA GULOSA.

Os algoritmos lidam com uma sequencia de passos, sendo que em cada passo ha um
conjunto de escolhas. Uma estratégia para resolver problemas são os algoritmos gulosos, os
quais escolhem um caminho ou opção que parece ser o melhor no momento. Embora nem
sempre seja possível uma resolução com a busca gulosa ela é eficiente em uma ampla variedade
de problemas.

A ideia é encontrar qual é o melhor caminho para o algoritmo traçar e encontrar uma
solução com a menor distancia possível entre dois trechos ao invés de fazer a verificação em
todos os vértices do grafo ou a solução do problema consiste em encontrar numa estrutura
algébrica chamada grafo não direcionado com pesos nas arestas, uma opção simples que inclua
todos os vértices do grafo (o vértice é adjacente ao outro vértice se existe aresta no grafo que
uma os dois vértices) de tal forma que a soma dos pesos das arestas seja mínimo.

Aplicando a heurística utilizando a distancia em linha reta onde a ideia é verificar qual
cidade, por exemplo, possuía a menor distancia em linha reta que para encontrar a melhor
solução que leva a cidade Arad no ponto de partida ou estado inicial até Bucareste (estado
final). Ao invés de percorrer todas as cidades que estão mais longe do objetivo (a cidade a ser
localizada), basta aplicar o algoritmo em sistemas de GPS. Esses sistemas já armazenam uma
tabela com todas as distancias em linha reta e assim a tomada de decisão é mais fácil.
Na prática de implementação de busca gulosa obtemos grafos no programa Phyton onde
os operadores de implementação que através de funções e comandos específicos obtém a lista
de vértices adjacentes a um determinado vértice do grafo e assim se cria a estrutura do grafo e
verificamos como podemos percorrer esse grafo para encontrar a melhor solução que leva a
cidade Arad no ponto de partida ou estado inicial até Bucareste (estado final).

No debug de Busca Gulosa é demonstrado o passo a passo de processos na


programação no programa Phyton onde os operadores de implementação que através de
funções e comandos específicos identificam, removem ou inserem qualquer tipo de
deslocamento da primeira cidade Arad (Estado Inicial) pelo o Espaço de estado e cada
descolamento e m linha a partir da primeira cidade (ações para passar de um estado a outro)
até se encontre a solução (chegada em Bucareste) na Busca Gulosa existente no código-fonte de
um programa no momento de encontrar a melhor solução que leva a cidade Arad no ponto de
partida ou estado inicial até Bucareste (estado final). Para isso se aplicam na implementação a
inserção de vetor ordenado, percorrendo grafos na busca de seus vértices adjacentes (heurística
de linha reta). A partir da análise da estrutura do sistema, os erros de digitação e problemas
como funções mal estruturadas podem também ser rastreados.

GRAFO - BUSCA ESTRELA (A*)

O Estrela A* foi o algoritmo que deu ideia para implementação de sistemas de GPS,
sendo muito utilizado por jogos de tiro. Supondo que você está jogando em parceria com o
computador e que ele é o seu adversário, quando ele encontrar você ele vai traçar a menor rota
da posição que ele está até a posição que você se encontra para que ele consiga atingir o seu
alvo.
A Busca Estrela se utiliza da busca em largura (BFS) que é um tipo de algoritmo de
busca em grafos busca ou travessia no grafo e estrutura de dados do tipo árvore começando pelo
vértice raiz explorando os vértices vizinhos. De forma que para cada um desses vértices mais
próximos, vai exploramos os seus vértices vizinhos e assim por diante, até que ele encontre o
Estado final.
A Busca Estrela é o algoritmo aplicado no exemplo do deslocamento de Arad até
Bucareste que busca o caminho em um grafo de um vértice inicial até um vértice final fazendo a
combinação de aproximações heurísticas assim como na Busca Gulosa, onde o algoritmo
soluciona o problema de encontrar o caminho mais curto num grafo dirigido ou não dirigido
com arestas.
O algoritmo considera um conjunto de menores caminhos, iniciado com um vértice
inicial. A cada passo do algoritmo a partir do vértice inicial (Arad) busca-se nas adjacências dos
vértices pertencentes o vértice com menor distância relativa a vértice inicial e adiciona-o a
aquele vértice com menor distância e, então, repetindo os passos até que todos os vértices
alcançáveis pelo vértice inicial estejam no vértice com menor distância do estado final
(Bucarest). O somatório entre linhas retas entre a distância dos vértices encontrados determina
qual é o vértice que apresenta a menor distancia. As arestas que ligam vértices já pertencentes
ao vértice com menor distância são por fim desconsideradas.
Sendo mais eficiente do que a Busca Gulosa, pois além de utilizar a heurística que uma
informação sobre o problema a mostra a distancia real entre as cidades que levam a melhor
solução que leva a cidade Arad no ponto de partida ou estado inicial até Bucareste (estado
final) podendo avaliar os custos financeiros do deslocamento avaliando rotas mais curtas e se
existe pedágio na trajetória.
Se houver uma parada durante o percurso devemos levar em consideração que o trajeto
vai aumentar em numero de horas até chegar ao Estado final e pode se aplicar heurística para
detectar o custo do caminho, ou seja, o custo alto médio baixo considerando o pedágio se o
trecho é perigoso ou não ou se tem muitos assaltos em determinadas partes da estrada ou então
qual a rota que tem mais pontos turísticos. Assim o usuário pode escolher qual trajeto para
realizar um passeio e qual trajeto para chegar mais rápido ao seu destino. Então pode se aplicar
uma serie de heurística de acordo com o problema que se deseja solucionar.
Na prática de implementação de Busca Estrela obtemos grafos no programa Phyton
onde os operadores de implementação que através de funções e comandos específicos obtém a
lista de vértices adjacentes a um determinado vértice do grafo e assim se cria a estrutura do
grafo e verificamos como podemos percorrer esse grafo para encontrar a melhor solução que
leva a cidade Arad no ponto de partida ou estado inicial até Bucareste (estado final).
No debug de Busca Estrela é demonstrado o passo a passo de processos na
programação no programa Phyton onde os operadores de implementação que através de
funções e comandos específicos identificam, removem ou inserem qualquer tipo de
deslocamento da primeira cidade Arad (Estado Inicial) pelo o Espaço de estado e cada
descolamento e m linha a partir da primeira cidade (ações para passar de um estado a outro)
até se encontre a solução (chegada em Bucareste) na Busca Gulosa existente no código-fonte de
um programa no momento de encontrar a melhor solução que leva a cidade Arad no ponto de
partida ou estado inicial até Bucareste (estado final). Para isso se aplicam na implementação a
inserção de vetor ordenado, percorrendo grafos na busca de seus vértices adjacentes (heurística
de linha reta). A partir da análise da estrutura do sistema, os erros de digitação e problemas
como funções mal estruturadas podem também ser rastreados.
No debug de Busca Estrela os dados são inseridos em sistemas de pilha onde o último
elemento a ser inserido, será o primeiro a ser retirado permitindo o acesso a apenas a um
elemento que é o último inserido nesse caso para processar o penúltimo elemento inserido, o
último deve ser removido.

ALGORITMOS DE OTIMIZAÇÃO

Assim como utilizamos a heurística no jogo das peças (8-PUZZLE) e também no


deslocamento de Arad até Bucareste. Outro estudo de caso é escolher voos para as pessoas
minimizar os custos das passagens e também outro estudo referente a transporte de produtos.

Os Algoritmos de otimização podem ser utilizados para remanejar voos de uma


empresa para, por exemplo, maximizar os lucros. Entre quatro cidades A, B, C e D, o algoritmo
de otimização pode ajudar a decidir qual cidade visitar primeiro. E são diversos os meios de
transporte como, por exemplo: carro, trem, avião e barco, que servem para se deslocar de uma
cidade a outra e cada transporte possui um custo diferente e com o objetivo de reduzir o custo
da passagem podemos aplicar um algoritmo de otimização que vai indicar qual ordem das
cidades que devem ser visitadas e depois da ultima cidade até a sua casa. As agencias de
turismo pode utilizar essa técnica para vender pacotes mais baratos.

Outra aplicação seria na organização da grade horária em escolas e universidades onde


cada disciplina tem as suas restrições, por exemplo, algumas ocorrem de manhã, outras à tarde
ou à noite. Os horários dos professores também variam, sendo uma tarefa complexa
organizar manualmente essa agenda então um algoritmo de otimização pode receber
como parâmetro todos os dados do problema e vai retornar a agenda já pronta.

Um caminhão com vários produtos a serem transportados e o objetivo é maximizar o


lucro que a empresa vai ganhar transportando cada um desses produtos. Um exemplo é o celular
ele é muito mais caro que um refrigerador que ocupa um espaço maior no caminhão. Sendo
mais interessante transportar 50 celulares que 1 refrigerador. Um algoritmo de otimização vai
gerar a melhor combinação de produtos para maximizar o lucro da empresa. E esse tipo de
algoritmo também faz em uma rede de computadores o roteamento de pacotes. E também outro
exemplo os algoritmos genéticos inspirados na evolução das espécies.
HILL CLIMB (SUBIDA DE ENCOSTA)

O Hill climb começa com uma solução randômica e procura pelos melhores vizinhos no
exemplo de gerar voos de ida e volta para Roma onde a ideia é minimizar a distância percorrida
no trajeto, portanto nosso alvo é chegar a um mínimo global.

O algoritmo Hill climb vai gerar uma solução aleatória e vai tentar encontrar vizinhos
mais próximos que tenham um custo menor. O objetivo é minimizar os custos e ele vai começar
em um ponto aleatório onde cada ponto pode ser uma solução. Em um gráfico pontos mais altos
indicam passagens mais caras enquanto pontos mais baixos indicam passagens mais baratas. O
algoritmo Hill climb ao iniciar uma solução randômica pode cair em qualquer ponto sejam altos
ou baixos até chegar ao ponto de menor preço.

A implementação do Hill climb busca por soluções que decide qual será o próximo
passo baseado na análise das soluções na vizinhança da solução atual no programa Phyton onde
os operadores de implementação que através de funções e comandos específicos. Dada um
ponto inicial, a estrutura de vizinhança é o conjunto de soluções que se encontram próximo ao
ponto inicial segundo algum critério e geralmente é encontrada fazendo apenas pequenas
mudanças na estrutura da solução inicial.

A ideia é limitar nossa busca por soluções a uma pequena região no espaço, porém se
aprofundando o máximo possível. A solução boa é chamada de mínimo ou máximo local e a
melhor solução possível é chamada de mínimo ou máximo global.

O mínimo é utilizado caso nosso problema tente minimizar o valor alvo e máximo
caso tente maximizar.

SIMULATED ANNEALING (TEMPORAR SIMULADA)

O Simulated annealing é mais um dos algoritmos inspirados pela física. Sendo um


processo térmico bastante utilizado no aprimoramento de aços, onde o material é aquecido até
altas temperaturas, fazendo com que os átomos se movimentem livremente e depois é resfriado
gradativamente para que as moléculas se encaixem em uma melhor posição.

Esse mesmo princípio é usado no algoritmo começando em temperaturas altas e


resfriando lentamente. Na realização de busca, esse algoritmo usa ambas as técnicas de
exploração (abri os horizontes, percorrendo as soluções candidatas de forma mais espaçada) em
temperaturas iniciais mais elevadas e muda para explotação (limita nossa busca por soluções a
uma pequena região no espaço, porém se aprofundando o máximo possível) conforme a
temperatura diminui.

Como Hill Climb, começamos com um ponto X aleatório e o avaliamos. Feito isso, o
algoritmo se move para um de seus vizinhos e avalia esse novo ponto. Se o resultado melhorar
no nosso ponto vizinho, vamos até ele e repetimos o processo anterior, mas se o ponto vizinho
for menor, passaremos para ele apenas se a probabilidade de for para o ponto negativo for maior
que um número aleatório.
LÓGICA FUZZY

A teoria dos conjuntos Fuzzy e os conceitos da lógica servem como solução para
sistemas não lineares, referentes a problemas de controle, graças a seus princípios de incerteza e
habilidade em inferir conclusões e gerar respostas baseadas em informações imprecisas.

A lógica Fuzzy avalia situações como por exemplo: qual foi nota que você daria para
comida em um restaurante ? Se a comida era saborosa, se não era saborosa. E qual a nota que
você daria para o atendimento com base nisso? O sistema da lógica Fuzzy vai fazer o cálculo de
qual é o valor recomendado para vai dar de gorjeta para o restaurante. Outras aplicações da
Lógica Fuzzy são em dispositivos como por exemplo máquinas de lavar, micro-ondas, ar
condicionado.

Outra que é muito importante aplicação dessas técnicas é a automação industrial por
exemplo para você fazer acompanhamentos se um determinado equipamento está quente, ou
muito quente pois dependendo do aquecimento do aparelho é necessário fazer o resfriamento do
aparelho então é necessário desligar o aparelho para não gerar um tipo de sobrecarga aplicações
com essa são muito utilizadas nesta área de automação.

Vamos considerar o contexto que você vai fazer a compra de um produto que ele vai ter
um preço custo que você vai comprar esse produto e também vai ter um benefício que esse
produto vai trazer, mas podemos gerar um umas regras como por exemplo:

- Se custo BAIXO e benefício ALTO então custo-benefício ALTO.

- Se custo ALTO e benefício ALTO então custo-benefício MÉDIO.

- Se custo BAIXO e benefício BAIXO então custo-benefício MÉDIO.

- Se custo ALTO e benefício BAIXO então custo-benefício BAIXO.

Então a ideia da lógica Fuzzy é tentar fazer um mapeamento dessas categorias para você
chegar a um meio termo do que é BAIXO e o que é ALTO. Outra definição é Custo alto e
beneficio alto podem ser "meio verdadeiros" ou "meio falsos". Podemos obter três classes
ALTO, MÉDIO e BAIXO. Diferente da Lógica Booleana que admite apenas valores booleanos,
ou seja, verdadeiro ou falso, a lógica difusa ou Fuzzy, trata de valores que variam.

Vejamos o exemplo do copo que na lógica booleana com dois valores obtemos apenas
duas respostas tais como copo cheio ou copo vazio. Para lógica Fuzzy se admite mais de dois
valores e podemos admitir os seguintes estados: vazio, meio vazio, meio cheio e cheio, pois na
lógica Fuzzy existe a ideia de intermediário. Outro exemplo que se aplica é a temperatura:
muito frio, frio, quente e muito quente, por exemplo, 10 Graus Celsius pode ser considerado
muito frio para alguém da região do nordeste, mas para alguém da região do sul é apenas frio.

Mas podemos observar que nós temos duas classes ou duas respostas que o custo é alto
e o custo é médio e o custo é baixo, porém essas variáveis vão fazer a previsão somente dos
valores baixos e alto e quando nós temos somente duas varáveis quer dizer que nós temos um
problema booleano seja somente dois valores assim como nós temos o sistema binário que
existe somente o valor 1 e o valor 0 então vamos considerar o baixo como sendo o valor 0 e o
alto como sendo o valor 1.
A ideia da lógica Fuzzy é representar de certa forma como é feito o raciocínio pelos
humanos por exemplo para algumas pessoas o custo pode ser baixo mas para outras pessoas
com custo ele pode ser ou com mais baixo para pessoa mesmo anterior é esse e para algumas
outras pessoas tu pode ser um pouquinho mais do que baixo por que o custo baixo é R$ 5 porém
para outra pessoa custo será R$ 2 para uma considerando o posto alto vamos supor que nós
temos o valor de R$ 50000 para a maioria das pessoas R$ 50000 para pagar um determinado
produto talvez seja um custo alto porém para uma pessoa milionária eu na área 50.000 reais não
será alto ser alto custo baixo então a ideia da lógica Fuzzzy é tentar fazer um mapeamento
dessas categorias para você chegar no meio termo o que é baixo e o que é alto essa outra
definição explica melhor isso que eu comecei agora custo alto e benefício alto podem ser meio
verdadeiro sou meio falsos

MACHINE LEARNING

O Machine Learning é a área da inteligência artificial que possui maior aplicabilidade.


O aprendizado de máquina é um método de análise de dados que automatiza a modelagem
analítica. É um campo de inteligência artificial baseado na ideia de que sistemas com menos
intervenção humana podem aprender com dados, definir padrões e tomar decisões. Quando os
dados não estão em um formato adequado se faz o pré processamento de dados e esses dados
podem ser colocados em um estado correto através da aplicação de algoritmos de Machine
Learning. A classificação é a primeira tarefa de Machine Learning a ser mais aplicada quando a
fazemos análise baseada em dados.

Classificação que usa os algoritmos: Naïve bayes, árvore de decisão, regras instancias, SVM,
regressão logística, para fazer previsão de dados históricos, utilizados para fazer previsões para
o futuro.

Dentro de Machine Learning.  nós podemos considerar uma base de dados de um banco
que nós temos informações sobre os clientes por exemplo. no caso de a história de crédito de
uma pessoa verificar se é ruim desconhecida ou boa a dívida que a pessoa possui, se é alta ou
baixa, se a garantia nenhuma ou adequada que poderia ser casas carros que vai indicar se a
pessoa vai pagar ou não o empréstimo, ou seja que tem alguma garantia para quitar o
empréstimo com renda anual entre 15 e 35 ou maior que 35 conforme tabela demonstrada no
exemplo deste módulo. podendo seu risco classificado como alto moderado ou baixo.

Para aplicar técnicas de Machine Learning é necessário ter uma base de dados histórica
e rotulada com esses dados de riscos onde o objetivo é fazer a precisão do risco de conceder
empréstimo para uma pessoa.  nesse caso o banco vai precisar ter uma base de dados históricas
para que quando você aplique no algoritmo de Machine Learning. e depois quando o algoritmo
aprende com os dados é possível você fazer algum tipo de classificação, sendo essa uma regra
básica quando se trabalha com Machine Learning, haver uma base de dados para que se consiga
aplicar essas técnicas e essa base é o banco que precisa coletar.

Supondo um determinado cliente com história de crédito ruim com dívida alta e garantia
nenhuma e renda menor que 15 há um tempo atrás essa pessoa pediu um empréstimo no banco e
não pagou o empréstimo e o banco ficou prejuízo então o banco indicou nessa base que uma
pessoa com tais características o risco é alto supondo uma outra pessoa com história
desconhecida dívida baixa não tem garantia e a renda entre 15 e 35 o risco foi classificado como
moderado o que indica  que talvez essa pessoa pagou metade do empréstimo e ficou com
algumas parcelas em atraso e demorou mais para pagar então o próprio banco marcou essa
pessoa com um risco moderado.
Outro método de classificação é Naïve bayes empregado para classificar o texto ou algo
do gênero, o Naive Bayes é uma das melhores alternativas. Se a correlação entre os fatores for
extremamente importante, o Naive Bayes pode falhar na predição da nova informação suas
utilidades são: Previsões em tempo real e Classificação de textos/Filtragem de spam/Análise
de sentimento, Análise de Sentimento nas redes sociais (para identificar se o estado de ânimo
do usuário ao publicar determinado texto). Esse método de classificação possui velocidade alta
e precisa apenas de poucos dados para realizar a classificação, portanto o Naive Bayes pode ser
utilizado para previsões em tempo real.

Outra técnica bastante utilizada é a árvore de decisão que se refere a um dos


algoritmos mais utilizados na área de inteligência artificial, isso por apresentar bons
resultados em diversos contextos e por ser considerado um método  transparente, por deixar
explícito as regras que estão sendo utilizadas para a tomada das decisões e geração dos
resultados. A árvore de decisão permiti flexibilidade na gestão, pois o método de análise
permite rever a estratégia inicial e alterar planos de acordo com novas condições econômicas
portanto permiti capitalizar futuras oportunidades favoráveis ao negócio quanto diminuir perdas,
isto é, melhoram o potencial de ganhos e limitam o potencial de perdas e permitir a subdivisão
do objetivo em metas e submetas, indicando como alcançá-las.

A árvore de decisão auxilia a orientar o tomador de decisão à medida que este


responde à pergunta: O que é necessário fazer para alcançar a meta pretendida? E permiti o
exame, pelo tomador de decisão, de todas as possibilidades possíveis na tomada de decisões sua
programação permitir a criação de algoritmos facilmente implementados em computadores
utilizando o Python.

Por outro lado, uma decisão que não leva em conta todos os procedimentos prescritos
pela metodologia é considerada uma má decisão, mesmo se o resultado é favorável, isso porque,
como não foi usado toda a informação e alternativas possíveis, não se pode dizer que o resultado
favorável foi maximizado.

Regressão (Regressão linear) utilizada para fazer previsões para o futuro.

A análise de regressão é um método que mostra, através de uma equação, como se dá a


relação entre uma ou mais variáveis preditoras e a variável resposta. Antes de entender o
método de estimação de tal equação é importante definir o que são as variáveis respostas e as
preditoras: a variável resposta é a variável que se deseja explicar em função de outras que serão
as chamadas variáveis preditoras ou explicativas. O cenário em que se há apenas uma variável
explicativa é chamada de análise de regressão simples enquanto quando há mais de uma tem-se
o cenário de regressão múltipla. Em ambos, o método de estimação da reta de regressão é o
mesmo. Seja Y a variável resposta e X1, X2, ..., Xn as variáveis explicativas tem-se que a reta
capaz de expressar a relação entre tais variáveis é dada por:

Y= β 0 + β 1 X 1 + ... + β n X n + ε
Onde β 0 é chamado de intercepto e representa o valor médio que Y irá assumir quando
todas as variáveis forem iguais a zero, β i são os coeficientes do modelo responsáveis por
mostrar como cada variável explicativa influencia na variável resposta e ε é o erro do modelo,
representando a parte da variabilidade de Y que não consegue ser explicada.
Considerando tal equação, tem-se que a melhor reta possível é aquela cujos erros são os
menores. Sendo assim, para encontrar as estimativas para os parâmetros do modelo usa-se um
método chamado mínimos quadrados que, em suma, encontra os valores dos parâmetros que
minimizem o somatório dos erros ao quadrado.
Feitas as estimativas, pode-se usar regressão gerada para realizar predições de modo que
basta encontrar os valores das variáveis explicativas e jogar na equação e encontrar um valor
aproximado para o Y. É importante mencionar que para a análise de regressão ser válida, os
resíduos do modelo devem seguir distribuição normal, devem ser independentes e possuir
variância constante. E assim podemos determinar previsões futuras em qualquer metodologia
experimental que possui uma amostragem a ser analisada.

Agrupamento (que usa o algoritmo k-means), para agrupar dados similares

Para entendermos o conceito de agrupamento, vamos começar com um exemplo


prático. Supondo que você tenha um amigo que adora livros, mas tem muitas dificuldades em
organizá-los e você sugere ao seu amigo algumas formas de como organizar esses livros, por
exemplo: separá-los por gênero, cores ou ordem alfabética. Em programação o algoritmo
Kmeans ou K-médias é uma técnica de agrupamento que usa o método de partição para
dividir o conjunto de dados em kk grupos, em que o valor de kk é definido pelo usuário
visando diminuir a variação intra-grupos, e criando grupos em que os objetos sejam
semelhantes entre si onde em cada iteração os centroides de cada grupo são atualizados para
refinar a qualidade dos grupos.

TÉCNICA DE MINERAÇÃO DE DADOS

A Técnica de Mineração de Dados consiste em seis passos: entendimento do negócio,


compreensão dos dados, preparação dos dados, modelagem, avaliação do modelo e implantação.
Embora o entendimento dos dados seja uma etapa separada do pré-processamento de dados, é
muito importante entender os dados para realizar o pré-processamento. Através das melhores
alternativas podemos identificar problemas nos dados, verificar como os dados estão distribuídos
e realizar uma transformação.

APRENDIZAGEM POR REFORÇO

A Aprendizagem Por Reforço é um método de modelos de aprendizado de Machine


Learning se alcançar uma tomada de decisão. O usuário aprende a atingir uma meta em um
ambiente incerto e complexo, assim no aprendizado por reforço, o sistema de inteligência
artificial enfrenta uma situação.  Inicialmente na implementação o computador utiliza métodos
de tentativa e erro para encontrar uma solução para o problema. Para que a máquina faça o que
o programador deseja, e para isso a inteligência artificial recebe recompensas ou penalidades
pelas ações que executa aonde o objetivo é maximizar a recompensa total.
Embora o usuário defina a política de recompensa ele não modela com algoritmos
nenhuma dica ou sugestão de como resolver o Problema sendo responsabilidade do próprio
modelo descobrir como executar a tarefa para maximizar a recompensa utilizando métodos
aleatórios e terminando com táticas sofisticadas. Sendo assim o aprendizado por reforço é a
maneira mais eficaz de estimulara criatividade da máquina. Ao contrário dos seres humanos, a
inteligência artificial pode reunir o conhecimento e experiência de milhares de jogos paralelos
se um algoritmo que estimula incentiva o aprendizado por reforço for executado.

REDES NEURAIS E DEEP LEARNING.

Redes neurais artificiais

As Redes neurais artificiais são elementos computacionais inspirados em neurônios de


seres vivos, que ao serem conectados em rede computacionais podem reproduzir algumas
características de processos inteligentes como se fossem seres vivos racionais e pensantes.
Porem contudo há uma grande diferença entre a célula nervosa humana e o modelo de neurônio
artificial programado contudo o princípio de transferência das informações é o mesmo.

Os neurônios artificiais estão interligados de forma semelhante como acontece nos


neurônios dos seres vivos pois recebe os sinais (informações) de uma entrada de outros
neurônios. Na programação é realizada uma média ponderada entre os sinais de entrada e os
pesos das conexões tendo como resultado uma função de ativação (ou função de transferência)
assim o resultado final é chamado de ativação do neurônio.

Podemos ainda classificar uma rede neural artificial como várias unidades de
processamento conectadas por canais de comunicação que estão associados a determinado peso
aonde as unidades fazem operações apenas sobre seus dados locais, que são entradas recebidas
pelas suas conexões o que explica o comportamento inteligente de uma Rede Neural Artificial
que provém das interações entre as unidades de processamento da rede aonde sinais são
apresentados à entrada e cada sinal é multiplicado por um número, ou peso, que indica a sua
influência na saída da unidade por último é realizada uma soma ponderada dos sinais que
produz um nível de atividade e se e este nível de atividade exceder um certo limite (threshold) a
unidade produz uma determinada resposta de saída.

Redes neurais convolucionais

As Redes Neurais Convolucionais também são biologicamente inspiradas nos seres


vivos e são capazes de serem treinadas e aprenderem representações invariantes a escala,
translação, rotação e transformações. Em programação ela tenta resolver questões no
reconhecimento de padrões em imagens, que consiste em saber qual é a melhor forma de
representar as características dos dados a serem reconhecidos de forma robusta e invariante à
iluminação, orientação, pose, oclusão entre outros.

No entanto apesar de existir diversos descritores desenvolvidos para extrair estas


características de forma artificial é recomendável que um sistema de reconhecimento seja capaz
de extrair esta representação de forma automática através dos dados brutos, no caso de
reconhecimento de imagens.

Na implementação as Redes Neurais Convolucionais compõem um dos tipos de


algoritmos da área conhecida como Deep Learning baseado em um conjunto de algoritmos que
tentam modelar abstrações de alto nível de dados usando um grafo profundo com várias
camadas de processamento, constituídas de transformações lineares e não lineares e são
projetadas para uso com dados em duas dimensões tornando-as uma boa candidata para a
solução de problemas envolvendo reconhecimento de imagens são arquiteturas multiestágios
capazes de serem treinadas. Os campos receptivos são altamente correlacionados à localidade
do estímulo na imagem capturada aonde utilizam forçando um padrão de conectividade entre as
camadas de neurônios artificiais.

Você também pode gostar