Os desafios anteriores do golfe na rede neural ( isso e aquilo ) me inspiraram a apresentar um novo desafio:
O desafio
Encontre a menor rede neural de avanço de forma que, dado qualquer vetor de entrada quadridimensional com entradas inteiras em , a rede produza a com um erro coordenado estritamente menor que .
Admissibilidade
Para esse desafio, uma rede neural feedforward é definida como uma composição de camadas . Uma camada é uma função que é especificada por uma matriz de pesos , um vector de viés , e uma função de activação que é aplicada coordinate- sensato:
Como as funções de ativação podem ser ajustadas para qualquer tarefa, precisamos restringir a classe de funções de ativação para manter esse desafio interessante. As seguintes funções de ativação são permitidas:
Identidade.
ReLU.
Softplus.
Tangente hiperbólica.
Sigmoide.
Em geral, uma rede neural admissível toma a forma para alguns , onde cada camada é especificada por pesos , polarizações , e uma função de activação da lista acima. Por exemplo, a seguinte rede neural é admissível (embora não satisfaça a meta de desempenho desse desafio, pode ser um gadget útil):
Este exemplo exibe duas camadas. Ambas as camadas têm viés zero. A primeira camada usa a ativação ReLU, enquanto a segunda usa a ativação de identidade.
Pontuação
Your score is the total number of nonzero weights and biases.
(E.g., the above example has a score of 16 since the bias vectors are zero.)
fonte
Respostas:
Oitava ,
96 88 87 84 76 5450 pesos e desviosEssa rede neural de 6 camadas é essencialmente uma rede de classificação em três etapas , construída a partir de uma rede
min
/ muito simplesmax
como um componente. É basicamente o exemplo de rede da wikipedia, como mostrado abaixo, com uma pequena modificação: As duas primeiras comparações são feitas em paralelo. Para ignorar números negativos através da ReLU, adicionamos 100 primeiro e subtraímos 100 novamente no final.Portanto, isso deve ser considerado apenas uma linha de base, pois é uma implementação ingênua. No entanto, classifica todos os números possíveis que não possuem uma magnitude muito grande perfeitamente. (Podemos ajustar o intervalo substituindo 100 por outro número.)
Experimente online!
componente max / min
Existe um (
consideravelmente menos elegantee mais elegante agora, obrigado @xnor!) Para encontrar o mínimo e o máximo de dois números usando menos parâmetros:Isso significa que temos que usar muito menos pesos e preconceitos.
Obrigado @Joel por salientar que é suficiente tornar todos os números positivos na primeira etapa e revertê-la na última, que produz pesos -8. Obrigado @xnor por apontar um método max / min ainda mais curto que faz com que -22 pesos! Obrigado @ DustinG.Mixon pela dica de combinar certas matrizes que resultam em outros -4 pesos!
Experimente online!
fonte
(a - relu(a-b), b + relu(a-b))
?