Como você se lembra da unidade de cruzamentos de atributos, o problema de classificação a seguir não é linear:
Figura 1. problema de classificação não linear.
"Não linear" significa que não é possível prever # com precisão um rótulo com um modelo do formulário \(b + w_1x_1 + w_2x_2\) Em outras palavras, a "superfície de decisão" não é uma linha. Anteriormente, observamos os cruzamentos de atributos como uma possível abordagem para modelar problemas não lineares.
Agora considere o seguinte conjunto de dados:
Figura 2. um problema de classificação não linear mais difícil.
O conjunto de dados mostrado na Figura 2 não pode ser resolvido com um modelo linear.
Para ver como as redes neurais podem ajudar com problemas não lineares, vamos começar representando um modelo linear como um gráfico:
Figura 3. Modelo linear como gráfico.
Cada círculo azul representa um atributo de entrada, e o círculo verde representa a soma ponderada das entradas.
Como alterar esse modelo para melhorar a capacidade dele de lidar com problemas não lineares?
Camadas escondidas
No modelo representado pelo gráfico a seguir, adicionamos uma camada escondida de valores intermediários. Cada nó amarelo na camada oculta é uma soma ponderada dos valores de nó de entrada azul. A saída é uma soma ponderada dos nós amarelos.
Figura 4. Gráfico do modelo de duas camadas.
Este modelo é linear? Sim, a saída ainda é uma combinação linear das entradas dela.
No modelo representado pelo gráfico a seguir, adicionamos uma segunda camada escondida de somas ponderadas.
Figura 5. Gráfico do modelo de três camadas.
Este modelo ainda é linear? Sim. Ao expressar a saída como uma função da entrada e simplificar, você recebe apenas outra soma ponderada das entradas. Essa soma não modela o problema não linear na Figura 2.
Funções de ativação
Para modelar um problema não linear, podemos introduzir uma não linearidade diretamente. Podemos encadear cada nó de camada escondida por meio de uma função não linear.
No modelo representado pelo gráfico a seguir, o valor de cada nó na camada escondida 1 é transformado por uma função não linear antes de ser transmitido para as somas ponderadas da próxima camada. Ela é chamada de função de ativação.
Figura 6. Gráfico do modelo de três camadas com função de ativação.
Agora que adicionamos uma função de ativação, a adição de camadas tem mais impacto. O empilhamento de não linearidades em não linearidades nos permite modelar relações muito complicadas entre as entradas e as saídas previstas. Em resumo, cada camada está aprendendo de maneira eficaz uma função mais complexa e de alto nível sobre as entradas brutas. Para saber mais sobre como isso funciona, consulte a excelente postagem do blog Chris Olah' (em inglês).
Funções de ativação comuns
A função de ativação sigmoid a seguir converte a soma ponderada em um valor entre 0 e 1.
Veja um gráfico:
Figura 7. Função de ativação sigmoide.
A função de ativação de unidade linear retificada a seguir (ou ReLU, na sigla em inglês) geralmente funciona um pouco melhor do que uma função suave, como o sigmoide, além de ser significativamente mais fácil de calcular.
A superioridade da ReLU é baseada em descobertas empíricas, provavelmente impulsionada pela ReLU, tendo um intervalo de capacidade de resposta mais útil. A capacidade de resposta de um sigmoide fica relativamente rápida em ambos os lados.
Figura 8. função de ativação ReLU.
Na verdade, qualquer função matemática pode servir como uma função de ativação. Suponha que \(\sigma\) represente nossa função de ativação (Relu, Sigmoid ou o que for). Consequentemente, o valor de um nó na rede é fornecido pela seguinte fórmula:
O TensorFlow oferece suporte predefinido para várias funções de ativação. Você encontra essas funções de ativação na lista de wrappers de operações primitivas de rede neural do TensorFlow. Mesmo assim, recomendamos começar com a ReLU.
Resumo
Agora, nosso modelo tem todos os componentes padrão do que as pessoas costumam significar quando dizem "rede neural":
- Um conjunto de nós, análogo a neurônios, organizados em camadas.
- Um conjunto de pesos que representam as conexões entre cada camada de rede neural e a camada abaixo dela. A camada abaixo pode ser outra camada de rede neural ou algum outro tipo de camada.
- Um conjunto de vieses, um para cada nó.
- Uma função de ativação que transforma a saída de cada nó em uma camada. As camadas podem ter funções de ativação diferentes.
Advertência: as redes neurais nem sempre são melhores do que os cruzamentos de atributos, mas as redes neurais oferecem uma alternativa flexível que funciona bem em muitos casos.