2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Простая задача: обучить нейронную сеть в Матлабе функции XOR
Сообщение05.08.2010, 10:51 
Здравствуйте!
Обучаюсь использовать нейронные сети в Матлабе. Поставил себе простую задачу, обучить сеть функции XOR. Вот примеры кода:
Код:
function ProgramNet1()

p = [0 0 1 1; 0 1 0 1];  % binary input sets
t = [0 1 1 0];           % desired output for each binary pair
% network with 2 hidden nodes.
net=newff([0, 1; 0, 1],[2,1],{'logsig','logsig'},'trainlm');
net.trainParam.epochs = 1000;
net.trainParam.goal = 10e-6;
[net,tr]=train(net,p,t);

ShowSurfaceOtklik( net, 20, 20 );

или вот:
Код:
function ProgramNet2()

p = [0 0 1 1; 0 1 0 1];  % binary input sets
t = [0 1 1 0];           % desired output for each binary pair
% network with 2 hidden nodes.
net=newpr(p,t,[2,1],{'logsig','logsig'},'trainlm');
net.trainParam.epochs = 1000;
net.trainParam.min_grad = 1e-6;
net.trainParam.max_fail = 50;
net = init(net);
[net,tr]=train(net,p,t);

ShowSurfaceOtklik( net, 20, 20 );


ShowSurfaceOtklik( net, 20, 20 ); - просто выводит график отклика сети

Сеть обучается правильно примерно в 5% случаев, в остальных же 95% неправильных случаев обучение прерывается или по градиенту или по валидатион чек или еще по чему. Эти все настройки я конечно менял, и пробовал разные функции обучения, но картина не меняется, график отклика часто весь кривой, не такой какой должен быть у XOR! :-(
Люди! Как повысить вероятность правильного обучения?
Причем моя самопальная программа на C# с обучением по "обратному распространению ошибки" почти всегда идеально обучает! (правда она проходит 500 000 - 1200 000 эпох, ну и что. Алгоритм просто без всяких доп наворотов ускоряющих обучение, зато результат!) В чем прикол?!

 
 
 
 Re: Простая задача: обучить нейронную сеть в Матлабе функции XOR
Сообщение05.08.2010, 18:25 
Кто-нибудь делал вообще распознавание образов или просто сопоставлял один вектор данных с другим?
Как вы тренируете сети? Приведите свои примеры, поставленная задача, какую сеть вы при этом использовали, каким алгоритмом тренировали, с какими настройками.
Заранее благодарен :-)

 
 
 
 Re: Простая задача: обучить нейронную сеть в Матлабе функции XOR
Сообщение09.08.2010, 09:27 
Я реализовывал это при помощи трех персептронов, в основе лежала форула:
$(a) xor (b) = a*\overline{b}+\overline{a}*b$
Можно попробовать сделать так:
Код:
net=newpr(p,t,[2,1],{'tansig','purelin'},'trainlm');

Работать будет, но тоже только приближенно.

 
 
 
 Re: Простая задача: обучить нейронную сеть в Матлабе функции XOR
Сообщение09.08.2010, 11:56 
Вот:
http://ifolder.ru/18829512
К сожалению не помню как делал синтез, нашел только файл от симулинка, пример реализации логической функции xor нейронной сетью.

 
 
 
 Re: Простая задача: обучить нейронную сеть в Матлабе функции XOR
Сообщение02.09.2010, 10:48 
Была похожая задача, использовал Fuzzy Logic Toolbox.
Решалась проблема верификации объекта по входо выходным характеристикам.

 
 
 [ Сообщений: 5 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group