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.)
@ A resposta de anaximander é muito boa, pensei em comentar esta parte da sua pergunta:
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.
fonte
Resposta curta e não muito rígida: sim, todo NN pode fornecer mais informações do que apenas
yes
, ouno
. É 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: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