Каждый пример нейронной сети для распознавания изображений, о котором я читал, дает простой ответ «да» или «нет». Один выходной узел соответствует «Да, это человеческое лицо», а другой соответствует «Нет, это не человеческое лицо».
Я понимаю, что это, вероятно, для простоты объяснения, но мне интересно, как такая нейронная сеть может быть запрограммирована, чтобы дать более конкретный результат. Например, допустим, я классифицировал животных. Вместо того, чтобы сказать «Животное» или «Не животное», я хотел бы получить ответы типа «Собака», «Рыба», «Птица», «Змея» и т. Д. С одним последним выходным узлом «Не животное / я». не признать это ".
Я уверен, что это возможно, но мне трудно понять, как. Похоже, что из-за алгоритма обучения обратного распространения ошибки, когда вы тренируете один выходной узел (т. Е. «Это собака»), и веса нейронов изменяются, тогда идеальное состояние для другого выходного узла, которое вы ранее дрессированные (т. е. «это птица») начнут отклоняться, и наоборот. Таким образом, обучение сети распознаванию одной категории саботирует любое обучение, проведенное для другой категории, ограничивая нас тем самым простым «Да» или «Нет».
Это делает такой распознаватель невозможным? Или я неправильно понимаю алгоритм? Единственное, о чем я могу думать, это то, что:
Либо мы могли бы обучить одну нейронную сеть для каждой вещи, которую мы хотим классифицировать, и каким-то образом использовать ее для построения большей суперсети (например, сеть для «собаки», сеть для «птицы» и т. Д., Которую мы каким-то образом сложите вместе для создания супер-сети для "животных"); или же,
Создать какую-то смехотворно сложную методологию обучения, которая потребовала бы невероятно продвинутой математики и каким-то образом создала бы идеальное состояние веса нейрона для всех возможных результатов (иными словами,
insert math magic here
).
(Примечание 1: я специально рассматриваю многослойные персептроны как разновидность нейронной сети.)
(Примечание 2: Для первого маркированного «возможного решения», имеющего каждую конкретную нейронную сеть и перебирающего их, пока мы не получим ответ «Да», недостаточно хорошо. Я знаю, что это можно сделать довольно легко, но это простой функционал программирование, а не машинное обучение. Я хочу знать, возможно ли иметь одну нейронную сеть для передачи информации и получения соответствующего ответа.)