Baixe o app para aproveitar ainda mais
Prévia do material em texto
Nome: Fabrício Lourenço Biscassi da Silva RA: 181190427 Nome: Gabriele Cristina Catapani RA: 181190621 Nome: Gabriela Onishi Cardoso RA: 161191461 Nome: Julia Fleuri Barbosa RA: 201191377 Nome: Wesley Prado Leão dos Santos RA: 201190338 Avaliação Somativa da disciplina Inteligência Artificial 1. Discorra sobre: O que é Inteligência Artificial, por meio dos tópicos: a. Computadores automáticos: passíveis de programação; R: A programação é a base para a inteligência artificial, pois é através dela que comandos são gerados e a máquina realiza as operações designadas. b. Computadores programados para usar uma linguagem: capacidade de manipular ‘palavras’ para chegar num raciocínio lógico; R: A inteligência artificial tem como base a lógica a qual pode ser expressa através de comandos de computador. Que no nesse caso, a linguagem de programação utilizada é a responsável por criar uma lógica para o computador. c. Redes de neurônios: formação de conceitos a partir da organização de neurônios hipotéticos; R: A inteligência artificial visa imitar a capacidade de intelecto humano, ou seja, o neurônio biológico. Deste modo, criam-se “neurônios” artificiais (processos de aprendizado interligados), que visam realizar as mesmas funções do neurônio biológico. d. Tamanho de um cálculo: dado um problema bem definido como quantificar e explorar as possíveis respostas de forma eficiente; R: A partir de testes e dos diversos meios de busca. Utilizamos diversos “agentes” para encontrar a função ótima e testamos essa estratégia diversas vezes, até encontrar a melhor solução possível. e. Autoaperfeiçoamento: uma máquina inteligente provavelmente executará atividades com autoaperfeiçoamento; R: Um dos princípios da Inteligência Artificial é sempre buscar encontrar os melhores resultados possíveis e, ao ver que ainda não foi encontrado o melhor resultado possível, uma IA é programada para buscá-lo, por isso ela executa atividade de autoaperfeiçoamento. f. Abstrações: métodos de máquinas para formar abstrações a partir de dados do mundo real; R: Abstrações são a base de uma IA pois é a partir dela que são obtidos os dados para serem utilizados em programas, ou seja, as abstrações é como se fosse a realidade criada computacionalmente ou uma forma de representar a realidade através de dados. g. Aleatoriedade e criatividade: a introdução de alguma aleatoriedade pode representar o pensamento criativo durante o raciocínio lógico. R: Isso ocorre dentro de uma IA através de alguns processos descritos em aula, por exemplo o crossing over que através de uma mistura nos dados é gerado uma aleatoriedade e, com isso, pode ser representado um pensamento criativo durante um raciocínio lógico. 2. Explique a técnica de busca local com abordagem gulosa (greedy). Dê exemplos (diferentes dos slides). R: É a busca pela melhor escolha. Utiliza-se uma função que calcula as distâncias de cada nó até o ponto de melhor escolha (nó desejável). Ela avalia o ponto menos “custoso”, a partir da função heurística (da reta). Exemplo: encontrar o caminho mais rápido até uma cidade (viagem). Para exemplificar, trago um exemplo por imagem: 3. O que é uma busca local heurística em função do gráfico abaixo. R: É uma busca por estratégias, que visa atingir a solução ótima, mas nem sempre ela trás o resultado correto. Isto ocorre devido ao número de agentes, que muitas vezes encontram um ponto máximo referente ao máximo local, sendo que a solução ótima seria o máximo global, como mostra o gráfico. 4. Explique , cada parte, do algoritmo Hill Climbing (subida de encosta), inclusive as necessidades das funções de apoio. R: Primeiro, é preciso importar algumas bibliotecas, como a math, numpy e pylab, que irão proporcionar a realização de contas matemáticas (funções), a plotagem dos gráficos e formação de vetores. As demais bibliotecas servem para mostrar o tempo atual e conversões de tempo (time), aleatoriedade dos números (random). A partir disso, é feita uma função dos agentes que irão circular sob o gráfico, em busca da solução ótima. Em seguida, em “status prévio de otimização”, é realizada uma função para a plotagem dos resultados obtidos, para uma visualização do processo de busca. Por fim, em “Hill Climbing”, é feita, de fato, a busca pela solução ótima, que ocorre do seguinte modo: 1°: atribui-se como ponto inicial, o ponto corredor (aquele que estará buscando; o agente) 2°: coleta-se o tamanho desse ponto corredor 3°: atribui-se esse valor como sendo verdadeiro 4°: atribui-se um valor para o próximo ponto (nextState) que o corredor ocupará, como sendo a soma do ponto atual (corredor) a uma “step” (um valor nominal que o ponto “andará”). 5°: coleta-se o tamanho deste novo ponto (nextState Eval) 6°: a partir de uma condição (if), verifica-se se o tamanho do próximo ponto (nextState) é menor do que o tamanho do ponto atual (currState) 7°: caso o tamanho do próximo ponto seja menor que o do ponto atual, mantém-se o ponto atual, já que ele é maior, logo, melhor. 8°: caso o próximo ponto seja maior, o próximo ponto vira o ponto atual, e é feito um novo cálculo para determinar o ponto ótimo. Desta forma, o processo ocorre até que a função ache um ponto de maior tamanho. Entretanto, muitas vezes o ponto encontrado não será o melhor, pois como está sendo utilizado apenas um agente, ele pode ficar “empacado” em um ponto máximo local. Para corrigir este erro, são necessários diversos agentes e uma otimização da função Hill Climbing. 5. Qual a diferença entre a função Hill Climbing do exercício 4 para esta abaixo? R: Diferentemente do código anterior, aqui temos uma otimização da função de busca Hill Climbing, pois agora há a verificação de pontos anteriores e posteriores ao agente, tornando a função de busca mais precisa. Além disso, há dois agentes de busca, que são comparados; assim, podemos verificar se um deles atingiu um ponto máximo maior que o ponto máximo de outro e, deste modo, recalcular, visando atingir o ponto máximo global (solução ótima). Sendo assim, temos que: 1°: atribui-se como ponto inicial, o ponto corredor (aquele que estará buscando; o agente) 2°: coleta-se o tamanho desse ponto corredor 3°: atribui-se esse valor como sendo verdadeiro 4°: caso o tamanho do próximo ponto seja menor do que o tamanho do ponto anterior a ele (currState-step) 5°: atribui-se um valor para o próximo ponto (nextState) que o corredor ocupará, como sendo a subtração de um “step” (um valor nominal que o ponto “andará”) do ponto atual (corredor). 6°: coleta-se o tamanho deste novo ponto (nextState Eval) 7°: caso o tamanho do próximo ponto seja maior do que o tamanho do ponto anterior a ele (currState-step) 8°: atribui-se um valor para o próximo ponto (nextState) que o corredor ocupará, como sendo a soma de um “step” (um valor nominal que o ponto “andará”) ao ponto atual (corredor). 9°: coleta-se o tamanho deste novo ponto (nextState Eval) 10°: caso o tamanho do próximo ponto seja menor que o do ponto atual, mantém-se o ponto atual, já que ele é maior, logo, melhor. 11°: caso o próximo ponto seja maior, o próximo ponto vira o ponto atual, e é feito um novo cálculo para determinar o ponto ótimo. 6. Aplique a técnica do Algoritmo Genético na seguinte configuração do jogo das 8 rainhas: 2 4 7 5 5 | 7 7 1 = 19 1 3 4 6 6 | 7 7 2 = 15 1 1 2 2 3 | 3 4 4 = 10 2 3 4 4 5 | 6 6 6 = 14 OS: para o crossover considere um corte em P(5) R: Para a criação do algoritmo genético é necessário fazer a seleção dos códigos genéticos dos pais, que foi o que já aconteceu acima, visto que, de uma infinidade de códigos disponíveis, foram selecionados apenas 4. Após isso, é feito o “Crossover”, que é uma técnica utilizada tanto em códigos genéticos na biologia quanto na programação, que visa aleatorizar o sistema, fazendo com que os códigos genéticos dos pais sejam misturados. Sendo assim, como solicitado, foi feito o corte dos códigos genéticos na posição p(5) e, com isso,foi feita uma divisão neste código genético. Com a divisão feita, a mistura dos códigos genéticos (Crossover) foi realizada através das duplas de pais de fitness 19 com o de 10 e a dupla 15 com a 14, aleatorizando o sistema, assim como representado abaixo: Após isso, são feitas as mutações desses códigos, que é a alteração de um desses números do código dos filhos e, na programação, essa mutação é feita escolhendo um ou mais números do código dos filhos, alterando-os. 7. Explique o código do algoritmo genético abaixo: Atribui-se um vetor geração, em que a geração zero é formada por zeros. Após isso, é calculado o fitness para cada indivíduo do vetor e são selecionados os “pais”, a partir da função roulette. Com os pais selecionados, ocorre o crossover (cruzamento) entre seus códigos genéticos. Após o crossover, é feita uma mutação em seu código. Por fim, temos a formação dos filhos, que serão os novos pais e uma nova geração. É feita uma condição, ao final, para verificar se os filhos formados em cada geração são semelhantes. Caso sejam semelhantes, chegamos à função ótima; caso contrário, é realizada uma nova seleção e novos descendentes são formados. a) Explique detalhadamente a função roulette R: A função roulette tenta simular uma roleta, assim como a utilizada em aula; ou seja, essa função tenta gerar números aleatórios para cada código genético, para a seleção dos “pais”. Para isso, são impostas algumas condições onde estas podem ser por exemplo o tamanho do código genético e, com isso, são gerados números para preencher esses códigos. b) Explique detalhadamente o crossover R: O Crossover é um procedimento que acontece em um código genético biológico e que, na programação, tem um funcionamento semelhante, visto que o principal objetivo é fazer a mistura do código genético, gerado anteriormente com a função roulette. Sendo assim, é feito um corte nesse código, o qual é selecionado através dos critérios estabelecidos no código e, após selecionado, são escolhidas duplas de pais para que o código genético dos dois seja misturado através do crossover. Em outras palavras, é a mistura do código genético dos “pais” selecionados na função roulette, para a formação dos descendentes, que se tornarão os novos pais. c) Explique detalhadamente o cálculo do fitness. R: O cálculo fitness é um cálculo utilizado para encontrar o melhor resultado que, no caso do código genético, seria um código dos filhos que se assemelha ao dos pais, porém que não seja igual e que tenha sido gerado de forma aleatória. Ou seja, é um cálculo feito para saber se o código obtido realmente é o melhor resultado encontrado, ou se há a possibilidade deste código melhorar mais ainda. Lembrando que, ele assume seu valor ótimo quando os dessecantes são semelhantes entre as gerações formadas. 8. Explique os símbolos associados à aprendizagem indutiva: R: No método indutivo é considerado um número de casos suficientes para criar uma função, que é representada por , e é a representação das características/elementos em comum que seℎ() 𝑥 encontram nesses casos. Logo a função representa a classificação que esta característica vaiℎ(𝑥) receber com base na função, que é expressa por . A expressão representa um novo𝑦 𝑥^((𝑛 + 1)) elemento/ característica, e é a classificação deste novo elemento/característica.𝑦^((𝑛 + 1)) 𝑦^((𝑛 + 1)) 9. Diferencie, por meio de desenho e por texto explicativo, a aprendizagem de máquina supervisionada e não supervisionada. R: O aprendizado não supervisionado possui dados que não são previamente conhecidos e o algoritmo deve tentar decifrar por conta própria, a partir de classificadores, como o K-means, que utiliza contas matemáticas (médias) para agrupar os semelhantes entre si. Já no aprendizado supervisionado, é pré-atribuída uma rotulagem aos dados, e o algoritmo mede sua precisão e compara os objetos de acordo com estes rótulos, separando-os em clusters. 10. Explique como ocorre o 3-means por meio destes dados. R: Neste gráfico, identificamos dados não supervisionados, onde a programação, através da função K-means, deve definir os agrupamentos. Para isso, são calculados os centróides; o k-3 sugere que são 3 centróides e, após os cálculos, os pontos serão separados em 3 grupos, cujos pontos próximos aos respectivos centróides, correspondem ao mesmo grupo. Assim, temos a divisão destes clusters. O cálculo dos centróides é feito até que as médias não se modifiquem. 11. Explique como ocorre o k-NN por meio destes dados. R: Neste gráfico, identificamos dados supervisionados, os quais já estão previamente separados por categorias, e fica a cargo do programa caracterizá-las. O K-NN é um classificador que olha seus vizinhos; assim, com os dados previamente rotulados, o classificador irá comparar os componentes, um a um, e verificar se são semelhantes ou não, separando-os em clusters; aproxima os semelhantes e afasta os diferentes. 12. Explique as partes marcadas no código abaixo. R: Na primeira marcação, há a separação de 3 clusters (c1, c2 e c3) e atribuição de dois atributos 9a1 e a2) a cada um, além dos valores de média e desvio padrão. Após a atribuição, é feita uma concatenação dos valores (agrupamento) de cada atributo a1 e a2). Na segunda marcação, atribui-se em quantos clusters os dados, plotados em gráfico, serão divididos (número de K). Neste caso, foram divididos em 4 grupos.
Compartilhar