Uma rede neural pode fornecer mais que respostas "sim" ou "não"?

11

Todo exemplo de rede neural para reconhecimento de imagem que eu já li produz uma resposta simples "sim" ou "não". Um nó de saída corresponde a "Sim, este é um rosto humano" e um corresponde a "Não, este não é um rosto humano".

Entendo que isso é provável pela simplicidade da explicação, mas estou me perguntando como uma rede neural poderia ser programada para fornecer uma saída mais específica. Por exemplo, digamos que eu estava classificando animais. Em vez de dizer "Animal" ou "Não é um animal", eu gostaria de respostas como "Cão", "Peixe", "Pássaro", "Cobra" etc., com um nó de saída final sendo "Não é um animal / I" não reconheça isso ".

Tenho certeza de que isso deve ser possível, mas estou tendo problemas para entender como. Parece que devido ao algoritmo de treinamento de retropropagação de erro, à medida que você treina um nó de saída (ou seja, "Este é um cachorro") e os pesos dos neurônios são alterados, o estado ideal para outro nó de saída que você anteriormente treinado (isto é, "Este é um pássaro") começará a se desviar e vice-versa. Portanto, treinar a rede para reconhecer uma categoria sabotaria qualquer treinamento realizado para outra categoria, limitando-nos a um design simples "Sim" ou "Não".

Isso impossibilita esse reconhecedor? Ou estou entendendo mal o algoritmo? As únicas duas coisas em que consigo pensar são:

  • Ou poderíamos treinar uma rede neural para cada coisa que queremos classificar e, de alguma forma, usá-las para construir uma super-rede maior (por exemplo, uma rede para "cachorro", uma rede para "pássaro" etc.), que de alguma forma adicione para criar a super-rede para "animais"); ou,

  • Crie algum tipo de metodologia de treinamento ridiculamente complicada, que exigiria matemática incrivelmente avançada e, de alguma forma, produziria um estado de peso-neurônio ideal para todas as saídas possíveis (em outras palavras insert math magic here).

(Nota lateral 1: Estou olhando especificamente para perceptrons multicamadas como um tipo de rede neural.)

(Nota lateral 2: para a primeira "solução possível com marcadores", ter cada rede neural específica e iterar através delas até recebermos uma resposta "Sim" não é suficiente. Eu sei que isso poderia ser feito com bastante facilidade, mas é funcional simples programação em vez de aprendizado de máquina. Quero saber se é possível ter uma rede neural para alimentar as informações e receber a resposta apropriada.)

asteri
fonte

Respostas:

15

Para responder apenas o seu título, sim. Redes neurais podem dar respostas não-booleanas. Por exemplo, redes neurais foram usadas para prever valores do mercado de ações, que é uma resposta numérica e, portanto, mais do que apenas sim / não. As redes neurais também são usadas no reconhecimento de manuscrito, no qual a saída pode ser de um conjunto de caracteres - o alfabeto inteiro, os números e a pontuação.

Para focar mais no seu exemplo - reconhecer animais - eu diria que é possível. É principalmente uma extensão do exemplo de reconhecimento de manuscrito; você está reconhecendo os recursos de uma forma e comparando-os às formas "ideais" para ver quais correspondências. As questões são técnicas, e não teóricas. A caligrafia, quando executada no software de reconhecimento, geralmente é mapeada para um conjunto de linhas e curvas - agradável e simples. Os rostos de animais são mais difíceis de reconhecer, então você precisaria de lógica de processamento de imagem para extrair recursos como olhos, nariz, boca, contorno áspero do crânio etc. Ainda assim, você só perguntou se é possível, não como, por isso a resposta é sim.

Sua melhor aposta é provavelmente dar uma olhada em coisas como a teoria da ressonância adaptativa. O princípio geral é que a entrada sensorial (neste caso, métricas sobre o tamanho relativo, forma e espaçamento das várias características faciais) é comparada a um "protótipo" ou modelo que define essa classe de coisas. Se a diferença entre a entrada sensorial e o modelo lembrado estiver abaixo de um certo limite (conforme definido por um "parâmetro de vigilância"), o objeto observado será assumido como um membro do grupo representado pelo modelo; se nenhuma correspondência puder ser encontrada, o sistema declara que é um tipo não visto anteriormente. O bom desse tipo de rede é que, quando reconhece que um objeto é, digamos, um cavalo, ele pode aprender mais sobre o reconhecimento de cavalos, para que possa diferenciar, digamos,

EDITAR:

(No interesse da divulgação completa: eu ainda estou pesquisando isso para um projeto, por isso meu conhecimento ainda está incompleto e possivelmente um pouco fora do lugar.)

como isso se relaciona com os pesos de configuração de retropropagação para um nó de saída, arruinando os pesos para outro nó previamente treinado?

Pelo que li até agora, o paradigma da ART é um pouco diferente; é dividido em duas seções - uma que aprende as entradas e outra que aprende as saídas para elas. Isso significa que, quando se deparar com um conjunto de entradas que não corresponde, um neurônio não confirmado é ativado e ajustado para corresponder à entrada, para que o neurônio acione uma correspondência na próxima vez. Os neurônios nesta camada são apenas para reconhecimento. Quando essa camada encontra uma correspondência, as entradas são entregues à camada abaixo, que é a que calcula a resposta. Para sua situação, essa camada provavelmente seria muito simples. O sistema que estou vendo está aprendendo a dirigir. Este é realmente dois tipos de aprendizado; um está aprendendo a dirigir em uma variedade de situações e o outro está aprendendo a reconhecer a situação. Por exemplo,

Essa idéia de aprender novos insumos sem arruinar os comportamentos aprendidos anteriormente é conhecida como dilema de estabilidade / plasticidade. Uma rede precisa ser estável o suficiente para manter o comportamento aprendido, mas plástica o suficiente para que possa ser ensinada coisas novas quando as circunstâncias mudam. É exatamente isso que as redes ART devem resolver.

anaximander
fonte
Obrigado pela sua ótima resposta! Então, como isso se relaciona com os pesos de configuração de retropropagação para um nó de saída, arruinando os pesos para outro nó previamente treinado? Ou estou pensando nisso da maneira errada?
asteri
@ Jeff Adicionei um pouco à minha resposta. Receio que não seja particularmente detalhado - ainda estou aprendendo isso. Ainda assim, sua pergunta está relacionada ao dilema de estabilidade / plasticidade, na medida em que você deseja treinar uma rede para reconhecer algo novo sem esquecer como reconhecer algo que já conhece, e a Teoria da ressonância adaptativa visa exatamente a solucionar esse problema, então provavelmente vale a pena investigar.
Anaximander
3

@ A resposta de anaximander é muito boa, pensei em comentar esta parte da sua pergunta:

Parece que devido ao algoritmo de treinamento de retropropagação de erro, à medida que você treina um nó de saída (ou seja, "Este é um cachorro") e os pesos dos neurônios são alterados, o estado ideal para outro nó de saída que você anteriormente treinado (isto é, "Este é um pássaro") começará a se desviar e vice-versa. Portanto, treinar a rede para reconhecer uma categoria sabotaria qualquer treinamento realizado para outra categoria, limitando-nos a um design simples "Sim" ou "Não".

Bem, acho que sua suposição está errada aqui; se bem entendi, você tem um NN com uma saída por categoria que está tentando classificar. Idealmente, você gostaria que eles operassem de forma quase independente, para que a classificação "cão" e "pássaro" não disparasse ao mesmo tempo. Então, realmente, durante o treinamento, o que acontecerá é que, quando você estiver treinando o NN com um resultado de "cão", a retropropagação tentará garantir que o "pássaro" e outros neurônios de saída não produzam falsos positivos. Então, teoricamente, funcionará bem, contrariamente ao seu comentário; o reforço de um resultado negativo para "pássaro" está correto.

No entanto, seu problema será a escalabilidade dessa abordagem. À medida que você adiciona mais categorias à rede, o treinamento se torna mais complexo de pelo menos uma maneira linear (mas provavelmente muito pior). Por esse motivo, muitas pessoas usam uma abordagem em que RNs individuais são treinados para cada categoria; isso mantém as coisas simples o suficiente e relativamente escaláveis. O meta-nível de como eles são combinados depende de você. Você pode simplesmente percorrer todos os NNs e ver quais produzem resultados positivos, criar NNs heurísticos de nível médio que tentam restringir o tipo de animal para você, ou pode até ter um NN gigante que combina os NNs individuais como neurônios . Em essência, o que estou tentando dizer é que você tem conhecimento prévio da estrutura do problema - as classificações individuais provavelmente são distintas uma da outra;

EDIT: Para responder à pergunta do título, é claro que as NNs podem fornecer mais que respostas sim / não. Nos modelos "padrão", cada neurônio de saída normalmente dispara sim / não (embora esse comportamento possa ser alterado, se você preferir), representando um pouco de informação; mas, assim como no seu computador, os bits podem ser combinados para fornecer uma variedade de valores discretos, que podem ser interpretados da maneira que você desejar. Um exemplo bastante visual de saídas não binárias seria um mapa auto-organizado , que normalmente possui uma saída 2D.

Daniel B
fonte
Obrigado pela sua resposta. Eu sabia que poderia ter tantos nós de saída quanto quisesse, mas estava preocupado com o fato de que, devido à natureza da retropropagação do algoritmo de erro (ajustando todos os pesos para um resultado desejado), o aprendizado de uma classificação desaprenderia outra.
Asteri
1

Resposta curta e não muito rígida: sim, todo NN pode fornecer mais informações do que apenas yes, ou no. É devido ao limite. Se os pesos forem maiores que algum limite, a resposta é uma das classes de classificação, se for menor, a resposta é a segunda classe de classificação. Basicamente:

    0..threshold 
    threshold..1

A saída do neurônio está no intervalo [0..1] (ou [-1,1] depende), e você não deseja obter resposta se a saída é menor ou maior que o limite, mas a saída (a saída que você deseja pode facilmente converter em intervalo 0..1 e isso significa%)


fonte