Baixe o app para aproveitar ainda mais
Prévia do material em texto
1. Defina representação do conhecimento. Representação do Conhecimento é uma subárea de pesquisa em inteligência artificial. A pesquisa na área de representação do conhecimento tenta responder diversas perguntas como: Como representamos nosso conhecimento? As pessoas representam conhecimento todas da mesma maneira? Existe alguma forma de representar qualquer coisa? Como programas inteligentes devem representar conhecimento? Em tese, uma representação geral como a lógica de primeira ordem seria suficientemente expressiva para representar qualquer tipo de conhecimento. No entanto, problemas de eficiência, facilidade de uso e a necessidade de expressar conhecimento incerto e incompleto levaram ao desenvolvimento de diversos tipos de formalismos de representação de conhecimento, como lógica, sistemas de frames e redes semânticas. A lógica é a base para a maioria dos formalismos de representação de conhecimento, seja de forma explícita, como nos sistemas especialistas baseados na linguagem Prolog, seja disfarçada na forma de representações específicas que podem facilmente ser interpretadas como proposições ou predicados lógicos. No entanto, problemas de eficiência, facilidade de uso e a necessidade de expressar conhecimento incerto e incompleto levaram ao desenvolvimento de diversos tipos de formalismos de representação de conhecimento. Em outras palavras, representação do Conhecimento é a estruturação do que será empregado pelo sistema para que um sistema computacional possa utilizar aspectos do conhecimento. Conhecimento [Russel and Norvig 1995] é um conjunto integrado de fatos e relações que quando devidamente interpretado, produz um desempenho eficiente. 2. Apresente 3 características do conhecimento que devem ser analisadas no momento da representação. Características do conhecimento que devem ser analisadas: É volumoso: possui diversos aspectos, características e detalhes. A cada momento, novo conhecimento é gerado... De difícil caracterização: não sabemos explicar com formalismo como,quando e de que forma o conhecimento foi adquirido, como também temos dificuldade de explicá-lo. Em constante mudança: é aperfeiçoado sistematicamente, crescendo e se modificando permanentemente. É individual e único: cada indivíduo interpreta seu conhecimento de forma única. 3. Explique a necessidade da representação do conhecimento ser generalizável e robusta. Generalizável: vários pontos de vista do mesmo conhecimento concebem uma representação de modo que possa ser atribuído a diversas situações e interpretações. Robusta: de tal forma que seja possível a sua utilização mesmo não abordando todas as situações possíveis, ou seja, mesmo sendo incompleta e imprecisa. 4. Diferencie fatos e representação dos fatos. Fatos: Verdades em algum mundo relevante. Essas são as coisas que queremos representar. Representação de fatos: com algum formalismo escolhido. Essas são as coisas que efetivamente seremos capazes de manipular. 5. Apresente duas formas de raciocínio e exemplifique. Raciocínio é um processo de construção de novas sentenças a partir de sentenças existentes. Categorias (Típicas) de Raciocínio: Dedução Indução Abdução Dedução Processo de raciocínio no qual uma conclusão segue necessariamente das premissas supostas. Baseia-se na criação de novas sentenças a partir de premissas dadas como verdadeiras. A sentença criada é necessariamente verdadeira. Uma das regras básicas da inferência da Lógica Dedutiva: regra do modus ponens (Latim: modo que afirma) Se X é verdade e se X sendo verdade implica que Y é verdade, então Y é verdade. Exemplo: Premissa 1: Todo homem é mortal Premissa 2: João é homem Conclusão: João é mortal Indução Uma conclusão sobre todos os membros de uma classe por meio do exame de apenas uns poucos membros da classe. De maneira geral, raciocínio do particular para o geral. “Formalmente”: Para um conjunto de objetos, X={a,b,c,d,...}, se a propriedade P é verdade para a, e se P é verdade para b, e se P é verdade para c,... então P é verdade para todo X Exemplo: Joseana é professora Joseana tem um ótimo salário Lei geral: Professor tem um ótimo salário Abdução Consiste em, dada uma premissa do tipo P → Q, e sabendo-se que Q é verdadeira, admite-se que, talvez, P seja verdade, ou seja, supõe-se, sem certeza, que P é verdade. É uma heurística para fazer “inferências plausíveis”. Propicia uma conclusão plausível consistente com a informação disponível, a qual pode de fato está errada. “Formalmente”: Se Y é verdade e X implica em Y, então X é verdade Exemplo: Se eu leio que fumar causa câncer de pulmão e José morreu de câncer de pulmão, Lei Geral: posso inferir que José era um fumante. 6. Dentre as formas de representação do conhecimento estão as redes semânticas e os quadros (frames). Para cada uma delas: a. Explique a representação. b. Dê um exemplo. Redes semânticas: Há vários esquemas para se representar conhecimento. Dois deles, que capturam melhor o conhecimento relativo a objetos e as suas propriedades, são as cadeias semânticas e frames. O primeiro desses esquemas, as cadeias semânticas, originou-se na psicologia como resultado da modelagem de sistemas para a memória associativa humana. Mais recentemente, vários investigadores de ciência da computação estenderam o conceito original de cadeias semânticas para facilitar a manipulação de objetos mais complexos e suas relações. Basicamente, uma cadeia semântica é um grafo no qual os nós representam objetos (ou uma classe), e os vínculos mostram uma relação, geralmente binária, entre objetos ou classes conectadas pelo vínculo. Os nós podem ser de dois tipos: individuais ou genéricos. Os primeiros representam descrições ou afirmações relativas a uma instância individual de um objeto, enquanto os segundos são relacionados a uma classe ou categoria de objetos. As classes são pré-ordenadas em uma taxonomia, e há vínculos que representam relações binárias especiais como isa - é um (do inglês is a) - e ako - um tipo de (do inglês a kind of). O primeiro tipo de vínculo conecta um nó individual a um nó genérico e identifica um indivíduo como pertencendo a certa classe. O segundo une dois nós genéricos entre eles e mostra que determinada classe é subdivisão de outra classe. Exemplo: Analogamente à representação lógica, o formalismo de cadeias semânticas conta com comandos de armazenamento e consulta, e pode ser acessado a partir das regras através de padrões. A cadeia semântica associada ao exemplo da cor de Clyde pode ser definida através do seguinte comando: > (snet-store '(color (clyde real e-um) (real elefante e-um) (elefante cinza e-um) (clyde elefante e-um) (real cinza (not . e-um)))) Observe como foi introduzido o arco negado, com a construção de um “dotted-pair” onde o primeiro elemento é o símbolo “not”. A visualização do conteúdo da base pode ser feita através do comando list: > (snet-list) =================== graph : color ---- node : clyde | * edge : e-um |---|> node : elefante | | * edge : e-um | |---|> node : cinza | * edge : e-um |---|> node : real | * edge : (not . e-um) |---|> node : cinza | * edge : e-um |---|> node : elefante Pode-se agora determinar toda a teoria hierárquica definida através da rede “color”, utilizando as expressões de consulta adequadas:> (snet-query '(color (x y e-um))) ([ Substituicao : ((x . elefante) (y . cinza)) ] [ Substituicao : ((x . real) (y . elefante)) ] [ Substituicao : ((x . clyde) (y . elefante)) ] [ Substituicao : ((x . clyde) (y . real)) ]) > (snet-query '(color (x y (not . e-um)))) ([ Substituicao : ((x . real) (y . cinza)) ] [ Substituicao : ((x . clyde) (y . cinza)) ]) Quadros (Frames) A segunda representação de conhecimento - frames - ficou popular nos anos 70 devido ao aparecimento da teoria dos frames, que surgiu inicialmente como resultado de um artigo escrito por M. Minsky. É a forma de representar o conhecimento de um objeto através da "observação visual", ou seja, tendo uma idéia do objeto pré-definida na memória faz a comparação desta idéia, ou conjunto de idéias, com aquelas propriedades que podemos observar visualmente. Na ocasião, o uso de frames foi recomendado como básico para se entender a percepção visual, os diálogos em linguagem natural e outros conceitos complexos. Frame é uma representação de um objeto complexo. Ele é identificado por um nome e consiste em conjunto de slots. Cada frame possui ao menos um frame hierarquicamente superior e, portanto, constitui uma base com mecanismo de herança. Um frame especial é a raiz desta hierarquia de herança. Sistemas baseados em cadeias semânticas e sistemas baseados em frames podem ser considerados semelhantes com respeito às suas estruturas, mas diferem no que representam. Quer dizer, enquanto cadeias semânticas representam objetos simples, um sistema de frames pode representar objetos complexos. Exemplo de frame: Frame: Course in KB University MemberSlot: enrolls ValueClass: Student Cardinality.Min: 2 Cardinality.Max: 30 MemberSlot: taughtby ValueClass: (UNION GradStudent Professor) Cardinality.Min: 1 Cardinality.Max: 1 Frame: AdvCourse in KB University SuperClasses: Course MemberSlot: enrolls ValueClass: (INTERSECTION GradStudent (NOT Undergrad)) Cardinality.Max: 20 Frame: BasCourse in KB University SuperClasses: Course MemberSlot: taughtby ValueClass: Professor Frame: Professor in KB University Frame: Student in KB University Frame: GradStudent in KB University SuperClasses: Student MemberSlot: degree ValueClass: String Cardinality.Min: 1 Cardinality.Max: 1 Frame: Undergrad in KB University SuperClasses: Student 7. Dado o conhecimento “Todo aluno de Ciência da Computação estuda na UNIFEI.” Como representá-lo na lógica proposicional? 𝐴 ∧ 𝐶 𝑈 A = Aluno C = Ciência da computação U = UNIFEI Resposta Yasmin: A = Todo aluno de Ciência da Computação B = estuda na UNIFEI A->B 8. “Desde o final dos anos 70 tem havido um grande interesse no uso de métodos que derivam da lógica matemática na pesquisa de Inteligência Artificial...” Com relação ao emprego da lógica como formalismo de representação do conhecimento: a. Diferencie lógica proposicional e lógica de predicados. O cálculo de predicados nos permite raciocinar sobre propriedades de objetos e relacionamentos entre objetos. Na lógica proposicional, é possível representar a sintaxe, a semântica e a dedução que deriva uma expressão a partir de um conjunto de expressões, porém não nos permite extrair qualquer informação sobre os objetos e seus relacionamentos. No cálculo de predicados é possível expressar as propriedades de objetos. b. Mostre num exemplo o poder de expressividade da lógica de predicados. Por exemplo, na afirmação “eu gosto de queijo” pode ser representada pela expressão 𝐺(𝑒𝑢, 𝑞𝑢𝑒𝑖𝑗𝑜) Onde G é um predicado que representa a ideia de ”gostar”. Portanto, neste caso foi possível expressar tanto uma propriedade do objeto eu, quanto um relacionamento entre eu e o queijo. 9. Apresente os componentes de um sistema especialista, explicando cada um deles. A arquitetura de um sistema especialista é composta de: Base de conhecimento: contém o conhecimento específico de um domínio que é usado por um especialista para derivar conclusões a partir de fatos armazenado numa base de dados de fatos. Base de dados de fatos: contém os dados específicos de casos que serão usados em um caso particular para derivar uma conclusão. Sistema de explicações: fornece informações ao usuário sobre como o mecanismo de inferência chegou às suas conclusões. Mecanismo de inferência: estabelece as regras de inferência do sistema especialista. Editor da Base de Conhecimento: provê o acesso entre a interface de usuário e a base de dados de conhecimento para modificações e ajustes desta base. Usuário: interage com o sistema especialista por meio de uma interface de usuário que fornece acesso ao mecanismo de inferência, ao sistema de explicação e ao editor da base de conhecimento. Resposta da Yasmin: São componentes essenciais de um Sistema Especialista : • Base de conhecimentos composta de fatos e regras; • Mecanismo de inferência; • Interface com o usuário. As bases de conhecimentos compreendem coleções de : • Objetos, que são as conclusões a que o Sistema deve chegar; • Atributos, que são propriedades que servem para caracterizar os objetos. Os mecanismos de inferência podem ser de dois tipos: 1. Encadeamento para diante. Neste tipo selecionam-se atributos até obter uma combinação deles que caracterize um objeto; 2. Encadeamento para traz. Neste tipo seleciona-se um objeto, como sendo a hipótese de estudo, e busca-se determinar a viabilidade da aceitação dessa hipótese pela ocorrência ou não dos atributos adequados. Caso a hipótese falhe seleciona-se outra hipótese e prossegue-se com as tentativas. 10. Apresente um exemplo de sistema especialista em qualquer área de conhecimento. Um sistema especialista de suporte ao diagnóstico de câncer pela análise de imagens das células. Medicina: MYCIN ajuda no diagnóstico e tratamento de doenças infecciosas; ONCOCIN ajuda no tratamento de paciêntes com câncer. 11. Enumere as diferenças entre a teoria clássica dos conjuntos e a teoria dos conjuntos difusos. Um conjunto nebuloso contrasta com os conjutnos usados na teoria tradicional de conjuntos ou conjuntos nítidos. Este último pode ser definido pelos valores contidos nele. Um valor está ou não no conjunto nítido, como por exemplo os elementos do conjunto dos números naturais. Já no conjunto nebuloso não existe uma fronteira bem definida como no primeiro caso. Os elementos de um conjunto nebuloso podem existir na interseção ou união de dois ou mais conjuntos nítidos. Os elementos são definidos de acordo com seu grau de pertinência (a ser definido por uma respectiva função de pertinência) de um determinado conjunto. • Enquanto os conjuntos difusos são conjuntos cujos elementos possuem valores de pertinência que variam no intervalo [0,1]: • Elemento com pertinência 0 = não pertence ao conjunto difuso F. • Elemento com pertinência 1 = é uma representação completa do conjunto difuso F. • Conjuntos difusos são uma generalização dos conjuntos crisp. • Definição da função de pertinência depende: do significado lingüístico definido para o conjunto e da sua interpretação no contexto do universo utilizado. 12. Quais os componentes de um sistema difuso? OBS: 1(') O termo em inglês fuzzy é traduzido para o português como difuso ou nebuloso. • Depois da entrada do sistema (valor preciso), o valor de entrada passa pela "fuzzificação" (grau de pertinência de acordo com as funções definidas dentro do sistema; • depois encontra os graus de pertinência dado o valor de entradae algumas regras são ativadas para executar determinada tarefa; • O que vai ser feito também possui um grau de pertinência associado; • A maioria dos sistemas necessita de uma resposta precisa, então são acionados conjuntos de regras para defuzzificação para apresentar o valor preciso; • Depois desse processo, ele sai do sistema. 13. Considere o conjunto difuso A = 1.0/1 + 0.8/2 + 0.5/3 + 0.1/4 definido no universo X = {1, 2, 3, 4, 5}. Encontre todos os seus a-cuts. 14. Dado o conjunto difuso A com a seguinte função de pertinência: Esboce o gráfico da função. Que tipo ela é? Qual expressão linguística pode ser descrita a partir de A? 15. Considere dois conjuntos difusos representados pelas seguintes funções de pertinência triangulares A(x; 1, 2 ,3) e B(x; 2, 2, 4). Encontre a intersecção e a união de A e B e expresse as operações utilizando os operadores min e max. 16. Defina uma rede neural artificial. Pesquise e descreva duas aplicações reais para as quais uma rede neural artificial se apresenta como um modelo adequado de solução. É um modelo de IA que simula o cérebro humano. Num primeiro momento há o processo de aprendizado, que depois de assimilado é armazenado para ser utilizado posteriormente. A taxa de aprendizado pode ser alta ou baixa. Exemplo, aulas de inglês intensivas de 8 horas diárias por três meses, ou 2 aulas semanais por longo período. A tendência é que se uma pessoa é apresentada numa taxa de aprendizado alta, se você não ativar aquele conhecimento por muito tempo, o conhecimento acaba desaparecendo, ao contrário da taxa de aprendizado baixa. Matematicamente, os objetos são convertidos em pontos no espaço, como por exemplo amostras de informações sobre pessoas num banco de dados com n registros com campos preenchidos. Cada registro deste é um ponto no espaço; essas coisas podem estar classificadas de acordo com o perfil. O que o modelo matemático pode tentar fazer é estabelecer uma distância entre esses pontos no mesmo espaço, traçando uma fronteira entre as classes que foram definidas no espaço. As novas amostras que aparecerem pertencerão à classe em que se contra depois da definição da fronteira. Ter um treinamento mais lento PODE (não garante) melhores resultados. 17. Defina aprendizado supervisionado e não-supervisionado. As redes neurais podem ser supervisionadas. Mas se não se tem amostras que serão analisadas não é possível aplicar a rede supervisionada. As funções de ativação são lineares nas redes que possuem uma camada de percepção. Já os perceptrons de múltiplas camadas são não-lineares e usam tangentes hiperbólicas ou sigmoides, de acordo com o caso. Vários problemas de mineração de dados, utiliza-se redes neurais, normalmente recomendada a rede de múltiplas camadas supervisionado. Nas redes neurais artificiais, os loops de iteração são chamados de épocas. Pesquisar por RBP (Funções de Base Radial). Toda rede neural guarda o conhecimento representado pelo seu conjunto de pesos. A rede neural não-supervisionada, tem a capacidade de fazer o agrupamento no espaço. Quando se gera um grupo é porque as amostras têm características em comum. Depois de agrupadas, esses agrupamentos são nomeados e passam a ser uma classe. Algumas literaturas se referem aos grupos como "clusters". Uma rede neural que faz agrupamento faz praticamente a mesma coisa que um algoritmo de aprendizado não-supervisionado. Os pontos em volta tem seus fatores atualizados de acordo com as características dos neurônios vizinhos, para tentar que uma auto-organização seja feita. Existe um processo que ao longo das iterações, vão se organizando de acordo com suas características. Os pesos associados são ligados ao neurônio, não às conexões como no caso da rede supervisionada. 𝑤 = 𝑤𝑎 + 𝑑. 𝑣 onde (d) é a distância do centro e (v) é o valor analisado. (que é quase a mesma coisa que calcular a distância dos pontos associados) 18. Descreva um neurônio artificial, apresentando seu modelo e explicando cada um dos seus componentes. Um neurônio artificial (idealizado antes mesmo da IA), tenta imitar o neurônio natural. Ele possui uma entrada para ser ativada e uma saída para ativar os neurônios seguintes. Ou seja, dada uma entrada, quero que ele produza uma saída; o neurônio tem que processar esta entrada e responder alguma coisa, com uma função de ativação. Uma rede neural tenta encontrar uma reta que separe os resultados. Os pesos iniciais de uma rede neurais são normalmente aleatórios. Recomenda-se a utilização de valores pequenos para representação do peso "w". O peso é atualizado com a soma da etapa anterior com uma taxa de aprendizado multiplicado pela entrada e pelo erro. w=w_a+ η.x.e Se a taxa de aprendizado for muito pequena, pode acontecer do sistema demorar demais para encontrar um resultado e ter uma convergência. Portanto, o aleatório inicial da rede neural pode fazer a diferença. 19. O que são funções linearmente separáveis? Exemplifique. A atualização de peso é feita em função do grau do erro e do padrão. Este procedimento procura minimizar erro. A técnica de aprendizado consiste em guiar a linha que separada as classes para que se encontre o resultado esperado. Problemas de separação de ou-exclusivo XOR, ou paridade, não conseguem ser resolvidos pela divisão linear. No entanto, com o algoritmo de perceptron de múltiplas camadas (MLP) que usa um neurônio ligado no outro, resolve o problema. 20. Cite pelo menos 3 funções que podem ser empregadas como função de ativação de um neurônio. Cada neurônio (ou nó) em uma rede neuronal recebe uma série de entradas. Uma função chamada de função de ativação é aplicada a esses valores de entrada, o que resulta no nível de ativação do neurônio, que é o valor de saída do neurônio. Há uma série de funções que podem ser utilizadas nos neurônios. Algumas das funções mais comuns são degrau, a função sigmoide e a função linear. A função linear divide os elementos que estão sendo classificados por uma fronteira definida por uma reta. A função degrau ou função limiar linear, as entradas para o neurônio são somadas (tendo cada uma sido multiplicada por um peso) e esta coma é comparada com um limiar. Se a soma for maior que o limiar, o neurônio ativará e terá um nível de ativação de +1. Caso contrário ficará inativo e terá zero como nível de ativação (ou -1 dependendo do tipo de rede). As funções de ativação mais utilizadas na prática são a função sigmóide logística e a função tangente hiperbólica, dependendo das características dos dados, também conhecidas como funções de ativação não-lineares. 21. O que é treinamento e ativação de uma RNA? a RNA É um modelo de IA que simula o cérebro humano. Num primeiro momento há o processo de aprendizado, que depois de assimilado é armazenado para ser utilizado posteriormente. A taxa de aprendizado pode ser alta ou baixa. Exemplo, aulas de inglês intensivas de 8 horas diárias por três meses, ou 2 aulas semanais por longo período. A tendência é que se uma pessoa é apresentada numa taxa de aprendizado alta, se você não ativar aquele conhecimento por muito tempo, o conhecimento acaba desaparecendo, ao contrário da taxa de aprendizado baixa. Matematicamente, os objetos são convertidos em pontos no espaço, como por exemplo amostras de informações sobre pessoas num banco de dados com n registros com campos preenchidos. Cada registro deste é um ponto no espaço; essas coisas podem estar classificadas de acordo com o perfil. O que o modelo matemático pode tentar fazer é estabelecer uma distância entre esses pontos no mesmo espaço, traçando uma fronteira entre as classes que foram definidas noespaço. As novas amostras que aparecerem pertencerão à classe em que se contra depois da definição da fronteira. Ter um treinamento mais lento PODE (não garante) melhores resultados. Um neurônio artificial (idealizado antes mesmo da IA), tenta imitar o neurônio natural. Ele possui uma entrada para ser ativada e uma saída para ativar os neurônios seguintes. Ou seja, dada uma entrada, quero que ele produza uma saída; o neurônio tem que processar esta entrada e responder alguma coisa, com uma função de ativação. Uma rede neural tenta encontrar uma reta que separe os resultados. Numa rede neural, é preciso que haja um peso associado entre as entradas e saídas. Um algoritmo de rede neural funciona bem em problemas não-lineares para serem mapeados e tornarem-se lineares. “Treinar” uma rede neural significa ajustar pesos das várias camadas de forma que a saída coincida com valor desejado para uma dada entrada. O treinamento pode ser supervisionado (com um “professor”) ou não supervisionado (“auto-organizado”). As redes neurais podem ser supervisionadas. Mas se não se tem amostras que serão analisadas não é possível aplicar a rede supervisionada. As funções de ativação, conforme explicado na questão anterior, são lineares nas redes que possuem uma camada de percepção. Já os perceptrons de múltiplas camadas são não-lineares e usam tangentes hiperbólicas ou sigmoides, de acordo com o caso. Toda rede neural guarda o conhecimento representado pelo seu conjunto de pesos. A rede neural não-supervisionada, tem a capacidade de fazer o agrupamento no espaço. Quando se gera um grupo é porque as amostras têm características em comum. Depois de agrupadas, esses agrupamentos são nomeados e passam a ser uma classe. Algumas literaturas se referem aos grupos como "clusters". Uma rede neural que faz agrupamento faz praticamente a mesma coisa que um algoritmo de aprendizado não-supervisionado. Os pontos em volta tem seus fatores atualizados de acordo com as características dos neurônios vizinhos, para tentar que uma auto-organização seja feita. Existe um processo que ao longo das iterações, vão se organizando de acordo com suas características. Os pesos associados são ligados ao neurônio, não às conexões como no caso da rede supervisionada. w=w_a+d.v onde (d) é a distância do centro e (v) é o valor analisado. (que é quase a mesma coisa que calcular a distância dos pontos associados) 22. Para que serve o parâmetro de taxa de aprendizado numa rede neural? O parâmetro taxa de aprendizado tem grande influência durante o processo de treinamento da rede neural. Uma taxa de aprendizado baixa torna o aprendizado da rede muito lento, ao passo que uma taxa de aprendizado muito alta provoca oscilações no treinamento e impede a convergência do processo de aprendizado. Geralmente seu valor varia de 0.1 a 1.0. Alguns softwares disponíveis no mercado possuem este parâmetro adaptativo, por isso a escolha de um valor inicial não é um grande problema. 23. Descreva as vantagens e as limitações das redes neurais. –Alto poder computacional –Processamento paralelo –Robusta a ruídos e dados incompletos –Capaz de estimar mapeamentos não-lineares desconhecidos Desvantagens: –Arquitetura ótima precisa ser determinada experimentalmente –Difícil interpretação do modelo obtido –Eficiência depende do processo de treinamento 24. Explique a diferença entre o aprendizado supervisionado clássico e o aprendizado por reforço. Aprendizado Supervisionado, quando é utilizado um agente externo que indica à rede a resposta desejada para o padrão de entrada; Aprendizado Não Supervisionado (auto-organização), quando não existe uma agente externo indicando a resposta desejada para os padrões de entrada; Reforço, quando um crítico externo avalia a resposta fornecida pela rede. 25. Qual a arquitetura de uma rede perceptron? Qual tipo de problema ele pode resolver? Perceptron Origem: Wikipédia, a enciclopédia livre. O perceptron é um tipo de rede neural artificial inventada em 1957 no Cornell Aeronautical Laboratory por Frank Rosenblatt. Ele pode ser visto como o tipo mais simples de rede neural feedforward: um classificador linear. Percpetron de camada única resolve problemas lineares; perceptrons de múltiplas camadas é não-linear (sigmóides e tangentes hiperbólicas). Definição O perceptron é um classificador binário que mapeia sua entrada (um vetor de valor real) para um valor de saída (uma valor binário simples) através da matriz. Onde é um vetor de peso real e é o produto escalar (que computa uma soma com pesos). é a 'inclinação', um termo constante que não depende de qualquer valor de entrada. 26. Explique o algoritmo de aprendizado do perceptron. O algoritmo de treinamento do perceptron é feito para provocar mudanças nos pesos sempre que algum erro é encontrado, mesmo que ele seja mínimo • O treinamento de rede Perceptron, consiste em ajustar os pesos e os thresholds (bias) de suas unidades para que a classificação desejada seja obtida. • Quando um padrão é inicialmente apresentado à rede, ela produz uma saída. • Após medir a distância entre a resposta atual e a desejada, são realizados os ajustes apropriados nos pesos de modo a reduzir esta distância. • Este procedimento é conhecido como Regra Delta 1 -Cada uma das entradas {xi} representam informações sobre o comportamento do processo a ser mapeado 2 - Cada entrada é inicialmente ponderada pelos pesos sinápticos {wi}. 3 - Obtenção do potencial de ativação produzido pela soma ponderada dos sinais de entrada, subtraindo-se o limiar de ativação. 4 - Aplicação de uma função de ativação apropriada, tendo-se como objetivo limitar a saída do neurônio. 5 - Compilação da saída a partir da aplicação da função de ativação neural em relação ao seu potencial de ativação. Implementação em JAVA /* * Classe PERCEPTRON responsável para aprendizado e resolução da tabela AND * * @author Dimas Kastibergue <k45t1b@gmail.com>; */ public class Perceptron { // pesos sinápticos [0] entrada 1, [1] entrada 2, [3]BIAS private double[] w = new double[3]; // variável responsável pelo somatório(rede). private double NET = 0; // variavél responsável pelo número máximo de épocas private final int epocasMax = 30; // variável responsável pela contagem das épocas durante o treinamento private int count = 0; // declara o vetor da matriz de aprendizado private int[][] matrizAprendizado = new int[4][3]; // MÉTODO DE RETORNO DO CONTADOR public int getCount(){ return this.count; } // metodo de inicialização inicia o vetor da matriz de aprendizado Perceptron() { // Primeiro valor this.matrizAprendizado[0][0] = 0; // entrada 1 this.matrizAprendizado[0][1] = 0; // entrada 2 this.matrizAprendizado[0][2] = 0; // valor esperado // Segundo Valor this.matrizAprendizado[1][0] = 0; // entrada 1 this.matrizAprendizado[1][1] = 1; // entrada 2 this.matrizAprendizado[1][2] = 0; // valor esperado // terceiro valor this.matrizAprendizado[2][0] = 1; // entrada 1 this.matrizAprendizado[2][1] = 0; // entrada 2 this.matrizAprendizado[2][2] = 0; // valor esperado // quarto valor this.matrizAprendizado[3][0] = 1; // entrada 1 this.matrizAprendizado[3][1] = 1; // entrada 2 this.matrizAprendizado[3][2] = 1; // valor esperado // inicializaçãodos pesos sinápticos // Peso sináptico para primeira entrada. w[0] = 0; // Peso sináptico para segunda entrada. w[1] = 0; // Peso sináptico para o BIAS w[2]= 0; } // Método responsávelpelo somatório e a função de ativação. int executar(int x1, int x2) { // Somatório (NET) NET = (x1 * w[0]) + (x2 * w[1]) + ((-1) * w[2]); // Função de Ativação if (NET >= 0) { return 1; } return 0; } // Método para treinamento da rede public void treinar() { // variavel utilizada responsável pelo controlede treinamento recebefalso boolean treinou= true; // varável responsável para receber o valor da saída (y) int saida; // laço usado para fazer todas as entradas for (int i = 0; i < matrizAprendizado.length; i++) { // A saída recebe o resultado da rede que no caso é 1 ou 0 saida = executar(matrizAprendizado[i][0], matrizAprendizado[i][1]); if (saida != matrizAprendizado[i][2]) { // Caso a saída seja diferente do valor esperado // os pesos sinápticos serão corrigidos corrigirPeso(i, saida); // a variavél responsável pelo controlede treinamento recebe falso treinou = false; } } // acrescenta uma época this.count++; // teste se houve algum erro duranteo treinamento e o número de epocas //é menor qe o definido if((treinou == false) && (this.count < this.epocasMax)) { // chamada recursiva do método treinar(); } } // fim do método para treinamento // Método para a correção de pesos void corrigirPeso(int i, int saida) { w[0] = w[0] + (1 * (matrizAprendizado[i][2] - saida) * matrizAprendizado[i][0]); w[1] = w[1] + (1 * (matrizAprendizado[i][2] - saida) * matrizAprendizado[i][1]); w[2] = w[2] + (1 * (matrizAprendizado[i][2] - saida) * (-1)); } void testar() { System.out.println(" Teste 01 para 0 e 0 " + executar(0, 0)); System.out.println(" Teste 02 para 0 e 1 " + executar(0, 1)); System.out.println(" Teste 03 para 1 e 0 " + executar(1, 0)); System.out.println(" Teste 04 para 0 e 0 " + executar(0, 0)); System.out.println(" Teste 05 para 1 e 1 " + executar(1, 1)); } public static void main(String[] arguments) { Perceptron p = new Perceptron(); p.treinar(); System.out.println("Para aprender o algoritmo treinou " + p.getCount() + " epocas! \n "); p.testar(); } } De <http://pt.wikipedia.org/w/index.php?title=Perceptron&printable=yes>
Compartilhar