• Nenhum resultado encontrado

4 Modelo Computacional NeuroPON

4.3 Modelo computacional NeuroPON: funcionamento

4.3.2 RNA em NeuroPON

Após a definição da entidade Neuron, a devida definição da RNA foi elaborada. A Tabela 8 apresenta, portanto, os elementos de tal definição.

Tabela 8 - Definição de uma RNA em NeuroPON - Entidade Network

Entidade Network FBE Network Attributes Methods integer attNumEpochs integer attTotTrainInputs integer attReadTrainInputs

[integer attClock || boolean atStepN]

<tipo_pon> attLR <tipo_pon> attMomentum <tipo_pon> attInput … <tipo_pon> attOutPred … <tipo_pon> attErrorPattern <tipo_pon> attErrorEpoch mthNetStart() [mthGetValues()] mthDoneN() [mthCalcOverallError()] || [mtStepN()] mtNextLayer() mthRaiseEpoch()

Rule rleNetStart Premises Instigations

Sincronizar e controlar as

épocas de treinamento. attNumEpochs > 0 insNetStart

Rule rleNetGetValues Premises Instigations

Controlar a leitura dos

padrões de treinamento. attReadTrainInputs < attTotTrainInputs insNetGetValues

Rule rleNetRaiseEpoch Premises Instigations

Controlar o processamento de camadas.

attReadTrainInputs >= attTotTrainInputs &&

[attClock || atStepN] insNetRaiseEpoch

Regrar a sincronização entre neurônios de determinada camada.

NeuronN->attDone … &&

[Network->attClock ] ||[Network->atStepM …] insNetRNeuronsDone …

Rule rleNetCalcOverallError Premises Instigations

Controlar o ajuste dos pesos sinápticos a partir do erro calculado.

[Network->attClock] || [Network->atStepM] insNetCalcOverallError … inStepMethodM

Rule rleNetUpdateWeights Premises Instigations

Iniciar a atualização de pesos

sinápticos. [Network->attClock] || [Network->atStepM] insNetUpdateWeightsNM ...

Fonte: Autoria Própria

A estrutura base e o funcionamento de uma RNA em NeuroPON, representada pela FBE Network e Rules relacionadas, são os mesmos para qualquer materialização do PON. Não obstante, da mesma forma como na descrição de uma entidade Neuron, os Attributes de controle de etapas variam entre as implementações em software e

hardware, devido à forma de operação dos Methods (conforme apresentado

anteriormente na definição da entidade Neuron).

Isto dito, uma RNA em NeuroPON a partir das entidades PON apresentadas na Tabela 8, possui a seguinte descrição quanto aos seus Attributes:

 integer attNumEpochs – armazena a quantidade de épocas a serem executadas. Tal Attribute, do tipo inteiro (integer), é utilizado para iniciar o processamento da cadeia de notificações, além de ser utilizado como condição de parada do treinamento;

 integer attTotTrainInputs – Attribute, do tipo inteiro, que contém a quantidade total de entradas de treinamento;

 integer attReadTrainInputs – Attribute, do tipo inteiro, que contém a quantidade de entradas de treinamento já lidas. Ele é utilizado para controlar, em conjunto com o Attribute attTotTrainInputs, a leitura de todos os padrões de treinamento durante uma época;

 [integer attClock] || [boolean atStepN] – Attributes utilizados para sincronização dos processos da RNA. No caso de materializações que geram software, é utilizado o Attribute, do tipo inteiro, attClock, sendo que na materialização que gera descrição de hardware reconfigurável, é utilizado mais de um Attribute do tipo boolean;

 <tipo_pon> attLR – taxa de aprendizagem (Learning Rate);  <tipo_pon> attMomentum – termo de momentum;

 <tipo_pon> attInput – contém o valor da entrada de treinamento. Este

Attribute pode ser repetido quantas vezes for necessário;

 <tipo_pon> attOutPred – contém o valor da saída prevista para determinada entrada de treinamento. Como o método de treinamento é supervisionado, as saídas são conhecidas, e devem ser utilizadas durante o treinamento;  <tipo_pon> attErrorPattern – armazena o erro quadrático em cada padrão

de treinamento;

 <tipo_pon> attErrorEpoch – armazena o erro médio em cada época de treinamento;

Assim como já apresentado anteriormente (Seção 2.4 página 62), as RNA possuem duas fases ou modos de execução, nominadamente, a fase de treinamento e a fase de operação. Neste contexto, é importante separar as fases de forma explícita, no modelo NeuroPON, visando adaptar cada uma das fases de acordo com suas peculiaridades.

Relativo ao funcionamento da RNA em NeuroPON no modo de operação, o processamento da cadeia de notificações é iniciado pelo ajuste do Attribute

attReadTrainInputs para o valor zero, informando que nenhum padrão ainda foi lido. Tal

ajuste dispara o processo de leitura do padrão a ser validado. Após a leitura do padrão, os processos relativos à propagação à frente (forward) são executados, tanto na camada escondida quanto na camada de saída. Por fim, o erro é calculado, frente às saídas esperadas, e o valor do Attribute attReadTrainInputs é atualizado, fazendo com que a próxima entrada seja lida ou o processo seja encerrado. A Figura 37 apresenta a estrutura da RNA em NeuroPON, no modo de operação, utilizando um diagrama de instâncias PON.

No diagrama apresentado na Figura 37, as Conditions cdNetHNDone e

cdNetONDone recebem linhas no formato de barramentos (linhas duplas), advindas da

entidade Neuron. Tal diferenciação visa informar que a quantidade de Premises declaradas e pertencentes às referidas Conditions, depende diretamente da quantidade de instâncias da entidade Neuron conectadas, via sinapses notificantes, tanto à camada escondida quanto à camada de saída. Neste contexto, caso uma RNA possua cinco neurônios na camada escondida, por exemplo, serão declaradas cinco Premises de controle em Condition e NeuroRule pertinentes.

Outrossim, além de operacionalizar um RNA, um dos objetivos do modelo computacional NeuroPON é a de propor treinamento utilizando PON, tanto em software

quanto em hardware. A Figura 38 apresenta a estrutura da RNA em NeuroPON, no modo de treinamento, utilizando um diagrama de instâncias PON.

Figura 37 - Estrutura de uma RNA em NeuroPON: modo de operação

Fonte: Autoria Própria

O funcionamento de uma RNA em NeuroPON, no modo de treinamento, é baseado no ajuste inicial da quantidade de épocas, ou seja, do Attribute atNumEpochs. Assim que tal Attribute é ajustado, os valores do primeiro padrão de treinamento são lidos. Após a leitura do padrão, os cálculos dos neurônios da camada escondida e de saída são efetuados, tanto na fase de propagação quanto na fase de retro-propagação. Na sequência realiza-se a atualização dos pesos sinápticos por meio de valores baseados no erro de cada neurônio de saída. Por fim, é efetuado o cálculo do erro médio da RNA, e um novo padrão de treinamento é lido e atribuído às entradas da RNA, reiniciando assim o processo de treinamento da RNA. No caso de todos os padrões de treinamento já terem sido lidos e aplicados, o valor do Attribute atNumEpochs é ajustado e, caso atinja o número esperado e inicialmente informado, o treinamento é encerrado. Naturalmente, tudo isso guiado por um fluxo de notificações ou, melhor dizendo, de sinapses notificantes entre instâncias de entidades Neuron, bem como entre tais instâncias de entidades Neuron e Network.

Figura 38 - Estrutura de uma RNA em NeuroPON, no modo de Treinamento

Conforme já apontado, a diferença entre o modo de operação e o modo de treinamento de uma RNA é que no modo de operação ocorre apenas a primeira fase do treinamento pelo método BP, ou seja, a fase de propagação. Assim sendo, as fases de retro-propagação e atualização dos pesos são executadas no modo de treinamento da RNA. O controle destas fases é realizado pelas NeuroRules rlHNBackCalc e

rlHNUpdWeights para as neuro-entidades de camadas escondidas, e pelas NeuroRules rlONBackCalc e rlONUpdWeights para as neuro-entidades da camada de saída.

Os diagramas apresentados tanto na Figura 36, Figura 37 e Figura 38 apresentam uma visão geral das entidades Neuron e Network, no modo de operação e no modo de treinamento. Tais diagramas apresentam as entidades separadamente, como de fato ocorre, mostrando o desacoplamento entre elas, que é um facilitador inclusive de paralelismo/concorrência e mesmo distribuição. Esses diagramas também apresentam as interconexões, aqui ditas sináptico-notificantes, entre entidades advindas do PON que permitem as notificações e as instigações (um tipo de notificação também) pertinentes entre eles.

Tais diagramas, mesmo que permitam ter a noção da dinâmica que a aplicação terá em função de explicitar essas ditas interconexões sinápticas de notificação entre os constituintes, ainda assim não trás efetivamente a dinâmica de notificações de execução ali existente. Neste contexto, a Figura 39 apresenta a cadeia de notificações da aplicação de treinamento desenvolvida, utilizando um Diagrama de Atividades da UML como um modelo alternativo.

A Figura 39 apresenta o funcionamento dinâmico da NeuroPON, por meio da cadeia de notificações PON. Neste contexto, o texto que segue descreve tecnicamente o exposto no diagrama de atividades em UML:

1. A cadeia de notificações PON, bem como o treinamento da RNA, são iniciados pela mudança no Attribute que representa a quantidade de épocas. Assim, quando o valor do Attribute atNumEpochs é modificado, as

Premises e Conditions pertinentes notificam a NeuroRule pertinente, que

verifica se a quantidade de épocas é maior do que zero. Se verdadeiro, o

Atrribute atReadTrainInputs é ajustado para zero, iniciando o processo de

leitura de padrões de treinamento. Por fim, é verificado se o total de entradas lidas é menor que o total de entradas de treinamento. Caso isto seja verdadeiro, adquire-se os padrões de entrada por meio de entidades

Figura 39 - Diagrama de Atividades em UML: cadeia de notificações do algoritmo de treinamento RNA MLP pelo método BP, utilizando PON

2. Após a leitura do padrão de treinamento e sua correta atribuição às entradas da RNA, o processo de cálculo deve ser disparado. Assim,

Attributes de controle tanto da entidade Network quando das entidades HiddenNeuron (pertencentes à camada escondida), são ajustados.

3. O processo de cálculo lógico-causal (e mesmo a sincronia de concorrências) neste contexto dado é regulado pelas NeuroRules pertinentes à fase de Forward Propagation (propagação), da entidade

HiddenNeuron. Ainda, os Methods de cada neurônio serão executados por

meio de notificações via entidades Condition-NeuroRule-Action-Instigation, se a conjunção entre as Premises pertinentes for verdadeira.

4. Após a execução e todos os cálculos, os Methods pertinentes de cada instância da entidade HiddenNeuron modificam seus Attributes de controle, notificando assim as Premises envolvidas na NeuroRule rleNetNeuronsHDone, diretamente ligada à entidade Network. A conjunção

verdadeira de tais Premises inicia os processos de cálculo da fase de propagação em cada entidade OutputNeuron, tendo como entrada os resultados das entidades HiddenNeurons.

5. Os procedimentos adotados na implementação dos cálculos das entidades

Neuron de saída são os mesmos dos utilizados na camada escondida

intermediária. Assim, após os cálculos necessários à fase de propagação, bem como os cálculos relacionados à obtenção do erro em cada entidade

Neuron de saída, iniciam-se os cálculos da fase Backpropagation

(retro-propagação).

6. Antes de se iniciar o processo de atualização dos pesos sináptico-notificantes da camada de saída, é necessário armazenar valores auxiliares à atualização dos pesos da camada escondida. Neste contexto, um controle por parte da própria RNA é requerido e representado pela entidade

Network, para a execução (via Condition-NeuroRule-Action-Instigation) de Methods para tais cálculos.

7. Na sequência, o processo de atualização dos pesos sináptico-notificantes, que ligam as entidades Neuron da camada de saída às entidades Neuron da camada escondida, é efetuado. Tais processos de atualização são executados de forma concorrente/paralela, sempre que o meio de execução assim o permitir.

8. Uma vez que os processos da fase de retro-propagação de OutputNeuron tenham sido executados, há uma sincronização de todos as entidades

Neuron na entidade Network. Tal sincronização, via entidades PON

pertinentes, dispara ainda o processo de notificação às entidades

HiddenNeuron, visando iniciar a fase de retro-propagação na camada

escondida intermediária. Neste contexto, assim como efetuado sobre as entidades Neuron da camada de saída, os processos de cálculo para atualização, e a própria atualização dos pesos sináptico-notificantes, é efetuada.

9. Por fim, o controle é passado à entidade Network, que efetua verificações quanto à finalização do treinamento.

9.1. Quando todas as entidades HiddenNeuron finalizaram seus cálculos, a

NeuroRule pertinente é notificada e instiga o Method responsável pelo

cálculo do erro geral da RNA, resultante do padrão de treinamento atual. De forma concorrente, inicia-se o processamento da próxima entrada de treinamento, por meio do incremento do Attribute

atReadTrainInputs.

9.2. Uma vez que o valor do Attribute atReadTrainInputs seja igual ao total de entradas de treinamento, o Attribute que contém a quantidade de épocas atNumEpoch é incrementado, paralelamente ao cálculo do erro médio da RNA e do ajuste do Attribute atReadTrainInputs, cujo valor passa a ser zero, reiniciando o treinamento numa nova época a partir da primeira entrada de treinamento. Caso contrário, o treinamento é reiniciado com a próxima entrada de treinamento.

A fim de demonstrar o processo de treinamento no diagrama UML, a Figura 39 não apresenta todos os processos PON executados na cadeia de notificações PON. Assim, são apresentados apenas o ajuste dos Attributes reativos por meio de Methods (atividades no diagrama). Tais Attributes, ao ter seu valor alterado, notificam as entidades pertinentes e, consequentemente, disparam o processo necessário na cadeia de notificações. Neste contexto, tais processos estão implícitos e representados por cada seta que liga as atividades no diagrama.

Ainda, no diagrama da Figura 39, a abertura de concorrência nas entidades que representam os neurônios da camada escondida e da camada de saída, indica que o PON permite concorrência ou paralelismo se a plataforma assim permitir. Isso se dá

tanto no modo de treinamento, explicitado no diagrama da Figura 39, quanto no modo de operação.