Eu tenho lido algumas coisas em redes neurais e entendo o princípio geral de uma rede neural de camada única. Entendo a necessidade de camadas adicionais, mas por que as funções de ativação não linear são usadas?
Esta pergunta é seguida por esta: O que é um derivado da função de ativação usada na retropropagação?
Respostas:
O objetivo da função de ativação é introduzir não linearidade na rede
por sua vez, isso permite que você modele uma variável de resposta (também conhecida como variável de destino, rótulo de classe ou pontuação) que varia de maneira não linear com suas variáveis explicativas
não linear significa que a saída não pode ser reproduzida a partir de uma combinação linear das entradas (que não é a mesma que a saída renderizada em uma linha reta - a palavra para isso é afim ).
outra maneira de pensar sobre isso: sem uma função de ativação não linear na rede, um NN, não importa quantas camadas tivesse, se comportaria como um perceptron de camada única, porque a soma dessas camadas daria a você apenas outra função linear (veja a definição logo acima).
Uma função de ativação comum usada no backprop ( tangente hiperbólica ) avaliada de -2 a 2:
fonte
Uma função de ativação linear pode ser usada, porém em ocasiões muito limitadas. De fato, para entender melhor as funções de ativação, é importante observar o menor quadrado comum ou simplesmente a regressão linear. Uma regressão linear visa encontrar os pesos ótimos que resultam em efeito vertical mínimo entre as variáveis explicativas e de destino, quando combinadas com a entrada. Em resumo, se o resultado esperado refletir a regressão linear como mostrado abaixo, as funções de ativação linear poderão ser usadas: (Figura superior). Mas, como na segunda figura abaixo, a função linear não produzirá os resultados desejados: (figura do meio). No entanto, uma função não linear, como mostrado abaixo, produziria os resultados desejados:
As funções de ativação não podem ser lineares porque as redes neurais com uma função de ativação linear são efetivas apenas com uma camada de profundidade, independentemente da complexidade de sua arquitetura. A entrada nas redes geralmente é uma transformação linear (entrada * peso), mas o mundo real e os problemas não são lineares. Para tornar os dados recebidos não lineares, usamos o mapeamento não linear chamado função de ativação. Uma função de ativação é uma função de tomada de decisão que determina a presença de uma característica neural específica. É mapeado entre 0 e 1, onde zero significa ausência do recurso, enquanto um significa sua presença. Infelizmente, as pequenas alterações que ocorrem nos pesos não podem ser refletidas nos valores de ativação, pois podem levar apenas 0 ou 1. Portanto, funções não lineares devem ser contínuas e diferenciáveis entre esse intervalo. Uma rede neural deve ser capaz de levar qualquer entrada de -infinity para + infinito, mas deve ser capaz de mapeá-la para uma saída que varia entre {0,1} ou entre {-1,1} em alguns casos - portanto, o necessidade de função de ativação. A não linearidade é necessária nas funções de ativação porque seu objetivo em uma rede neural é produzir um limite de decisão não linear através de combinações não lineares de peso e entradas.
fonte
Se permitirmos apenas funções de ativação linear em uma rede neural, a saída será apenas uma transformação linear da entrada, o que não é suficiente para formar um aproximador de função universal . Essa rede pode ser representada apenas como uma multiplicação de matrizes e você não seria capaz de obter comportamentos muito interessantes a partir dessa rede.
O mesmo vale para o caso em que todos os neurônios têm funções de ativação afins (ou seja, uma função de ativação no formulário
f(x) = a*x + c
, ondea
ec
são constantes, que é uma generalização das funções de ativação lineares), que resultarão apenas em uma transformação afim de entrada para saída , o que também não é muito emocionante.Uma rede neural pode muito bem conter neurônios com funções de ativação linear, como na camada de saída, mas isso requer a companhia de neurônios com uma função de ativação não linear em outras partes da rede.
Nota: Uma exceção interessante são os gradientes sintéticos do DeepMind , para os quais eles usam uma pequena rede neural para prever o gradiente no passo de retropropagação, dados os valores de ativação, e descobrem que podem se dar bem usando uma rede neural sem camadas ocultas e com somente ativações lineares.
fonte
Uma rede neural feed-forward com ativação linear e qualquer número de camadas ocultas é equivalente a apenas uma rede neural neural linear sem camada oculta. Por exemplo, vamos considerar a rede neural na figura com duas camadas ocultas e sem ativação
Podemos fazer o último passo porque a combinação de várias transformações lineares pode ser substituída por uma transformação e a combinação de vários termos de viés é apenas um único viés. O resultado é o mesmo, mesmo se adicionarmos alguma ativação linear.
Assim, poderíamos substituir essa rede neural por uma rede neural de camada única. Isso pode ser estendido para
n
camadas. Isso indica que adicionar camadas não aumenta o poder de aproximação de uma rede neural linear. Precisamos de funções de ativação não lineares para aproximar funções não lineares e a maioria dos problemas do mundo real são altamente complexos e não lineares. De fato, quando a função de ativação é não linear, uma rede neural de duas camadas com um número suficientemente grande de unidades ocultas pode ser comprovadamente um aproximador de função universal.fonte
"O presente artigo faz uso do Teorema de Stone-Weierstrass e do squasher de co-seno de Gallant e White para estabelecer que as arquiteturas de rede padrão de alimentação múltipla para alimentação avançada, usando funções de esmagamento abritrário, podem aproximar praticamente qualquer função de interesse a qualquer grau de precisão desejado, desde que ocultos unidades estão disponíveis. " ( Hornik et al., 1989, Redes Neurais )
Uma função de esmagamento é, por exemplo, uma função de ativação não linear que mapeia para [0,1] como a função de ativação sigmóide.
fonte
Há momentos em que uma rede puramente linear pode fornecer resultados úteis. Digamos que temos uma rede de três camadas com formas (3,2,3). Ao limitar a camada do meio a apenas duas dimensões, obtemos um resultado que é o "plano de melhor ajuste" no espaço tridimensional original.
Mas existem maneiras mais fáceis de encontrar transformações lineares dessa forma, como NMF, PCA etc. No entanto, este é um caso em que uma rede de várias camadas NÃO se comporta da mesma maneira que um perceptron de uma única camada.
fonte
Para entender a lógica por trás das funções de ativação não lineares , primeiro você deve entender por que as funções de ativação são usadas. Em geral, os problemas do mundo real requerem soluções não lineares que não são triviais. Então, precisamos de algumas funções para gerar a não linearidade. Basicamente, o que uma função de ativação faz é gerar essa não linearidade ao mapear os valores de entrada para um intervalo desejado.
No entanto, funções de ativação linear podem ser usadas em um conjunto muito limitado de casos em que você não precisa de camadas ocultas, como regressão linear. Normalmente, não faz sentido gerar uma rede neural para esse tipo de problema, pois, independentemente do número de camadas ocultas, essa rede irá gerar uma combinação linear de entradas, o que pode ser feito em apenas uma etapa. Em outras palavras, ele se comporta como uma única camada.
Existem também algumas propriedades mais desejáveis para funções de ativação, como diferenciação contínua . Como estamos usando a retropropagação, a função que geramos deve ser diferenciável a qualquer momento. Eu recomendo fortemente que você verifique a página da Wikipedia para obter funções de ativação a partir daqui para entender melhor o tópico.
fonte
Várias boas respostas estão aqui. Será bom destacar o livro "Reconhecimento de padrões e aprendizado de máquina", de Christopher M. Bishop. É um livro que vale a pena se referir para obter uma visão mais profunda sobre vários conceitos relacionados ao ML. Trecho da página 229 (seção 5.1):
Se as funções de ativação de todas as unidades ocultas de uma rede são consideradas lineares, em qualquer rede desse tipo, sempre podemos encontrar uma rede equivalente sem unidades ocultas. Isto decorre do fato de que a composição de sucessivas transformações lineares é ela própria uma transformação linear. No entanto, se o número de unidades ocultas for menor que o número de unidades de entrada ou saída, as transformações que a rede pode gerar não serão as transformações lineares mais gerais possíveis de entradas para saídas porque as informações são perdidas na redução de dimensionalidade no unidades ocultas. Na Seção 12.4.2, mostramos que redes de unidades lineares dão origem a análises de componentes principais. Em geral, no entanto, há pouco interesse em redes multicamadas de unidades lineares.
fonte
Pelo que me lembro - as funções sigmoides são usadas porque é fácil calcular sua derivada que se encaixa no algoritmo BP, algo simples como f (x) (1-f (x)). Não me lembro exatamente da matemática. Na verdade, qualquer função com derivadas pode ser usada.
fonte
Um NN em camadas de vários neurônios pode ser usado para aprender problemas linearmente inseparáveis. Por exemplo, a função XOR pode ser obtida com duas camadas com função de ativação por etapas.
fonte
Deixe-me explicar para você o mais simples possível:
Redes neurais são usadas no reconhecimento de padrões correto? E a descoberta de padrões é uma técnica muito não linear.
Suponhamos, por uma questão de argumento, que usemos uma função de ativação linear y = wX + b para cada neurônio e definimos algo como se y> 0 -> classe 1 ou outra classe 0.
Agora podemos calcular nossa perda usando perda de erro quadrado e propagá-la de volta para que o modelo aprenda bem, correto?
ERRADO.
Para a última camada oculta, o valor atualizado será w {l} = w {l} - (alfa) * X.
Para a segunda última camada oculta, o valor atualizado será w {l-1} = w {l-1} - (alfa) * w {l} * X.
Para a i-ésima última camada oculta, o valor atualizado será w {i} = w {i} - (alfa) * w {l} ... * w {i + 1} * X.
Isso resulta na multiplicação de todas as matrizes de peso, resultando nas possibilidades: A) w {i} mal muda devido ao gradiente de fuga B) w {i} muda de forma dramática e imprecisa devido à explosão do gradiente C) w {i} muda bem o suficiente para nos dar uma boa pontuação
Caso C aconteça, isso significa que nosso problema de classificação / previsão provavelmente era um regressor linear / logístico simples e nunca exigiu uma rede neural em primeiro lugar!
Não importa o quão robusto ou bem ajustado esteja o seu NN, se você usar uma função de ativação linear, nunca poderá lidar com problemas não lineares que exijam reconhecimento de padrões
fonte
Não é de todo um requisito. De fato, a função de ativação linear retificada é muito útil em grandes redes neurais. A computação do gradiente é muito mais rápida e induz a dispersão, definindo um limite mínimo em 0.
Consulte o seguinte para obter mais detalhes: https://www.academia.edu/7826776/Mathematical_Intuition_for_Performance_of_Rectified_Linear_Unit_in_Deep_Neural_Networks
Editar:
Houve alguma discussão sobre se a função de ativação linear retificada pode ser chamada de função linear.
Sim, tecnicamente é uma função não linear porque não é linear no ponto x = 0; no entanto, ainda é correto dizer que é linear em todos os outros pontos; portanto, não acho que seja útil escolher aqui,
Eu poderia ter escolhido a função de identidade e ainda assim seria verdade, mas escolhi a ReLU como exemplo por causa de sua popularidade recente.
fonte
f(x) = a*x
(porque esse é o único tipo de função de ativação linear existente), que é inútil como função de ativação (a menos que você a combine com funções de ativação não lineares) )