Может ли нейронная сеть дать больше ответов «да» или «нет»?

11

Каждый пример нейронной сети для распознавания изображений, о котором я читал, дает простой ответ «да» или «нет». Один выходной узел соответствует «Да, это человеческое лицо», а другой соответствует «Нет, это не человеческое лицо».

Я понимаю, что это, вероятно, для простоты объяснения, но мне интересно, как такая нейронная сеть может быть запрограммирована, чтобы дать более конкретный результат. Например, допустим, я классифицировал животных. Вместо того, чтобы сказать «Животное» или «Не животное», я хотел бы получить ответы типа «Собака», «Рыба», «Птица», «Змея» и т. Д. С одним последним выходным узлом «Не животное / я». не признать это ".

Я уверен, что это возможно, но мне трудно понять, как. Похоже, что из-за алгоритма обучения обратного распространения ошибки, когда вы тренируете один выходной узел (т. Е. «Это собака»), и веса нейронов изменяются, тогда идеальное состояние для другого выходного узла, которое вы ранее дрессированные (т. е. «это птица») начнут отклоняться, и наоборот. Таким образом, обучение сети распознаванию одной категории саботирует любое обучение, проведенное для другой категории, ограничивая нас тем самым простым «Да» или «Нет».

Это делает такой распознаватель невозможным? Или я неправильно понимаю алгоритм? Единственное, о чем я могу думать, это то, что:

  • Либо мы могли бы обучить одну нейронную сеть для каждой вещи, которую мы хотим классифицировать, и каким-то образом использовать ее для построения большей суперсети (например, сеть для «собаки», сеть для «птицы» и т. Д., Которую мы каким-то образом сложите вместе для создания супер-сети для "животных"); или же,

  • Создать какую-то смехотворно сложную методологию обучения, которая потребовала бы невероятно продвинутой математики и каким-то образом создала бы идеальное состояние веса нейрона для всех возможных результатов (иными словами, insert math magic here).

(Примечание 1: я специально рассматриваю многослойные персептроны как разновидность нейронной сети.)

(Примечание 2: Для первого маркированного «возможного решения», имеющего каждую конкретную нейронную сеть и перебирающего их, пока мы не получим ответ «Да», недостаточно хорошо. Я знаю, что это можно сделать довольно легко, но это простой функционал программирование, а не машинное обучение. Я хочу знать, возможно ли иметь одну нейронную сеть для передачи информации и получения соответствующего ответа.)

Asteri
источник

Ответы:

15

Чтобы ответить только на ваше название, да. Нейронные сети могут давать не булевы ответы. Например, нейронные сети были использованы для прогнозирования цен на фондовом рынке, что является числовым ответом и, следовательно, больше, чем просто да / нет. Нейронные сети также используются при распознавании рукописного ввода, при котором на выходе может быть один из целого ряда символов - всего алфавита, цифр и знаков препинания.

Чтобы сосредоточиться больше на вашем примере - распознавании животных - я бы сказал, что это возможно. В основном это расширение примера распознавания рукописного текста; Вы узнаете особенности формы и сравниваете их с «идеальными» формами, чтобы увидеть, какие из них соответствуют. Вопросы технические, а не теоретические. Почерк, когда он запускается через программное обеспечение для распознавания, обычно сопоставляется с набором линий и кривых - красиво и просто. Лица животных труднее распознать, поэтому вам понадобится логика обработки изображений, чтобы извлечь такие особенности, как глаза, нос, рот, грубый контур черепа и т. Д. Тем не менее, вы только спросили, возможно ли это, а не как, поэтому ответ - да.

Лучше всего, вероятно, взглянуть на такие вещи, как адаптивная теория резонанса. Общий принцип заключается в том, что сенсорный ввод (в данном случае метрики относительного размера, формы и расстояния между различными чертами лица) сравнивается с «прототипом» или шаблоном, который определяет этот класс вещей. Если разница между сенсорным входом и запомненным шаблоном ниже определенного порога (как определено «параметром бдительности»), то наблюдаемый объект считается членом группы, представленной шаблоном; если совпадение не найдено, то система объявляет его ранее невидимым типом. Хорошая особенность такого рода сетей заключается в том, что когда он распознает, что объект является, скажем, лошадью, он может узнать больше о распознавании лошадей, чтобы он мог определить разницу между, скажем,

РЕДАКТИРОВАТЬ:

(В интересах полного раскрытия: я все еще исследую это для проекта, так что мои знания все еще неполны и, возможно, немного местами.)

как это соотносится с заданными весами обратного распространения для одного выходного узла, разрушая весовые коэффициенты для другого, ранее обученного узла?

Из того, что я прочитал, парадигма ART немного отличается; он разделен на две секции - одна, которая изучает входные данные, и одна, которая изучает выходные данные для них. Это означает, что когда он сталкивается с набором входных данных, который не совпадает, незафиксированный нейрон активируется и корректируется в соответствии с входным сигналом, так что этот нейрон будет запускать совпадение в следующий раз. Нейроны в этом слое предназначены только для распознавания. Как только этот слой находит совпадение, входные данные передаются нижележащему слою, который вычисляет ответ. Для вашей ситуации этот слой, вероятно, будет очень простым. Система, на которую я смотрю, учится водить. На самом деле это два типа обучения; один учится водить в различных ситуациях, а другой учится распознавать ситуацию. Например,

Эта идея изучения новых входных данных без разрушения ранее изученного поведения известна как дилемма стабильности / пластичности. Сеть должна быть достаточно стабильной , чтобы сохранять усвоенное поведение, но достаточно пластичной , чтобы ее можно было учить новым вещам при изменении обстоятельств. Это именно то, для чего предназначены сети ART.

Анаксимандр
источник
Спасибо за ваш отличный ответ! Итак, как это соотносится с заданными весами обратного распространения для одного выходного узла, разрушая веса для другого, ранее обученного узла? Или я думаю об этом не так?
Астери
@Джефф Я немного добавил к своему ответу. Боюсь, это не особо подробно, я все еще изучаю это сам. Тем не менее, ваш вопрос связан с дилеммой стабильности / пластичности, в которой вы хотите научить сеть распознавать что-то новое, не забывая при этом, как распознать то, что она уже знает, а теория адаптивного резонанса нацелена именно на решение этой проблемы, так что, наверное, стоит разобраться.
Анаксимандр
3

Ответ @ anaximander довольно хороший, я решил прокомментировать эту часть вашего вопроса:

Похоже, что из-за алгоритма обучения обратного распространения ошибки, когда вы тренируете один выходной узел (т. Е. «Это собака»), и веса нейронов изменяются, тогда идеальное состояние для другого выходного узла, которое вы ранее дрессированные (т. е. «это птица») начнут отклоняться, и наоборот. Таким образом, обучение сети распознаванию одной категории саботирует любое обучение, проведенное для другой категории, ограничивая нас тем самым простым «Да» или «Нет».

Ну, я думаю, что ваше предположение здесь неверно; если я правильно понимаю, у вас есть NN с одним выходом на категорию, которую вы пытаетесь классифицировать. В идеале вы бы хотели, чтобы они работали практически независимо, чтобы классификации «собака» и «птица» не срабатывали одновременно. Так что на самом деле, во время обучения, то, что произойдет, это то, что когда вы тренируете NN с «собачьим» результатом, обратное распространение будет пытаться обеспечить, чтобы «птица» и другие выходные нейроны не давали ложных срабатываний. Таким образом, теоретически, это будет работать просто отлично, вопреки вашему комментарию; Подкрепление негативного исхода для «птицы» является правильным.

Однако вашей проблемой станет масштабируемость этого подхода. По мере добавления новых категорий в сеть обучение будет становиться более сложным, по крайней мере, линейным (но, вероятно, гораздо худшим) способом. По этой причине многие люди используют подход, при котором отдельные NN обучаются для каждой категории; это делает вещи достаточно простыми и относительно масштабируемыми. Метауровень того, как они комбинируются, зависит от вас. Вы можете просто перебрать все NN и посмотреть, какие из них дают положительные результаты, вы можете создать эвристические NN среднего уровня, которые пытаются сузить тип животного для вас, или у вас может быть даже гигантский NN, который объединяет отдельные NN в качестве нейронов. , По сути, я пытаюсь сказать, что у вас есть предварительные знания о структуре проблемы - отдельные классификации, скорее всего, отличаются друг от друга;

РЕДАКТИРОВАТЬ: Чтобы ответить на заглавный вопрос, конечно, NN могут предоставить больше, чем да / нет ответов. В «стандартных» моделях каждый выходной нейрон обычно запускает да / нет (хотя это поведение можно изменить, если вы так склонны), представляя один бит информации; но, как и в вашем компьютере, биты можно комбинировать, чтобы получить диапазон дискретных значений, которые можно интерпретировать любым способом, который вы пожелаете. Довольно наглядным примером недвоичных выходных данных может быть самоорганизующаяся карта , которая обычно имеет двухмерный выход.

Даниэль Б
источник
Спасибо за Ваш ответ. Я знал, что у меня может быть столько выходных узлов, сколько я хотел, но я был обеспокоен тем, что из-за природы алгоритма обратного распространения ошибок (корректировки всех весов к желаемому результату), что изучение одной классификации отменит другую.
Астери
1

Короткий и не очень жесткий ответ: да, каждый NN может предоставить больше информации, чем просто yes, или no. Это связано с порогом. Если веса выше некоторого порога, ответом является один из классов классификации, если он ниже, ответом является второй класс классификации. В принципе:

    0..threshold 
    threshold..1

Выход нейрона находится в интервале [0..1] (или [-1,1] это зависит), и вы не хотите получать ответ, является ли выход ниже или выше порога, но выход (выход вы может легко преобразовать в интервал 0..1, а это означает%)


источник