Академический Документы
Профессиональный Документы
Культура Документы
Conceito
Cada camada (layer) processa o sinal de entrada através da aplicação de uma função
de transferência e envia o padrão resultante para as sinapses que a ligam com a camada
seguinte. Dessa forma, uma rede neural pode processar um padrão de entrada, transferindo-o
da camada de entrada para a camada de saída. Este é o conceito básico sobre o qual o motor
inteiro foi baseado. Para garantir que é possível construir qualquer arquitetura de rede neural
com o Joone, um método para transferir os padrões através da rede sem um ponto central de
controle é requerido. Par alcançar esse objetivo, cada camada do Joone é implementada como
um objeto Runnable, de modo que cada camada roda independentemente das outras camadas
(recebendo o padrão de entrada, aplicando-o a função de transferência e colocando o padrão
resultante nas sinapses de saída para que as próximas camadas possam recebê-lo, processá-lo
e assim por diante) como representado pelo seguinte esquema básico:
Onde para cada neurônio N:
XN – The weighted net input of each neuron = (I1 * WN1) + … + (IP * WNP)
Esse mecanismo de transporte também é usado para transportar o erro das camadas
de saída para as camadas de entrada durante a fase de treinamento, permitindo que os pesos
e vieses (bias) sejam alterados de acordo com o algoritmo de treinamento escolhido (por
exemplo, o algoritmo de retro propagação). Em outras palavras, o objeto camada
alternadamente “injeta” o sinal de entrada pelas sinapses de entrada até as sinapses de saída,
e o padrão de erro pelas sinapses de saída até as sinapses de entrada. Para Alcançar isso, cada
camada tem dois mecanismos de transporte opostos, um para transferir da entrada para a
saída, o padrão de entrada durante a fase de “recall”, e outro para transferir da saída para a
entrada o erro de aprendizagem durante a fase de treinamento, como representado pela
seguinte figura:
Cada componente do Joone (ambos, camadas e sinapses) tem seu próprio (pré
construído) mecanismo para ajustar os pesos e vieses (bias) de acordo com o algoritmo de
treinamento escolhido. Arquiteturas de redes neurais complexas podem ser facilmente
construídas, sejam linear ou recursiva, porque não há necessidade de um controlador global
para a rede. Imagine cada camada como um tubo que “empurra” o sinal (padrão) da entrada
para a saída, onde uma ou mais sinapses conectam-na com as próximas camadas,
independente do numero de entradas, da seqüência ou do numero de camadas conectadas.
Essa é a principal característica do Joone, garantido pelo fato de cada camada rodar no seu
próprio Thread, representando o elemento ativo único de uma rede neural com base no
mecanismo principal do Joone. Observe a figura seguinte (as setas representam as sinapses):
Camadas
O objeto “camada“ é o objeto básico que forma a rede neural. É composto por
neurônios, todos tendo as mesmas características. Esse componente “transfere” o padrão de
entrada para o padrão de saída executando uma função de transferência. O padrão de saída é
eviado para um vetor de objetos “sinapses” ligado as camadas de saída. É o elemento ativo de
uma rede neural no Joone, na verdade ele roda em uma Thread separada (que implementa a
interface Java.lang.Runnable) de forma que possa rodar independente das outras camadas da
rede neural.
Tipos de camadas (Layers): Linear Layer, Sigmoid Layer, Tanh Layer, Logarithmic Layer, Delay
Layer, Context Layer, WinnerTakeAll Layer e Gaussian Layer.
Sinapses
Para evitar que uma camada tente ler o padrão de suas sinapses de entrada antes
que outras camadas possam escrevê-lo, a sinapse é compartilhada com sincronização; em
outros termos, um mecanismo baseado em semáforo previne que duas camadas acessem
simultaneamente uma sinapse compartilhada.
Tipos de sinapses: Direct Synapse, Full Synapse, Delayed Synapse, Kohonen Synapse e Sanger
Synapse
O Monitor
Obviamente uma rede neural não pode ser composta somente pelos dois tipos de
elementos de processamento acima – camadas e sinapses – porque existe a necessidade de
controlar todos os parâmetros de interesse no processo de execução e/ou treinamento. Por
esse motivo o motor é composto por muitos outros componentes concebidos para fornecer à
rede neural uma serie de serviços. O principal componente que está sempre presente em
cada rede neural baseada no Joone o objeto Monitor. Ele representa o ponto central no com o
qual estão contidos todos os parâmetros que outros componentes precisam para funcionar
corretamente, como a taxa de aprendizagem, o momento, o número de épocas de
treinamento, o ciclo de treinamento atual, etc. Cada componente de uma rede neural (ambos,
camadas e sinapses) recebem um ponteiro para uma instância do objeto monitor. Essa
instância pode ser diferente para cada componente, mas usualmente só uma única instância é
criada e usada, de modo que cada componente pode acessar os mesmos parâmetros em toda
a rede neural, como ilustrado na figura a seguir:
Dessa maneira, quando o usuário quer mudar algum desses parâmetros, ele/ela pode
o valor correspondente no objeto Monitor; como resultado cada componente da rede neural
irá receber o novo valor para o parâmetro alterado. O monitor provê serviços não somente
para os componentes internos de uma rede neural, mas também para a aplicação externa que
o utiliza. O objeto monitor, na realidade, abastece qualquer aplicação externa com um
mecanismo de notificação baseado em diversos eventos que surgem quando uma ação
particular é executada. Por exemplo, uma aplicação externa pode ser avisada quando a rede
neural iniciar ou parar as épocas de treinamento, quando terminar um ciclo ou quando o valor
do erro global (o RMSE) mudar durante a fase de treinamento. Dessa maneira qualquer
aplicação usando o Joone pode assincronamente realizar certa ação em resposta a um evento
especifico da rede neural controlada, por exemplo, para o treinamento quando um baixo
RMSE é alcançado, ou checar o nível de generalização da rede usando um conjunto de
validação separado, ou mostrar em alguma janela gráfica os valores atuais dos parâmetros da
rede, etc... A seguir, uma lista dos recursos do objeto Monitor.
O Monitor contêm todos os pâmetros necessários durante as fases de treinamento, e.g. a taxa
de treinamento, o momento, etc. Cada parâmetro tem seus próprio método “get” e “set”,
conforme as especificações JavaBeans. Esses parâmetros podem ser usados por uma aplicação
externa, para por exemplo, mostrá-los em uma interface de usuário, ou para um componente
interno calcular as fórmulas que implementam a chamada das fases de recall/treinamento,
representando nesse sentido um padrão e um mecanismo centralizado para definir ou
recuperar os parâmetros necessários para o trabalho. O objeto Monitor é também um ponto
central para controlar o inicio/parada da rede neural.
Antes de explicar como isso funciona, uma explicação é querida sobre o como os componentes
de entrada da rede funcionam. Quando a primeira camada de uma rede neural chama a
componente sinapse de entrada pedindo um padrão de uma fonte externa, essa componente
chama o Monitor para avisar que um novo ciclo deve ser iniciado. O monitor, de acordo com
seu estado interno ( ciclo atual, época atual, etc.), verifica se o próximo padrão de entrada
pode ser processado normalmente. Se sim, a sinapse de entrada simplesmente recebe
permissão para continuar a preparar o próximo padrão, e todos os contadores internos do
Monitor são atualizados. Se não (i. e. a rede alcançou a última época), o objeto Monitor não dá
permissão para continuar e também notifica todas as aplicações externas criando um evento
que descreve a natureza da notificação. Dessa maneira os seguintes serviços estão disponíveis
ao utilizar o objeto Monitor:
1. A sinapse de entrada sabe se pode ler e processar o próximo padrão ( caso contrário ela
para), sendo avisada por um valor de retorno booleano.
2. Uma aplicação externa pode iniciar/parar uma rede neural simplesmente definindo os
parâmetros iniciais do Monitor. Para simplificar essas ações, algums métodos simples – Go
iniciar), Stop (parar) e runAgain (para reiniciar uma rede neural perviamente parada) – foram
adicionados ao Monitor.
Conceito