Por que uma função de ativação não linear deve ser usada em uma rede neural de retropropagação?

139

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?

corazza
fonte
melhor resposta de todas aqui em inteligência artificial
eusoubrasileiro 04/06

Respostas:

167

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).

>>> in_vec = NP.random.rand(10)
>>> in_vec
  array([ 0.94,  0.61,  0.65,  0.  ,  0.77,  0.99,  0.35,  0.81,  0.46,  0.59])

>>> # common activation function, hyperbolic tangent
>>> out_vec = NP.tanh(in_vec)
>>> out_vec
 array([ 0.74,  0.54,  0.57,  0.  ,  0.65,  0.76,  0.34,  0.67,  0.43,  0.53])

Uma função de ativação comum usada no backprop ( tangente hiperbólica ) avaliada de -2 a 2:

insira a descrição da imagem aqui

doug
fonte
15
Por que queremos eliminar a linearidade?
Corazza 20/03/12
17
Se os dados que desejamos modelar não são lineares, precisamos levar isso em consideração em nosso modelo.
doug
38
Resposta de uma frase: << não importa quantas camadas se comportariam como um único perceptron (porque funções lineares adicionadas juntas apenas fornecem uma função linear). >> . Agradável!
Autônomo
12
Isso é um pouco enganador - como eski mencionou, as funções de ativação linear retificada são extremamente bem-sucedidas e, se nosso objetivo é apenas modelar / aproximar funções, eliminar a não linearidade em todas as etapas não é necessariamente a resposta certa. Com peças lineares suficientes, é possível aproximar quase qualquer função não linear a um alto grau de precisão. Achei isso uma boa explicação de por retificado linear unidades funcionam: stats.stackexchange.com/questions/141960/...
tegan
11
@tegan As funções de ativação linear retificada não são lineares. Não tenho certeza do que seu comentário tem a ver com a resposta.
endolith
49

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:

insira a descrição da imagem aqui

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.

chibole
fonte
1
+ Primeiro, pode-se deduzir que a função não linear é usada para estabelecer um limite perfeito?
precisa saber é
1
Sim, exatamente. Em vez de apenas produzir 0 ou 1, pode produzir 0,4 ou 0,78, tornando-o contínuo ao longo do limite.
chibole
3
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} ... isso me lembra Essa limitação da ReLU é que ela deve ser usada apenas nas camadas ocultas de um modelo de rede neural.
Cloud Cho
21

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, onde ae csã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.

Olá adeus
fonte
1
Funções de ordem superior podem ser aproximadas com funções de ativação linear usando várias camadas ocultas. O teorema da aproximação universal é específico para MLPs com apenas uma camada oculta.
Eski
Na verdade, acredito que você está correto em sua afirmação sobre funções de ativação afim que resultam em uma transformação afim, mas o fato de a transformação ser aprendida por meio de retropropagação (ou qualquer outro meio) a torna totalmente inútil no que diz respeito à pergunta original.
Eski
4
@eski Não, você não pode aproximar funções de ordem superior apenas com funções lineares de ativação, apenas modelar funções lineares (ou afins, se você tiver um nó constante adicional em cada uma, exceto na última camada), funções e transformações, não importa quantas camadas você ter.
HelloGoodbye 17/01
É correto dizer que o principal objetivo da função de ativação é permitir que a rede neural produza um limite de decisão não linear?
stackoverflowuser2010
@ stackoverflowuser2010 Essa seria uma maneira de ver as coisas. Mas há mais em uma função de ativação do que isso. O artigo da Wikipedia sobre funções de ativação lista várias funções de ativação, todas (exceto uma) não lineares e compara diferentes qualidades que uma função de ativação pode ter.
HelloGoodbye
9

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 insira a descrição da imagem aqui

y = h2 * W3 + b3 
  = (h1 * W2 + b2) * W3 + b3
  = h1 * W2 * W3 + b2 * W3 + b3 
  = (x * W1 + b1) * W2 * W3 + b2 * W3 + b3 
  = x * W1 * W2 * W3 + b1 * W2 * W3 + b2 * W3 + b3 
  = x * W' + b'

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 ncamadas. 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.

xashru
fonte
5

"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.

alfa
fonte
3

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.

markemus
fonte
2

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.

Alican Şafak Özdek
fonte
2

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.

haripkannan
fonte
1

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.

Anton
fonte
7
A função ainda quer aumentar monotonicamente, se bem me lembro. Portanto, nenhuma função.
Novak
1

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.

david
fonte
0

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

Kaustubh J
fonte
-3

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.

eski
fonte
8
A função de ativação linear retificada também não é linear (apesar do nome). É apenas linear para valores positivos
Plankalkül
4
Você está tecnicamente correto, não é linear em todo o domínio, especificamente em x = 0 (é linear para x <0, na verdade, pois f (x) = 0 é uma função linear). Também não é diferenciável, portanto, a função gradiente também não é totalmente computável, mas na prática esses tecnicismos são fáceis de superar.
eski
4
Ele não é apenas tecnicamente correto, ele também está certo na prática (ou algo assim). É a não linearidade da ReLU que as torna úteis. Se eles fossem lineares, teriam uma função de ativação no formulário 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) )
HelloGoodbye 15/01
10
A Unidade Linear Retificada (ReLU) não é linear, e não é apenas um "detalhe menor" que as pessoas estão procurando, é uma razão importante e importante da razão pela qual é útil começar. Uma rede neural com a matriz de identidade ou uma unidade linear regular usada como função de ativação não seria capaz de modelar funções não lineares. Só porque é linear acima de 0 não significa que é praticamente uma função linear. Um ReLU com vazamento também é "linear" abaixo de 0, mas ainda não é uma função linear e definitivamente não pode ser substituído apenas pela função de identidade. A não linearidade é definitivamente um requisito.
Essam Al-Mansouri 03/03
3
Na verdade, é um conceito chamado função linear por partes.
eski 03/03