Portanto, atualmente as funções de ativação mais usadas são as Re-Lus. Então eu respondi a esta pergunta Qual é o objetivo de uma função de ativação nas redes neurais? e enquanto escrevia a resposta, como exatamente a função não linear aproximada de Re-Lu pode?
Por pura definição matemática, com certeza, é uma função não linear devido à curva acentuada, mas se nos limitarmos à parte positiva ou negativa do eixo x, então será linear nessas regiões. Digamos que tomemos todo o eixo x também, então também é meio linear (não no sentido matemático estrito) no sentido de que ele não pode aproximar satisfatoriamente funções curvilíneas como onda senoidal ( 0 --> 90
) com uma camada oculta de um único nó possível por um sigmóide função de ativação.
Então, qual é a intuição por trás do fato de que Re-Lu's são usados em NNs, fornecendo desempenho satisfatório (não estou perguntando o objetivo dos Re-lu), mesmo sendo lineares? Ou funções não lineares como sigmóide e tanh são lançadas no meio da rede algumas vezes?
EDIT: Conforme comentário de @ Eka, Re-Lu deriva sua capacidade de descontinuidade atuando nas camadas profundas da Rede Neural. Isso significa que os Re-Lu são bons, desde que sejam usados em Deep NN's e não em NN raso?
fonte
max(0,x)
atuando em camadas profundas da rede neural. Há uma pesquisa openai em que calculado funções não-lineares usando um profundo redes lineares aqui está o link blog.openai.com/nonlinear-computation-in-linear-networksRespostas:
As saídas de uma rede ReLU são sempre "lineares" e descontínuas. Eles podem aproximar curvas, mas pode levar muitas unidades ReLU. No entanto, ao mesmo tempo, suas saídas serão interpretadas como uma saída contínua e curva.
Imagine que você treinou uma rede neural que recebe x 3 e produz | x 3 | (que é semelhante a uma parábola). É fácil para a função ReLU funcionar perfeitamente. Nesse caso, a saída é curvada.
Mas na verdade não é curvado. As entradas aqui estão 'linearmente' relacionadas às saídas. Tudo o que a rede neural faz é pegar a entrada e retornar o valor absoluto da entrada. Ele executa uma função 'linear', não curva. Você só pode ver que a saída não é linear quando a representa com relação aos valores x originais (x em x 3 ).
Portanto, quando plotamos a saída em um gráfico e ela parece curvada, geralmente é porque associamos valores x diferentes à entrada e, em seguida, plotamos a saída como a coordenada y em relação a esses valores x.
Ok, então você quer saber como modelaria suavemente sin (x) usando ReLU. O truque é que você não deseja colocar x como entrada. Em vez disso, coloque algo curvado em relação a x como entrada, como x 3 . Portanto, a entrada é x 3 e a saída é sin (x). A razão pela qual isso funcionaria é que não está computando o seno da entrada - está computando o seno da raiz do cubo da entrada. Nunca poderia calcular sem problemas o seno da própria entrada. Para representar graficamente a saída sin (x), coloque o x original como a coordenada x (não coloque a entrada) e coloque a saída como a coordenada y.
fonte