domingo, 26 de fevereiro de 2012

Proibição de jogos no Brasil

Estou de férias, e nesse tempo parei um pouco com as postagens. Também tenho feito uma pesquisa na área da inteligência artificial para meu próximo post sobre o assunto, e feito um novo curso na UDACITY.

Mas tive que parar com tudo isso para fazer uma postagem sobre um assunto polêmico, pelo menos pvaldir_rauppara mim, e não é mamilos.

Corre que um tal Senador Valdir Raupp, marquem bem esse nome e o rosto, através de um projeto de Lei 170/06 estúpido, deseja proibir jogos violentos no Brasil, o projeto ainda encontra-se em tramitação e pode ser consultado no link (clique aqui).

Isso é ridículo, pois ao invés de se fazer uma lei mais forte contra venda de narcóticos ou contra políticos corruptos, é mais interessante fazer uma lei contra jogos, como se as pessoas que jogassem videogames fossem responsáveis pelos crimes que acontecem no país.

Só para constar, comecei a aprender inglês desde cedo graças aos jogos de computador. Sempre que ia jogar alguma coisa o dicionário me acompanhava. Nunca saí atropelando pessoas depois de jogar GTA, tampouco saí por aí decapitando pessoas após jogar mortal kombat por horas.

Mas vamos lá, aproveitemos também para proibir filmes que tenham conteúdo violento, filmes de terror em geral, novelas de qualquer emissora, enfim, qualquer forma de diversão, arte ou seja lá o que for. Um viva as ditaduras e formas de repressão, pois é esse tipo de decisão que torna a vida das pessoas melhores, e menos violentas.

Ahhh e para quem não entendeu, esse último parágrafo foi um sarcásmo, pois o que o Exmo. Senador merece é uma honraria, assim como todos os seus eleitores.

otario

Vamos votar em políticos que proíbam jogos e aumentem os próprios salários, porque polícia civil, militar, professores, não precisam de aumento, vamos educar nossos filhos com a educação da repressão.

Ohh… Parabéns!! E um troféu joinha.

domingo, 5 de fevereiro de 2012

Corrupção Leaks, o WikiLeaks Brasileiro

anonymouslogoO Grupo Hacker Anonymous criou uma página para denúncias de políticos e empresas que mantém esquemas de corrupção.

Depois de derrubar diversos bancos o grupo hacker Anonymous criou um site para divulgar os documentos obtidos nas invasões. No perfil do Anonymous Brasil no twitter eles pedem a colaboração de todos os internautas que queiram se pronunciar contra a corrupção no Brasil.

Segundo o site, todos aqueles que tiverem denúncias a fazer devem entrar em contato com o Corrupção Leaks, no entanto, são exigidas provas concretas sobre os temas.

Inclusive há uma opção de envio de denúncias anônimas através do AnonMail, para aqueles que não querem se manifestar publicamente.

Também há o movimento Março Negro, que visa causar impacto na indústria do entretenimento, contra os projetos SOPA, PIPA e ACTA.

A proposta é que durante os 31 dias de março as pessoas não assistam filmes, não comprem revistas, jornais, nem baixem músicas, seja legal ou ilegamente.

Para acessar o Corrupção Leaks o endereço é: http://www.corrupcaoleaks.org.

sábado, 4 de fevereiro de 2012

UDACITY–Universidade Online Gratuita

Fiz há algum tempo um curso de Inteligência Artificial, ministrado por Peter Norvig e Sebastian Thrun (link).
Peter Norvig é pesquisador do Google e Sebastian Thrun professor pesquisador de Stanford.
Já esse ano, Sebastian Thrun montou um projeto paralelo chamado UDACITY, que é uma Universidade Online e Gratuita, com qualidade e utilizando os recursos da internet, como diz no próprio site, e agora acompanhado pelo professor David Evans.
Já há previsão de cursos sobre: “Como Construir um Mecanismo de Busca” e “Programando um Carro Robô”, mas no site informa que ainda em 2012 muitos outros cursos virão, e todos gratuítos.
Para realização do curso basta inscrever no site http://www.udacity.com, e claro, ter conhecimento em inglês.
image

O primeiro curso, ministrado pelo Prof. Sebastian Thrun e Prof. Peter Norvig, alcançou acima de 160 mil alunos através da internet, acessando os vídeos e quizzes e interagindo em fóruns, grupos de discussão e tecnologias da internet.
Thrun explicou em sua página pessoal:


One of the most amazing things I've ever done in my life is to teach a class to 160,000 students. In the Fall of 2011, Peter Norvig and I decided to offer our class "Introduction to Artificial Intelligence" to the world online, free of charge.
We spent endless nights recording ourselves on video, and interacting with tens of thousands of students. Volunteer students translated some of our classes into over 40 languages; and in the end we graduated over 23,000 students from 190 countries. In fact, Peter and I taught more students AI, than all AI professors in the world combined.
This one class had more educational impact than my entire career.

Tradução:
Uma das coisas mais espetaculares que eu fiz na minha vida foi ensinar para 160.000 estudantes. No outono de 2011, Peter Norvig e eu decidimos oferecer nossa turma de "Introdução a Inteligência Artificial" para o mundo, online e livre de custos.
Gastamos noites sem fim nos gravando em vídeo, e interagindo com dezenas de milhares de estudantes. Estudantes voluntários traduziam algumas de nossas aulas em mais de 40 línguas; e no fim nós graduamos mais de 23.000 estudantes de 190 países. De fato, Peter e ei ensinamos IA para mais estudantes, que todos os professores de IA no mundo juntos.

Busca em Árvore 3

No último post sobre busca em árvore, vimos a Busca de Custo Uniforme, também conhecido por Busca pelo Menor Custo.

Vamos considerar que temos um espaço de estados muito grande, o algoritmo irá encontrar a busca pelo menor caminho, ou seja, o custo total mais curto. Mas até que ele encontre o melhor caminho para o objetivo, vai levar muito tempo.

Então nós temos que dar mais informações para o algoritmo, conhecimento. O tipo de informação que é mais comumente usado em busca é uma estimativa da distância entre o nó inicial e o nó objetivo.

Busca pela melhor escolha

Quando falamos de busca com informação, a abordagem busca pela melhor escolha seleciona o nó para expansão com base em uma função de avaliação f(n).

“Tradicionalmente, o nó com a avaliação mais baixa é selecionado para expansão, porque a avaliação mede a distância até o objetivo.” (NORVIG et RUSSEL, 2004, pg. 95)

Há uma família inteira de Buscas pela melhor escolha, com funções de avaliação diferentes, tendo como elemento principal uma função heurística h(n).

formula1

Busca Gulosa pela Melhor Escolha

A busca gulosa pela melhor escolha tenta expandir o nó mais próxima ao objetivo, supondo que isso levará a uma solução rápida. (RUSSEL et NORVIG, 2004). Ele avalia os nós usando a função heurística: f(n) = h(n).

A* Search (A star Search)

Essa busca expande o nó com o menor valor da função f que é definida pela soma dos componentes g+h.

f = g+h

A função g do caminho é apenas o custo do caminho. Vimos isso no post sobre Resolução de Problemas.

g(path) = path cost

A função h de um caminho é igual a distância estimada do objetivo.

h(path) = estimated distance to the goal

astarsearch

Supondo que nós temos um caminho do estado inicial S até o estado X, o valor de f(X) é a soma de g e h.

Minimizar g ajuda a manter o caminho curto, e minimizar h ajuda a manter o foco em achar o objetivo. O resultado é uma estratégia de busca que é a melhor possível no sentido de encontrar o caminho mais curto enquanto expande o menor número de nós possíveis.

A* Search encontra o caminho de menor custo de acordo com a função h:

Se a função h de um estado for menor ou igual ao custo verdadeiro do caminho até o objetivo através deste estado.

h(s) <= true cost

Em outras palavras, h nunca pode superestimar a distância até o objetivo.

Nós também dizemos que h é otimista ou que h é uma admissível, significando que h é admissível para encontrar o caminho de menor custo.

quinta-feira, 2 de fevereiro de 2012

Derivando a matriz de peso

No post anterior vimos o funcionamento de uma Rede Neural Hopfield para reconhecimento de padrões, entretanto, notamos uma matriz de Peso, que já estava pronta para reconhecer os valores de entrada 1010 e 0101. Como chegamos naqueles valores da matriz?

Começamos então como uma matriz de peso em branco, como segue abaixo:

image

Tendo uma matriz inicial, treinaremos ela para reconhecer os padrões 0101, então para isso, calcularemos uma matriz para a entrada 0101, a qual é chamada de matriz de contribuição 0101.

Após calcular essa matriz de contribuição 0101, o resultado é adicionado a matriz de peso em branco, se quisermos que ela também reconheça o padrão 1110, então calcularemos a matriz de contribuição 1110 e também iremos adicionar a matriz de peso.

Lembramos que com as redes neurais Hopfield, teremos então uma Rede Neural que será capaz de reconhecer os padrões 0101 e 1110, e também, os complementos destes (1010 e 0001).

Para calcular a Matriz de Contribuição 0101 seguiremos três passos:

  1. Calcular os valores bipolares de 0101, ou seja transformar 0101 em -1,1,-1,1;

  2. Transpor o equivalente bipolar de 0101 e multiplicar por ele mesmo;

  3. E ajustar os valores da diagonal principal do resultado para 0.

Esse último, pois os neurônios não tem conexões entre si mesmos, nas redes neurais Hopfield. Lembremos, do último post, que a Matriz de Peso nas redes neurais Hopfield são na verdade os pesos dos neurônios ligados a cada outro neurônio.

Vamos começar então do primeiro passo, segundo Heathon, é necessário converter os valores binários para bipolar, pois “0 não é o contrário de 1, preferivelmente -1 é o inverso matemático de 1.”

Matematicamente falando, a conversão pode ser dada através das seguintes equações:

Binário para Bipolar
Binário para Bipolar
Bipolar para Binário
Bipolar para Binário

Sabendo disso obteremos com a conversão, que a entrada 0101 será -1,1,-1,1.

Teremos então o seguinte vetor:

image

Para o passo 2, necessitaremos multiplicar o vetor anterior pela sua transposição, sendo então o seguinte:

image

X

image

Com essa multiplicação, obteremos como resultado a seguinte matriz:

image

Agora é o momento de utilizar o passo 3, ajustar o valor da diagonal principal para 0, para efeitos matematicos fazemos isso diminuindo da matriz de contribuição a Matriz Identidade, e o resultado será:

image

Com nossa matriz de contribuição pronta, tudo que temos a fazer agora é adicionar essa matriz de contribuição 0101 à Matriz de Peso da Rede Neural. E caso queiramos que nossa rede também reconheça o padrão 1001, iremos fazer os mesmos procedimentos deste post e no final adicionar à matriz de Peso, que já terá a Matriz de Contribuição 0101.

quarta-feira, 1 de fevereiro de 2012

Banrisul: Anonymous[grupo hacker]ataca o site do banco???

anonymouslogoSerá que nem o site do Banco do Estado do Rio Grande do Sul parece ter escapado dos ataques do Grupo Hacker Anonymous? Hoje, 1º de fevereiro, por volta das 20h ao tentar acessar o site da instituição, o mesmo não respondeu.
Os ataques as instituições bancárias, segundo o que percorre a web, faz parte de uma tentativa de voltar as atenções do público às ações do grupo, que entre outras coisas se opõe aos projetos SOPA e PIPA.
Os projetos SOPA e PIPA põem limites na internet que prejudicariam inclusive sites como FACEBOOK, ORKUT, TWITTER, WIKIPEDIA, que teriam que provavelmente encerrar seus serviços. Acabando assim com a liberdade de expressão na internet.
banrisul
A minha opinião pessoal, é que a internet não pode ser censurada, uma vez que através dela formamos uma inteligência coletiva construindo conhecimento e compartilhando através dela para o mundo. A pirataria por outro lado é a grande marketeira de muitas softwarehouses, e ao invés de reduzir a liberdade de expressão na internet, o governo tem é que reduzir os impostos, isso sim.
Não somos a favor da pirataria. Não roube navios!

Redes Neurais Hopfield

 

As Redes Neurais Hopfield são o tipo mais simples de redes neurais. Ela contém uma camada com neurônios completamente conectados, ou seja, cada neurônio é conectado a todos os outros da rede. É chamado de rede auto-associativa, porque se ela reconhece um padrão, ela retornará o padrão.

Vamos ver um exemplo de Rede Neural Hopfield com quatro neurônios, cada neurônio é conectado aos outros três neurônios, formando assim, um total de 12 conexões.

Rede Neural Hopfield com 4 neurônios
 

Rede Neural Hopfield com 4 neurônios

Na aplicação de redes neurais usaremos matrizes para armazenar os pesos das conexões, todas as redes neurais utilizam alguma forma de matriz para armazenar os pesos.

tabela1_rnhopfield

A matriz acima é chamada de matriz Peso e contém a memória da rede neural, utilizada para reconhecer padrões, quando eles forem mostrados.

Geralmente as matrizes também armazenam os valores de limiar, entretanto, Redes Neurais Hopfield não contém tais valores.

Os valores utilizados na próxima tabela são utilizados para que uma rede reconheça os valores 0101 e 1010, vamos ver como funciona.

tabela2_rnhopfield

Mostraremos a rede o valor 0101, para isso, alimentaremos cada neurônio de entrada, que também é de saída, com o valor 0101.

Quando o neurônio 1 (N1) for alimentado com 0101, sua ativação resultará na soma de todos os pesos que terão 1 no padrão de entrada.

Vejamos os pesos do N1:

tabela3_rnhopfield

Agora os pesos comparados ao padrão de entrada.

tabela4_rnhopfield

Como dito anteriormente, a ativação do neurônio será a soma dos pesos cujo valor de entrada seja 1, logo:

N1 = (-1) + (-1) = (-2)

N2 = (0) + (1) = (1)

N3 = (-1) + (-1) = (-2)

N4 = (1) + (0) = (1)

O vetor final de saída será {-2, 1, -2, 1}, para funcionar precisaremos de uma função de ativação, um limiar dirá quando um neurônio irá queimar, logo o limiar é uma função de ativação.

Numa rede neural Hopfield, dizemos que a função de ativação é qualquer valor maior que zero, logo, está estabelecido o limiar da nossa rede e os seguintes neurônios irão queimar.

N1 = (-2) – não queimará.

N2 = (1) – queimará.

N3 = (-2) – não queimará.

N4 = (1) – queimará.

Para os neurônios que não queimarem assume-se o valor de 0 e para os neurônios que queimaram o valor de 1, logo a saída da nossa rede será 0101.

Uma rede que reconhece o padrão 0101, também reconhece o valor 1010.