Esclarecimento sobre uma Rede Neural que interpreta Snake

Eu sou novo em redes neurais / aprendizagem de máquina / algoritmos genéticos, e para minha primeira implementação eu estou escrevendo uma rede que aprende a jogar cobra ( Um exemplo no caso de você não ter jogado antes ) Eu tenho algumas perguntas que eu don compreenda completamente:

Antes das minhas perguntas, só quero ter certeza de que entendi a ideia geral corretamente. Existe uma população de cobras, cada uma com DNA gerado aleatoriamente. O DNA é o peso usado na neural network. Cada vez que a cobra se move, ela usa a neural network para decidir aonde ir (usando um viés). Quando a população morre, selecione alguns pais (talvez a melhor forma física) e cruze seu DNA com uma pequena chance de mutação.

1) Se dado o tabuleiro inteiro como uma input (cerca de 400 pontos) camadas escondidas o suficiente (não sei quantos, talvez 256-64-32-2?), E tempo suficiente, aprenderia a não se encaixotar?

2) Quais seriam boas inputs? Aqui estão algumas das minhas idéias:

  • 400 inputs, uma para cada espaço na placa. Positivo se cobra deve ir lá (a maçã) e negativo se for uma parede / seu corpo. Quanto mais próximo de -1/1 é o mais próximo é.
  • 6 inputs: largura do jogo, altura do jogo, cobra x, cobra y, maçã x e maçã y (pode aprender a jogar em tabuleiros de tamanhos diferentes se treinado dessa forma, mas não sabe como inserir seu corpo, pois muda de tamanho)
  • Dê-lhe um campo de visão (talvez 3×3 quadrado na frente da cabeça) que possa alertar a cobra de uma parede, maçã ou corpo. (a cobra só seria capaz de ver o que está bem na frente, infelizmente, o que poderia atrapalhar sua capacidade de aprendizado)

3) Dado o método de input, o que seria um bom ponto de partida para os tamanhos de camadas ocultas (obviamente, planejar em ajustes, só não sei o que é um bom ponto de partida)

4) Finalmente, a aptidão da cobra. Além do tempo para pegar a maçã, é longo, e é vitalício, se alguma outra coisa for levada em conta? A fim de fazer com que a cobra aprenda a não se bloquear, há algo mais que eu possa acrescentar à aptidão para ajudar?

Obrigado!

Neste post, vou aconselhá-lo:

  • Como mapear instruções de navegação para seqüências de ação com uma neural network LSTM
  • Recursos que ajudarão você a aprender como usar redes neurais para realizar sua tarefa
  • Como instalar e configurar bibliotecas de redes neurais com base no que eu precisava aprender da maneira mais difícil

Opinião geral da sua ideia:

Posso ver o que você está tentando fazer, e acredito que a sua ideia de jogo (de usar identidades geradas aleatoriamente de adversários que controlam seu comportamento de uma maneira que altere aleatoriamente o modo como estão usando inteligência artificial para se comportar inteligentemente) tem um muito potencial.

Mapeando instruções de navegação para seqüências de ação com uma neural network

Para processar o seu tabuleiro de jogo, porque envolve dados densos (em oposição a esparsos ), você pode achar útil uma Rede Neural de Convolução (CNN). No entanto, como você precisa traduzir o mapa para uma sequência de ação, as redes neurais otimizadas para sequência (como Redes Neurais Recorrentes) provavelmente serão as mais úteis para você. Eu encontrei alguns estudos que usam redes neurais para mapear instruções de navegação para seqüências de ação, construir o mapa do jogo e mover um personagem através de um jogo com muitos tipos de inputs:

  • Mei, H., Bansal, M. e Walter, MR (2015). Ouça, participe e caminhe: Mapeamento neural de instruções de navegação para seqüências de ação. arXiv preXprint arXiv: 1506.04089. Disponível em: Ouvir, Participar e Andar: Mapeamento Neural de Instruções de Navegação para Seqüências de Ação
  • Lample, G., & Chaplot, DS (2016). Jogando jogos FPS com aprendizagem de reforço profundo. arXiv preX arXiv: 1609.05521. Disponível em: Super Mario como uma String: Geração de nível de plataforma via LSTMs
  • Lample, G., & Chaplot, DS (2016). Jogando jogos FPS com aprendizagem de reforço profundo. arXiv preX arXiv: 1609.05521. Disponível em: Jogando Jogos FPS com Aprendizado de Reforço Profundo
  • Schulz, R., Talbot, B., Lam, O., Dayoub, F., Corke, P., Upcroft, B., & Wyeth, G. (2015, Maio). Navegação do robô usando dicas humanas: um sistema de navegação por robô para exploração simbólica dirigida por objectives. Em Robótica e Automação (ICRA), Conferência Internacional do IEEE 2015 (pp. 1100-1105). IEEE Disponível em: Robot Navigation Utilizando as Sugestões Humanas: Um sistema de navegação robótico para exploração simbólica dirigida por objectives

Opinião geral do que irá ajudá-lo

Parece que você está perdendo alguma compreensão básica de como as redes neurais funcionam, então minha principal recomendação para você é estudar mais a mecânica subjacente por trás das redes neurais em geral. É importante ter em mente que uma neural network é um tipo de modelo de aprendizado de máquina . Então, não faz sentido apenas construir uma neural network com parâmetros randoms. Uma neural network é um modelo de aprendizado de máquina que é treinado a partir de dados de amostra e, uma vez treinado, pode ser avaliado em dados de teste (por exemplo, para realizar previsões).

A raiz do aprendizado de máquina é amplamente influenciada pelas statistics bayesianas, então você pode se beneficiar ao obter um livro-texto sobre statistics bayesianas para obter uma compreensão mais profunda de como a sorting baseada em máquina funciona em geral.

Também será valioso para você aprender as diferenças entre diferentes tipos de redes neurais, como a Memória de Curto Prazo (LSTM) e Redes Neurais de Convolução (CNNs).

Se você quiser mexer em como as redes neurais podem ser usadas para tarefas de sorting, tente isto:

  • Playground Tensorflow

Para aprender a matemática: Minha opinião profissional é que aprender a matemática subjacente das redes neurais é muito importante. Se for intimidador, dou meu testemunho de que aprendi tudo sozinho. Mas se você preferir aprender em um ambiente de sala de aula, recomendo que tente isso. Um ótimo recurso e livro didático para aprender a mecânica e a matemática das redes neurais é:

  • Redes Neurais e Aprendizagem Profunda

Tutoriais para bibliotecas de redes neurais

Eu recomendo que você tente trabalhar através dos tutoriais para uma biblioteca de neural network, como:

  • Tutoriais TensorFlow
  • Tutoriais de Aprendizagem Profunda com Theano
  • Tutoriais CNTK ( CNTK 205: Artistic Style Transfer é particularmente legal.)
  • Keras tutorial (Keras é uma poderosa biblioteca de neural network de alto nível que pode usar o TensorFlow ou o Theano .)

Eu vi aplicação semelhante. Entradas geralmente eram coordenadas de cobra, coordenadas de maçã e alguns dados sensoriais (é parede ao lado de cabeça de cobra ou não no seu caso).

Usar algoritmo genético é uma boa ideia neste caso. Você está fazendo apenas aprendizado paramétrico (encontrando um conjunto de pesos), mas a estrutura será baseada na sua estimativa. GA também pode ser usado para aprendizado de estrutura (encontrando topologia de RNA). Mas usar o GA para ambos será muito difícil de ser computacional.

O professor Floreano fez algo parecido. Ele usa o GA para encontrar pesos para o controlador de neural network do robô. O robô estava no labirinto e executava alguma tarefa. A camada oculta da neural network era um neurônio com articulações recorrentes nas inputs e uma conexão lateral em si mesmo. Houve duas saídas. As saídas foram conectadas na camada de input e camada oculta (mencionado um neurônio).

Mas Floreano fez algo mais interessante. Ele diz: Nós não nascemos com sinapses determinadas, nossas sinapses mudam em nossa vida. Então ele usa o GA para encontrar regras para a mudança de sinapses. Essas regras foram baseadas no aprendizado de Hebbian. Ele executa a codificação do nó (pois todos os pesos conectados ao neurônio aplicam a mesma regra). No começo, ele inicializou pesos em pequenos valores randoms. Encontrar regras em vez do valor numérico da sinapse leva a melhores resultados. Um dos artigos de Floreno .

E na minha própria experiência. No último semestre, eu e meu colega de escola conseguimos uma tarefa para encontrar as regras para a sinapse com o GA, mas para a neural network da Spiking. Nosso SNN foi controlador para modelo cinemático de robô móvel e tarefa foi levar robô para o ponto escolhido. Obtivemos alguns resultados, mas não esperados. Você pode ver os resultados aqui . Então, eu recomendo que você use ANN “normal” em vez de SNN porque SNN traz novos fenomenos.

    Intereting Posts