Нейронная сеть прогнозирования курса рубля (примеры работы программы)

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

Рубрика Программирование, компьютеры и кибернетика
Вид контрольная работа
Язык русский
Дата добавления 31.05.2013
Размер файла 443,7 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

1. Нейронная сеть

1.1 Понятие нейронной сети

нейронный сеть рубль

Под нейронными сетями подразумеваются вычислительные структуры, которые моделируют простые биологические процессы, обычно ассоциируемые с процессами человеческого мозга. Они представляют собой распределенные и параллельные системы, способные к адаптивному обучению путем анализа положительных и отрицательных воздействий. Элементарным преобразователем в данных сетях является искусственный нейрон или просто нейрон, названный так по аналогии с биологическим прототипом.

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

1.2 Структура и свойства искусственного нейрона

Нейрон является составной частью нейронной сети. На рис 1. показана его структура. Он состоит из элементов трех типов: умножителей (синапсов), сумматора и нелинейного преобразователя. Синапсы осуществляют связь между нейронами, умножают входной сигнал на число, характеризующее силу связи (вес синапса). Сумматор выполняет сложение сигналов, поступающих по синаптическим связям от других нейронов, и внешних входных сигналов. Нелинейный преобразователь реализует нелинейную функцию одного аргумента - выхода сумматора. Эта функция называется функцией активации или передаточной функцией нейрона. Нейрон в целом реализует скалярную функцию векторного аргумента. Математическая модель нейрона:

где - вес синапса, ; , s - результат суммирования; - компонент входного вектора (входной сигнал). ; у- выходной сигнал нейрона; п - число входов нейрона; f - нелинейное преобразование (функция активации).

Рис 1. Структура искусственного нейрона

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

Синоптические связи с положительными весами называют возбуждающими, с отрицательными весами - тормозящими.

Описанный вычислительный элемент можно считать упрощенной математической моделью биологических нейронов

На входной сигнал s нелинейный преобразователь отвечает выходным сигналом f(s). который представляет собой выход у нейрона.

Примеры активационной логистическая (сигмоидальная)функции:

1.3 Нейронные сети обратного распространения

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

Матрица весовых коэффициентов от входов к скрытому слою обозначим W, а матрицу весов, соединяющий скрытый и выходной слой - V. Число входов сети Равно n, число нейронов в скрытом слое - m, число нейронов в выходном слое - p. Пусть сеть обучается на выборке .

Согласно методу наименьших квадратов, минимизируемой целевой функцией ошибки НС является величина:

,

где - реальное выходное состояние нейрона k выходного слоя нейронной сети при подаче на ее входы одного из обучающих образов; - идеальное (желаемое) выходное состояние этого нейрона.

Суммирование ведется по всем нейронам выходного слоя и по всем обрабатываемым сетью образам. Минимизация ведется методом градиентного спуска, что означает подстройку весовых коэффициентов следующим образом:

,

Здесь - коэффициент скорости обучения, 0<<1.

Для придания процессу коррекции весов некоторой инерционности, сглаживающей резкие скачки при перемещении по поверхности целевой функции, формулы коррекции весовых коэффициентов дополняется значением изменения веса на предыдущей итерации:

(3)

(4)

где - коэффициент инерционности, t - номер текущей итерации.

1.4 Алгоритм обучения НС обратного распространения

Полный алгоритм обучения НС с помощью процедуры обратного распространения строится так:

1. Инициализация сети. Весовым коэффициентам присваиваются малые случайные значения (-0,3;0,3);задается -параметр точности обучения, - коэффициент инерционности; - коэффициент скорости обучения; - максимальное число итераций.

2. Подать на входы сети один из возможных образов и в режиме обычного функционирования НС, когда сигналы распространяются от входов к выходам, рассчитать значения последних.

3. Рассчитать , по формулам (3), (4). Пересчитать синаптические веса.

4. Шаги 2-3 повторяются пока значение функции ошибки (1) не будет меньше или после максимального допустимого числа итераций, что возможно означает недостаточное количество нейронов скрытого слоя.

5 Шаги 2-4 повторяются для всех обучающих векторов пока сеть не будет ошибаться на всех них в пределах , чтобы сеть, образно говоря, не забывала одни по мере запоминания других.

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

Замечание 2. Количество входов и выходов обычно диктуются условиями задачи, а количество нейронов скрытого слоя экспериментально. Обычно число нейронов в нем составляет 30-50% от числа входов. Слишком большое число нейронов скрытого слоя приведет к тому, что сеть теряет способность к обобщению (она просто досконально запоминает элементы обучающей выборки и не реагирует на схожие образы). Если же число нейронов скрытом слое слишком мало, сеть оказывается не в состоянии обучаться.

Замечание 3. Необходимо чтобы значения входов и выходов находились в приделах области значений функции активации. Для этого применяется нормировка и предобработка данных.

1.5 Нормировка и предобработка данных

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

Приведение данных к единичному масштабу обеспечивается нормировкой каждой переменной на диапазон разброса ее значений. В простейшем варианте это - линейное преобразование:

в единичный отрезок: .

2. Нейронная сеть прогнозирования курса рубля (примеры работы программы)

2.1 Примеры работы программы

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

Рисунок 1. Загрузка выборки и обучение

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

Рисунок 2. Прогнозирование. (Результат, который должен получиться в идеале равен 29,931 руб.)

2.2 Код программы

void __fastcall TMainForm::LearnClick(TObject *Sender)

{

double s, y;

pair< vector<double>, double > p;

vector<double> dw_1, dw_2, dv_1, dv_2;

dw_1.resize(n); dv_1.resize(m);

dw_2.resize(n); dv_2.resize(m);

vector<double> y_s; // на скрытом слое

y_s.resize(m);

// шаг 1

for(int i = 0; i < (int)W.size(); i++)

{

double t = rand()%2;

if(t == 1)

t -= 0.8;

else

t -= 0.15;

W[i] = t;

V[i] = t;

}

eps = StrToFloat(eps_->Text);

mu = StrToFloat(mu_->Text);

etta = StrToFloat(etta_->Text);

N_max = N_max_->Value;

for(int i = 0; i < (int)X.size(); i++)

{

X[i] = in[i+1];//StrToFloat(Euro_->Cells[i][1]);

}

//------------------ нормировка данных -------------------------------

for(int i = 0; i < (int)X.size(); i++)

{

X[i] = norm(X[i]);

}

//--------------------------------------------------------------------

p.first = X;

p.second = norm(in[(int)in.size()-1]);//norm( StrToFloat(Result->Text));

VX.push_back(p);

int j = 0; // номер выборки

int count_error = 0;

double d = p.second; // идеальное выходное значение

int iter = 0;

while(1)

{

if(j == (int)VX.size() )

{

if(count_error == 0)

break;

else

j = 0;

count_error = 0;

iter = 0;

}

count_error = 0;

while(1)

{

// шаг 2

iter++;

s = 0;

X = VX[j].first;

d = VX[j].second;

for(int i = 0; i < (int)X.size(); i++) // на скрытом слое

{

y_s[i] = X[i]*W[i]; // ????

}

for(int i = 0; i < (int)y_s.size(); i++)

{

s += y_s[i]*V[i];

}

y = f(s);

// шаг 3 поправка весов

for(int i = 0; i < (int)dv_2.size(); i++)

{

dv_2[i] = mu*dv_1[i] - etta*y*(y * (1 - y));

}

for(int i = 0; i < (int)dw_2.size(); i++)

{

dw_2[i] = mu*dw_1[i] - dv_2[i];

}

for(int i = 0; i < (int)W.size(); i++)

{

W[i] += dw_2[i];

}

dw_1 = dw_2; dv_1 = dv_2;

// шаг 4 проверка ошибки

if( E(y,d) <= eps || iter > N_max)

{

j++;

break;

}

else

count_error++;

}

}

}

//---------------------------------------------------------------------------

void __fastcall TMainForm::PrognozClick(TObject *Sender)

{

vector<double> y_s; y_s.resize(m);

double s = 0;

for(int i = 0; i < (int)W.size(); i++)

{

double t = rand()%2;

if(t == 1)

t -= 0.8;

else

t -= 0.15;

W[i] = t;

V[i] = t;

}

eps = StrToFloat(eps_->Text);

mu = StrToFloat(mu_->Text);

etta = StrToFloat(etta_->Text);

N_max = N_max_->Value;

for(int i = 0; i < (int)X.size(); i++)

{

X[i] = norm(in[i+1]);

}

for(int j = 0; j < (int)VX.size(); j++)

{

for(int i = 0; i < (int)VX[j].first.size(); i++)

{

y_s[i] = VX[j].first[i]*W[i];

}

for(int i = 0; i < (int)y_s.size(); i++)

{

s += y_s[i]*V[i];

}

double y = f(s);

if(E(y,VX[j].second) < eps)

{

y = unnorm(y); // операция обратная нормировки данных

float tmp = in[0];

for(int i = 1; i < (int)in.size()-1; i++)

{

tmp += in[i];

}

Result->Text = tmp + y;

break;

}

}

}

//--------------------------------------------------------------------------

Размещено на Allbest


Подобные документы

  • Проект автоматизированной системы прогнозирования относительного курса валютных пар для международной валютной биржи Forex с использованием нейронных сетей. Требования к техническому обеспечению. Обоснование выбора средств автоматизации программы.

    курсовая работа [1,3 M], добавлен 05.01.2013

  • Прогнозирование на фондовом рынке с помощью нейронных сетей. Описание типа нейронной сети. Определение входных данных и их обработка. Архитектура нейронной сети. Точность результата. Моделирование торговли. Нейронная сеть прямого распространения сигнала.

    дипломная работа [2,7 M], добавлен 18.02.2017

  • Базовые архитектуры компьютеров: последовательная обработка символов по заданной программе и параллельное распознавание образов по обучающим примерам. Искусственные нейронные сети. Прототип для создания нейрона. Поведение искусственной нейронной сети.

    контрольная работа [229,5 K], добавлен 28.05.2010

  • Характеристика моделей обучения. Общие сведения о нейроне. Искусственные нейронные сети, персептрон. Проблема XOR и пути ее решения. Нейронные сети обратного распространения. Подготовка входных и выходных данных. Нейронные сети Хопфилда и Хэмминга.

    контрольная работа [1,4 M], добавлен 28.01.2011

  • Механизм работы нервной системы и мозга человека. Схема биологического нейрона и его математическая модель. Принцип работы искусственной нейронной сети, этапы ее построения и обучения. Применение нейронных сетей в интеллектуальных системах управления.

    презентация [98,6 K], добавлен 16.10.2013

  • Прогнозирование валютных курсов с использованием искусственной нейронной сети. Общая характеристика среды программирования Delphi 7. Существующие методы прогнозирования. Характеристика нечетких нейронных сетей. Инструкция по работе с программой.

    курсовая работа [2,2 M], добавлен 12.11.2010

  • Математические модели, построенные по принципу организации и функционирования биологических нейронных сетей, их программные или аппаратные реализации. Разработка нейронной сети типа "многослойный персептрон" для прогнозирования выбора токарного станка.

    курсовая работа [549,7 K], добавлен 03.03.2015

  • Выбор публичных показателей для построения, обучения и тестирования модели нейронной сети, которая будет использована в основе информационной системы прогнозирования банкротства банков. Обзор моделей прогнозирования банкротства кредитных организаций.

    дипломная работа [1,2 M], добавлен 30.06.2017

  • Задача анализа деловой активности, факторы, влияющие на принятие решений. Современные информационные технологии и нейронные сети: принципы их работы. Исследование применения нейронных сетей в задачах прогнозирования финансовых ситуаций и принятия решений.

    дипломная работа [955,3 K], добавлен 06.11.2011

  • Нейронные сети как средство анализа процесса продаж мобильных телефонов. Автоматизированные решения на основе технологии нейронных сетей. Разработка программы прогнозирования оптово-розничных продаж мобильных телефонов на основе нейронных сетей.

    дипломная работа [4,6 M], добавлен 22.09.2011

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.