Neural gas é uma rede neural artificial, inspirado pelos mapas auto-organizáveis e introduzido em 1991 por Thomas Martinetz e Klaus Schulten. O neural gas é um algoritmo simples para encontrar representações ideais de dados com base nos vetores de atributo. O algoritmo foi intitulado como "neural gas" por causa da dinâmica dos vetores de atributo durante o processo de adaptação, que distribuem-se como um gás dentro do espaço de dados. Ele é aplicado, onde a compressão de dados ou quantização vetorial é um problema, como por exemplo, no reconhecimento de fala, no processamento de imagem ou reconhecimento de padrões. É considerado como uma alternativa robustamente convergente ao agrupamento k-means, sendo também utilizado para análises de agrupamento de dados.

Algoritmo Suponhamos que queiramos modelar uma distribuição de probabilidade de vetores de dados usando um número finito de vetores de atributos , onde .

Para cada passo de tempo , o algoritmo: Amostra um vetor de dados escolhido a partir de ; Computa e ranqueia a distância entre e cada vetor de atributo. Identifica como o vetor de atributo mais próximo, o segundo mais próximo, e assim por diante. Em seguida, atualiza cada vetor de atributo com base em:

No algoritmo, pode ser compreendido como a taxa de aprendizado, e como a distribuição da vizinhança. Tanto quanto são reduzidos com o aumento de , de modo que o algoritmo converge após várias etapas de adaptação.

Uma etapa de adaptação, no que diz respeito ao neural gas, pode ser interpretada como uma descida gradiente numa função de perda. Ao adaptar não só o vetor de atributos mais próximo, mas todos eles com um tamanho de classes que diminui com o aumento da ordem de distância, em comparação com o agrupamento k-means (em linha), é possível obter uma convergência muito mais robusta a partir do algoritmo. O modelo proposto a partir do neural gas não elimina um nó e também não cria novos nós.

Comparação com Mapas auto-organizáveis (MAO) Comparado com os mapas auto-organizáveis, o modelo do neural gas não pressupõe que vetores são vizinhos. Se por acaso acontecer de dois vetores se encontrarem próximos um ao outro, então eles tenderão a mover-se juntos, e se dois vetores estiverem distantes entre si, eles não moverão-se conjuntamente.

Em contraste, em um MAO, se dois vetores são vizinhos no grafo subjacente, então eles sempre tenderão a mover-se juntos, nem mesmo importando se os dois vetores se avizinham no espaço euclidiano.

Variantes Uma série de variantes do algoritmo de neural gas existem na literatura, de modo a mitigar algumas das suas deficiências. Mais notável é, talvez, a variante proposta por Bernd Fritzke, com o modelo conhecido como growing neural gas (GNG), mas também deve-se mencionar ainda outros modelos, tais como o "Growing When Required network" e também o "incremental growing neural gas". Existe ainda uma variante que se destaca por evitar o risco de overfitting (um sobreajuste excessivo aos dados de treinamento), conhecida como "Plastic Neural Gas Model".

Growing neural gas Fritzke descreve o growing neural gas, ou neural gas crescente, como um modelo de rede incremental que aprende relações topológicas por meio de uma "Hebb-like learning rule", ou seja, uma regra de aprendizado hebbiana. Só que, ao contrário do modelo original do neural gas, este modelo não tem parâmetros que mudam ao longo do tempo e é capaz de aprendizagem contínua, isto é, aprender com fluxos de dados. O GNG tem sido amplamente utilizado em vários domínios , demonstrando as suas capacidades de agrupamento de dados de forma incremental. O GNG é inicializado com dois nós posicionados aleatoriamente que são inicialmente ligados com uma aresta de idade zero e cujos erros são definidos como 0. Uma vez que os dados de entrada são apresentados no GNG, sequencialmente um a um, os seguintes passos são seguidos em cada iteração:

Calcula-se os erros (distâncias) entre os dois nós mais próximos dos dados de entrada atuais. O erro do nó vencedor (apenas o mais próximo) é respectivamente acumulado. O nó vencedor e os seus vizinhos topológicos (ligados por uma aresta) movem-se em direção à entrada atual em diferentes frações dos seus respectivos erros. A idade de todas as arestas ligadas ao nó vencedor são incrementadas. Se o nó vencedor e o segundo-vencedor estiverem ligados por uma aresta, essa aresta é definida como 0. Caso contrário, é criada uma aresta entre eles. Se existirem arestas com uma idade superior a um limite definido, estas são removidas. Os nós sem ligações são eliminados. Se a iteração atual é um múltiplo inteiro de um limite de frequência de criação predefinido, um novo nó é inserido entre o nó com maior erro entre todos e seu vizinho topológico com maior erro. A ligação entre estes últimos nós é eliminada (e seus erros são diminuidos com base em um fator determinado) e o novo nó é conectado a ambos. O erro do novo nó é definido com base no antigo nó com maior erro. O erro acumulado entre todos os nós é suavizado por um dado fator. Se o critério de parada não for atendido, o algoritmo recebe uma entrada sequente. O critério pode ser um dado número de épocas, ou seja, um número pré-definido de tempos em que todos os dados são apresentados, ou o alcance de um número máximo de nós.

Incremental Growing Neural Gas Outra variante ao modelo neural gas inspirado no modelo GNG é o "Incremental Growing Neural Gas" (IGNG), ou seja, um modelo de rede crescente incremental. Os autores propõem a principal vantagem desse algoritmo como sendo a capacidade de "aprendizagem de novos dados (plasticidade), sem degradar a rede previamente treinada e esquecer a idade de entrada de dados (estabilidade)."

Growing when required Ter uma rede com um conjunto cada vez maior de nós, como a implementada pelo algoritmo de GNG foi visto como uma grande vantagem, no entanto, algumas limitações na aprendizagem foram vistas graças a introdução do parâmetro λ, em que a rede só seria capaz de crescer quando as iterações fossem um múltiplo deste parâmetro. A proposta para atenuar este problema foi um novo algoritmo, o "Growing When Required network" (GWR), que possibilita o crescimento da rede de forma mais rapida, adicionando nós da forma mais ágil possível sempre que a rede identifica que os nós existentes não descrevem a entrada bem o suficiente.

Plastic Neural Gas A capacidade de crescer uma rede pode introduzir um overfitting ou sobreajuste; por outro lado, a remoção de nós com base apenas na idade, como no modelo GNG, não garante que os nós removidos sejam realmente inúteis, porque a remoção depende de um modelo paramétrico que deve ser cuidadosamente ajustado ao "comprimento de memória" do fluxo de dados de entrada.

O modelo conhecido como "Plastic Neural Gas" resolve esse problema tomando decisões para adicionar ou remover nós usando uma versão não supervisionada de validação cruzada, que controla uma noção equivalente de "habilidade de generalização" para a configuração não supervisionada.

Embora os métodos de crescimento apenas atendam ao cenário da aprendizagem incremental, a capacidade de crescer e encolher é adequada para os problema de fluxos de dados de forma mais generalizada.

Implementações Para encontrar o ranking dos vetores de atributo, o algoritmo de neural gas envolve classificação, procedimento este que não se presta facilmente à paralelização ou implementação em hardwares análogos. Contudo, implementações em softwares paralelos e hardwares análogos estão sendo desenvolvidos atualmente.

Leitura complementar T. Martinetz, S. Berkovich, e K. Schulten. "Neural-gas de Rede" para a Quantização de vetores e sua Aplicação para o Tempo-Previsão de Séries. IEEE-Transactions on Neural Networks, 4(4):558-569, 1993.

Ligações externas DemoGNG.js Javascript simulador Neural Gás (e outros modelos de rede) Java Competitivo Aplicativos para Aprendizagem Supervisionada, Redes Neurais (incluindo Self-organizing map) em Java, com códigos fonte. descrição formal das Neural gás algoritmo Um GNG e GWR Classificador de implementação em Matlab