Rede Neural

15 respostas
antoniopopete

Alguem ja teve a experiencia de implementar uma rede neural sem usar framework?
Tenho as seguintes duvidas:
Minha rede neural é para reconhecer numeros de 0 a 9.
COmo acontece a comunicacao de um neuronio com outro?Eu pensei em colocar 3 camadas e cada camada teria a quanttidade de neuronios associadas a ela,dentro de uma coleção.
Como cada camada se comunica?

15 Respostas

David

Utilize matrizes para implementar a comunicação entre camadas. Se você tem uma rede com três camadas, com x, y e z neurônio cada, você deverá criar duas matrizes: uma x por y e outra y por z. Os elementos de cada matriz serão os pesos de cada sinapse (exemplo: o elemento (1, 1) da matriz x por y será a conexão entre o neurônio 1 da camada x com o neurônio 1 da camada y). Se a rede não for totalmente conectada basta fazer com que os elementos da matriz que não têm conexão sejam iguais a zero.

antoniopopete

Não posso implementar com Listas?Eu pensei em criar objetos Neuronios que iriam conter entrada,saida,peso,saidaDesejada.
E esses neuronios estariam como uma coleção dentro de uma classe camada.E essas camadas se comunicariam.
So que estou tendo dificuldades em interligar as camadas.

rbamartins

popete… eu fiz o meu como vc falou ai. vou te mandar o q tenho aqui.

Dieval_Guizelini

Que rede MLP, RBS outra?

como você pretende modelar as características da rede? a modelagem dessas características pode afetar a implementação. VocÇe já leu alguma coisa sobre FAN? tem interesse?

att,

Dieval

David

antoniopopete:
Não posso implementar com Listas?Eu pensei em criar objetos Neuronios que iriam conter entrada,saida,peso,saidaDesejada.
E esses neuronios estariam como uma coleção dentro de uma classe camada.E essas camadas se comunicariam.
So que estou tendo dificuldades em interligar as camadas.

Claro que pode, mas pra que complicar um problema que pode ser resolvido com simples multiplicações de matrizes? Se você quiser mesmo fazer os objetos neurônios, terá que implementar um grafo onde os neurônios são vértices e as sinapses são arestas. O algoritmo para fazer o feedforward seria mais ou menos esse:

para cada camada i
    para cada neuronio j da camada i + 1
        soma = 0
        para cada neuronio k da camada i
            soma += entrada(k) * peso(k,j) 
        fim
        entrada(j) = funcao_ativacao(soma)
    fim
fim

Você teria que considerar ainda o bias, se é a camada de saída, etc.

antoniopopete

MLP

A rede deve reconhecer numeros de 0 a 9 em uma matriz 5x5.

Estou com duvida no seguinte:

A cada execução da rede é feito um novo treinamento?Treinamento e execução são duas fases distintas?
QUando eu treino a rede, o reconhecimento é baseado em aproximação de valores.
Exemplo, digamos que com o calculo o emq de um numero reconhecido com 0, deu proximo do valor correto,então reconheceria isso como um 0?
O treinamento é gradativo, a medida que ela treina,aprende mais coisas ou a medida que a rede executa ela aprende mais coisas?
Fazer com multiplicação de matriz?
Complexo não, ter que fazer esse mapeamento?

T

Cara sugiro uma lida no capítulo de MLPs do livro do Simon Haykin… Acho que tu tá meio perdido…
Outra dica… Se tiver a oportunidade de implementar isso no Matlab, faça… Muito melhor…

fmeyer

Esse livro pode te ajudar bastante.
http://www.heatonresearch.com/articles/series/1/

T

Esse eu não conhecia fmeyer… bem legal!!!

ddduran

Eu a um tempo atras trabalhei nesse projeto aqui

http://lsin.unisantos.br/lvcon/lvcon

tem varios exemplos, pseudo codigos, etc

mas em um trab de IA implementei uma PS para esse mesmo problema que você qr implementar e não precisa ser um de multiplas camadas.
basta uma camada e um neronio para cada caracter.

chegando em casa tento achar o font

antoniopopete

Tecnoage:
Cara sugiro uma lida no capítulo de MLPs do livro do Simon Haykin… Acho que tu tá meio perdido…
Outra dica… Se tiver a oportunidade de implementar isso no Matlab, faça… Muito melhor…

Realmente, estou meio perdido, mas agora depois d uma conversa com o professor entendi que o treinamento é uma fase distinta da execução da rede, e que a rede somente deve reconhecer aquilo que ela foi treinada, basicamente a rede usa “aproximação” para reconhecer algo, a partir de uma média matemática.
Alguem sabe as formulas de calculo de emq?Eu achei umas 2.E estou em duvida sobre qual das duas devo usar.

E para eu usar matlab como sugerido acho um pouco complicado porque estou com prazo atrasado e ainda vou ter que aprender a mecher em outra ferrametna alem de entender a rede…Mas valeus pela dica;)

David

Na verdade a rede deve reconhecer aquilo para o qual ela foi treinada e ter a capacidade de extrapolar o conhecimento, dando resultados coerentes mesmo quando a entrada da rede não pertencer ao conjunto de dados do treinamento. Isso significa, por exemplo, que se você pedir à rede neural para aprender o comportamento de uma função matemática passando como dados de treinamento alguns pontos dessa função, na “fase de execução” a rede deve reconhecer mesmo pontos que não foram utilizados durante o treinamento. Para que isso funcione, é preciso que os dados de treinamento sejam dados que representem bem o problema que você quer resolver, e não quaisquer dados do domínio do problema.

Proteu_Alcebidiano

Na verdade a rede deve reconhecer aquilo para o qual ela foi treinada e ter a capacidade de extrapolar o conhecimento, dando resultados coerentes mesmo quando a entrada da rede não pertencer ao conjunto de dados do treinamento. Isso significa, por exemplo, que se você pedir à rede neural para aprender o comportamento de uma função matemática passando como dados de treinamento alguns pontos dessa função, na “fase de execução” a rede deve reconhecer mesmo pontos que não foram utilizados durante o treinamento. Para que isso funcione, é preciso que os dados de treinamento sejam dados que representem bem o problema que você quer resolver, e não quaisquer dados do domínio do problema.

O procedimento citado pode ser visto como está descrito aqui

T+

cassioso

Olá,

Tenho uma rede neural implementada há algum tempo… em java.

Hoje fiz upload dela e hospedei nos respositórios da google.

Quem quiser dar uma conferida é só acessar:

http://code.google.com/p/redeneural/

E

Eu implementei uma tempos atrás para reconhecer caracteres…
Não usei matrizes, embora a maioria das aplicações que vi utilizem, de fato, essa estrutura (afinal, ela tem uma série de vantagens, inclusive em desempenho)…

Fiz uma totalmente orientada a objetos…Tinha o objeto Neuronio, o objeto Camada, o objeto Sinapse e o objeto Rede Neural.

O objeto Rede Neural tinha a camada inicial e a final. O objeto camada tinha uma coleção de objetos Sinapse e a referência para a próxima camada. O objeto Sinapse relacionava 2 objetos Neuronio da camadas distintas (e atributos como o “peso”) e, por fim, o objeto Neuronio que carregava o valor…Ficou bem legal, apesar de ter um desempenho inferior às redes implementadas em estruturas mais “velozes” como arrays bidimensionais…

Certa vez pensei em escrever um pequeno tutorial explicando o conceito da rede neural e como foi a implementação…Visto que, quando implementei a minha, foi um porre…Não consegia encontrar base que ajudasse…

Criado 2 de novembro de 2007
Ultima resposta 1 de jun. de 2008
Respostas 15
Participantes 10