Meta-agrupamento com minimização de erros e por que acho que o cérebro funciona dessa maneira

Olá pessoal! Quero compartilhar com você minha idéia de aprendizado de máquina.

Os grandes avanços no aprendizado de máquina são impressionantes. Redes convolucionais e LSTMs são legais. Mas quase todas as tecnologias modernas são baseadas na propagação reversa do erro. Com base nesse método, é improvável que seja capaz de construir uma máquina pensante. As redes neurais são compostas de algo como um cérebro congelado, treinado de uma vez por todas, incapaz de mudar o pensamento.

Eu pensei, por que não tentar criar algo como um cérebro vivo. Uma espécie de reengenharia. Como em todos os animais, apesar das diferenças de inteligência, o cérebro consiste aproximadamente nos mesmos neurônios, algum princípio básico deve estar no centro de seu trabalho.

O que eu não sei sobre neurônios


Existem várias perguntas para as quais não encontrei respostas inequívocas na literatura popular;

  • Obviamente, um neurônio de alguma forma responde aos neurotransmissores, mas como exatamente? A simples suposição de que quanto maior o neurotransmissor, mais frequentemente as adesões, obviamente não resiste à crítica. Se assim fosse, o desencadeamento de um neurônio desencadearia o desencadeamento de vários vizinhos, os do próximo, e em pouco tempo essa avalanche capturaria todo o cérebro. Mas, na verdade, isso não acontece, ao mesmo tempo, apenas uma pequena parte dos neurônios trabalha no cérebro. Porque
  • Os neurônios são obviamente unidades de memória, mas como eles armazenam informações? A parte central do neurônio não é nada de especial: o núcleo das mitocôndrias e similares. Axon não pode influenciar o pico, porque a informação vai apenas em uma direção, a partir do núcleo. Então, a única coisa que resta são os dendritos. Mas como as informações são armazenadas neles? Em forma analógica ou digital?
  • Obviamente, os neurônios estão de alguma forma aprendendo. Mas como exatamente? Suponha que os dendritos cresçam em lugares onde havia muito neurotransmissor logo antes do pico. Mas, se for assim, o neurônio desencadeado crescerá um pouco e na próxima vez que um neurotransmissor aparecer, será o mais espesso entre os vizinhos, absorverá o máximo do neurotransmissor e funcionará novamente. E novamente um pouco crescer. E assim por diante até o infinito, até que ele estrangule todos os seus vizinhos? Há algo errado aqui?
  • Se um neurônio cresce, então os vizinhos diminuem, a cabeça não é de borracha. Algo deve fazer com que o neurônio seque. O que?

Apenas agrupando


A resposta plausível para todas essas perguntas me parece que o cérebro funciona como um monte de grupos simples. É possível executar esse algoritmo em um grupo de neurônios? Por exemplo, o método K-means. Basta apenas simplificá-lo um pouco. No algoritmo clássico, os centros são calculados iterativamente como a média de todos os exemplos considerados, mas mudaremos o centro imediatamente após cada exemplo.

Vamos ver o que precisamos para implementar o algoritmo de clustering.

  • Os centros de agrupamento, é claro, são os dendritos dos neurônios em nosso grupo. Mas como se lembrar da informação? Suponha que a célula da unidade para armazenar informações no dendrito seja o volume da ramificação do dendrito na região da sinapse. Quanto mais espessa a ramificação, respectivamente, seu volume for maior, maior será o valor economizado. Assim, cada dendrito pode memorizar várias quantidades analógicas.
  • Comparadores para calcular a proximidade de um exemplo. É mais complicado. Suponha que, após o envio dos dados (os axônios tenham expulsado um neurotransmissor), cada neurônio funcione mais rápido, mais dados armazenados (o centro do cluster) são semelhantes ao exemplo dado (o número de neurotransmissores). Observe que a taxa de resposta de um neurônio não é afetada pela quantidade absoluta do neurotransmissor, mas pela proximidade da quantidade do neurotransmissor com o valor armazenado nos dendritos. Suponha que, se o neurotransmissor for pequeno, o dendrito não dê um comando para aumentar. Nada acontece e se houver muito neurotransmissor, o pico do ramo dendrítico ocorre mais cedo do que em outros ramos dendríticos e não atinge o núcleo. Mas se o neurotransmissor estiver correto, todos os ramos dendríticos produzirão um mini-pico aproximadamente ao mesmo tempo, e essa onda se transformará no pico de um neurônio que percorrerá o axônio.
  • Um comparador de entradas múltiplas permite comparar resultados e escolher o melhor. Suponha que os neurônios próximos tenham um efeito inibitório em todos os seus vizinhos. Assim, em um determinado grupo de neurônios, apenas um pode estar ativo a qualquer momento. Aquele que trabalhou primeiro. Como os neurônios do grupo estão próximos, eles têm o mesmo acesso a todos os axônios que chegam a esse grupo. Assim, o neurônio no qual a informação armazenada está mais próxima do exemplo em questão funcionará no grupo.
  • O mecanismo de deslocamento do centro em direção ao exemplo. Bem, tudo é simples. Após o pico do neurônio, todos os dendritos desse neurônio alteram seu volume. Onde a concentração do neurotransmissor era muito alta, os galhos crescem. Onde era insuficiente, os galhos são reduzidos. Onde a concentração é correta, o volume não muda. Volumes de galhos variam um pouco. Mas imediatamente. O próximo pico é a próxima mudança.

Vamos verificar o algoritmo resultante na prática. Eu desenhei algumas linhas em Python. Aqui está o que acontece com duas dimensões de números aleatórios:


E aqui está o MNIST:


À primeira vista, parece que tudo isso não mudou nada. Bem, tivemos alguns dados na entrada, transformamos de alguma forma, obtivemos outros dados.

Mas há realmente uma diferença. Se antes da conversão tínhamos vários parâmetros analógicos, depois da conversão, temos apenas um parâmetro, ao mesmo tempo codificado por um código unitário. Cada neurônio no grupo pode ser associado a uma ação específica.

Deixe-me dar um exemplo: suponha que haja apenas dois neurônios em um grupo de agrupamentos. Chame-os de "saboroso" e "assustador". Para permitir que o cérebro tome uma decisão, é necessário apenas conectar o neurônio "COMER" ao primeiro e "EXECUTAR" ao segundo. Para isso, precisamos de um professor. Mas agora não é mais isso, ensinar com um professor é um tópico para outro artigo.

Se você aumentar o número de clusters, a precisão aumentará gradualmente. Um caso extremo é o número de clusters igual ao número de exemplos. Mas há um problema, o número de neurônios no cérebro é limitado. É preciso comprometer constantemente a precisão ou o tamanho do cérebro.

Meta cluster


Suponha que não temos um grupo de cluster, mas dois. Nesse caso, os mesmos valores são aplicados às entradas. Obviamente, você obtém o mesmo resultado.

Vamos cometer um pequeno erro aleatório. Deixe que, às vezes, cada clusterizador selecione não o centro mais próximo do cluster, mas qual. Então os valores começarão a diferir, com o tempo a diferença se acumulará.


E agora, vamos calcular o erro de cada cluster. O erro é a diferença entre o exemplo de entrada e o centro do cluster selecionado. Se um cluster tiver selecionado o valor mais próximo e o outro aleatório, o segundo terá um erro maior.

Vá em frente, adicione uma máscara à entrada de cada cluster. Uma máscara é um conjunto de coeficientes para cada entrada. Não zero ou um, como é comumente usado em máscaras, mas algum número real de zero a um.

Antes de dar um exemplo para a entrada do clusterer, multiplicaremos esse exemplo por uma máscara. Por exemplo, se uma máscara é usada para uma imagem, se, para alguns pixels, a máscara é igual a um, é como se fosse completamente transparente. E se a máscara é zero, esse pixel é sempre preto. E se a máscara for 1/2, o pixel ficará meio escuro.

E agora a ação principal, reduziremos o valor da máscara em proporção ao erro de agrupamento. Ou seja, se o erro for grande, diminuiremos o valor mais fortemente e, se for zero, não o reduziremos.

Para que os valores das máscaras não sejam redefinidos gradualmente para zero, nós os normalizaremos. Ou seja, a soma dos valores da máscara para cada parâmetro de entrada é sempre igual a um. Se algo é retirado em uma máscara, é adicionado a outra.

Vamos tentar ver o que acontece com o exemplo do MNIST. Vemos que as máscaras gradualmente dividem os pixels em duas partes.


As máscaras resultantes são mostradas no lado direito da imagem. No final do processo, o clusterizador superior considera o canto inferior direito e o clusterizador inferior o restante dos exemplos. Curiosamente, se reiniciarmos o processo, teremos outra separação. Mas, ao mesmo tempo, os grupos de parâmetros são obtidos não aleatoriamente, mas de maneira a reduzir o erro de previsão. Os clusters parecem experimentar cada pixel em sua máscara e, ao mesmo tempo, o pixel seleciona o clusterizador ao qual o pixel se adapta melhor.

Vamos tentar inserir dígitos duplos, não sobrepostos, mas localizados próximos um do outro, assim (este é um exemplo, não dois):

imagem

Agora vemos que a cada vez a separação acontece da mesma forma. Ou seja, se houver uma única e claramente a melhor opção para separar máscaras, ela será selecionada.


Apenas uma coisa será aleatória, se a primeira máscara selecionará o dígito esquerdo ou o direito.

Eu chamo de meta-grupos de máscaras resultantes. E o processo de formação de máscaras por meta-agrupamento. Por que meta? Porque o armazenamento em cluster não é um exemplo de entrada, mas das próprias entradas.

Um exemplo é mais complicado. Vamos tentar dividir 25 parâmetros em 5 meta clusters.

Para fazer isso, usamos cinco grupos de cinco parâmetros codificados por um código unitário.

Ou seja, em cada grupo há uma e apenas uma unidade em um local aleatório. Sempre existem cinco unidades em cada exemplo servido.

Nas figuras abaixo, cada coluna é um parâmetro de entrada e cada linha é uma máscara de meta-cluster. Os próprios clusters não são mostrados.


100 parâmetros e 10 meta clusters:


Isso funciona! Em alguns lugares, ele lembra um pouco a imagem de uma matriz do filme de mesmo nome.

O uso de meta-cluster pode reduzir drasticamente o número de clusters.

Por exemplo, considere dez grupos de dez parâmetros, cada grupo tem uma unidade.

Se tivermos um clusterizador (sem meta-clusters), precisaremos de 10 10 = 10000000000 clusters para obter um erro zero.

E se tivermos dez clusters, precisamos apenas de 10 * 10 = 100 clusters. Isso é semelhante ao sistema de números decimais, você não precisa criar notação para todos os números possíveis, mas sim dez dígitos.

Meta clustering é muito bem paralelizado. Os cálculos mais caros (comparando o exemplo com o centro do cluster) podem ser executados independentemente para cada cluster. Observe, não para o cluster, mas para o cluster.

Como isso funciona no cérebro


Antes disso, falei apenas sobre dendritos, mas os neurônios têm axônios. E eles também estudam. Portanto, é muito provável que os axônios sejam as máscaras dos meta clusters.

Adicionamos mais uma função à descrição da operação de dendrite acima.

Suponha que, se ocorrer um pico de neurônios, todos os dendritos de alguma forma emitam na sinapse algum tipo de substância que mostra a concentração do neurotransmissor no dendrito. Não do axônio ao dendrito, mas de volta. A concentração desta substância depende do erro de comparação. Suponha que quanto menor o erro, maior a quantidade de substância emitida. Bem, o axônio reage à quantidade dessa substância e cresce. E se a substância é pequena, o que significa um grande erro, o axônio é gradualmente reduzido.

E se os axônios são alterados dessa maneira desde o nascimento do cérebro, então, com o tempo, eles irão apenas para os grupos de neurônios onde suas adesões a esses axônios são necessárias (não levem a grandes erros).

Exemplo: vamos lembrar os rostos humanos. Deixe cada rosto ser representado com uma imagem megapixel. Então, para cada rosto, você precisa de um neurônio com um milhão de dendritos, o que não é realista. Agora, divida todos os pixels em meta-agrupamentos, como olhos, nariz, orelhas e assim por diante. Apenas dez desses meta clusters. Que haja dez clusters, dez opções de nariz, dez opções de orelha e assim por diante para cada meta-cluster. Agora, para lembrar o rosto, basta um neurônio com dez dendritos. Isso reduz a memória (e o volume do cérebro) em cinco ordens de magnitude.

Conclusão


E agora, se assumirmos que o cérebro é constituído por meta-aglomerados, podemos tentar considerar deste ponto de vista alguns conceitos inerentes ao cérebro vivo:

Os clusters precisam ser constantemente treinados, caso contrário, novos dados não serão processados ​​corretamente. Para treinar aglomerados no cérebro, é necessária uma amostra equilibrada. Deixe-me explicar se o inverno é agora, então o cérebro aprenderá apenas com exemplos de inverno, e os grupos resultantes gradualmente se tornarão relevantes apenas para o inverno, e no verão tudo será ruim para esse cérebro. O que fazer sobre isso? É necessário submeter periodicamente a todos os grupos não apenas novos exemplos importantes, mas também antigos (lembranças de inverno e verão). E para que esses sentimentos não interfiram nos sentimentos atuais, você precisa desativar temporariamente os sentidos. Nos animais, isso é chamado de sonho .

Imagine, o cérebro vê algo pequeno, CINZA, que corre. Após o meta-agrupamento, temos três neurônios ativos em três meta-agrupamentos. E graças à memória, o cérebro sabe que é delicioso. Então, o cérebro vê algo pequeno, AZUL, que corre. Mas o cérebro não sabe se é saboroso ou assustador. Basta desabilitar temporariamente o meta cluster onde as cores estão localizadas, e apenas o pequeno que é executado permanece. E o cérebro sabe que é delicioso. Isso é chamado de analogia .

Suponha que o cérebro se lembre de algo e depois altere o agrupamento de neurônios ativos de um grupo para outro, enquanto nos meta-agrupamentos restantes há uma memória real. E agora, o cérebro já introduziu algo que nunca foi visto antes. E isso já é uma imaginação .

Obrigado pela atenção, o código está aqui .

Source: https://habr.com/ru/post/pt427407/


All Articles