Использование нейронной сети с истинными и ложными выходами

Поскольку я новичок в нейронной сети, я хотел бы задать несколько вопросов, чтобы понять ее более четко.

  • Q1: Я хотел бы проверить истинные / ложные результаты (распознавание образов), значит ли это, что в моем выходном слое будет 2 нейтрона?
  • Q2: переходите к вопросу 1, если в данных обучения они содержат только истинные данные, поэтому весь результат в данных тестирования всегда будет правдой? (Поскольку у меня возникла эта проблема, а библиотека Encog не позволяет мне указать два выходных нейтрона, поскольку у меня есть только один тип выходных данных в обучающих данных).

Мои данные о тренировках:

1,2,3,4 Pattern1
6,7,8,9 Pattern1

Мои данные тестирования:

4,3,2,1 Pattern2

Это результат, который я получил от encog: Результаты нейронной сети:

0.0,0.0, actual=-0.05972914453206861,ideal=1.0

Кто-нибудь может показать мне, в чем я ошибался?
Большое спасибо.


person Xitrum    schedule 10.03.2014    source источник
comment
В поле вывода преобразуйте Pattern1 в 0, а Pattern2 в 1. Затем убедитесь, что у вас есть как образцы 0, так и 1 как в обучающих, так и в тестовых данных, как упоминает @Damien Black.   -  person andrelucas    schedule 10.03.2014


Ответы (1)


Если вам нужен только ответ истина / ложь, ваш выходной слой должен иметь только один нейрон. Если этот нейрон активен, считайте это правдой. Если он не активен, считайте это ложным.

Если ваши обучающие данные имеют только истинные значения, то это плохие данные, и они не особо помогут. В конечном итоге вы просто научите свою сеть всегда отвечать правдой. Возможно, вам стоит выяснить какие-то данные, которые должны привести к ложному результату, и добавить их к обучающим данным.

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

Задайте умному человеку (лучшие нейронные сети, которые у нас есть) следующий вопрос:

1,2,3,4 is true; 6,7,8,9 is true. Is 4,3,2,1 true?

Они бы понятия не имели. Я не знаю. Никто не знает. Я не знаю, каковы критерии. Это может быть любое количество вещей, которые определяют, верна ли последовательность. В том числе:

  • цифры растут
  • они движутся в одном направлении
  • они всегда одно целое
  • что все числа ниже 10

Я понятия не имею, какие из них требования, а какие нет. Без понятия. А у нейронной сети, которую вы создаете, будет еще меньше идеи.

Основная проблема в том, что вам нужно больше данных.

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

person Damien Black    schedule 10.03.2014
comment
Чтобы сказать это, я думаю, что 1,2,3,4 - это просто пример, приведенный @Xitrium. Предположительно реальные данные менее геометрические - person andrelucas; 10.03.2014
comment
Большое спасибо за ответ, есть еще один момент, который я хочу прояснить: поскольку нейронной сети для работы требуются как истинные, так и ложные данные, применяется ли это также к классификации одного класса из машины опорных векторов? - person Xitrum; 11.03.2014