1
resposta

Não deveriam ter mais pesos na camada 1?

Os pesos são atribuídos ao neurônio ou a conexão como o neurônio seguinte? Pois se for a conexão, que é o que eu imagino, não deveriam ter mais variáveis pesos? Já que cada um desses 256 neurônios está conectado com cada neurônio da camada seguinte?

1 resposta

Olá Pedro, tudo certo contigo?

Desculpa a demora em te dar uma explicação na questão.

Cada conexão tem seu próprio peso, então cada neurônio tem 256 nós. Na aula O que acontece na rede a instrutora nos mostra a quantidade de parâmetros em cada camada da rede. Para te explicar melhor, criei uma imagem da arquitetura da rede, em relação à neurônios, ligações, pesos e vieses.

Arquitetura da rede usada no curso, com 5 divisões verticais. Da esquerda para a direita, temos a primeira divisão com um quadrado branco com 28x28 escrito dentro e logo acima desse quadrado está escrito Imagem de entrada, para ir para a outra divisão, temos uma seta em azul. Essa segunda divisão é composta por 4 círculos verdes, que representam as entradas da camada flatten, os três primeiros círculos tem os números 1, 2 e 3 e o quarto círculo tem o número 784, representando o final das entradas. Para passar para a próxima divisão, existem diversas setas ligadas entre as entradas e os neurônios da camada ReLu. Em cima das 3 primeiras setas temos a representação de pesos com w1,1, w1,2 e w2,1, que representam as ligações da entrada 1 com o neurônio 1, entrada 1 com o neurônio 2 e entrada 2 com o neurônio 1. A camada ReLu está representada em roxo, com 3 círculos, os dois primeiros com os números 1 e 2 e o terceiro com o número 256, significando o valor final de neurônios. Existe também um quadrado da cor roxa, logo acima dos círculos roxos, com a palavra viés, esse quadrado tem linhas que são ligadas em cada um dos círculos, representando que cada neurônio tem seu próprio viés. As setas de ligação existem entre essa camada e a outra, assim como as setas anteriores, as 3 primeiras têm as descrições de pesos. A quarta camada é a da Softmax e está representada com a cor vermelha, e tem 3 círculos, com os dois primeiros com os números 1 e 2 e o terceiro com o número 10, significando o valor final de neurônios dessa camada. Nessa camada também existe um quadrado vermelho, logo acima dos círculos vermelhos, com a palavra viés, esse quadrado tem linhas que são ligadas em cada um dos círculos, representando que cada neurônio tem seu próprio viés. Esses 3 círculos da camada em vermelho tem, cada um deles, uma seta da esquerda para a direita, chegando na última divisão que temos um retângulo branco com a palavra Saída, representando a saída da rede.

A imagem é lida da esquerda para a direita, então temos a entrada sendo a imagem de 28 pixels por 28 pixels, e na camada de Flatten (que é a camada achatada - onde nivela a entrada, mas não afeta o seu tamanho) temos os 784 inputs da rede, que derivam da multiplicação de 28 por 28.

Saindo de cada entrada dessa camada, temos diversas setas que se ligam aos neurônios da camada ReLu, essas setas representam as iterações entre cada entrada e cada neurônio, e cada uma dessas ligações contém um peso único, então quando ligamos a entrada 1 com o neurônio 1 da camada ReLu, temos o peso W1,1, para a entrada 1 com o neurônio 2 temos o peso W1,2, e assim por diante. No final, teremos 200704 parâmetros, porém cada neurônio desta camada tem seu próprio viés, somando mais 256 ao valor anterior, totalizando 200960 parâmetros entre a camada Flatten e ReLu.

entre a camada ReLu e SoftMax, nós temos essas ligações em setas também, que representam a iteração entre as camadas, porém agora nossa entrada são os 256 neurônios da camada ReLu ligados à 10 saídas da SoftMax, totalizando 2560 parâmetros, mas não podemos esquecer seus vieses também, que nesse caso são 10, e o nosso resultado final de parâmetros entre essas camadas é de 2570, como a instrutora mostra na aula, fazendo o método modelo.summary(), como podemos relembrar aqui.

Print da aula onde a instrutora mostra os resultados do comando modelo.summary, onde é gerado uma tabela com 3 colunas. A primeira coluna contém os nomes de cada camada - flatten, dense, dropout, dense- a segunda coluna contém qual output temos e o shape, que são os valores colocados no código, onde o shape tem os valores 784, 256, 256 e 10. A última coluna contém o número de parâmetros - 0, 200960, 0 e 2570. A imagem tem a cor branca, com as letras da tabela em preto e a instrutora se encontra no canto inferior direito da imagem.

Caso você tenha mais alguma dúvida sobre a estrutura da rede ou pesos e vieses, recomendo assistir essas duas aulas do instrutor Allan que abordam esses assuntos.

Criando a estrutura da rede

Pesos e viés

Essas aulas pertencem a outro curso da plataforma, mas tem uma ótima explicação de como as redes funcionam. Caso tenha mais alguma dúvida, não exite em me chamar!

Bons estudos ^^