Автор работы: Пользователь скрыл имя, 07 Декабря 2010 в 14:09, Не определен
Лабораторная работа
Федеральное агентство по образованию
Государственное образовательное учреждение
Высшего профессионального образования
«МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ
УНИВЕРСИТЕТ ИМ Н.Э. БАУМАНА»
Калужский филиал
Лабораторная работа №4
по курсу: Нейрокомпьютеры
на
тему: «Сети
адаптивного резонанса
fuzzy ART»
Калуга,
2010
Исследование алгоритма обучения нечеткой АРТ
Вход X сети является m-мерным вектором, каждая компонента которого xi принадлежит интервалу [0, 1]. Каждой категории, т.е. каждому нейрону в слое распознавания соответствует вектор Wj адаптивных весов. Этот вектор заменяет входные и выходные веса нейрона сети АРТ-1.
Основные этапы обучения:
1. Инициализация.
В начальном состоянии все нейроны слоя распознавания сети являются несвязанными. Все компоненты вектора адаптивных весов каждого нейрона инициализируются единичными значениями:
2. Выбор категории.
Вычисляется функция выбора Fj:
, (8)
где ε > 0 – константа. Оператор представляет собой t-норму:
Норма в числителе и знаменателе (8) вычисляется, как
Затем выбирается нейрон с номером j, для которого функция выбора имеет максимальное значение:
Если для нескольких нейронов значения функции выбора совпадают, берется нейрон с меньшим номером.
3. Определение момента резонанса.
Резонанс фиксируется в том случае, если значение функции соответствия выбранной категории j удовлетворяет критерию сходства ρ:
При резонансе поиск прекращается, и веса нейрона-победителя с номером j подстраиваются в соответствии с уравнением:
В выше приведенном уравнении параметр β представляет собой скорость обучения. Если β = 1, обучение называется быстрым, и уравнение принимает вид
Сброс происходит в случае, если
. (10)
Для категории
j значение функции выбора Tj
сбрасывается в -1 на время предъявления
текущего входного вектора. Это действие
гарантирует, что j-й нейрон не выиграет
конкуренцию. Затем по формуле (9) выбирается
новая категория j. Цикл повторяется
до тех пор, пока не будет выполнено условие
(10) или не будут сброшены все связанные
нейроны и выделен новый нейрон, для которого
функция сходства примет единичное значение.
Окно программы
Листинг программы
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
int m = 10;
int n1 = 100;
public int[,]
t= new int [100, 10];
public Form1()
{
InitializeComponent();
for (int j = 0; j < 10; j++)
{
for (int i = 0; i < 100; i++)
{
///инацилизация весов t
t[i, j] = 1;
}
}
}
private void
dataGridView1_
{
}
private void
dataGridView1_
{
}
private void Form1_Load(object sender, EventArgs e)
{
dataGridView1.RowCount = 10;
dataGridView1.ColumnCount = 10;
dataGridView1.RowHeadersWidth = 5;
dataGridView1.
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
dataGridView1.Rows[i].Cells[j]
}
}
dataGridView2.RowCount = 1000;
dataGridView2.ColumnCount = 10;
for (int i = 0; i < 10; i++)
{
DataGridViewColumn column = dataGridView2.Columns[i];
column.Width = 25;
}
}
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
dataGridView1.Rows[e.RowIndex]
}
private void button2_Click(object sender, EventArgs e)
{
for (int i=0; i < 10; i++)
{
for (int j=0; j < 10; j++)
{
dataGridView1.Rows[i].Cells[j]
}
}
}
private void button1_Click(object sender, EventArgs e)
{
///инацилизация приемника G1 и G2
int[] R = new int[10];
int[] G2 = new int[100];
for (int i = 0; i < m; i++)
{
G2[i] = 1;
}
double
q = Convert.ToDouble(textBox1.
bool bul = false;
/////получаем вектор х
int[] x = new int[100];
int[] XX = new int[100];
float[] FX = new float[10];
int index = 0;
for (int i = 0; i < 10; i++)
{