DICAS DE SIMULACAO DE REDES NEURAIS *********************************** => Usando SNNS, JavaNNS, Batchman (Scripts) e SNNS2C ============================================================== Como treinar uma rede: PASSO ZERO: - Criar o arquivo com os dados de treino (.pat) e de validação (.pat) VER ABAIXO => Criando arquivos .pat - Criar a descrição da rede neural (.net), com uma topologia específica para o problema (nro. entrada, nro. hidden e nro. saídas) que seja obviamente compatível com os dados do arquivo .pat! VER ABAIXO => Criando arquivos .net A seguir veja como usar o SNNS, JavaNNS e Batchman == Como usar as ferramentas do SNNS: 1. Baixe os programas SNNS para executar no Windows (em uma janela DOS) http://www.inf.unisinos.br/~osorio/protect/neural/software/pc/snnsv4.2.win32-bin.zip ( login: aluno senha: unisinos ) Você também pode baixar o JavaNNS direto do site original: http://www-ra.informatik.uni-tuebingen.de/software/JavaNNS/welcome_e.html 2. Coloque no diretório BIN os dados que estão no arquivo disponibilizado junto com estas dicas: xor.dat => Arquivo com dados de teste meu_xor.dat => Arquivo com dados de treino xor-2-2-1.net => Definicao de uma rede MLP com 2 entradas, 2 hidden e 1 saída aprende.txt => Script para ser usado com o batchman (passo3) 3. Execute em uma janela DOS os comandos conforme descrito no "como-usar.txt", executando o BATCHMAN.exe: batchman -f aprende.txt > log-erro.txt Este comando executa o "scritp" do batchman que está no arquivo "aprende.txt". Você pode editar este arquivo de script em um editor de textos, adicionando ou alterando seus comandos... Note que o uso do JavaNNS é quase como se cada opção do script fosse sendo executada através dos menus desta aplicação. O manual do Batchman pode ser obtido em: http://www.inf.unisinos.br/~osorio/protect/neural/software/pc/doc-batchman.pdf e o manual do SNNS pode ser obtudo em: http://www.icmc.usp.br/~andre/research/neural/snns.htm 4. Veja os resultados... log-erro.txt e xor-saida.txt Esta rede está configurada para usar o RPROP (backpropagation acelerado). Você pode apagar a linha do script que define o RPROP e o SNNS, na falta da indicação do tipo de "learning function" (setLearnFun), vai adotar o BackProp padrão... você pode então verificar a diferença junto aos arquivos de resultado (aprendizado mais lento). Lembre-se: - Todo treinamento deve ser analisado e validado, ou seja, deve se verificar se a rede está "acertando" as repostas da base de aprendizado e de validação; - Use um aprendizado do tipo cross-validation! (70/30 ou 10-fold); - Realize múltiplas simulações e registre o desempenho médio da rede (média e desvio), para não ser influenciado por uma inialização específica e aleatória dos pesos. Se quiser podes fazer as mesmas experiências interativamente usando o JavaNNS, mas neste caso terá que seguir os passos feitos no Script (carregar exemplos, inicializar, etc) direto na interface gráfica. Para baixar o JavaNNS, acesse: http://www-ra.informatik.uni-tuebingen.de/software/JavaNNS/welcome_e.html Se quiser o SNNS tem uma versão para Linux que também apresenta uma interface gráfica para realizar e controlar as simulações. Você também pode usar o SNNS2C.exe para compilar a rede .net salva pelo script (xor-trained.net) ou qualquer outra rede salva pelo JavaNNS ou SNNS, gerando um programa em "C" que pode ser embutido dentro de outro... BOAS SIMULAÇÕES! ==== COMO CRIAR UM ARQUIVO .DAT ************************** O formato de dados do SNNS (e do JavaNNS) é o dos arquivos .DAT (arquivo texto), onde os exemplos estão junto ao link desta página de dicas. O arquivo xor.dat está todo "enfeitado" com comentários que começam com o "#" no início da linha... mas o SNNS aceita um formato mais simples, basta guardar o cabeçalho e depois segue uma série de linhas com as entradas (no caso do xor, são 2 valores 0/1) e na linha de baixo a saída desejada (no caso do xor é um valor único podendo ser 0/1). O arquivo meu_xor.dat dá um exemplo deste tipo de arquivo, onde contêm 4 linhas assim: 0 0 0 => padrão "0 0" de entrada que deve responder na saída com "0" O XOR tem 4 exemplos, por isso seguem mais 3 conjunto de linhas como a acima. Note que o arquivo .dat é um arquivo texto e pode ser aberto direto no Notepad ou no Wordpad do Windows. ==== COMO CRIAR UM ARQUIVO .NET ************************** Para criar uma rede do tipo MLP com 3 camadas... Entre no JavaNNS e use a opção: Tools - Create - Layers => Crie o layer de entrada (input), a camada oculta (hidden) e a camada de saída (output). Usual: Input use ativação do tipo Act_Identity Hidden use ativação do tipo Act_Logistic Output use ativação do tipo Act_Logistic (se for um classificador) ou Output use ativação do tipo Act_Identity+Bias (se for para uma tarefa de aproximação/regressão) Tools - Create - Connections => Use a opção Feed-Forward Salve a rede na opção SAVE AS. ======================= F. Osório - Nov. 2006 ===============================================