• Nenhum resultado encontrado

Capítulo 4: Programação em Lógica Indutiva Através de Algoritmo Estimador de

4.2 ILP através de AEDs

4.2.2 Sistemas-AED: Busca por Teorias e Codificação do Espaço de Busca

O sistemas-AED buscam por teorias em vez de cláusulas isoladas, e, como uma teoria é composta por várias cláusulas, é necessário que se mantenha um modelo probabilístico responsável pela geração de uma determinada cláusula na teoria. Conforme afirmado, nossos sistemas utilizam redes Bayesianas como modelos probabilísticos, sendo que tais redes, de forma equivalente ao OS, captam as dependências entre os literais da bottom clause. É importante destacar que os sistemas-AED utilizam o mesmo algoritmo apresentado em (OLIPHANT, SHAVLIK, 2007) (e revisado no capítulo 3, seção 3.8) para construir suas redes Bayesianas. De forma geral, o número de redes Bayesianas que compõem o modelo probabilístico dos sistemas-AED é igual ao número de cláusulas que compõe as suas teorias.

Para o AED-ILP e o RAED-ILP, o número de cláusulas que compõe uma teoria é um parâmetro de entrada, assim, logo no inicio do ciclo de execução destes sistemas, tem-se o número fixo de redes Bayesianas que compõem o modelo. Já para o HAED- ILP, como será apresentado posteriormente, as redes Bayesianas são adicionadas iterativamente ao modelo probabilístico. Apesar desta diferença, é importante perceber que para todos os sistemas-AED, cada rede Bayesiana será construída para captar as dependências entre os literais de uma bottom clause específica, assim, caso deseje-se (tanto para o AED-ILP e RAED-ILP, quanto para o HEAD-ILP) evoluir teorias compostas por três cláusulas, será necessária a construção de três bottom clauses e, consequentemente, a construção de três redes Bayesianas, sendo que cada rede representa a dependência dos literais de uma determinada bottom clause. Sob este aspecto, é importante destacar uma das diferenças entre o HAED-ILP e os outros dois sistemas (o AED-ILP e RAED-ILP): para estes dois últimos, a construção das redes Bayesianas se faz logo no começo do algoritmo (como pôde ser verificado no algoritmo 4.1), enquanto que para o HAED-ILP, a construção das redes Bayesianas é realizada ao decorrer do seu ciclo de execução (como será posteriormente apresentado).

O processo de construção do modelo probabilístico dos sistemas AED-ILP e RAED-ILP pode ser mais bem entendido pelo algoritmo 4.2. Já o processo construção do modelo probabilístico para o HEAD-ILP poderá ser mais bem visualizado posteriormente durante a apresentação de seu ciclo de execução.

O algoritmo 4.2 recebe como entrada um conjunto de bottom clauses conj[BC] construído sobre exemplos positivos selecionados aleatoriamente. Seu ciclo principal

95

constrói tantas redes Bayesianas quantos são o número de bottom clauses em conj[BC] (tal número é representado por |conj[BC]|). Para isso, o passo 3 seleciona a i-ésima bottom clause em conj[BC], enquanto o passo 4 constrói uma rede Bayesiana (usando o

algoritmo 3.5 - revisado no capítulo 3, seção 3.8) que capta as dependências entre os literais da bottom clause selecionada. O passo 5 adiciona a rede Bayesiana construída ao modelo probabilístico que, em nossa abordagem, é representado por um conjunto de redes Bayesianas.

Independentemente de o modelo probabilístico ser construído no início do algoritmo (para o AED-ILP e RAED-ILP), ou no decorrer de seu ciclo de execução (para o HAED-ILP), uma vez que se possui o modelo probabilístico representando um conjunto de redes Bayesianas construídas sobre diferentes bottom clauses, os sistemas podem então construir uma população de teorias para explorar o espaço de busca. Como afirmado, cada rede Bayesiana no modelo probabilístico é responsável por gerar uma cláusula para uma teoria. O algoritmo 4.3 ilustra de que forma o modelo probabilístico é usado para constituir uma população de teorias.

Começo-Construir-Modelo-Probabilístico: 01- modProb := ;

02- Para i = 1 até |conj[BC]| faça:

03- bc := a i-ésima bottom clause de conj[BC];

04- Construa rb a partir de bc e da declaração dos modos usando o algoritmo 3.5 (capítulo 3, seção 3.8);

05- modProb := modProb rb; 06- fim-para;

07- Retorne modProb;

Fim-Construir-Modelo-Probabilístico.

Algoritmo 4.2 – Construção do Modelo Probabilístico Entrada:

(conj[BC]): um conjunto de bottom clauses construídas sobre exemplos positivos selecionados aleatoriamente;

Variáveis Locais:

(modProb): modelo probabilístico constituído por redes Bayesianas;

(bc): bottom clause construída a partir de um exemplo positivo; (rb): rede Bayesiana construída a partir de uma bottom clause;

Saída:

96

O algoritmo 4.3 recebe como entrada um modelo probabilístico constituído por

|modProb| redes Bayesianas e retorna como saída uma população de teorias sendo que

cada teoria é composta por |modProb| cláusulas. O passo 1 inicializa a população de teorias enquanto o passo 2 assegura que todas as teorias da população serão construídas. O laço no passo 4 é o responsável por criar, sequencialmente, as |modProb| cláusulas de uma teoria i. Para isso, ele seleciona no passo 5 a j-ésima (1  j  |modProb|) rede Bayesiana de modProb e a amostra para gerar a j-ésima cláusula (representada por cj) da teoria i. O passo 6 do laço adiciona a j-ésima cláusula gerada a teoria i. Como pode ser visto, o laço no passo 4 criará uma teoria composta por |modProb| cláusulas. O passo 7 é o responsável por adicionar à população de teorias, a teoria recentemente criada. As etapas de construção de uma teoria (passos 5 e 6) juntamente com a sua adição à população (passo 7), são repetidos numPop vezes (passo 2). Tal repetição dá origem a uma população de numPop teorias, sendo que cada teoria é composta por |modProb| cláusulas.

Começo-Construção-População-Teorias: 01- pop := ;

02- Para i = 1 até numPop faça: 03- Ti := ;

04- Para j = 1 até |modProb| faça:

05- Selecione a j-ésima rede Bayesiana de modProb e a amostre para gerar a cláusula cj;

06- Ti := Ti cj; 07- fim-para; 08- pop := pop Ti; 09- fim-para; 10- Retorne pop; Fim-Construção-População-Teorias.

Algoritmo 4.3 – Construção de uma População de Teorias Entrada:

(modProb): modelo probabilístico constituído por redes Bayesianas; (numPop): número de indivíduos (teorias) na população;

Variáveis Locais:

(Cj): j-ésima cláusula construída (1  j  |modProb|); (Ti): i-ésima teoria construída (1  i  numPop);

Saída:

97

Pelo algoritmo 4.3, é possível perceber que a ordem das cláusulas em uma teoria é determinada pela ordem em que as redes Bayesianas são construídas que, por sua vez, seguem a ordem em que as bottom clauses foram construídas. Desta forma, tem-se que a i-ésima cláusula de uma teoria pode ser visualizada como um subconjunto dos literais da i-ésima bottom clause construída. Tal ponto ficará mais claro com o exemplo a seguir.

Exemplo 4.1: Assuma que objetiva-se aprender a relação definida por q(X,Y) e que

qualquer um dos sistemas-AED está trabalhando com teorias que possuem 2 cláusulas e uma população de 2 indivíduos (teorias). Assim, considere que duas bottom clauses foram construídas, a saber:

bc1: q(X,Y) :- r(Z,Y), w(X,Y).

bc2: q(X,Y) :- t(X,Z), h(Z), s(X,Y,Z), p(X,Y).

Observe a tabela 4.1 que exibe a codificação de duas possíveis teorias baseadas em bc1 e bc2.

Tabela 4.1: Representação de Teorias por Strings Binárias

1 bc1 q(X,Y) :- r(Z,X) w(X,Y) - -

2 ind.1.bin.1 1 0 1 - -

3 ind.2.bin.1 1 1 0 - -

4 ind.1.cls.1 q(X,Y) :- w(X,Y) - -

5 ind.2.cls.1 q(X,Y) :- r(Z, X) - -

6 bc2 q(X,Y) :- t(X,Z) h(Z) s(X,Y,Z) p(X,Y)

7 ind.1.bin.2 1 1 0 0 1

8 ind.2.bin.2 1 1 1 0 0

9 ind.1.cls.2 q(X,Y) :- t(X,Z) p(X,Y)

10 ind.2.cls.2 q(X,Y) :- t(X,Z) h(Z)

As linhas 1 e 6 da tabela ilustram as bottom clauses construídas. Como afirmado, as teorias geradas pelo sistema serão constituídas por um subconjunto dos literais destas bottom clauses. Assim, para se construir o primeiro indivíduo da teoria, deve-se amostrar a primeira rede Bayesiana (que capta a dependência entre os literais de bc1) para gerar uma string binária, representada por ind.1.bin1 (indivíduo 1 string binária 1) que representa os literais da bc1 que farão parte da primeira cláusula do indivíduo 1. Deve-se amostrar também a segunda rede Bayesiana (que capta a dependência entre os literais de bc2) para gerar uma string binária representada por ind.1.bin.2 que representa os literais da bc2 que farão parte da segunda cláusula do indivíduo 1. Após estas amostragens, têm-se duas strings binárias (linha 2 e 7) que juntas codificam, de forma binária, a teoria do primeiro indivíduo da população. Para se saber qual cláusula cada

98

uma das strings binárias representa, basta realizar um mapeamento entre as suas posições e a bottom clause que deu origem a rede Bayesiana usada para amostrar tal string. Tal mapeamento é idêntico ao realizado em (MUGGLETON, TAMADDONI- NEZHAD, 2007): caso a i-ésima posição da string amostrada pela j-ésima rede Bayesiana (construída sobre a bottom clause j), seja igual a 1, o i-ésimo literal da bottom clause j figurará na cláusula; caso este valor seja 0, tal literal não figurará. No exemplo considerado, as strings binárias que codificam a teoria representada pelo primeiro individuo são (101) para bc1, e (11001) para bc2. Assim, como pode ser visto nas linhas 4 e 9 da tabela 4.1, a teoria representada pelo primeiro indivíduo é dada pelas seguintes cláusulas:

1. q(X,Y) :- w(X,Y).

2. q(X,Y) :- t(X,Z), p(X,Y).

Este mesmo processo deve ser feito para se obter a teoria representada pelo segundo indivíduo que, neste exemplo, é dada por (linhas 5 e 10 da tabela 4.1):

1. q(X,Y) :- r(Z,X) 2. q(X,Y) :- t(X,Z), h(Z).

Pelo exemplo exposto, fica claro que a construção de teorias se faz pela amostragem de todas as redes Bayesianas que juntas compõem o modelo probabilístico dos sistemas-AED. Obviamente, a amostragem de cada rede Bayesiana gera uma cláusula cujos literais são um subconjunto dos literais da bottom clause sobre a qual a rede amostrada foi construída.