• Nenhum resultado encontrado

de redes neurais

Nesta seção, utilizamos um exemplo para demonstrar como a detecção e a correção de erros são feitas utilizando a rede neural proposta.

Seja C um código linear cuja matriz teste de paridade é dada por

H =    1 1 0 1 0 1 1 1 0 0 1 0 1 0 1 1 0 0   .

Seja (1 0 0 1 1 0 ) a palavra do código transmitida4 e r = (1 0 0 1 1 1 ) a palavra recebida. Se somente um erro ocorreu, encontramos a palavra do código utilizando a rede proposta.

Como a matriz teste de paridade H possui 3 linhas e o comprimento da palavra do código é 6, temos k = 3 e n = 6.

1. Geração da síndrome: os pesos das sinapses conectadas entre as camadas 1 e 2 são dados por:

w12 11 = 1 w1221 = 1 w3112= 0 w4112= 1 w5112= 0 w6112= 1 w12 12 = 1 w1222 = 1 w3212= 0 w4212= 0 w5212= 1 w6212= 0 w12 13 = 1 w1223 = 0 w3312= 1 w4312= 1 w5312= 0 w1263 = 0.

4Lembre-se que para este treinamento da rede, dado o vetor de entrada é necessário conhecer o vetor

As entradas da camada 1, isto é, os bits da palavra recebida são:

r1 = 1 r2 = 0 r3 = 0 r4 = 1 r5 = 1 r6 = 1. (4.15) A soma ponderada (as síndromes) destas entradas são calculadas como segue

s2 1 = 6 P i=1w 12 i1ri = 1 · 1 + 1 · 0 + 0 · 0 + 1 · 1 + 0 · 1 + 1 · 1 = 3 s2 2 = 6 P i=1w 12 i2ri = 1 · 1 + 1 · 0 + 0 · 0 + 0 · 1 + 1 · 1 + 0 · 1 = 2 s2 3 = 6 P i=1w 12 i3ri = 1 · 1 + 0 · 0 + 1 · 0 + 1 · 1 + 0 · 1 + 0 · 1 = 2.

As saídas dos neurônios na camada 2 são:

v21 = g2(s21) = 1, v22 = g2(s22) = −1, v32 = g2(s23) = −1. 2. Detecção do erro: os pesos sinápticos entre as camadas 2 e 3 são:

w23 11 = 1 w2123= 1 w3123= 1 w23 12 = 1 w2223= 1 w3223= −1 w23 13 = −1 w2323= −1 w3323= 1 w23 14 = 1 w2423= −1 w3423= 1 w23 15 = −1 w2523= 1 w3523= −1 w23 16 = 1 w2623= −1 w3623= −1. As entradas dos neurônios na camada 3 são:

v21 = g2(s21) = 1, v22 = g2(s22) = −1, v32 = g2(s23) = −1. As somas ponderadas referentes a estas entradas são:

s3 1 = 3 P j=1w 23 j1vj2 = w1123v21+ w2321v22+ w2331v32 = 1 · 1 + 1 · (−1) + 1 · (−1) = −1 s3 2 = 3 P j=1w 23 j2vj2 = w1223v21+ w2322v22+ w2332v32 = 1 · 1 + 1 · (−1) + (−1) · (−1) = 1 s3 3 = 3 P j=1w 23 j3vj2 = w1323v21+ w2323v22+ w2333v32 = (−1) · 1 + (−1) · (−1) + 1 · (−1) = −1 s3 4 = 3 P j=1w 23 j4vj2 = w1423v21+ w2324v22+ w2334v32 = 1 · 1 + (−1) · (−1) + 1 · (−1) = 1 s3 5 = 3 P j=1w 23 j5vj2 = w1523v21+ w2325v22+ w2335v32 = (−1) · 1 + 1 · (−1) + (−1) · (−1) = −1 s3 6 = 3 P j=1w 23 j6vj2 = w1623v21+ w2326v22+ w2336v32 = 1 · 1 + (−1) · (−1) + (−1) · (−1) = 3, com e3i = g3(s3i) = ( 1, se s3 i ≥ θ 0, caso contrário,

para 1 ≤ i ≤ 6 e θ = k −1

2 = 3 − 1

2 = 2.5, os valores de saída da camada 3 são: e3

1 = g3(s31) = g3(−1) = 0 e32 = g3(s23) = g3(1) = 0 e33 = g3(s33) = g3(−1) = 0 e3

4 = g3(s34) = g3(1) = 0 e35 = g3(s35) = g3(−1) = 0 e36 = g3(s36) = g3(3) = 1. (4.16) 3. Fase de correção do erro: considerando as funções de ativação g3′, g4 e g5

definidas em (4.9), (4.10) e (4.11), respectivamente, a palavra recebida r descrita em (4.15) e o vetor erro obtido em (4.16), a saída da camada 5, a palavra do código transmitida c, é calculada pela equação

ci = g5(g3′(ei+ ri) − 2 · g4(ei+ ri))

que apresenta como resultado cada bit, coordenada, da palavra. Assim:

c1 = g5(g3′(e1+ r1) − 2g4(e1+ r1)) = g5(g3(0 + 1) − 2g4(0 + 1)) = g5(1 − 2 · 0) = 1 c2 = g5(g3′(e2+ r2) − 2g4(e2+ r2)) = g5(g3(0 + 0) − 2g4(0 + 0)) = g5(0 − 2 · 0) = 0 c3 = g5(g3′(e3+ r3) − 2g4(e3+ r3)) = g5(g3(0 + 0) − 2g4(0 + 0)) = g5(0 − 2 · 0) = 0 c4 = g5(g3′(e4+ r4) − 2g4(e4+ r4)) = g5(g3(0 + 1) − 2g4(0 + 1)) = g5(1 − 2 · 0) = 1 c5 = g5(g3′(e5+ r5) − 2g4(e5+ r5)) = g5(g3(0 + 1) − 2g4(0 + 1)) = g5(1 − 2 · 0) = 1 c6 = g5(g3′(e2+ r2) − 2g4(e2+ r2)) = g5(g3(1 + 1) − 2g4(1 + 1)) = g5(1 − 2 · 1) = 0.

e obtemos c = (1 0 0 1 1 0 ) como a palavra correta do código que foi transmitida. Portanto, utilizando a rede neural proposta, a decodificação feita para códigos lineares, como no Exemplo 4.1, foi resolvida pela rede neural. Tal rede torna o decodificador de código linear rápido e fácil de ser implementado em tempo real [16].

Conclusão

A decodificação é um dos desafios da Teoria de Códigos, em se tratando tanto da complexidade de implementação quanto do desempenho da correção. Muitos trabalhos foram e têm sido desenvolvidos relacionando redes neurais e decodificação de códigos. Em vários deles o intuito é gerar melhorias que sejam significativas em relação a outros decodificadores.

O principal objetivo deste trabalho foi compreender algumas destas relações, entre redes neurais e códigos corretores de erros, bem como alguns dos métodos de decodificação descritos na literatura. Para atingir este objetivo, foi necessário estudar alguns conceitos sobre grafos e redes neurais, os quais foram apresentados conforme a necessidade para a compreensão dos resultados abordados.

Deste modo, estudamos inicialmente uma relação da rede de Hopfield com a decodificação de máxima verossimilhança em códigos lineares e, após, foi estudado um algoritmo de decodificação por meio de redes neurais para códigos corretores de erros lineares fazendo uma comparação com a decodificação por síndrome da teoria clássica. Tal método de decodificação é dependente do conhecimento da palavra do código transmitida, ou seja é necessário um conjunto de teste para o treinamento da rede.

Existem trabalhos recentes relacionando redes neurais com códigos corretores de erros, particularmente as redes de Hopfield, que propõe a junção de códigos corretores de erros com memórias associativas. Por exemplo, [13] mostra que, mesclando as abordagens de recuperação de mensagens por meio de redes de Hopfield e um algoritmo utilizado na decodificação de códigos lineares, é possível melhorar significativamente o desempenho de recuperação de informação em relação às memórias associativas.

O trabalho de [13] motivou ainda o trabalho feito por [31] que incorpora técnicas de codificação da teoria dos códigos corretores de erros em redes neurais, apresentando uma nova versão de decodificação que reduz a complexidade computacional, em relação a métodos anteriores, e é adequada para apagamentos parciais. Essas memórias associativas garantem ainda um bom desempenho na correção de erros na presença de apagamentos parciais e na recuperação de mensagens aprendidas.

Algumas das tentativas realizadas para construir decodificadores baseados em aprendizado de máquina foram em parte frustradas por limitações no algoritmo. Por exemplo, foi mostrado [26] que, mesmo em exemplos simples de códigos lineares, não era possível decodificar com sucesso vetores recebidos correspondentes às palavras do código que não foram mostradas durante o treinamento da rede, problema que foi chamado de a maldição da dimensionalidade.

Contudo, dois outros trabalhos recentes trouxeram contribuições a respeito deste assunto. Em [34] foi mostrado que é possível introduzir arquiteturas neurais para decodificar códigos de blocos lineares e que o problema da maldição da dimensionalidade poderia ser contornado. Em [26] foi introduzida a perda de síndrome. Tal método, projetado

para ensinar os decodificadores a produzir saídas com uma estrutura correta, apresentou melhorias no processo de decodificação e, diferentemente do que foi exemplificado neste trabalho, ele não depende do conhecimento da palavra de código transmitida.

O tema desenvolvido nesta dissertação propiciou uma base de conhecimento para futuras pesquisas nesta direção.

Referências Bibliográficas

[1] S. A. Abrantes. Códigos corretores de erros em comunicações digitais. Porto: FEUP Edições, 2010.

[2] D. J. Amit. Modeling brain function: The world of attractor neural networks. Cambridge: Cambridge University Press, 1989.

[3] M. Arenales. et al. Pesquisa operacional para cursos de engenharia. Rio de Janeiro: Elsevier, 2007.

[4] R. B. Bapat. Graphs and Matrices. New Delhi: Springer, 2010.

[5] J. A. Bondy, U. S. R. Murty. Graph Theory. New York: Springer, 2008.

[6] J. Bruck, M. Blaum. Neural Networks, Error-Correcting Codes, and Polynomials over the Binary n-Cube. IEEE Trans. Inf. Theory 35 n. 5 (1989) 976–986.

[7] J. Bruck. On the convergence properties of the Hopfield model. Proceedings of the IEEE 78 n. 10 (1990) 1579-1585.

[8] J. Bruck, J.W. Goodman. A generalized convergence theorem for neural networks. IEEE Transactions on Information Theory 34 n.5 (1988) 1089-1092.

[9] R. A. Claudio. Aplicação de redes neurais artificiais à estimação de curtíssimo prazo do preço da energia elética. 2014. Trabalho de conclusão de curso (Engenharia Elétrica com ênfase em Sistemas de Energia e Automação)- Escola de Engenharia de São Carlos, Universidade de São Paulo, São Carlos.

[10] L. G. Corrêa Memória associativa em redes neurais realimentadas. 2004. 137 f. Dissertação (Mestrado em Ciências da Computação e Matemática Computacional) - Instituto de Ciências Matemáticas e de Computação, Universidade de São Paulo, São Carlos.

[11] D. J. Evans, et al. Searching sets of properties with neural networks. Parallel Comput, 16 (1990) 279-285.

[12] G. S. Georgiou, P. Christodoulides, S. A. Kalogirou. Implementing Artificial Neural Networks in Energy Building Applications – A Review. In: IEEE 2018 International Energy Conference (ENERGYCON), 2018, Limassol. Disponível em https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=& arnumber=8398847.

[13] V. Gripon, C. Berrou. A simple and efficient way to store many messages using neural cliques.In: IEEE 2011 Symposium on Computational Intelligence, Cognitive Algorithms, Mind, and Brain (CCMB), 2011, Paris. Disponível em https://ieeexplore.ieee.org/document/5952106.

[14] M. Guerreiro. Group algebras and coding theory. São Paulo Journal of Mathematical Sciences, São Paulo, 10 (2016) 346–371. Disponível em: https://link.springer.com/article/10.1007/s40863-016-0040-x.

[15] A. C. Guyton, J. E. Hall. Tratado de Fisiologia Médica. 11a Ed. Rio de Janeiro:

Elsevier Ltda, 2006.

[16] A. S. Hadi. Linear Block Code Decoder Using Neural Network. In: 2018 IEEE International Joint Conference on Neural Networks (IEEE World Congress in Computational Intelligence), 2008, Hong Kong. Disponível em: https://ieeexplore.ieee.org/document/4633938.

[17] S. Haykin. Redes Neurais: Princípios e prática. Porto Alegre: Bookman, 2001. [18] A. Hefez, M. L. T. Villela. Códigos Corretores de Erros. 2a Ed. Rio de Janeiro: IMPA,

2008.

[19] A. L. Hodgkin, A. F. Huxley. A quantitative description of membrane current and its application to conduction and excitation in nerve. Journal of Physiology, Londres, 117 (1952) 500- 544.

[20] J. J. Hopfield. Neural networks and physical systems with emergent collective computational abilities. Biophysics 79 (1982) 2554-2558.

[21] M. M. Htay, S.S. Iyengar, Si-Qing Zheng. Correcting Errors in Linear Codes with Neural Network. In Proceedings of the 27th Southeastern Symposium in System Theory, 1995. Disponível em https://ieeexplore.ieee.org/document/390552.

[22] W. Huffmanm, V. Pless. Fundamentals of Error-Correcting Codes. Cambridge: Cambridge University Press, 2003.

[23] L. C. Junqueira, J. Carneiro. J. Histologia básica: texto e atlas. 12a Ed. Rio de Janeiro:

Guanabara Koogan, 2013.

[24] Z. L. Kovács. Redes Neurais Artificiais: Fundamentos e Aplicações. 4a Ed. São Paulo:

Livraria da Física, 2006.

[25] W. A. Little. The existence of persistent

states in the brain. Mathematical Biosciences, 19 (1974) 101-120. Disponível em: https://www.sciencedirect.com/science/article/pii/0025556474900315.

[26] L. Lugosh, W. J. Gross. Learning from the Syndrome. In: IEEE 2018 52nd Asilomar Conference on Signals, Systems, and Computers, 2018, Pacific Grove. Disponível em https://ieeexplore.ieee.org/document/8645388.

[27] J. S. Lowe, P. G. Anderson. Human Histology. 4a Ed. Philadelphia: Elsevier, Mosby,

2015.

[28] F. MacWilliams, N. Sloane. The Theory of Error-Correcting Codes. Amsterdam: North Holland Publishing Co., 1977.

[29] T. Matthews. Perceptron 2: logical operations.

logic and logical operations. Computational neuroscience in excel. Disponível em <http://toritris.weebly.com/perceptron-2-logical-operations.html>. Acesso em: 12 abril 2019.

[30] W. S. McCulloch, W. Pitts. A logical calculus of the ideas immanent in nervous activity. Bulletin of Mathematical Biophysics 5 (1943) 115-133.

[31] A. A. Mofrad. et al. Neural network associative memories with local coding. In: IEEE 2015 14th Canadian Workshop on Information Theory (CWIT), 2015, St. John’s. Disponível em https://ieeexplore.ieee.org/document/7255180.

[32] T. Montanari. Histologia: Texto, atlas e roteiro de aulas práticas. 3a Ed. Porto Alegre:

editora do Autor, 2016.

[33] L. H. A. Monteiro. Sistemas Dinâmicos. 2 ed. São Paulo: Livraria da Física. 2006. [34] E. Nachmani, et al. Deep Learning Methods for Improved Decoding of Linear Codes.

IEEE Journal of selected topics in signal processing. 12 n. 1 (2018) 119-131.

[35] L. Novak, A. Gibbons. Hybrid Graph Theory and Network Analysis. New York: Cambridge University Press, 1999.

[36] DQ. Nykamp. An introduction to networks. Disponível em <http://mathinsight.org- network-introduction>. Acesso em: 17 nov. 2018.

[37] R. Palazzo Jr, et al. Fundamentos algébricos e geométricos dos códigos corretores de erros. Campinas, 2006.

[38] W. W. Peterson, E. J. Weldon Jr. Error Correcting Codes. 2a Ed. Cambridge: MIT

Press, 1972.

[39] D. E. Rumelhart, K. L. McClelland. Parallel distributed processing. Cambridge: MIT press, 1986. v. 1.

[40] C. E. Shannon. A Mathematical Theory of Communication. The Bell System Technical Journal 27 n.3 (1948) 379–423.

[41] I. N. Silva, D. H. Spatti, R. A. Flauzino. Redes Neurais Artificiais. São Paulo: Artliber, 2010.

[42] P. Werbos. Beyond Regression: New Tools for Prediction and Analysis in the Behavioral Sciences. 1974. Ph.D. Dissertation - Harvard University, Cambridge.