Versão de três frases:
Cada camada pode aplicar qualquer função que você deseja à camada anterior (geralmente uma transformação linear seguida por uma não linearidade esmagadora).
O trabalho das camadas ocultas é transformar as entradas em algo que a camada de saída possa usar.
A camada de saída transforma as ativações da camada oculta em qualquer escala em que você deseja que sua saída esteja.
Como se você tivesse 5 anos:
Se você deseja que um computador diga se há um ônibus em uma imagem, o computador poderá ter mais facilidade se tiver as ferramentas certas.
Portanto, o seu detector de ônibus pode ser feito de um detector de rodas (para ajudá-lo a dizer que é um veículo) e um detector de caixa (já que o ônibus tem a forma de uma caixa grande) e um detector de tamanho (para dizer que é muito grande para ser um carro) ) Estes são os três elementos da sua camada oculta: eles não fazem parte da imagem não processada, são ferramentas que você projetou para ajudá-lo a identificar os ônibus.
Se todos os três detectores ligarem (ou talvez estejam especialmente ativos), há uma boa chance de você ter um ônibus à sua frente.
As redes neurais são úteis porque existem boas ferramentas (como retropropagação) para construir muitos detectores e montá-los.
Como se você fosse um adulto
Uma rede neural feed-forward aplica uma série de funções aos dados. As funções exatas dependerão da rede neural que você está usando: mais frequentemente, essas funções calculam uma transformação linear da camada anterior, seguida por uma não linearidade esmagadora. Às vezes, as funções fazem outra coisa (como calcular funções lógicas em seus exemplos ou calcular a média dos pixels adjacentes em uma imagem). Portanto, os papéis das diferentes camadas podem depender de quais funções estão sendo computadas, mas tentarei ser muito geral.
Vamos chamar o vetor de entrada , as ativações da camada oculta a ativação da saída . Você tem alguma função que mapeia de para outra função que mapeia de para . h y f x h g h yxhyfxhghy
Portanto, a ativação da camada oculta é e a saída da rede é .g ( f ( x ) )f(x)g(f(x))
Por que tem duas funções ( e ) em vez de apenas um?gfg
Se o nível de complexidade por função é limitado, então pode calcular coisas que e não podem fazer individualmente. f gg(f(x))fg
Um exemplo com funções lógicas:
Por exemplo, se permitirmos que e sejam operadores lógicos simples como "AND", "OR" e "NAND", não será possível calcular outras funções como "XOR" com apenas uma delas. Por outro lado, poderíamos calcular o "XOR" se estivéssemos dispostos a colocar essas funções umas sobre as outras:gfg
Funções da primeira camada:
- Verifique se pelo menos um elemento é "TRUE" (using OR)
- Verifique se eles não são todos "TRUE" (usando NAND)
Função da segunda camada:
- Verifique se os dois critérios da primeira camada foram atendidos (usando AND)
A saída da rede é apenas o resultado dessa segunda função. A primeira camada transforma as entradas em algo que a segunda camada pode usar para que toda a rede possa executar o XOR.
Um exemplo com imagens:
O slide 61 desta palestra - também disponível aqui como uma única imagem - mostra (uma maneira de visualizar) o que as diferentes camadas ocultas em uma rede neural específica estão procurando.
A primeira camada procura por pequenos pedaços de bordas na imagem: são muito fáceis de encontrar a partir de dados brutos de pixels, mas não são muito úteis para dizer se você está olhando para um rosto, um ônibus ou um elefante .
A próxima camada compõe as bordas: se as bordas da camada oculta inferior se encaixarem de uma certa maneira, um dos detectores de olhos no meio da coluna mais à esquerda poderá ser ativado. Seria difícil criar uma única camada que fosse tão boa em encontrar algo tão específico a partir dos pixels brutos: os detectores de olhos são muito mais fáceis de construir detectores fora da borda do que nos pixels brutos.
A próxima camada compõe os detectores de olhos e de nariz em rostos. Em outras palavras, elas acenderão quando os detectores de olho e nariz da camada anterior forem ativados com os padrões corretos. Eles são muito bons para procurar tipos específicos de rostos: se um ou mais deles acenderem, sua camada de saída deverá informar que um rosto está presente.
Isso é útil porque os detectores de rosto são fáceis de criar a partir de detectores oculares e de nariz, mas realmente difíceis de criar a partir das intensidades de pixel.
Assim, cada camada leva você cada vez mais longe dos pixels brutos e mais perto do seu objetivo final (por exemplo, detecção de rosto ou detecção de barramento).
Respostas para outras perguntas variadas
"Por que algumas camadas da camada de entrada estão conectadas à camada oculta e outras não?"
Os nós desconectados na rede são chamados de nós "tendenciosos". Há uma explicação muito boa aqui . A resposta curta é que eles são como termos de interceptação em regressão.
"De onde vêm as imagens do" detector de olhos "no exemplo da imagem?"
Não verifiquei as imagens específicas às quais vinculei, mas, em geral, essas visualizações mostram o conjunto de pixels na camada de entrada que maximiza a atividade do neurônio correspondente. Portanto, se pensarmos no neurônio como um detector de olhos, essa é a imagem que o neurônio considera mais parecida com os olhos. As pessoas geralmente encontram esses conjuntos de pixels com um procedimento de otimização (escalada).
No presente trabalho por algumas pessoas do Google com uma das maiores redes neurais do mundo, eles mostram um neurônio "detector face" e um neurônio "detector gato" Desta forma, bem como uma segunda maneira: Eles também mostram as imagens reais que ativam o neurônio mais fortemente (figura 3, figura 16). A segunda abordagem é boa porque mostra o quão flexível e não linear é a rede - esses "detectores" de alto nível são sensíveis a todas essas imagens, mesmo que não pareçam particularmente semelhantes no nível de pixels.
Deixe-me saber se algo aqui não está claro ou se você tiver mais alguma dúvida.