Propriedades para criar uma rede neural Perceptron multicamada usando Keras?

8

Estou tentando construir e treinar uma rede neural de perceptron multicamada que preveja corretamente o que o presidente ganhou em que município pela primeira vez. Eu tenho as seguintes informações para dados de treinamento.

População total Idade mediana% SolteirosDeg ou mais Taxa de desemprego Renda per capita Total de famílias Tamanho médio da casa% Habitação ocupada pelo proprietário% Habitação ocupada pelo locador% Habitação vaga Habitação vaga Valor médio da casa Crescimento populacional Crescimento da ocupação domiciliar Crescimento da renda per capita Vencedor

São 14 colunas de dados de treinamento e a 15ª coluna é qual deve ser a saída.

Estou tentando usar o Keras para construir uma rede neural perceptron de várias camadas, mas preciso de ajuda para entender algumas propriedades e os prós e contras de escolher opções diferentes para essas propriedades.

  1. FUNÇÃO DE ATIVAÇÃO

Eu sei que meu primeiro passo é criar uma função de ativação. Sempre estudei redes neurais que usavam funções de ativação sigmóide. A função de ativação sigmóide é a melhor? Como você sabe qual usar? Além disso, o Keras oferece as opções de uso das funções de ativação softmax, softplus, relu, tanh, linear ou hard_sigmoid. Eu estou bem em usar o que quer, mas eu só quero entender o porquê e os prós e contras.

  1. INICIALIZAÇÕES DE PROBABILIDADE

Eu sei que as inicializações definem a distribuição de probabilidade usada para definir os pesos aleatórios iniciais das camadas de Keras. As opções fornecidas por Keras são lecun_uniforme uniforme, normal, identidade, ortogonal, zero, glorot_normal, glorot_uniform, he_normal e he_uniform. Como minha seleção aqui afeta meu resultado final ou modelo? Não deveria importar porque estamos "treinando" qualquer modelo aleatório com o qual começamos e de qualquer maneira com uma ponderação mais ideal das camadas?

pr338
fonte

Respostas:

6

1) A ativação é uma opção de arquitetura, que se resume a uma opção de hiperparâmetro. Você pode fazer um argumento teórico para usar qualquer função, mas a melhor maneira de determinar isso é tentar várias e avaliar em um conjunto de validação. Também é importante lembrar que você pode misturar e combinar ativações de várias camadas.

2) Em teoria, sim, muitas inicializações aleatórias seriam iguais se seus dados fossem extremamente bem comportados e sua rede ideal. Mas, na prática, as inicializações procuram garantir que o gradiente comece razoavelmente e que o sinal possa ser retropropagado corretamente. Provavelmente, nesse caso, qualquer uma dessas inicializações teria desempenho semelhante, mas a melhor abordagem é experimentá-las, alternando se você obtiver resultados indesejáveis.

jamesmf
fonte