Използване на невронна мрежа с истински и неверни резултати

Тъй като съм нов в невронните мрежи, има няколко въпроса, които бих искал да задам, за да ги разбера по-ясно.

  • Q1: Бих искал да тествам за верни/фалшиви резултати (разпознаване на образи), така че това означава ли, че моят изходен слой ще има 2 неутрона?
  • В2: Продължете към въпрос 1, ако в данните за обучението те съдържат само верни данни, така че всички резултати в данните за тестване винаги ще бъдат верни? (Тъй като имам този проблем и библиотеката Encog не ми позволява да посоча два изходни неутрона, тъй като имам само 1 тип изход в данните за обучение).

Моите тренировъчни данни:

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)


Ако имате нужда само от отговор вярно/невярно, вашият изходен слой трябва да има само един неврон. Ако този един неврон е активен, приемете това като вярно. Ако не е активно, третирайте го като невярно.

Ако вашите данни за обучение имат само истински стойности, тогава това са лоши данни и няма да помогнат наистина. В крайна сметка просто ще обучите мрежата си винаги да отговаря с true. Може би трябва да разберете някои данни, които трябва да доведат до фалшив резултат и да ги добавите към данните за обучението.

Ако вашите данни за обучение имат само два случая и и двата са верни, мрежата ви наистина няма да научи нищо. Имате нужда от много повече данни, за да направите модела ясен.

Отидете, задайте на умен човек (най-добрите невронни мрежи, които имаме) следния въпрос:

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