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

Boa tarde Fábio!!

Obrigado pelo seu post, fico muito feliz em ver mais assuntos de machine learning por aqui!

Não sei ao certo seu nível no machine learning, então vou levar em consideração como se tivesse iniciando na área (não se ofenda se tiver experiência, por favor).

Eu vi que o seu objetivo para esse projeto é replicar um módulo de rede neural para algoritmo genética e, apesar de ter lido todo o post e ido no Github, não encontrei qual efetivamente é o objetivo do projeto, qual o problema de negócio você quer responder exatamente.

Segunda questão é:

É estritamente necessário usar rede neural?

Elas são naturalmente custosas e algoritmos supervisionados simples talvez já resolvam o seu problema e são mais interpretáveis.

Aguardo a sua resposta e agradeço novamente pelo post!

Carregando publicação patrocinada...
1

Obrigado pelo comentário GTEX.

A ideia deste projeto não é de faro o uso de rede neural, mas sim estudar e desnevolver métodos para melhorar o treinamento de redes, exatamente por ser algo custoso.

A idéia em si é simplesmente elaborar um modulo para dar visibilidade a quem quer começar na área, já que se você usar um Tensorflow por exemplo, terá que montar toda uma estrutura baseada em estudo.

Quando eu estava começando não achei conteúdo que de fato tivesse sentido mesmo sendo algo bobo.

No início eu tentava replicar testes como o cacheiro viajando e ping pong ppr exemplo, mas sempre dependendo de alguma ferramenta ou tendo que criar algo que não tinha aprendido ainda. (eu sei que fui muito afobado no início)

Então eu criei este modulo, justamente para que um amigo meu que não entende de rede neural, mas entende de javascript pudesse fazer os exatos testes que eu fiz.

Foi dai que surgiu a ideia de continuar este projeto, fazendo com que tenhamos treinamentos diferentes entende?

Eu tenho um projeto privado de estrutura de dados, onde os dados são todos lidos através de um plano cartesiano tridimensional e isso meio que reduz o consumo de memória.

Então eu pensei.... por que não tentar usar estes valores no meu modulo.

Por fim a idéia virou tentar achar novas formas de criar a rede e usar e treinar, diferente das já existentes.

Fugir da curva padrão em que já foram testadas e criar algo novo, como por exemplo um objetivo para existir um neurônio na rede e me determinada coluna, desativar e remover neurônios mortos com base em algun fato, minificar o uso do dataset ou até mesmo aumenta-lo com um teste mais precisos.

São coisas já testadas e estudadas, mas eu sinto que esta tudo virando mais do mesmo.

De fato não precisamos de uma rna para tudo, existe casoa específicos e na maioria das vezes qualquer classificador pode substitu-la, ainda mais uma perceptron.

Não sei se você já desenvolveu uma ia que detecta objetos, entendendo como funciona a lib (caso tenha usado, e se sim eu imagino que seja a OpenCV), basicamente tem a dataset e todos os filtros e tratamentos antes de passar os inputs e todas as redes neste formato seguem o mesmo conceito e são absurdamente custosas dependendo do que esta desnevolvendo.

A idéia em questão é buscar formas fora da caixa para desnevolver um treinamento de rede que não seja tão custoso, inicialmente eu pensei em treinar usando chunk ou desnevolver um calculo para não gerar aleatoriamente os primeiros pesos.

Enfim, isso tudo não é algo muito nescessário, apenas vendo uma forma de ajudar quem esta começando, empurrando toda a dificuldade que eu tive para o final deste aprendizado e também para descobrir pessoas engenhosas que consiga deixar uma rede tão performática quanto as atuais.

Por favor, não entenda isso como uma substituição dos módulos já existentes, pois eles são muito bons e tem suas finalidades.

Ficou claro ? gostaria fortemente da sua opinião 😌

2

Obrigado pela resposta FabioSmuu!

Entendi o que você deseja fazer, é algo parecido o que o TabNews quer fazer, novas maneiras de a gente aprender de coisas já existentes 😄

No momento as redes neurais não são muito o meu campo de trabalho, mas desejo que tenha sucesso nesse projeto!!

PS. Só um ponto sobre o que você falou, desenvolver um cálculo para não gerar aleatoriamente os primeiros pesos parece uma armadilha, porque a aleatoriedade nos pesos é necessária para não ter tendência de treinamento. Para evitar ser custoso, tem que trabalhar na parte do treinamento.

1

Isso mesmo, tem de trabalhar na parte do treinamento mesmo.

Esobre os pesos não serem aleatórios é exatamente esta sensação de armadilha que fazem não serem explorados, já que algo "matemáticamente" criado pode converger a um ótimo local, mas eu não me refiro a isso e sim em saber gerar os valores aleatórios de forma em que a própria rede demore mais tempo para associa-los durante o crossover por exemplo.

E acho que nesta parte que deve ocorrer o maior consumo e não durante o treinamento, oque não ocorre na prática.

Obrigado pela atenção, apóio e por entender a ideia e conceito

1

Estamos juntos FabioSmuu!!

A gente tem que criar esse conteúdo de ML mesmo na comunidade brasileira!

Sobre a parte de convergir em menos tempo por não ter valores aleatórios, não acredito que seja assim porque o backpropagation geralmente utiliza algoritmos que punem valores mais discrepantes para toda a rede.

O dropout vai servir para corrigir ainda mais esses valores discrepantes e não ocorrer um possível overfit.

2

Sim, mas ai você esta trabalhando encima de conceitos já existentes.

Isso não se aplicaria se os valores fossem gerados de forma matemática.

A idéia neste caso seria criar uma metodologia viável para este tipo de comportamento, mas sim você esta certo a respeito de valores randomicos, mas acredito que isso não daria toda a liberdade e controle numa rede com um conceito novo.

mesmo assim é sempre bom termos ambos os pensamentos soltos, afinal, tudo é conteúdo 😌

1

Sim sim, é verdade!

Sobre os pesos iniciarem aleatórios ou partirem de pesos avaliados, já houve uma tentativa, porém não chegava na solução ideal.

Não me lembro exatamente o artigo, mas vale dar uma olhada.