Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Алгоритмы > Математическое решение уравнений нейронной сети


Автор: Softaz 13.2.2007, 11:12
Здравствуйте!

Нужно решение уравнений нейронной сети. Нашел простенькие из www.basegroup.ru/neural/math.htm (там в диф. исчислении, мне надо это расписать алгебраически). По статье сделана библиотека www.basegroup.ru/download/neuralbase.htm

Чтобы так сказать "въехать в вопрос".
То есть решаю "на бумажке", но ответы очень сильно не совпадают с теми, что дает программа.

Видели ли Вы математическое решение какого-либо, пусть простейшего примера нейронной сети.
То есть задана задача. Нормализуем параметры,... находим веса,... после обучения даем другие параметры и проверяем ошибку. И все это не только в диф.виде, а и в _числах_.

С нормализацией проблем нет, сигмоид тоже понятен. За разбор обучения я еще не брался. Взял параметры из файла nnw программы и попытался самостоятельно на бумажке их решить. Не вышло. Прошу помощи.

Заранее благодарен.
P.S:
Мне не нужно объяснение именно этой сети - можно и другой. Мне нужно "въехать", как все это работает и научиться рассчитать вручную хотя бы простейший пример. Сами сети я никогда не использовал - это будет всего лишь параграф в дипломе (в основном там классические методы - с этим проблем не было), типа, что и на НС можно.

Если предоставите именно _решение_от_начала_до_конца, а не общие форумулы, можно за материальное вознаграждение (баксов 10 - потому что решить, не зная концепции, нельзя, а мне не надо пару диф. формул, сдернутых с сатйта; а если концепция знакома, то готовое решение скорее всего есть. Итого 10$ за скан пары-тройки листов или отправку файлика очень хорошая сумма).

Автор: VictorTsaregorodtsev 13.2.2007, 11:55
Нет там никакого диф.исчисления smile

Сетка - это просто функция или вектор-функция Y=f(X,W), где Y - выходные сигналы, X - текущий вектор входов, W - набор весов сети. Т.е. при заданных весах и структуре сети и вектору Х выходы сети находятся влёт. Производных здесь нет вообще! Т.е. сетка - это просто набор выражений, в которые надо подставить вектор X или его отдельные компоненты и получить в итоге Y.

Производные возникают только при обучении сети. Традиционный способ решения - продифференцировать целевой критерий по весам синапсов сети, приравнять полученные производные к нулю и решить систему уравнений - неудобен, т.к. надо заново аналитически выписывать все производные при смене размеров/структуры сети и решать уравнения в аналитическом же виде, что долго и неудобно. Поэтому берется следующий способ - вычисляются значения производных и делается шаг вдоль антиградиента (вектора производных, взятого с противоположным знаком) либо привлекаются более гибкие способы из теории градиентной оптимизации. Несмотря на то, что таких производных приходится вычислять много (столько же, сколько весов в сети), ВСЕ их значения, т.е. весь вектор градиента, можно вычислить на нейросетке в режиме обратного распространения за время, пропорциональное времени вычисления самого Y=f(X,W). Если же считать значения производных по-одной через конечные разности, то общее время расчета градиента увеличится во столько раз, сколько весов синапсов в сети. А если выписывать алгебраические выражения для производных и потом уравнения на их базе решать в символьной арифметике - то вообще швах.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)