[python-brasil] Rede neural XOR

300 views
Skip to first unread message

Cairo Rocha

unread,
Nov 18, 2009, 9:45:11 PM11/18/09
to python...@yahoogrupos.com.br
Galera,

Eu implementei(tentei) essa Rede Neural(MLP) para resolver o XOR, utilizando
backpropagation... usei a biblioteca numpy.

http://pastebin.com/f4359ac7b

Mas não importa o quanto eu tente, a rede não dá a resposta certa =p

Alguem pode me ajudar?

--
----------+----------+----------

Cairo Rocha
Bacharelando em Ciências da Computação
Universidade Federal do Piauí

----------+----------+----------


[As partes desta mensagem que não continham texto foram removidas]

------------------------------------

,-----------------------------------------------------------.
| Antes de enviar um e-mail para o grupo leia: |
| http://www.pythonbrasil.com.br/moin.cgi/AntesDePerguntar |
| E se você é usuário do BOL lembre-se de cadastrar o |
| e-mail do grupo na lista branca do seu sistema anti-spam. |
`-----------------------------------------------------------´Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/python-brasil/

<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@yahoogrupos.com.br

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
http://br.yahoo.com/info/utos.html


George Y. K.

unread,
Nov 19, 2009, 7:37:44 AM11/19/09
to python...@yahoogrupos.com.br
E aí,

2009/11/19 Cairo Rocha <cairoa...@gmail.com>


>
> Eu implementei(tentei) essa Rede Neural(MLP) para resolver o XOR, utilizando
> backpropagation... usei a biblioteca numpy.
>
> http://pastebin.com/f4359ac7b
>
> Mas não importa o quanto eu tente, a rede não dá a resposta certa =p
>
> Alguem pode me ajudar?
>

Não tive tempo de olhar o código, mas uma vez eu fiz um trabalho de IA na facu
e acabei me baseando no peach[1].
Dê uma olhada lá, o código é bem claro. Foi bom para tirar dúvidas.

[]'s

George

[1] http://code.google.com/p/peach/

Cairo Rocha

unread,
Nov 19, 2009, 9:52:51 AM11/19/09
to python...@yahoogrupos.com.br
Dei uma olhada no Peach, muito interessante, peguei algumas idéias de lá.

André Luis, A rede neural que tem de ser usada é a Perceptron de multiplas camadas(MLP) usando backpropagation e uma função de ativação sigmoide.

Tenho que criar uma rede generica pra resolver dois problemas, o XOR é só um teste pra ver se a rede está funcionando.

De qualquer forma, a rede começou a dar uns resultados, só estou com dificuldades agora para encontrar a arquitetura para meus problemas, alguém pode me passar alguma dica para criar uma rede que identifique vogais(representadas como arrays 5x5) ?

Código 'funcionando' : http://pastebin.com/f5b5c5a2

--- Em python...@yahoogrupos.com.br, Andre Luiz <superoxido@...> escreveu
>
> Cairo, bom dia.
>
> Também não olhei o código, confesso. Entretanto, pela própria
> constituição de uma rede neural, acredito que uma metodologia específica
> (Como o Teorema de Morgan, por exemplo (bastante usado para XOR)), não
> costuma ser muito eficiente; exceto você tenha diversas regras
> estabelecidas e condicionais onde você pode assegurar que serão sempre
> boleanas.
> Com a minha expêriencia em segurança da informação e em redes neurais,
> meu conselho é analisar, tabular os dados e criar uma metodologia para o
> seu problema.
> Se quiser discutir melhor o assunto, pode me contactar pelo e-mail:
> altadeu@...
>
> Forte abraço,
>
> Andre Luiz
>
> Cairo Rocha escreveu:
> >
> > Galera,


> >
> > Eu implementei(tentei) essa Rede Neural(MLP) para resolver o XOR,
> > utilizando
> > backpropagation... usei a biblioteca numpy.
> >

> > http://pastebin.com/f4359ac7b <http://pastebin.com/f4359ac7b>


> >
> > Mas não importa o quanto eu tente, a rede não dá a resposta certa =p
> >
> > Alguem pode me ajudar?
> >

> > --
> > ----------+----------+----------
> >
> > Cairo Rocha
> > Bacharelando em Ciências da Computação
> > Universidade Federal do Piauí
> >
> > ----------+----------+----------
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
> >
> >
> >

> > __________ Information from ESET Smart Security, version of virus
> > signature database 4600 (20091112) __________
> >
> > The message was checked by ESET Smart Security.
> >
> > http://www.eset.com
>
>
>
> __________ Information from ESET Smart Security, version of virus signature database 4600 (20091112) __________
>
> The message was checked by ESET Smart Security.
>
> http://www.eset.com

Thiago F. Pappacena

unread,
Nov 19, 2009, 10:52:27 AM11/19/09
to python...@yahoogrupos.com.br
2009/11/19 Cairo Rocha <cairoa...@gmail.com>

> De qualquer forma, a rede começou a dar uns resultados, só estou com dificuldades agora para encontrar a arquitetura para meus problemas, alguém pode me passar alguma dica para criar uma rede que identifique vogais(representadas como arrays 5x5) ?

A arquitetura mais óbvia a se testar é 25 neurônios na entrada (uma
para cada índice do array), 5 na camada de saída (cada neurônio
representando uma vogal, tendo sua saída treinada para 0 quando a
resposta não for a vogal representada pelo neurônio, e 1 quando o
contrário).

Para a camada escondida, algo por volta de (entradas / 2), ou seja,
testar algo entorno de 12 neurônios na camada escondida, ou menos,
dependendo da linearidade do mapeamento entrada->saída.

Obviamente, seria interessante você fazer outros testes, como, por
exemplo, apenas 3 neurônios na camada de saída, codificando em
binários os números de 0 a 8 (e utilizando só de 0 a 4, para A = 0, E
= 1, I = 2, O = 3 e U = 4).

O número de entradas também parece ser exageradamente grande, e algum
jeito de "resumir" as entradas também seria bem-vindo (procure
algoritmos como o PCA [1], por exemplo).

Como você pode ver, você tem muito o que testar, mesmo para resolver
um problema aparentemente simples. ;)

Por que você não se cadastra na lista da pyscience-brasil [2]? Lá você
pode encontrar ajuda mais direcionada a este tipo de assunto. :)


[1] http://en.wikipedia.org/wiki/Principal_component_analysis
[2] http://pyscience-brasil.wikidot.com/lista-de-discussao

[]'s,
Thiago F. Pappacena

Good things come for those who wait...
... and for the efficient people who doesn't wait too, but faster:
Open source, XP, OO, Python, VIM, Bash and Gentoo.

Andre Luiz

unread,
Nov 19, 2009, 7:54:54 AM11/19/09
to python...@yahoogrupos.com.br
Cairo, bom dia.

Também não olhei o código, confesso. Entretanto, pela própria
constituição de uma rede neural, acredito que uma metodologia específica
(Como o Teorema de Morgan, por exemplo (bastante usado para XOR)), não
costuma ser muito eficiente; exceto você tenha diversas regras
estabelecidas e condicionais onde você pode assegurar que serão sempre
boleanas.
Com a minha expêriencia em segurança da informação e em redes neurais,
meu conselho é analisar, tabular os dados e criar uma metodologia para o

seu problema.
Se quiser discutir melhor o assunto, pode me contactar pelo e-mail:

alt...@gmail.com

Forte abraço,

Andre Luiz

Cairo Rocha escreveu:
>


> Galera,
>
> Eu implementei(tentei) essa Rede Neural(MLP) para resolver o XOR,
> utilizando
> backpropagation... usei a biblioteca numpy.
>

> http://pastebin.com/f4359ac7b <http://pastebin.com/f4359ac7b>
>
> Mas não importa o quanto eu tente, a rede não dá a resposta certa =p


>
> Alguem pode me ajudar?
>
> --
> ----------+----------+----------
>
> Cairo Rocha

> Bacharelando em Ciências da Computação
> Universidade Federal do Piauí
>
> ----------+----------+----------
>
> [As partes desta mensagem que não continham texto foram removidas]


>
>
>
>
> __________ Information from ESET Smart Security, version of virus
> signature database 4600 (20091112) __________
>
> The message was checked by ESET Smart Security.
>
> http://www.eset.com

__________ Information from ESET Smart Security, version of virus signature database 4600 (20091112) __________

The message was checked by ESET Smart Security.

http://www.eset.com


------------------------------------

,-----------------------------------------------------------.
| Antes de enviar um e-mail para o grupo leia: |
| http://www.pythonbrasil.com.br/moin.cgi/AntesDePerguntar |

| E se você é usuário do BOL lembre-se de cadastrar o |


| e-mail do grupo na lista branca do seu sistema anti-spam. |

`-----------------------------------------------------------´Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/python-brasil/

<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@yahoogrupos.com.br

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
http://br.yahoo.com/info/utos.html


José Alexandre Nalon

unread,
Nov 19, 2009, 12:56:39 PM11/19/09
to python...@yahoogrupos.com.br
Olá!

> Eu implementei(tentei) essa Rede Neural(MLP) para resolver o XOR,
> utilizando backpropagation... usei a biblioteca numpy.

O ideal, ao se usar o numpy, é tentar se aproveitar ao máximo das
funcionalidades já implementadas lá. Há formulações do feedforward
e do backpropagation em termos matriciais, e aí nesse caso, o me-
lhor a fazer é dimensionar cada camada como uma matriz e usar as
operações da melhor maneira possível.

Assim, o feed de uma camada da rede neural pode ser feita com uma
linha apenas:

y = f(sum(w*x))

em que w é o vetor de pesos sinápticos, x é o vetor de estímulos,
e f() é a função de ativação (em geral sigmoidal).

No peach está implementado assim. Vou reconhecer que o grave pro-
blema dele é a documentação. Estou cuidando disso conforme posso,
e pra falar a verdade, ela está na prática pronta (usando o epydoc),
mas ainda estou fazendo revisões e queria deixar os exemplos redon-
dos antes de publicar. Mas já estou em dívida com várias pessoas. :P

Em todo caso, as recomendações do Thiago para o seu problema espe-
cífico são excelentes. Se precisar de orientação em como usar o
peach, é só mandar um email. :)

--
José Alexandre Nalon
na...@terra.com.br

Reply all
Reply to author
Forward
0 new messages