“Computing Machinery and Intelligence” é um artigo escrito pelo cientista da computação Alan Turin, considerado o pai da computação e um dos pioneiros da Inteligência Artificial.   No artigo, Turing propõe o jogo chamado o Jogo da Imitação – mesmo nome do filme recém lançado sobre ele – no qual é proposto uma forma para saber se as máquinas podem ser consideradas inteligentes ou não. Além disso, ele relata algumas objeções relacionadas ao tema.

Já li esse artigo há alguns anos quando paguei a cadeira de Inteligência Artificial na graduação, porém hoje, do lado oposto da sala, eu gostaria de fazer o mesmo com os meus alunos e tentar mostrar essa obra prima escrita em 1950.  Encontrei facilmente o artigo escrito por Turing na internet, porém gostaria de ter uma versão em português para aqueles alunos que não tem tanta fluência na língua. Depois de muito procurar, eu encontrei uma resenha no Scribd, não era o que estava procurando mas por enquanto é o que vou manter como referência em português. Assim que tiver tempo, pretendo fazer a minha.

Vou deixar o link para ambos os documentos para alunos e pesquisadores que queiram obter essas versões.

https://dl.dropboxusercontent.com/u/5992545/Blog/MachineIntelligence.pdf

https://dl.dropboxusercontent.com/u/5992545/Blog/ResenhaPaperTuring.docx

http://www.loebner.net/Prizef/TuringArticle.html

 

Recently, I implemented the Fish School Search II for a discipline on my master degree.
FSSII is an optimization algorithm proposed by Carmelo et all. Actually, it is a version improved of the Fish School Search. That version was proposed last year in the BRICS conference.

Paper: “An Enhanced Fish School Search Algorithm”,
Authors: C. J. A. Bastos-Filho, D. O. Nascimento.
Conference: BRICS 2013, Porto de Galinhas, Brazil. http://brics-cci.org/

I implemented to solve the Rastrigin’s and Sphere’ problem but is very simple to extend for other one. It is a Python code so it is very easy to understand it. I guess I have the code implemented in C++ but I need to find in my stuff.

https://dl.dropboxusercontent.com/u/5992545/Blog/FSS2.py

 

No meu trabalho de Reconhecimento de padrões, eu precisei utilizar uma base que me fornecia imagens como vetor de bits. Por exemplo, o f  era representado pelo seguinte vetor:

0000000000000000000001111110000
0000000000000000000001111111100
0000000000000000000001111111110
0000000000000000000001111111111
0000000000000000000111111111110
0000000000000000000111111111110
0000000000000000000111111111111
0000000000000000000011111111111
0000000000000000000111111111111
0000000000000000001111111111110
0000000000000000000111111111111
0000000000000000000111111111111
0000000000000000000111111111111
0000000000000000001111111111111
0000000000000000001111111111111
0000000000000000011111111111110
0000000000000000011111111111110
0000000000000000011111111111100
0000000000000000011111111111100
0000000000000000001111111111100
0000000000000000011111111111000
0000000000000000011111111111000
0000000000000000011111111111000
0000000000000000111111111111000
0000000000000000111111111110000
0000000000000111111111111100000
0000000000011111111111111000000
0000000000011111111111111000000
0000000000111111111111111000000
0000000011111111111111111000000
0000001111111111111111110000000
0000011111111111111111110000000
0000111111111111111111110000000
0011111111111111111111110000000
1111111111111111111111110000000
1111111111111111111111111000000
1111111111111111111111111000111
1111111111111111111111111111111
1111111111111111111111111111111
1111111111111111111111111111111
1111110000000111111111111111111
1111100000000111111111111111111
1100000000000011111111111111111
0000000000000001111111111111111
0000000000000001111111111111110
0000000000000000111111111111000
0000000000000001111111100000000
0000000000000000111111110000000
0000000000000000111111110000000
0000000000000000111111110000000
0000000000000000111111111000000
0000000000000000111111111000000
0000000000000000111111111000000
0000000000000000111111111100000
0000000000000000111111111110000
0000000000000000111111111110000
0000000000000000111111111111000
0000000000000001111111111110000
0000000000000000111111111111000
0000000000000000111111111111000
0000000000000000111111111111100
0000000000000000011111111111100
0000000000000000111111111111000
0000000000000000011111111111100
0000000000000000011111111111100
0000000000000000001111111111100
0000000000000000001111111111100
0000000000000000001111111111100
0000000000000000001111111111100
0000000000000000001111111111100
0000000000000000000111111111100
0000000000000000000011111111100
0000000000000000000011111111100
0000000000000000000001111111100
0000000000000000000000111111100
0000000000000000000000001111100

Infelizmente, eu estava utilizando uma framework que necessitava receber a imagem e não o vetor de bits que é extraído dela. Logo, eu tinha que dá um passo pra trás pra puder dá dois pra frente.

Fazendo uma pesquisa na internet, encontrei uma função do scipy que fazia exatamente o que eu queria.  scipy.misc.imsave cria uma imagem a partir de um array da classe numpy.

A partir disso, eu criei o seguinte código:

#!/bin/bash

import scipy
import numpy

def create_bynary_image(binary_content, output_name):
    letter = open(bynary_content)
    bits_image = []

    for line in letter:
        bits_image.append(map(lambda x: int(x), list(line.replace('n',''))))

    np_array = numpy.array(bits_image)
    letter.close()
    scipy.misc.imsave(output_name, np_array)

if __name__ == '__main__':
    create_bynary_image('letter.txt', 'f.png')
   

Abaixo o conteúdo de letter.txt que é usado no exemplo.

0000000000000000000001111110000
0000000000000000000001111111100
0000000000000000000001111111110
0000000000000000000001111111111
0000000000000000000111111111110
0000000000000000000111111111110
0000000000000000000111111111111
0000000000000000000011111111111
0000000000000000000111111111111
0000000000000000001111111111110
0000000000000000000111111111111
0000000000000000000111111111111
0000000000000000000111111111111
0000000000000000001111111111111
0000000000000000001111111111111
0000000000000000011111111111110
0000000000000000011111111111110
0000000000000000011111111111100
0000000000000000011111111111100
0000000000000000001111111111100
0000000000000000011111111111000
0000000000000000011111111111000
0000000000000000011111111111000
0000000000000000111111111111000
0000000000000000111111111110000
0000000000000111111111111100000
0000000000011111111111111000000
0000000000011111111111111000000
0000000000111111111111111000000
0000000011111111111111111000000
0000001111111111111111110000000
0000011111111111111111110000000
0000111111111111111111110000000
0011111111111111111111110000000
1111111111111111111111110000000
1111111111111111111111111000000
1111111111111111111111111000111
1111111111111111111111111111111
1111111111111111111111111111111
1111111111111111111111111111111
1111110000000111111111111111111
1111100000000111111111111111111
1100000000000011111111111111111
0000000000000001111111111111111
0000000000000001111111111111110
0000000000000000111111111111000
0000000000000001111111100000000
0000000000000000111111110000000
0000000000000000111111110000000
0000000000000000111111110000000
0000000000000000111111111000000
0000000000000000111111111000000
0000000000000000111111111000000
0000000000000000111111111100000
0000000000000000111111111110000
0000000000000000111111111110000
0000000000000000111111111111000
0000000000000001111111111110000
0000000000000000111111111111000
0000000000000000111111111111000
0000000000000000111111111111100
0000000000000000011111111111100
0000000000000000111111111111000
0000000000000000011111111111100
0000000000000000011111111111100
0000000000000000001111111111100
0000000000000000001111111111100
0000000000000000001111111111100
0000000000000000001111111111100
0000000000000000001111111111100
0000000000000000000111111111100
0000000000000000000011111111100
0000000000000000000011111111100
0000000000000000000001111111100
0000000000000000000000111111100
0000000000000000000000001111100
e o resultado foi

teste

RL

 

Esquemático do Neurônio LSTM

Ultimamente, eu venho estudando LSTM (Long Short Term Memory)  para ser aplicado em keywork spotting. Isso tudo faz parte de uma cadeira de Aplicação em Computação Inteligente que estou pagando no mestrado.  A LSTM é uma rede neural projetada para lidar com longos tempos de dependências. Esse tipo de rede consegue superar o problema de erro propagado que é encontrado nas redes neurais convencionais.

Nessas idas e vindas na área, eu acabei colhendo vários artigos sobre o assunto para apoiar os meus estudos.  Eu fiz um pacote com vários artigos sobre LSTM e vou deixar disponível aqui no blog[1]. Quem tiver interesse em usar esse tipo de rede, eu aconselho a instalar a RNNLIB[2]. RNNLIB é uma biblioteca de redes neurais recorrentes desenvolvida por Alex Graves.

[1] https://dl.dropboxusercontent.com/u/5992545/Blog/pdfs-rnn.zip

[2] http://sourceforge.net/p/rnnl/wiki/Home/

RL

 

Esse período foi bastante corrido, mau postei devido a falta de tempo. Foi projeto de Banco de Dados, de Organização de Computadores, Circuitos Digitais Sequenciais, Redes de Computadores entre outros. Ah também tive meu primeiro artigo aceito – A Novel Restoration Algorithm Based on Optical Signal to Noise Ratio for Transparent Optical Network, SBrT 2011.

Abaixo seguem algumas imagens que disso tudo…

 

Plugin desenvolvido para Google Chrome

Justiça seja feita. Tenho que agradecer ao meu grupo por todos esses projetos, Anderson, Sergio, Rodrigo Morais, e Jamersson. Valeu!  Que venha Arquitetura o 7º Período!