Uma rede neural feedforward (ou rede neural de alimentação direta) é uma rede neural artificial na qual a informação flui em uma única direção – as entradas são multiplicadas por pesos para obter as saídas (das entradas para a saída). Isso contrasta com uma rede neural recorrente, na qual os loops (ciclos) permitem que a informação de estágios de processamento posteriores retroalimente estágios anteriores. A multiplicação feedforward é essencial para a retropropagação (backpropagation), porque a retroalimentação (feedback), onde as saídas retornam precisamente para as mesmas entradas para modificá-las, forma um loop infinito que não é possível diferenciar por meio da retropropagação. Essa nomenclatura parece ser um ponto de confusão entre alguns cientistas da computação e cientistas de outras áreas que estudam as redes cerebrais.
Fundamentos matemáticos
Função de ativação As duas funções de ativação historicamente comuns são ambas sigmoides, e são descritas por
y (
v
i
) = tanh (
v
i
)
e
y (
v
i
) = ( 1 +
e
−
v
i
)
− 1
.
{\displaystyle y(v_{i})=\tanh(v_{i})~~{\text{e}}~~y(v_{i})=(1+e^{-v_{i}})^{-1}.}
A primeira é uma tangente hiperbólica cujos valores variam entre -1 e 1, enquanto a outra é a função logística, que tem um formato semelhante, mas varia entre 0 e 1. Aqui,
y
i
{\displaystyle y_{i}}
é a saída do
i
{\displaystyle i}
-ésimo nó (neurônio) e
v
i
{\displaystyle v_{i}}
é a soma ponderada das conexões de entrada. Funções de ativação alternativas foram propostas, incluindo as funções retificadora e softplus. Funções de ativação mais especializadas incluem as funções de base radial (usadas em redes de base radial, outra classe de modelos de redes neurais supervisionadas). Em desenvolvimentos recentes do aprendizado profundo (deep learning), a unidade linear retificada (ReLU) é utilizada com maior frequência como uma das formas possíveis de superar os problemas numéricos relacionados às sigmoides.
Aprendizado
O aprendizado ocorre alterando os pesos das conexões após cada dado ser processado, com base na quantidade de erro na saída em comparação com o resultado esperado. Este é um exemplo de aprendizado supervisionado e é executado através da retropropagação. Podemos representar o grau de erro em um nó de saída
j
{\displaystyle j}
no
n
{\displaystyle n}
-ésimo ponto de dados (exemplo de treinamento) por
e
j
( n ) =
d
j
( n ) −
y
j
( n )
{\displaystyle e_{j}(n)=d_{j}(n)-y_{j}(n)}
, onde
d
j
( n )
{\displaystyle d_{j}(n)}
é o valor alvo desejado para o
n
{\displaystyle n}
-ésimo ponto de dados no nó
j
{\displaystyle j}
, e
y
j
( n )
{\displaystyle y_{j}(n)}
é o valor produzido no nó
j
{\displaystyle j}
quando o
n
{\displaystyle n}
-ésimo ponto de dados é fornecido como entrada. Os pesos dos nós podem então ser ajustados com base em correções que minimizam o erro na saída global para o
n
{\displaystyle n}
-ésimo ponto de dados, dado por
E
( n ) =
1 2
∑
nó de saída
j
e
j
2
( n ) .
{\displaystyle {\mathcal {E}}(n)={\frac {1}{2}}\sum _{{\text{nó de saída }}j}e_{j}^{2}(n).}
Usando a descida de gradiente, a alteração em cada peso
w
i j
{\displaystyle w_{ij}}
é
Δ
w
j i
( n ) = − η
∂
E
( n )
∂
v
j
( n )
y
i
( n )
{\displaystyle \Delta w_{ji}(n)=-\eta {\frac {\partial {\mathcal {E}}(n)}{\partial v_{j}(n)}}y_{i}(n)}
onde
y
i
( n )
{\displaystyle y_{i}(n)}
é a saída do neurônio anterior
i
{\displaystyle i}
, e
η
{\displaystyle \eta }
é a taxa de aprendizado, que é selecionada para garantir que os pesos convirjam rapidamente para uma resposta, sem oscilações. Na expressão anterior,
∂
E
( n )
∂
v
j
( n )
{\displaystyle {\frac {\partial {\mathcal {E}}(n)}{\partial v_{j}(n)}}}
denota a derivada parcial do erro
E
( n )
{\displaystyle {\mathcal {E}}(n)}
em relação à soma ponderada
v
j
( n )
{\displaystyle v_{j}(n)}
das conexões de entrada do neurônio
i
{\displaystyle i}
. A derivada a ser calculada depende do campo local induzido
v
j
{\displaystyle v_{j}}
, que também varia. É fácil demonstrar que, para um nó de saída, essa derivada pode ser simplificada para
−
∂
E
( n )
∂
v
j
( n )
=
e
j
( n )
φ
′
(
v
j
( n ) )
{\displaystyle -{\frac {\partial {\mathcal {E}}(n)}{\partial v_{j}(n)}}=e_{j}(n)\phi ^{\prime }(v_{j}(n))}
onde
φ
′
{\displaystyle \phi ^{\prime }}
é a derivada da função de ativação descrita acima, a qual não varia por si mesma. A análise é mais complexa para a alteração dos pesos em um nó oculto, mas é possível demonstrar que a derivada relevante é
−
∂
E
( n )
∂
v
j
( n )
=
φ
′
(
v
j
( n ) )
∑
k
−
∂
E
( n )
∂
v
k
( n )
w
k j
( n ) .
{\displaystyle -{\frac {\partial {\mathcal {E}}(n)}{\partial v_{j}(n)}}=\phi ^{\prime }(v_{j}(n))\sum _{k}-{\frac {\partial {\mathcal {E}}(n)}{\partial v_{k}(n)}}w_{kj}(n).}
Isso depende da alteração nos pesos dos
k
{\displaystyle k}
-ésimos nós, que representam a camada de saída. Portanto, para alterar os pesos da camada oculta, os pesos da camada de saída se alteram de acordo com a derivada da função de ativação, e assim esse algoritmo representa uma retropropagação da função de ativação.
História
Linha do tempo Por volta de 1800, Legendre (1805) e Gauss (1795) criaram a rede feedforward mais simples, a qual consiste em uma única camada de pesos com funções de ativação lineares. Ela foi treinada através do método dos mínimos quadrados para minimizar o erro quadrático médio, técnica também conhecida como regressão linear. Legendre e Gauss a utilizaram para a previsão do movimento planetário a partir de dados de treinamento. Em 1943, Warren McCulloch e Walter Pitts propuseram o neurônio artificial binário como um modelo lógico das redes neurais biológicas. Em 1958, Frank Rosenblatt propôs o modelo do perceptron multicamadas, consistindo em uma camada de entrada, uma camada oculta com pesos aleatórios que não aprendiam, e uma camada de saída com conexões capazes de aprender. R. D. Joseph (1960) menciona um dispositivo semelhante ao perceptron ainda mais antigo: "Na verdade, Farley e Clark, do MIT Lincoln Laboratory, antecederam Rosenblatt no desenvolvimento de um dispositivo semelhante ao perceptron." Contudo, "eles abandonaram o assunto." Em 1960, Joseph também discutiu os perceptrons multicamadas com uma camada oculta adaptativa. Rosenblatt (1962) citou e adotou essas ideias, creditando também o trabalho de H. D. Block e B. W. Knight. Infelizmente, esses esforços iniciais não levaram a um algoritmo de aprendizado funcional para unidades ocultas, ou seja, ao aprendizado profundo. Em 1965, Alexey Grigorevich Ivakhnenko e Valentin Lapa publicaram o Método de agrupamento para manipulação de dados (GMDH), o primeiro algoritmo funcional de aprendizado profundo, um método para treinar redes neurais arbitrariamente profundas. Baseia-se no treinamento camada por camada por meio de análise de regressão. As unidades ocultas supérfluas são podadas com o uso de um conjunto de validação separado. Como as funções de ativação dos nós são polinômios de Kolmogorov-Gabor, essas foram também as primeiras redes profundas a possuir unidades ou "portas" multiplicativas. Esse método foi usado para treinar uma rede neural de oito camadas em 1971. Em 1967, Shun'ichi Amari relatou a primeira rede neural multicamadas treinada pelo método do gradiente estocástico, a qual foi capaz de classificar classes de padrões não linearmente separáveis. O aluno de Amari, Saito, conduziu os experimentos computacionais, usando uma rede feedforward de cinco camadas com duas camadas de aprendizado. Em 1970, Seppo Linnainmaa publicou a forma moderna da retropropagação em sua tese de mestrado (1970). G.M. Ostrovski et al. a republicaram em 1971. Paul Werbos aplicou a retropropagação em redes neurais em 1982 (sua tese de doutorado de 1974, reimpressa em um livro de 1994, ainda não descrevia o algoritmo). Em 1986, David E. Rumelhart et al. popularizaram a retropropagação, mas não citaram o trabalho original. Em 2003, o interesse nas redes de retropropagação retornou devido ao sucesso do aprendizado profundo aplicado à modelagem de linguagem por Yoshua Bengio e coautores.
Regressão linear
Perceptron
Se for utilizado um limiar (threshold), ou seja, uma função de ativação linear, a unidade de limiar linear resultante é chamada de perceptron. (Frequentemente, o termo é usado para se referir a apenas uma dessas unidades.) Múltiplas unidades não-lineares paralelas têm a capacidade de aproximar qualquer função contínua de um intervalo compacto de números reais para o intervalo [-1,1], apesar do poder computacional limitado de uma unidade única com uma função de limiar linear.
Os perceptrons podem ser treinados por um algoritmo de aprendizado simples que é geralmente chamado de regra delta. Ele calcula os erros entre a saída calculada e os dados de amostragem de saída, utilizando essa informação para criar um ajuste aos pesos e implementando, assim, uma forma de descida de gradiente.
Perceptron multicamadas A expressão perceptron multicamadas (MLP, do inglês multilayer perceptron) é um termo equivocado dado a uma rede neural artificial feedforward moderna, constituída por neurônios totalmente conectados (daí o sinônimo, algumas vezes utilizado, de rede totalmente conectada (FCN)), frequentemente com um tipo não-linear de função de ativação e organizada em pelo menos três camadas, notável por ser capaz de distinguir dados que não são linearmente separáveis.
Outras redes feedforward
Exemplos de outras redes feedforward incluem as redes neurais convolucionais e as redes de função de base radial, as quais utilizam uma função de ativação diferente.
Ver também Controle preditivo Rede neural recorrente (rede neural com retroalimentação) Rede de Hopfield Rprop
Referências
Ligações externas Feedforward neural networks tutorial Feedforward Neural Network: Example Feedforward Neural Networks: An Introduction

