18804

Однослойная нейронная сеть, решающая задачу распознавания

Лабораторная работа

Информатика, кибернетика и программирование

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

Русский

2014-03-24

269 KB

42 чел.

МИНИСТЕРСТВО ОБРАЗОВАНИЯ РЕСПУЛИКИ БЕЛАРУСЬ

УО «БАРАНОВИЧСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ»

ИНЖЕНЕРНЫЙ ФАКУЛЬТЕТ

КАФЕДРА ИНФОРМАЦИОННЫХ СИСТЕМ И ТЕХНОЛОГИЙ

Лабораторная работа № 2

По дисциплине: «Искусственный интеллект»

По теме: «Однослойная нейронная сеть, решающая задачу распознавания»

                       Выполнил: студентка гр. ИСТ-41

           Цебрук Е. В.

           Проверил: Шах А. В.

Барановичи   2012

Цель работы: изучение алгоритмов обучения нейронных сетей, получение практических навыков работы с простейшими нейронными сетями, для обучения которых используется алгоритм Хебба и алгоритм Розенблатта.

Постановка задачи

Разработать структуру однослойной нейронной сети, способной распознавать четыре различные буквы Вашего имени или фамилии. Обосновать выбор:

  •  числа рецепторных нейронов (входов); число п х-элементов сети должно быть в пределах 12<п<30;
  •  числа выходных нейронов (нейронов сети);
  •  выбор векторов выходных сигналов.

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

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

public class NewJFrame extends javax.swing.JFrame {

double w[][],eps=0.01,a=0.001,

      etalon1=8,

      etalon2=30,

      etalon3=10,

      etalon4=20,

      etalon6,

      etalon7;

int n=30,evalut=0,

   activn1[][],

   activn2[][],

   activn3[][],

   activn4[][],

   activn6[][],

   activn7[][];

   // подсчет суммы весов

   public double summ(double wes[][],int act[][]){

   double s=0;

   

   for(int i=0;i<5;i++){

       for(int j=0;j<6;j++){

           if(act[i][j]==1){

               s+=wes[i][j];

           }

       }}

   return s;

   }

   

   //изменение весов

   public void update(int act[][],double etl){

   for(int i=0;i<5;i++){

       for(int j=0;j<6;j++){

               if(act[i][j]==1) w[i][j]=w[i][j]+a*(etl-summ(w,act));

           }}}

     

   //определение активности

   public int[][] actiw(JTable tbl){

   int ac[][];

   ac=new int[5][6];

   for(int i=0;i<5;i++){

       for(int j=0;j<6;j++){

       if(tbl.getValueAt(i,j)=="^"){

               ac[i][j]=1;

           }else ac[i][j]=0;

       }

   }

       return ac;

   

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         

w=new double [5][6];

activn1=new int[5][6];

activn2=new int[5][6];

activn3=new int[5][6];

activn4=new int[5][6];

activn6=new int[5][6];

activn7=new int[5][6];

Random rd = new Random();

   //начальные веса

   for(int i=0;i<5;i++){

       for(int j=0;j<6;j++){

           w[i][j]=(1+rd.nextInt(50-1))/100.0;                

       }

   }

       //активность

       activn1=actiw(jTable1);

       activn2=actiw(jTable2);

       activn3=actiw(jTable3);

       activn4=actiw(jTable4);

while(evalut<100000){   

if(Math.abs(summ(w,activn1)-etalon1)>eps){

update(activn1,etalon1);

}

if(Math.abs(summ(w,activn2)-etalon2)>eps){

update(activn2,etalon2);

}

if(Math.abs(summ(w,activn3)-etalon3)>eps){

update(activn3,etalon3);

}

if(Math.abs(summ(w,activn4)-etalon4)>eps){

update(activn4,etalon4);

}

evalut++;

if ((Math.abs(summ(w,activn1)-etalon1)<eps && Math.abs(summ(w,activn2)-etalon2)<eps &&  Math.abs(summ(w,activn3)-etalon3)<eps && Math.abs(summ(w,activn4)-etalon4)<eps)) break;

}

activn6=actiw(jTable6);

activn7=actiw(jTable7);

etalon6=summ(w,activn6);

etalon7=summ(w,activn7);

jTextArea1.append("Ура! Веса подобраны :)");

jButton2.setEnabled(true);

   }                                        

   private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         

   double sum;  

   jTextArea1.setText("");

   sum=summ(w,actiw(jTable5));

   jTextArea1.append("Общий вес="+String.valueOf(summ(w,actiw(jTable5))+"\n"));

   if(Math.abs(sum-etalon1)<Math.abs(sum-etalon2) && Math.abs(sum-etalon1)<Math.abs(sum-etalon3) && Math.abs(sum-etalon1)<Math.abs(sum-etalon4) && Math.abs(sum-etalon1)<Math.abs(sum-etalon6) && Math.abs(sum-etalon1)<Math.abs(sum-etalon7)) jTextArea1.append("Это буква Ц!");  

   if(Math.abs(sum-etalon2)<Math.abs(sum-etalon1) && Math.abs(sum-etalon2)<Math.abs(sum-etalon3) && Math.abs(sum-etalon2)<Math.abs(sum-etalon4) && Math.abs(sum-etalon2)<Math.abs(sum-etalon6) && Math.abs(sum-etalon2)<Math.abs(sum-etalon7)) jTextArea1.append("Это буква К!");

   if(Math.abs(sum-etalon3)<Math.abs(sum-etalon1) && Math.abs(sum-etalon3)<Math.abs(sum-etalon2) && Math.abs(sum-etalon3)<Math.abs(sum-etalon4) && Math.abs(sum-etalon3)<Math.abs(sum-etalon6) && Math.abs(sum-etalon3)<Math.abs(sum-etalon7)) jTextArea1.append("Это буква Е!");

   if(Math.abs(sum-etalon4)<Math.abs(sum-etalon1) && Math.abs(sum-etalon4)<Math.abs(sum-etalon2) && Math.abs(sum-etalon4)<Math.abs(sum-etalon3) && Math.abs(sum-etalon4)<Math.abs(sum-etalon6) && Math.abs(sum-etalon4)<Math.abs(sum-etalon7)) jTextArea1.append("Это буква И!");

   if(Math.abs(sum-etalon6)<Math.abs(sum-etalon1) && Math.abs(sum-etalon6)<Math.abs(sum-etalon2) && Math.abs(sum-etalon6)<Math.abs(sum-etalon3) && Math.abs(sum-etalon6)<Math.abs(sum-etalon4) && Math.abs(sum-etalon6)<Math.abs(sum-etalon7)) jTextArea1.append("Это буква "+jTextField1.getText()+":)");

   if(Math.abs(sum-etalon7)<Math.abs(sum-etalon1) && Math.abs(sum-etalon7)<Math.abs(sum-etalon2) && Math.abs(sum-etalon7)<Math.abs(sum-etalon3) && Math.abs(sum-etalon7)<Math.abs(sum-etalon4) && Math.abs(sum-etalon7)<Math.abs(sum-etalon6)) jTextArea1.append("Это буква "+jTextField2.getText()+":)");

   }                                        

Результат:

 

Вывод: изучила алгоритмы обучения нейронных сетей, получила практические навыки работы с простейшими нейронными сетями, для обучения которых используовался алгоритм Хебба и алгоритм Розенблатта.


 

А также другие работы, которые могут Вас заинтересовать

8345. Пенсионное страхование в Китае 25.05 KB
  История развития пенсионного страхования. Пенсионное страхование в Китае возникло и развивалось вместе с промышленной революцией и крупным общественным производством после распада традиционного сельскохозяйственного общества. После провозглашения Ки...
8346. Китайская народная республика 1.97 MB
  Выдвигается в мировые экономические и политические лидеры. Пять принципов мирного сосуществования – в конституции страны. Хунвейбины и Цзаофани громили учебные заведения и университеты. Публичные казни представителей интеллигенции и перевоспитание.
8347. Джентльменский набор костолома или компоненты традиционного обучения боевым искусствам в Китае 217.5 KB
  Джентльменский набор костолома или компоненты традиционного обучения боевым искусствам в Китае. Очень часто можно услышать про разные стили, что в одном только удары, и нет бросков, в другом - нет техники ударов ногами, еще где-то не используют захв...
8348. Экономика Китайской Народной Республики 31 KB
  Экономика Китайской Народной Республики Экономика Китайской Народной Республики - 2-я экономика мира по объёму ВВП (на 2010 год). При оценке ВВП страны необходимо учитывать, что данные за прошлые годы регулярно пересматриваются в сторону пов...
8349. Феодальный Китай под властью цинской монархии 96.45 KB
  Феодальный Китай под властью цинской монархии План. Крестьянская война XVII в. Захватнические войны Цинов. Первая опиумная война. Крестьянская...
8350. Фразеология китайского языка 86 KB
  Классификация фразеологизмов. В соответствии со своими дифференциальными признаками (лексико-семантическими и грамматическими), а также особенностями функционирования или способами существования в речевой цепи, фразеологизмы подразделяют на соответс...
8351. Маньчжуры и династия Цин в Китае 55.5 KB
  Маньчжуры и династия Цин в Китае За полтора века затянувшейся политической борьбы в верхах за необходимые стране реформы процесс разорения крестьян достиг крайней степени. Снова оживилась деятельность тайных обществ типа Белого лотоса. Год от года...
8352. Китайские игры. Го в Древнем Китае 68 KB
  Го в Древнем Китае Содержание: 1. Введение. 2. Легенды о мудрых королях и гадания. 3. Го и война. 4. Го в классике. 5. Сумбур в Хань- и Вей-времена. 6. Литература. 1. ВВЕДЕНИЕ Китайской игре Вей-чи (Weichi,Weiqi), более известной у нас под ее...
8353. Main trends in the government’s policy on internationalization 71 KB
  Main trends in the governments policy on internationalization Internationalization of higher education is a reality. The Russian higher educational institutions have at their disposal much less funds than universities in the developed co...