Executando verificação de segurança...
1

Você consegue deixar Módulo mais rápido se ele for ad hoc. Mas parece que você deseja uma solução bem generalista.

Outro problema; usar JS para fazer o treinamento de Redes Neurais é como "martelar parafusos" (Akita).
Pode usar C++ para o treinamento, exportar os pesos, e então usar o JS para fazer o Forward.

Quanto à inicialização; que você gostaria de descartar a aleatoriedade, ainda não existe um método que seja melhor, você terá que ir muito fundo nas pesquisas, provavelmente usando gradientes nos seus cálculos...

Eu já fiz o seguinte (mas não fugindo da aleatoriedade):

  • supondo que seja uma rede com 2 neurônios e 2 pesos,
  • suponto que foram inicializados com ,025 e -,01

Neste caso eu crio 4 redes (sendo n o número de pesos; 2^n Redes); com os seguintes pesos:

RNW1W2
RN1,025-,01
RN2,025,01
RN3-,025-,01
RN4-,025,01

Executo o treinamento de todas elas em paralelo.
Uma delas vai convergir mais rápido para o mínimo global.

E uma grande observação aqui:

às vezes fazer isso é muito interessante para as Redes que ficam muito travadas em um mínimo local;
às vezes não, só dificulta o problema.

Carregando publicação patrocinada...
1

Gostei muito deste comentário.

Eu concordo que js não é a melhor linguagem, já pensei em fazer em c++ ou R, mas cai na questão de que pessoas novas em programação consiga de fato entender.

Outro ponto é, js ela é boa para este tipo de desnevolvimento, só não é a melhor, mas se os estudos melhorarem o desnevolvimento, então seria super viável usa-la.

E por fim, fica viável evitar merge, mas mesmo assim não é a melhor linguagem e estou ciente disso 😅

Agora a ideia de usar esta estratégia de aleatoriedade principalmente para posições travadas semelhantes ao ótimo local, vou testar e tentar entender melhor o funcionamento da estratégia, muito obrigado.

Eu estou desenvolvendo uma função de "matar neurônios inativos", por meus testes a rede até que fica com menos processo, ainda mais se você colocar em workers etc...

Também estou vendo sobre criar pooling de forma conciente e treinar oa neurônios em si e não camadas, pois assim, fica fácil saber a função dos neurônios ao invés das camadas, mas é um processo muito mais trabalhoso e não reduz o custo do treino só o torna mais maleável.

1
1

É uma boa.

Matar neurônios pode ser útil para reduzir um pouco do processamento.

Também estou vendo a respeito se criar camadas separadas fora da rede e treinar para coisas bobas e montar um preset para transferlearning.

Alem de pensar num solução para trabalhar com as informações em chunk e/ou quadtree, juntando numa especia de "plano cartesiano tridimensional".

A propósito, obrigado pela sugestão do XOR 😌