Prévia do material em texto
<p>1</p><p>Inteligência Artificial - P2</p><p>Árvore de Decisão.........................................1</p><p>Introdução.................................................1</p><p>Construindo uma Árvore de Decisão........2</p><p>Algoritmo ID3............................................ 2</p><p>Métodos de Poda......................................2</p><p>Métodos de Agrupamento............................2</p><p>Introdução.................................................2</p><p>Algoritmos por Agrupamento.................... 3</p><p>Algoritmo k-Means....................................3</p><p>Algoritmo KNN (K-Nearest Neighbors)..... 4</p><p>Redes Neurais Artificiais..............................5</p><p>Introdução.................................................5</p><p>Redes Neurais Artificiais (RNA’s)............. 5</p><p>Perceptron e Aprendizado........................ 6</p><p>Redes Neurais Perceptron Multicamadas 7</p><p>Características.......................................... 7</p><p>Os principais componentes da MLP......... 7</p><p>Funções de Ativação do Neurônio............ 8</p><p>Transmissão da Informação pela Rede (da</p><p>entrada para a saída)................................8</p><p>Modelos de Aprendizagem usam o</p><p>Gradiente Descendente............................ 8</p><p>Algoritmo Backpropagation.......................9</p><p>Simulação do Backpropagation</p><p>(retropropagação do erro: da saída para a</p><p>entrada)...................................................10</p><p>Simulação do Backpropagation (ajuste dos</p><p>pesos: da saída para a entrada)............. 11</p><p>Aprendizado com o Gradiente</p><p>Descendente........................................... 11</p><p>Outros Modelos de RNA’s.......................11</p><p>Algoritmos Genéticos.................................13</p><p>Introdução...............................................13</p><p>O Problema do Caixeiro Viajante........... 13</p><p>A Função de Aptidão.............................. 14</p><p>O Método de Seleção............................. 14</p><p>Os Operadores Genéticos...................... 15</p><p>Recombinação ou Crossover..................15</p><p>Operador Genético de Mutação..............15</p><p>Algoritmo Genético Típico.......................16</p><p>Outros Conceitos Importantes................ 16</p><p>Colônia de Formigas...................................16</p><p>Introdução...............................................16</p><p>Algoritmo ACO........................................16</p><p>Características........................................ 16</p><p>Consequências do Processo.................. 16</p><p>Algoritmo de Otimização de Formigas.... 17</p><p>Simulador do Algoritmo ACO.................. 17</p><p>Redes Bayesianas.......................................17</p><p>Introdução...............................................17</p><p>Exemplo Prático...................................... 17</p><p>Redes Bayesianas..................................18</p><p>Utilidade — Inferência.............................18</p><p>Redes Bayesianas como Classificadores...</p><p>18</p><p>Naive Bayes Classifier (NBC).................19</p><p>Pontos Fortes das Redes Bayesianas....19</p><p>Outras Observações................................... 19</p><p>Árvore de Decisão</p><p>Introdução</p><p>É um modelo de classificação. Os</p><p>algoritmos de classificação cujo</p><p>conhecimento adquirido é</p><p>representado como árvore de decisão</p><p>(DT) pertencem a família TDIDT (Top</p><p>Down Induction of Decision Tree).</p><p>Uma árvore de decisão é semelhante</p><p>a um fluxograma, onde cada nó</p><p>interno denota o teste em um atributo,</p><p>cada ramo denota o resultado do teste</p><p>em um nó folha e cada nó folha</p><p>contém o rótulo da classe.</p><p>2</p><p>Construindo uma Árvore de</p><p>Decisão</p><p>Algoritmo ID3</p><p>Escolha dos nós da árvore por meio de</p><p>dois fatores: ganho de informação e</p><p>entropia. O ganho de informação é uma</p><p>medida que indica o quanto um dado</p><p>atributo irá separar os exemplos de</p><p>aprendizado de acordo com a sua</p><p>função objetivo (classes). Já a entropia é</p><p>a medida que indica a homogeneidade</p><p>dos exemplos contidos em um conjunto</p><p>de dados. Ela permite calcular a pureza</p><p>e a impureza de uma coleção arbitrária</p><p>de exemplos.</p><p>Para determinar esse ganho,</p><p>primeiramente é preciso calcular a</p><p>entropia dos dados.</p><p>,𝐸𝑛𝑡𝑟𝑜𝑝𝑖𝑎(𝑆) = − 𝑃</p><p>⊕</p><p>· 𝑙𝑜𝑔</p><p>2</p><p>𝑃</p><p>⊕</p><p>− 𝑃</p><p>⊖</p><p>· 𝑙𝑜𝑔</p><p>2</p><p>𝑃</p><p>⊖</p><p>onde:</p><p>➔ é um conjunto de dados𝑆</p><p>➔ 𝑃</p><p>⊕</p><p>= 𝑛º 𝑑𝑒 𝑐𝑎𝑠𝑜𝑠 𝑝𝑜𝑠𝑖𝑡𝑖𝑣𝑜𝑠</p><p>𝑛º 𝑡𝑜𝑡𝑎𝑙 𝑑𝑒 𝑐𝑎𝑠𝑜𝑠</p><p>➔ 𝑃</p><p>⊖</p><p>= 𝑛º 𝑑𝑒 𝑐𝑎𝑠𝑜𝑠 𝑛𝑒𝑔𝑎𝑡𝑖𝑣𝑜𝑠</p><p>𝑛º 𝑡𝑜𝑡𝑎𝑙 𝑑𝑒 𝑐𝑎𝑠𝑜𝑠</p><p>Para calcular a entropia sobre n de</p><p>classes:</p><p>, onde:𝐸𝑛𝑡𝑟𝑜𝑝𝑖𝑎(𝑆) = −</p><p>𝑖 = 1</p><p>𝑁</p><p>∑ 𝑃</p><p>𝑖</p><p>· 𝑙𝑜𝑔</p><p>2</p><p>𝑃</p><p>𝑖</p><p>➔ é um conjunto de dados𝑆</p><p>➔ 𝑃</p><p>𝑖</p><p>= 𝑛º 𝑑𝑒 𝑐𝑎𝑠𝑜𝑠 𝑐𝑙𝑎𝑠𝑠𝑒 𝑖</p><p>𝑛º 𝑡𝑜𝑡𝑎𝑙 𝑑𝑒 𝑐𝑎𝑠𝑜𝑠</p><p>Para calcular o ganho de informação:</p><p>𝐺𝑎𝑛ℎ𝑜(𝑆, 𝐴) = 𝐸𝑛𝑡𝑟𝑜𝑝𝑖𝑎 (𝑆) −</p><p>𝑖=1</p><p>𝑁</p><p>∑ 𝑆𝑣| |</p><p>𝑆| | 𝐸𝑛𝑡𝑟𝑜𝑝𝑖𝑎(𝑆)</p><p>, onde:</p><p>➔ A = atributo considerado;</p><p>➔ N = número de valores possíveis</p><p>que esse atributo pode assumir;</p><p>➔ Sv = subconjunto de S onde o</p><p>atributo A possui o valor V.</p><p>Métodos de Poda</p><p>Pré-poda: realizada durante a</p><p>construção da árvore. Em um certo</p><p>momento, se o ganho de informação for</p><p>menor que um valor pré-estabelecido,</p><p>então esse nó vira folha.</p><p>Pós-poda: realizada após a construção</p><p>da árvore. Para cada nó interno da</p><p>árvore, é calculada a taxa de erro caso</p><p>esse nó vire folha (e tudo abaixo dele</p><p>seja eliminado). Em seguida, é calculada</p><p>a taxa de erro caso não haja a poda. Se</p><p>a diferença entre essas duas taxas de</p><p>erro for menor que um valor</p><p>pré-estabelecido, a árvore é podada;</p><p>caso contrário, não ocorre a poda.</p><p>Métodos de Agrupamento</p><p>Introdução</p><p>Hierarquia do Aprendizado</p><p>O objetivo dos métodos de agrupamento</p><p>é, como o próprio nome sugere, realizar</p><p>3</p><p>agrupamentos de objetos por</p><p>semelhança. Essa semelhança é medida</p><p>por características e na maioria das</p><p>vezes representada pela proximidade</p><p>espacial. Pode ser visto como um método</p><p>de aprendizagem não supervisionada.</p><p>Algoritmos por Agrupamento</p><p>➔ k-Means (agrupamento plano);</p><p>➔ Agrupamento hierárquico;</p><p>➔ Mapas de características</p><p>auto-organizáveis;</p><p>➔ Métodos baseados em grafos.</p><p>Algoritmo k-Means</p><p>Considere o seguinte espaço de pontos a</p><p>serem agrupados em 2 grupos (k=2):</p><p>Representação Espacial</p><p>Passo 1. Sorteio aleatório de k pontos</p><p>como centro dos agrupamentos.</p><p>Passo 2. Verifica o centro mais próximo</p><p>de cada ponto e atribui um rótulo</p><p>(diferenciação visual dos grupos).</p><p>Passo 3. Ajusta os centros dos grupos</p><p>pelo valor médio dos seus membros.</p><p>Passo 4. Verifica o centro mais próximo</p><p>de cada ponto e atribui um novo rótulo</p><p>(migrando o ponto de centro).</p><p>Volta ao passo 3, ajustando os centros</p><p>dos grupos pelo valor médio dos seus</p><p>membros.</p><p>Volta ao passo 4, verificando o centro</p><p>mais próximo de cada ponto e atribuindo</p><p>4</p><p>um novo rótulo (migrando o ponto de</p><p>centro).</p><p>Repete os passos 3 e 4 até chegar ao</p><p>critério de parada, que é quando não há</p><p>mais migração de pontos.</p><p>Algumas dúvidas que podem surgir:</p><p>1. Como medir a distância entre</p><p>pontos?</p><p>Distância Euclidiana: sejam dois pontos 𝑝</p><p>e , definidos por C coordenadas:𝑞</p><p>𝐷𝑖𝑠𝑡_𝐸𝑢𝑐𝑙𝑖𝑑𝑖𝑎𝑛𝑎(𝑝, 𝑞) =</p><p>𝑖 =1</p><p>𝐶</p><p>∑ (𝑝</p><p>𝑖</p><p>− 𝑞</p><p>𝑖</p><p>)2</p><p>2. Como escolher o valor de k?</p><p>Não tem muito jeito não. Dá pra tentar por</p><p>experimentação, observar visualmente a</p><p>formação de alguns grupos (para poucas</p><p>dimensões) e testar vários valores para k</p><p>(repetir o algoritmo k-means para cada k</p><p>e escolher o melhor k de acordo com</p><p>algum critério).</p><p>3. O que pode ser feito quando há</p><p>um número maior de</p><p>coordenadas?</p><p>Como a maioria dos problemas são</p><p>multidimensionais, é mais difícil de</p><p>visualizar, mas todos os métodos de</p><p>cálculo de distância são aplicáveis para</p><p>mais coordenadas.</p><p>4. Qual a utilidade desse método</p><p>para o aprendizado de máquina?</p><p>O método pode ser visto como um</p><p>classificador, pois os grupos podem ser</p><p>vistos como exemplos de uma mesma</p><p>classe. Ainda, esse método é</p><p>considerado um exemplo de aprendizado</p><p>não supervisionado já que a classe só é</p><p>definida após o término do algoritmo.</p><p>Algoritmo KNN (K-Nearest</p><p>Neighbors)</p><p>É um algoritmo de classificação também</p><p>baseado em distância. O KNN tenta</p><p>classificar cada amostra de um conjunto</p><p>de dados avaliando sua distância em</p><p>relação aos vizinhos mais próximos. Se</p><p>os vizinhos mais próximos forem</p><p>majoritariamente de uma classe, a</p><p>amostra em questão será classificada</p><p>nesta categoria.</p><p>Processo realizado pelo</p><p>KNN:</p><p>1. Receba um dado não</p><p>classificado e meça distância</p><p>do novo dado em relação a</p><p>cada um dos outros dados que</p><p>já estão classificados;</p><p>2. Selecione as K menores</p><p>distâncias;</p><p>3. Verifique a(s) classe(s) dos</p><p>dados que tiveram as K</p><p>menores distâncias e</p><p>contabilize a quantidade de</p><p>vezes que cada classe que</p><p>apareceu;</p><p>4. Classifique esse novo dado</p><p>como pertencente à classe que</p><p>mais apareceu.</p><p>5</p><p>Redes Neurais Artificiais</p><p>Introdução</p><p>Uma rede neural é um método de</p><p>inteligência artificial que ensina</p><p>computadores a processar dados de</p><p>uma forma inspirada pelo cérebro</p><p>humano. É um tipo de processo de</p><p>machine learning, chamado</p><p>aprendizado profundo, que usa nós ou</p><p>neurônios interconectados em uma</p><p>estrutura em camadas, semelhante ao</p><p>cérebro humano.</p><p>Redes Neurais Artificiais (RNA’s)</p><p>São sistemas inspirados nos</p><p>neurônios biológicos e na estrutura</p><p>maciçamente paralela do cérebro, com</p><p>capacidade de adquirir, armazenar e</p><p>utilizar conhecimento experimental.</p><p>Suas características básicas são:</p><p>➔ Busca Paralela;</p><p>➔ Generalização (generalizar</p><p>conhecimento a partir de</p><p>exemplos);</p><p>➔ Abstração (habilidade de lidar</p><p>com ruídos);</p><p>➔ Robustez.</p><p>As RNA’s podem ser classificadas de</p><p>acordo com sua forma de aprendizado</p><p>(supervisionado e não-supervisionado)</p><p>ou com a sua forma de comunicação</p><p>(redes de alimentação direta e redes</p><p>concorrentes).</p><p>Uma RNA é composta por várias</p><p>unidades de processamento, cujo</p><p>funcionamento é bastante simples. Essas</p><p>unidades, geralmente, são conectadas</p><p>por canais de comunicação que estão</p><p>associados a determinado peso. As</p><p>unidades fazem operações apenas sobre</p><p>seus dados locais, que são entradas</p><p>recebidas pelas suas conexões. O</p><p>comportamento inteligente de uma Rede</p><p>Neural Artificial vem das interações entre</p><p>as unidades de processamento da rede.</p><p>A operação de uma unidade de</p><p>processamento, proposta por McCullock</p><p>e Pitts em 1943, pode ser resumida da</p><p>seguinte maneira:</p><p>➔ Sinais são apresentados à</p><p>entrada;</p><p>➔ Cada sinal é multiplicado por um</p><p>número, ou peso, que indica a sua</p><p>influência na saída da unidade;</p><p>➔ É feita a soma ponderada dos</p><p>sinais que produz um nível de</p><p>atividade;</p><p>➔ Se este nível de atividade exceder</p><p>um certo limite (threshold) a</p><p>unidade produz uma determinada</p><p>resposta de saída.</p><p>Esse modelo de McCullock e Pitts</p><p>também considera 5 suposições básicas:</p><p>1. A atividade de um neurônio é um</p><p>processo tudo ou nada;</p><p>2. Um certo número fixo ( ) de> 1</p><p>entradas devem ser excitadas</p><p>dentro de um mesmo intervalo de</p><p>tempo para excitar um neurônio;</p><p>3. O único atraso significativo é o</p><p>atraso sináptico;</p><p>6</p><p>4. A atividade de qualquer sinapse</p><p>inibitória previne absolutamente a</p><p>excitação do neurônio;</p><p>5. A estrutura das interconexões não</p><p>muda com o tempo.</p><p>Perceptron e Aprendizado</p><p>Perceptron é uma rede neural de camada</p><p>única e um Perceptron de várias</p><p>camadas é chamado de Rede Neural</p><p>Artificial. O Perceptron é um classificador</p><p>linear (binário). Além disso, é usado na</p><p>aprendizagem supervisionada e pode ser</p><p>usado para classificar os dados de</p><p>entrada fornecidos.</p><p>, onde:</p><p>➔ são unidades de𝑥</p><p>𝑜</p><p>, 𝑥</p><p>1</p><p>, 𝑥</p><p>2</p><p>, ..., 𝑥</p><p>𝑛</p><p>entrada;</p><p>➔ são os pesos𝑤</p><p>𝑗𝑜</p><p>, 𝑤</p><p>𝑗1</p><p>, 𝑤</p><p>𝑗2</p><p>, ..., 𝑤</p><p>𝑗𝑛</p><p>das conexões;</p><p>➔ é a saída do perceptron;𝑦</p><p>𝑗</p><p>➔ é a função de ativação do𝑓(.)</p><p>neurônio, com a entrada:</p><p>.𝑆</p><p>𝑗</p><p>=</p><p>𝑖=0</p><p>𝑛</p><p>∑ 𝑤</p><p>𝑗𝑖</p><p>𝑥</p><p>𝑖</p><p>A regra de aprendizado de Hebb propõe</p><p>que o peso de uma conexão sináptica</p><p>deve ser ajustado se houver sincronismos</p><p>entre os níveis de atividade das entradas</p><p>e saídas: .∆𝑤</p><p>𝑖𝑗</p><p>(𝑡) = η · 𝑦</p><p>𝑖</p><p>(𝑡) · 𝑦</p><p>𝑗</p><p>(𝑡)</p><p>O treinamento supervisionado do modelo</p><p>de rede perceptron consiste em ajustar os</p><p>pesos e a polarização (bias ou threshold)</p><p>de suas unidades para que a</p><p>classificação desejada seja obtida. O</p><p>funcionamento do ajuste se dá por:</p><p>➔ Quando um padrão é inicialmente</p><p>apresentado à rede, ela produz</p><p>uma saída;</p><p>➔ Após medir a distância entre a</p><p>resposta atual e a desejada, são</p><p>realizados os ajustes apropriados</p><p>nos pesos das conexões, de modo</p><p>a reduzir a distância.</p><p>Para a adaptação do threshold (bias),</p><p>juntamente com os pesos, pode-se</p><p>considerá-lo como sendo um peso</p><p>associado a uma conexão cuja entrada é</p><p>sempre igual a e adaptar o peso− 1</p><p>relativo a essa entrada.</p><p>A regra delta é uma variante da regra de</p><p>Hebb que considera a saída desejada</p><p>para ajustar o peso de maneira</p><p>proporcional: .∆𝑤</p><p>𝑖𝑗</p><p>= (𝑑</p><p>𝑗</p><p>− 𝑦</p><p>𝑗</p><p>) · 𝑦</p><p>𝑖</p><p>7</p><p>O treinamento do Perceptron se dá por</p><p>, onde:</p><p>➔ Par de treinamento é padrão</p><p>;(𝑒𝑛𝑡𝑟𝑎𝑑𝑎, 𝑟𝑒𝑠𝑝𝑜𝑠𝑡𝑎_𝑑𝑒𝑠𝑒𝑗𝑎𝑑𝑎)</p><p>➔ O erro é definido como:</p><p>(𝑟𝑒𝑠𝑝𝑜𝑠𝑡𝑎_𝑑𝑒𝑠𝑒𝑗𝑎𝑑𝑎 − 𝑟𝑒𝑠𝑝𝑜𝑠𝑡𝑎_𝑜𝑏</p><p>➔ A taxa de aprendizado é uma</p><p>constante positiva que</p><p>corresponde à velocidade do</p><p>aprendizado;</p><p>➔ As respostas geradas pelos</p><p>neurônios são calculadas através</p><p>de uma função de ativação.</p><p>Contudo, existem sérias restrições sobre</p><p>o que as redes perceptron são capazes</p><p>de representar. Por exemplo, elas não</p><p>são capazes de representar a função</p><p>OU-Exclusivo. Por conta disso,</p><p>adiciona-se uma outra camada</p><p>intermediária de processadores, chamada</p><p>Multi-Layer Perceptrons (MLP).</p><p>Redes Perceptron com uma única</p><p>camada possuem alimentação direta,</p><p>aprendizado supervisionado, uma</p><p>camada única de neurônios e representa</p><p>apenas funções linearmente separáveis.</p><p>É importante salientar que redes neurais</p><p>de múltiplas camadas só oferecem</p><p>vantagens sobre as de uma única</p><p>camada se existir uma função de ativação</p><p>não-linear entre as camadas.</p><p>Redes Neurais Perceptron</p><p>Multicamadas</p><p>Características</p><p>➔ Aprendizado supervisionado;</p><p>➔ Neurônios organizados em</p><p>camadas conectados (sinapses)</p><p>com todos os neurônios das</p><p>camadas adjacentes;</p><p>➔ Presença de camadas ocultas;</p><p>➔ Alimentação direta com fluxo de</p><p>informação do tipo forward (da</p><p>camada de entrada para a camada</p><p>de saída);</p><p>➔ Usa o gradiente descendente para</p><p>minimizar o erro;</p><p>➔ Capaz de representar qualquer</p><p>função;</p><p>➔ Possui diversos algoritmos de</p><p>aprendizado.</p><p>As camadas são, usualmente, divididas</p><p>em três grupos:</p><p>1. Camadas de Entrada: padrões são</p><p>apresentados à rede;</p><p>2. Camadas Intermediárias ou</p><p>Ocultas: realiza a maior parte do</p><p>processamento através das</p><p>conexões ponderadas e podem ser</p><p>consideradas como extratoras de</p><p>características.</p><p>3. Camada de Saída: onde o</p><p>resultado final é concluído e</p><p>apresentado.</p><p>Os principais componentes da MLP</p><p>➔ Camadas (de Entrada, Ocultas e</p><p>de Saída);</p><p>8</p><p>➔ Função de Base (estrutura do</p><p>neurônio responsável pela</p><p>comunicação das entradas);</p><p>➔ Função de Ativação (determina o</p><p>valor de saída do neurônio);</p><p>➔ Aprendizado (algoritmos de</p><p>aprendizado).</p><p>Funções de Ativação do Neurônio</p><p>➔ Degrau</p><p>➔ Sigmóide</p><p>➔ Linear por partes</p><p>➔ Gaussiana</p><p>Transmissão da Informação pela Rede</p><p>(da entrada para a saída)</p><p>1.</p><p>2.</p><p>3.</p><p>4.</p><p>5.</p><p>6.</p><p>Modelos de Aprendizagem usam o</p><p>Gradiente Descendente</p><p>O gradiente descendente é um algoritmo</p><p>de otimização que costuma ser usado</p><p>para treinar modelos de aprendizado de</p><p>máquina e redes neurais. Ele treina</p><p>modelos de aprendizado de máquina</p><p>minimizando os erros entre os resultados</p><p>previstos e os reais.</p><p>Para entender o Gradiente Descendente,</p><p>é preciso relembrar alguns conceitos</p><p>matemáticos como:</p><p>➔ Eq. da Reta: , onde𝑦 = 𝑚𝑥 + 𝑏</p><p>representa a inclinação e é a𝑚 𝑏</p><p>interceptação no eixo y.</p><p>➔ Derivadas: mínimos e máximos.</p><p>O ponto de partida é apenas um ponto</p><p>arbitrário para que seja avaliado o</p><p>desempenho. A partir desse ponto de</p><p>partida, é possível encontrar a</p><p>9</p><p>derivada (ou inclinação) e, a partir daí,</p><p>pode-se usar uma linha tangente para</p><p>observar o nível da inclinação. A</p><p>inclinação informará as atualizações</p><p>dos parâmetros, ou seja, os pesos e a</p><p>tendência. A inclinação no ponto de</p><p>partida será mais íngreme, mas à</p><p>medida que novos parâmetros são</p><p>gerados, a inclinação deve reduzir</p><p>gradualmente até atingir o ponto mais</p><p>baixo da curva, conhecido como ponto</p><p>de convergência.</p><p>Similar ao processo de encontrar a</p><p>linha de melhor ajuste na regressão</p><p>linear, o objetivo do gradiente</p><p>descendente é minimizar a função de</p><p>custo ou o erro entre o y previsto e o y</p><p>real. Para fazer isso, são necessários</p><p>dois pontos de dados: uma direção e</p><p>uma taxa de aprendizado.</p><p>Esses</p><p>fatores determinam os cálculos das</p><p>derivadas parciais das iterações</p><p>futuras, o que permite alcançar</p><p>gradualmente o mínimo local ou global</p><p>(ou seja, o ponto de convergência).</p><p>➔ A taxa de aprendizado é o</p><p>tamanho das etapas</p><p>necessárias para atingir o</p><p>mínimo. Normalmente, esse é</p><p>um valor pequeno e é avaliado</p><p>e atualizado com base no</p><p>comportamento da função de</p><p>custo.</p><p>➔ A função de custo (ou perda)</p><p>mede a diferença, ou erro, entre</p><p>o y real e o y previsto na sua</p><p>posição atual. Isso melhora a</p><p>eficácia do modelo de</p><p>aprendizado de máquina,</p><p>fornecendo feedback ao modelo</p><p>para que ele possa ajustar os</p><p>parâmetros para minimizar o</p><p>erro e encontrar o mínimo local</p><p>ou global.</p><p>Algoritmo Backpropagation</p><p>Durante o treinamento com o</p><p>algoritmo backpropagation, a rede</p><p>opera em uma sequência de três</p><p>passos:</p><p>1. Um padrão (instância ou</p><p>exemplo) é apresentado à</p><p>camada de entrada de rede e o</p><p>sinal flui através da rede:</p><p>camada por camada, até que a</p><p>resposta seja reproduzida pela</p><p>camada saída;</p><p>2. A saída obtida é comparada</p><p>com a saída desejada para</p><p>esse padrão particular: se esta</p><p>não estiver correta, o erro é</p><p>calculado e propagado a partir</p><p>da camada de saída até a</p><p>camada de entrada;</p><p>3. Ajustes dos pesos: os pesos</p><p>das conexões vão sendo</p><p>modificados conforme o erro é</p><p>“retropropagado”.</p><p>A regra delta padrão, essencialmente,</p><p>implementa um gradiente descendente</p><p>do quadrado da soma do erro para</p><p>funções de ativação lineares.</p><p>10</p><p>Entretanto, a superfície do erro pode</p><p>não ser tão simples: as redes ficam</p><p>sujeitas aos problemas mínimos</p><p>locais.</p><p>As redes que utilizam backpropagation</p><p>trabalham com uma variação da regra</p><p>delta, apropriada para redes</p><p>multicamadas: a regra delta</p><p>generalizada. Ela funciona quando são</p><p>utilizadas (na rede) unidades com uma</p><p>função de ativação semi-linear, que é</p><p>uma função diferenciável e não</p><p>decrescente. Nesse caso, a função</p><p>sigmóide é a função de ativação</p><p>amplamente utilizada.</p><p>A taxa de aprendizado é uma</p><p>constante de proporcionalidade no</p><p>intervalo [0,1]. Contudo, o gradiente</p><p>descendente requer que sejam</p><p>tomados passos infinitesimais, ou</p><p>seja, quanto maior for a constante,</p><p>maior será a mudança nos pesos e,</p><p>consequentemente, aumenta a</p><p>velocidade do aprendizado e pode</p><p>levar à uma oscilação do modelo na</p><p>superfície do erro.</p><p>O treinamento das redes MLP com</p><p>backpropagation pode demandar muitos</p><p>passos no conjunto de treinamento,</p><p>resultando em um tempo de treinamento</p><p>consideravelmente alto. Se for</p><p>encontrado um mínimo local, o erro para</p><p>o conjunto de treinamento para de</p><p>diminuir e estaciona em um valor maior</p><p>que o aceitável.</p><p>Para resolver esse problema e aumentar</p><p>a taxa de aprendizado sem levar à</p><p>oscilação é necessário modificar a regra</p><p>delta generalizada para incluir o termo</p><p>momentum: uma constante que</p><p>determina o efeito das mudanças</p><p>passadas dos pesos na direção atual do</p><p>movimento no espaço dos pesos. Esse</p><p>termo se torna útil em espaços de erro</p><p>que contenham longas gargantas, com</p><p>curvas acentuadas ou vales com</p><p>descidas suaves.</p><p>Simulação do Backpropagation</p><p>(retropropagação do erro: da saída para</p><p>a entrada)</p><p>1.</p><p>2.</p><p>3.</p><p>4.</p><p>5.</p><p>6.</p><p>11</p><p>Simulação do Backpropagation (ajuste</p><p>dos pesos: da saída para a entrada)</p><p>1.</p><p>2.</p><p>3.</p><p>4.</p><p>5.</p><p>6.</p><p>7. Aplicação da Fórmula de</p><p>Aprendizado sobre a Sigmóide (</p><p>e𝑓(𝑥) = 1</p><p>1+ 𝑒 −β×</p><p>)𝑓'(𝑥) = 𝑥 · (1 − 𝑥)</p><p>O ajuste do peso é dado por:𝑤</p><p>14</p><p>,𝑤'</p><p>14</p><p>= 𝑤</p><p>14</p><p>+ η · δ</p><p>4</p><p>· (𝑒 · (1 − 𝑒)) · 𝑦</p><p>1</p><p>onde é a taxa de aprendizagemη</p><p>e corresponde ao somatório de𝑒</p><p>entrada da função de ativação</p><p>sigmóide sobre o neurônio 4.</p><p>O ajuste de peso também𝑤</p><p>14</p><p>pode usar o termo momentum:</p><p>𝑤'</p><p>14</p><p>= 𝑤</p><p>14</p><p>+ η · δ</p><p>4</p><p>· (𝑒 · (1 − 𝑒)) · 𝑦</p><p>1</p><p>+ ω · ∆𝑤</p><p>14</p><p>, onde é o termo momentum eω</p><p>é o valor do ajuste do peso∆𝑤</p><p>14</p><p>no passo anterior (inicialmente 0).</p><p>Aprendizado com o Gradiente</p><p>Descendente</p><p>➔ GD Stocástico: atualiza os pesos</p><p>de cada exemplo;</p><p>➔ GD Batch: atualiza pesos após</p><p>leitura de todos exemplos;</p><p>➔ GB Mini-batch: meio termo.</p><p>Outros Modelos de RNA’s</p><p>➔ Aprendizado supervisionado:</p><p>◆ Adaline - Adaptive Linear</p><p>Element.</p><p>◆ Madaline - Multiple Adaline.</p><p>➔ Aprendizado não-supervisionado:</p><p>12</p><p>◆ Redes ART - Adaptive</p><p>Ressonance Theory.</p><p>◆ Realimentação entre a</p><p>camada competitiva e a de</p><p>entrada.</p><p>➔ Memória Associativa Bidirecional</p><p>(BAM):</p><p>◆</p><p>◆ Aprendizado</p><p>não-supervisionado.</p><p>◆ Redes recorrentes.</p><p>◆ Conexão bidirecional entre</p><p>todos os neurônios de</p><p>camadas adjacentes e do</p><p>neurônio com ele mesmo;</p><p>◆ Camadas de entrada e</p><p>saída são relativos</p><p>(dependem do sentido de</p><p>propagação do sinal).</p><p>◆ Converge em um estado</p><p>estável após algumas</p><p>iterações;</p><p>◆ Ao armazenar o padrão</p><p>(X,Y), automaticamente</p><p>armazena seu</p><p>complemento.</p><p>➔ Redes de Hopfield:</p><p>◆</p><p>◆ Aprendizado</p><p>não-supervisionado.</p><p>◆ Redes recorrentes;</p><p>◆ É uma memória</p><p>auto-associativa;</p><p>◆ Suas entradas são valores</p><p>binários;</p><p>◆ Ativação assíncrona de</p><p>neurônios.</p><p>➔ Rede de Kohonen:</p><p>◆</p><p>◆ Aprendizado</p><p>não-supervisionado;</p><p>◆ Redes concorrentes;</p><p>◆ Camada de entrada:</p><p>neurônios estão totalmente</p><p>conectados a outra</p><p>camada;</p><p>◆ Camada Competitiva: cada</p><p>neurônio está conectado à</p><p>vizinhança; cada neurônio</p><p>dessa camada tenta se</p><p>excitar e excitar os</p><p>neurônios próximos através</p><p>de conexões de</p><p>realimentação.</p><p>➔ Rede Recorrente - LSTM</p><p>◆</p><p>◆ Utilizada para problemas</p><p>de séries temporais;</p><p>◆ Possui unidade de</p><p>memória que guarda</p><p>informações passadas.</p><p>➔ Redes Neurais Convolucionais –</p><p>CNNs</p><p>◆</p><p>13</p><p>◆ Convoluções são filtros</p><p>para extração de</p><p>características;</p><p>◆ Geralmente possuem</p><p>camadas totalmente</p><p>conectadas no final do</p><p>modelo (MLP);</p><p>◆ Muito utilizada para</p><p>problemas com imagens.</p><p>➔ Autoencoders</p><p>◆</p><p>◆ Codificação e</p><p>decodificação;</p><p>◆ Espaço latente representa</p><p>informações;</p><p>◆ Utilizada para tradução e</p><p>eliminação de ruídos.</p><p>➔ Redes Geradoras Adversárias –</p><p>GANs</p><p>◆</p><p>◆</p><p>◆ Possuem 2 sub-redes;</p><p>◆ Gerador x Discriminador;</p><p>◆ Utilizadas para criação.</p><p>Algoritmos Genéticos</p><p>Introdução</p><p>Os algoritmos genéticos têm como base</p><p>a Teoria da Evolução de Charles Darwin,</p><p>que apresenta quatro fatores para a</p><p>variação dentro de uma mesma espécie:</p><p>1. Influências ambientais;</p><p>2. Recombinação genética;</p><p>3. Mutação;</p><p>4. Seleção natural.</p><p>A codificação é um processo de</p><p>representação das soluções candidatas</p><p>ao problema. Os AG’s não operam</p><p>diretamente sobre a solução, mas sim</p><p>sobre as estruturas simbólicas</p><p>manipuláveis. Nesse caso, utilizando</p><p>conceitos biológicos, temos o Fenótipo</p><p>(a solução candidata para o problema</p><p>em questão) e o Genótipo (a</p><p>representação da solução candidata que</p><p>torna possível a aplicação dos</p><p>operadores genéticos pelo AG).</p><p>O Problema do Caixeiro Viajante</p><p>14</p><p>A Função de Aptidão</p><p>A função objetivo fornece uma medida</p><p>de qualidade em relação a um problema</p><p>específico e é restrita a uma solução</p><p>(indivíduo). Considerando o exemplo do</p><p>Caixeiro Viajante:</p><p>➔ Solução 1: 𝑓</p><p>𝑠𝑜𝑙𝑢çã𝑜</p><p>(4, 2, 0, 3, 1) = 773</p><p>(distância percorrida);</p><p>➔ Solução 2: 𝑓</p><p>𝑠𝑜𝑙𝑢çã𝑜</p><p>(2, 1, 0, 4, 3) = 514</p><p>Já a função de aptidão transforma essa</p><p>medida em uma grandeza que</p><p>representa oportunidade de reprodução</p><p>e é sempre definida em relação aos</p><p>demais indivíduos dessa população.</p><p>Considerando o mesmo exemplo, temos:</p><p>➔ Solução 1: 𝑓</p><p>𝑠𝑜𝑙𝑢çã𝑜</p><p>(4, 2, 0, 3, 1) = 0, 08</p><p>(2ª melhor solução);</p><p>➔ Solução 2: 𝑓</p><p>𝑠𝑜𝑙𝑢çã𝑜</p><p>(2, 1, 0, 4, 3) = 514</p><p>(melhor solução).</p><p>Algumas considerações sobre a função</p><p>de aptidão:</p><p>➔ O valor de aptidão pode ser a</p><p>própria função objetivo, mas nem</p><p>sempre isso é possível.</p><p>➔ Quando os valores são muito</p><p>próximos a seleção se torna</p><p>quase aleatória.</p><p>➔ Existência de um super-indivíduo:</p><p>◆ Dominância da população</p><p>no momento de seleção;</p><p>◆ Pode gerar uma</p><p>convergência prematura.</p><p>➔ Uma forma de transformar a</p><p>função objetivo na aptidão do</p><p>indivíduo é adotar um rank, isto é:</p><p>◆ a população é ordenada de</p><p>acordo com o resultado de</p><p>cada indivíduo;</p><p>◆ a aptidão corresponde à</p><p>posição do indivíduo no</p><p>rank.</p><p>O Método de Seleção</p><p>A seleção pode ser definida de maneira</p><p>simples como a escolha probabilística de</p><p>indivíduos de uma população, tendo</p><p>como base suas aptidões.</p><p>O objetivo da seleção é escolher os</p><p>melhores indivíduos para o processo de</p><p>reprodução, responsável por transmitir</p><p>as</p><p>informações genéticas dos atuais</p><p>indivíduos para os novos indivíduos.</p><p>➔ Seleção proporcional à aptidão</p><p>via método da Roleta;</p><p>◆</p><p>➔ Seleção por Rank-Linear e</p><p>Exponencial;</p><p>◆</p><p>➔ Seleção por Torneio. É o método</p><p>de seleção mais simples:</p><p>◆ Escolhe-se aleatoriamente</p><p>um subconjunto de</p><p>indivíduos;</p><p>◆ Realiza um torneio entre</p><p>esses indivíduos;</p><p>◆ Aqueles com melhor</p><p>desempenho são</p><p>15</p><p>escolhidos para</p><p>reprodução.</p><p>Os Operadores Genéticos</p><p>Os operadores genéticos são os</p><p>principais mecanismos existentes nos</p><p>AG’s para exploração de regiões</p><p>desconhecidas do espaço de busca.</p><p>Sua aplicação ocorre em conjunto com a</p><p>etapa de seleção. Os indivíduos</p><p>selecionados são submetidos ao</p><p>processo de reprodução em que seus</p><p>genes são combinados ou alterados,</p><p>dando origem a novos indivíduos.</p><p>Recombinação ou Crossover</p><p>É o operador responsável pela troca de</p><p>material genético entre os indivíduos</p><p>com probabilidade de reproduzirem mais</p><p>frequentemente “bons” indivíduos, ou</p><p>seja, mais aptos ao ambiente. Esse</p><p>processo constitui um dos mais</p><p>importantes no mecanismo evolutivo dos</p><p>AG’s.</p><p>As formas mais comuns de aplicação</p><p>são:</p><p>➔ Crossover de um ponto;</p><p>➔ Crossover multiponto;</p><p>➔ Crossover uniforme.</p><p>Operador Genético de Mutação</p><p>Esse operador efetua pequenas</p><p>alterações nos genes de um indivíduo.</p><p>Seu objetivo é restaurar o material</p><p>genético perdido ou não explorado em</p><p>uma população, ajudando a manter a</p><p>diversidade da população e visando</p><p>prevenir a convergência prematura do</p><p>AG para soluções subótimas.</p><p>Com ele, é possível gerar indivíduos que</p><p>pertençam a regiões com grande</p><p>potencial no espaço de busca.</p><p>Ao contrário do crossover, a mutação</p><p>opera sobre um único indivíduo. Ela</p><p>assegura que existe uma possibilidade</p><p>não nula de se gerar qualquer solução a</p><p>partir de qualquer estado da população.</p><p>Algumas aplicações:</p><p>➔ Em um único gene:</p><p>◆ Grande probabilidade de</p><p>ocorrer;</p><p>◆ Escolha aleatória do gene</p><p>a ser modificado.</p><p>➔ Em múltiplos genes:</p><p>◆ A probabilidade diminui</p><p>proporcionalmente com a</p><p>quantidade de genes a</p><p>serem modificados.</p><p>➔ Escolha por gene do indivíduo:</p><p>◆ Probabilidade pequena de</p><p>ocorrer.</p><p>16</p><p>Exemplo de mutação em codificação</p><p>binária:</p><p>Algoritmo Genético Típico</p><p>Outros Conceitos Importantes</p><p>➔ Pressão de Seleção: relação de</p><p>probabilidade entre o indivíduo</p><p>mais apto e o menos apto;</p><p>◆ Deve ser adequada.</p><p>➔ Convergência prematura;</p><p>◆ Questão do</p><p>super-indivíduo.</p><p>➔ Geração;</p><p>◆ Algoritmo geracional:</p><p>substitui todos os</p><p>indivíduos.</p><p>➔ Elitismo;</p><p>◆ Os melhores indivíduos da</p><p>elite são copiados para a</p><p>próxima geração, evitando</p><p>a perda dos melhores.</p><p>➔ Coevolução: populações distintas</p><p>evoluindo em um mesmo</p><p>ambiente;</p><p>◆ Pode ser colaborativa ou</p><p>competitiva.</p><p>➔ Competição.</p><p>Colônia de Formigas</p><p>Introdução</p><p>Colônia de Formigas – e geralmente</p><p>outras sociedades de insetos sociais –</p><p>são sistemas distribuídos que, apesar da</p><p>simplicidade dos seus indivíduos,</p><p>apresentam uma organização social</p><p>altamente estruturada.</p><p>Algoritmo ACO</p><p>Otimização por Colônia de Formigas</p><p>Características</p><p>➔ Processamento paralelo;</p><p>➔ Caminhos inicialmente aleatórios;</p><p>➔ Retorno ao ninho, quando uma</p><p>solução é encontrada;</p><p>➔ Depósito de feromônios: aumento</p><p>na probabilidade de que outras</p><p>formigas seguirem o mesmo</p><p>caminho.</p><p>➔ Reínicio do processamento;</p><p>➔ Esquecimento de caminhos não</p><p>utilizados.</p><p>Consequências do Processo</p><p>➔ Caminhos cada vez mais curtos;</p><p>➔ Convergência para poucos ou</p><p>único caminho;</p><p>➔ Solução final é o melhor caminho.</p><p>17</p><p>Algoritmo de Otimização de Formigas</p><p>Simulador do Algoritmo ACO</p><p>➔ Exemplo de busca pelo melhor</p><p>caminho em superfície;</p><p>➔ Exemplo de busca pelo melhor</p><p>caminho em grafo.</p><p>Redes Bayesianas</p><p>Introdução</p><p>O Teorema de Bayes descreve a</p><p>probabilidade de um evento dado que</p><p>outro evento já ocorreu, o que é</p><p>chamado de probabilidade</p><p>condicional.</p><p>Nesse teorema precisamos ter alguma</p><p>informação anterior, ou seja, saber</p><p>que um determinado evento já ocorreu</p><p>e qual a probabilidade desse evento,</p><p>essa informação é chamada a priori.</p><p>Teorema de Bayes:</p><p>, onde:𝑃(𝐻|𝐸) = 𝑃(𝐸|𝐻)𝑃(𝐻)</p><p>𝑃(𝐸)</p><p>➔ é a hipótese;𝐻</p><p>➔ é a evidência;𝐸</p><p>➔ é a probabilidade da𝑃(𝐻|𝐸)</p><p>hipótese acontecer, dada a</p><p>evidência;</p><p>➔ é a probabilidade da𝑃(𝐸|𝐻)</p><p>evidência, dada a hipótese.</p><p>𝑃(𝐻|𝐸) = 𝑃(𝐻)𝑃(𝐸|𝐻)</p><p>𝑃(𝐻)𝑃(𝐸|𝐻) + 𝑃(¬𝐻)𝑃(𝐸|¬𝐻)</p><p>Exemplo Prático</p><p>Você testou positivo para uma doença</p><p>que afeta 0,1% da população. Qual a</p><p>chance de você realmente ter a doença,</p><p>considerando que o teste identifica</p><p>corretamente 99% das pessoas que</p><p>possuem a doença?</p><p>18</p><p>𝑃(𝐻|𝐸) = 0,99 · 0,001</p><p>0,001 · 0,99 + 0,999 · 0,01 = 9%</p><p>Redes Bayesianas</p><p>O modelo gráfico para a representação</p><p>de uma Rede Bayesiana é um grafo</p><p>dirigido e acícilico.</p><p>➔ Vértices: variáveis aleatórias</p><p>discretas ou contínuas;</p><p>◆ atributos visíveis ou</p><p>variáveis ocultas (ex.:</p><p>classe).</p><p>➔ Arestas: relações de</p><p>dependência;</p><p>➔ Ausência de arestas:</p><p>independência condicional.</p><p>Tendo como definição formal, o par</p><p>(S,P), em que:</p><p>➔ S é a estrutura da rede (nós e</p><p>arestas);</p><p>➔ P é o conjunto de distribuição de</p><p>probabilidades</p><p>➔ 𝑝(𝑥𝑖|𝑝𝑎(𝑥𝑖)) − 𝑝𝑎(𝑥𝑖): 𝑛ó𝑠 𝑝𝑎𝑖𝑠 𝑑𝑒 𝑥𝑖</p><p>É possível obter a distribuição de</p><p>probabilidade conjunta da rede</p><p>multiplicando as probabilidades</p><p>condicionais em cada nó em todos os</p><p>caminhos da rede.</p><p>Utilidade — Inferência</p><p>Inicialmente ela pode ser tida como uma</p><p>forma de representar um conhecimento</p><p>especialista sobre incertezas do objeto</p><p>de estudo e de inferir sobre o que era</p><p>desconhecido, ou seja, onde as</p><p>probabilidades não são representadas</p><p>diretamente no modelo.</p><p>Redes Bayesianas como</p><p>Classificadores</p><p>Além da inferência, a rede pode ser</p><p>interpretada como um classificador, onde</p><p>a classe e as características são</p><p>representadas no modelo, sendo que a</p><p>classe possui uma dependência em</p><p>relação às características (não</p><p>obrigatoriamente, à todas elas). Dessa</p><p>forma é realizada uma classificação com</p><p>base nas probabilidades a posteriori.</p><p>Contudo, existem alguns problemas</p><p>relacionados a essa abordagem:</p><p>➔ Se o número de configurações é</p><p>grande, o erro de estimação será</p><p>grande;</p><p>➔ Mesmo com uma amostra grande,</p><p>o que evitaria o problema anterior,</p><p>seria custoso estimar os</p><p>parâmetros.</p><p>Devido a esses problemas, foram</p><p>criadas algumas alternativas que</p><p>realizam simplificações topológicas na</p><p>rede, que diminuem o erro de estimação</p><p>e simplificam o processo de estimação</p><p>de parâmetros.</p><p>19</p><p>Naive Bayes Classifier (NBC)</p><p>Aqui é realizada a inversão da classe e</p><p>das características, ou seja, a classe</p><p>ficará na raiz e as características ficam</p><p>nas folhas que são filhas diretas da raiz.</p><p>Também é considerada independência</p><p>entre as características, já que elas são</p><p>filhas imediatas da classe.</p><p>Esse método traz a vantagem de</p><p>estrutura fixa da rede e com isso</p><p>somente os parâmetros precisam ser</p><p>aprendidos.</p><p>E a desvantagem é que ele assume a</p><p>independência entre as características.</p><p>Os resultados dependem do domínio do</p><p>problema, caso essa simplificação de</p><p>topologia seja muito diferente da</p><p>realidade os resultados podem não ser</p><p>bons.</p><p>Pontos Fortes das Redes Bayesianas</p><p>➔ Considerando que temos os</p><p>valores corretos das</p><p>probabilidades, inclusive das</p><p>condicionais, conseguimos o valor</p><p>ótimo de classificação. Elas</p><p>conseguem lidar com dados</p><p>incompletos (missing values).</p><p>➔ Aprendizado de relações causais,</p><p>permitindo interpretabilidade, que</p><p>nos dá uma utilização mais</p><p>interessante em alguns domínios</p><p>onde interpretar os resultados é</p><p>crucial.</p><p>➔ Combina dados e conhecimento a</p><p>priori, ou seja, podemos inserir o</p><p>conhecimento do especialista da</p><p>área tanto quanto o conhecimento</p><p>empírico.</p><p>➔ Uma forma de evitar o overfitting</p><p>quando utilizamos a estimação</p><p>MAP.</p><p>➔ A classificação multiclasse é</p><p>natural, ao contrário de outros</p><p>classificadores que são</p><p>naturalmente binários. É um</p><p>método supervisionado, ou seja,</p><p>precisamos saber a classificação</p><p>para realizar o treinamento da</p><p>rede.</p><p>➔ Paramétrico, porque precisamos</p><p>assumir uma distribuição dos</p><p>dados para conseguir estimar os</p><p>parâmetros. Caso os dados sejam</p><p>categóricos assumimos uma</p><p>distribuição multinomial e caso</p><p>sejam contínuos podemos</p><p>assumir uma distribuição normal,</p><p>por exemplo.</p><p>Outras</p><p>Observações</p><p>➔ Overfitting: a hipótese extraída a</p><p>partir dos dados é muito</p><p>específica para o conjunto de</p><p>treinamento:</p><p>◆ a hipótese apresenta um</p><p>bom desempenho para o</p><p>conjunto de treinamento,</p><p>mas um desempenho ruim</p><p>para os casos fora desse</p><p>conjunto.</p><p>◆ Soluções:</p><p>● realizar a</p><p>regularização dos</p><p>dados;</p><p>20</p><p>● fazer poda dos</p><p>ruídos e de dados</p><p>pouco relevantes</p><p>para o problema;</p><p>● realizar o ajuste dos</p><p>hiperparâmetros da</p><p>rede (nº de</p><p>camadas, funções</p><p>de ativação, etc).</p><p>➔ Underfitting: a hipótese induzida</p><p>apresenta um desempenho ruim</p><p>tanto no conjunto de treinamento</p><p>como de teste:</p><p>◆ Poucos exemplos</p><p>representativos foram</p><p>dados ao sistema de</p><p>aprendizado;</p><p>◆ O usuário pré-definiu um</p><p>tamanho muito pequeno</p><p>para o classificador;</p><p>● Ex.: neurônios</p><p>insuficientes em</p><p>uma rede neural ou</p><p>um alto valor de</p><p>poda para árvores</p><p>de decisão.</p><p>◆ O treinamento durou pouco</p><p>tempo.</p><p>➔ Overtuning: pode ocorrer quando</p><p>o desenvolvedor projeta o</p><p>algoritmo de aprendizagem, ou</p><p>específica seus parâmetros, a fim</p><p>de otimizar seu desempenho em</p><p>todos os dados disponíveis.</p>