Я:
Результат
Архив

МЕТА - Украина. Рейтинг сайтов Webalta Уровень доверия



Союз образовательных сайтов
Главная / Предметы / Кибернетика / Классификация сейсмических сигналов на основе нейросетевых технологий


Классификация сейсмических сигналов на основе нейросетевых технологий - Кибернетика - Скачать бесплатно


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



                             Список литературы.

1. Уоссермен Ф. “Нейрокомпьютерная техника” - М.: Мир,1992.
2. Горбань А.Н., Дубинин-БарковскийВ.Л., Кирдин А.Н.  “Нейроинформатика”  СП
  “Наука” РАН 1998.
3. Горбань А.Н., Россиев Д.А. “Нейронные сети  на  персональном  компьютере”
  СП “Наука” РАН 1996.
4. Ежов А.А., Шумский С.А. “Нейрокомпьютинг и его применение в  экономике  и
  бизнесе”.1998.
5.  Bishop C.M. “Neural Networks and  Pattern  Recognition.”  Oxford  Press.
  1995.
6. Goldberg D. “Genetic Algorithms in Machine  Learning,  Optimization,  and
  Search.” – Addison-Wesley,1988.
7. Fausett L.V. “Fundamentals of Neural Networks: Architectures,  Algorithms
  and Applications”, Prentice Hall, 1994.
8. Kohonen T. “Self-organization and  Associative Memory”, Berlin: Springer-
   Verlag, 1989.
9. Kushnir A.F., Haikin L.M.,  Troitsky  E.V.  “Physics  of  the  earth  and
  planetary interiors” 1998.
10. Копосов А.И., Щербаков И.Б.,  Кисленко  Н.А.,  Кисленко  О.П.,  Варивода
  Ю.В. Отчет по научно-исследовательской  работе  "Создание  аналитического
  обзора информационных источников по применению нейронных сетей для  задач
  газовой технологии"; и др., ВНИИГАЗ, 1995, www.neuralbench.ru
11. Fukunaga K., Kessel D.L., “Estimation  of  classification  error”,  IEEE
  Trans. Comp. C 20, 136-143. 1971.
12. Деев А.Д., “Применение статистического дискриминационного анализа и  его
  ассимптотического  расширения  для   сравнения   различных   размерностей
  пространства.”, РАН 195, 759-762. 1970.
                                 Приложение.

1. Пример выборки сейсмограмм.
    В левом столбце представлены  сейсмограммы,  описывающие  взрывы,  а  в
правом – землетрясения.



2. Пример файла с векторами признаков.
Представлена выборка из файла 9_Norv.txt, содержащего  9  размерные  вектора
    признаков.


                              NumOfPattern:  86

PatternDimens: 9

    1  -14.3104  -13.2561  -13.4705  -13.4306  -14.1015  -13.3503  -13.3805
 -13.7369   -0.3494   0
2  -14.6881  -13.6349   -12.9050   -13.4323   -14.2279   -13.4720   -13.2117
   -13.5791   -1.2801    0
3  -14.4036  -14.1745   -13.8014   -12.7209   -14.6283   -13.9589   -13.4649
   -12.9716   -0.8250   0
…

55  -14.3693  -13.4362  -11.4072   -12.3129   -14.8612   -13.3480   -12.8517
   -13.4014   -0.7738   0
56  -14.2856  -12.6858  -13.8215   -13.4282   -14.0982   -13.1587   -13.2792
   -13.7852   -1.3442   0
57  -14.4822  -13.1141  -13.7787   -13.4466   -13.6761   -13.2969   -13.6033
   -13.9252   -0.6642      1
58  -13.5522  -13.1302  -13.5444   -14.1471   -13.2994   -13.2368   -13.9776
   -14.4295   -0.9973      1
59  -14.8524  -11.9846  -13.7231   -14.2496   -13.4809   -13.0515   -13.8950
   -14.3923   -1.8284      1
…

85  -14.5994  -13.6920  -12.8539   -13.7629   -14.1699   -13.2075   -13.3422
   -13.6788  -11.9537   1
86  -14.3821  -13.6093  -12.8677   -13.7788   -14.1260   -13.3246   -13.2966
   -13.6453  -11.4304    1



3. Файл с настройками программы

#
#  Common parameters for programm "NVCLASS"
#
# # # # # # # # # # # # # # # # # # # #
# 1_1 - OnlyTest mode   , 1_2 - TestAfterLearn  mode,
# 2_1 - CheckOneVector  , 2_2 - CrossValidation mode.
#
TYPE=2_2
NDATA=9
NPATTERN=86
PatternFile=9_Norv.txt
NTEST=10
TestVector=vector.tst
NetworkFile=9.net
ResNetFname=9.net
NumberVector=57
ReportFile=Report.txt
Debug=Yes
#
# Next parameters was define in result experiments and if you will
# change it, the any characteristics of Neural Net may be not optimal
# (since may be better then optimal).


#
# # # # # # # # # # #
# 'NetStructure' must be: [NDATA,NUNIT1,1]  (NOUT=1  always)
#  value 'AUTO'-'NetStructure' will be define the programm.(See help).
#         example : [18,9,1], or [18,18,1], or [9,9,5,1]
NetStructure=[18,12,1]
#  may be:  [Gauss] or [Random]
InitWeigthFunc=Gauss
Constant=3
Alfa=0
Sigma=1.5
Widrow=No
Shuffle=Yes
Scaling=Yes
LearnTolerance=0.1

Eta=1

MaxLearnCycles=50
Loop=3
#end of list


4. Пример файла отчета.

NVCLASS report - Wed Jun 02 15:58:02 1999
    Type = 1_2
    Neural Net     - <18,12,1>
    PatternFile    - vect.txt
    Test Vector(s) - vector.tst
    ResNetFname    - 12.net
    LearnTolerance = 0.10
    InitialWeigthFunc = Gauss[ 0.0, 1.5]
      < Loop 1 >
Learning cycle result:
   NumIter = 5
   NumLE   = 3
   Error vector(s): 58, 59, 63,
+-----+------+--------+------+
|  N  |  ID  | Result |Target|
+-----+------+--------+------+
|   1 |   24 | 0.1064 |   0  |
|   2 |   25 | 0.9158 |   1  |
|   3 |   26 | 0.0452 |   0  |
|   4 |   27 | 0.0602 |   0  |
|   5 |   28 | 0.0348 |   0  |
|   6 |   29 | 0.0844 |   0  |
|   7 |   30 | 0.1091 |   0  |
|   8 |   31 | 0.0821 |   0  |
|   9 |   32 | 0.0298 |   0  |
|  10 |   33 | 0.2210 |   0  |
+-----+------+--------+------+

      < Loop 2 >
Learning cycle result:
   NumIter = 5
   NumLE   = 5
   Error vector(s): 33, 34, 55, 58, 63,
+-----+------+--------+------+
|  N  |  ID  | Result |Target|
+-----+------+--------+------+
|   1 |   24 | 0.1279 |   0  |
|   2 |   25 | 0.9929 |   1  |
|   3 |   26 | 0.0960 |   0  |
|   4 |   27 | 0.1463 |   0  |
|   5 |   28 | 0.1238 |   0  |
|   6 |   29 | 0.1320 |   0  |
|   7 |   30 | 0.1478 |   0  |
|   8 |   31 | 0.1235 |   0  |
|   9 |   32 | 0.0740 |   0  |
|  10 |   33 | 0.5140 |   1  |
+-----+------+--------+------+



5.  Файл  описания  функций,  типов  переменных  и  используемых   библиотек
   “nvclass.h”.
/*
 *  ---  Neuro classificator---
 *
 *   Common defines
 */

#include 
#include 
#include 
#include 
#include 
#include 
#include 
//#include 
//#include 
#include 


#define DefName      "nvclass.inp"

#define MAXDEF       100
#define MAXLINE      256
#define NMAXPAT      100
#define NMXINP       20
#define NMXUNIT      20

#define CONT          0

#define EXIT_OK       1
#define EXIT_CNT     2

#define RESTART      911
#define MAXEXP       700   /*  Max arg  exp(arg)  without  error  'OVERFLOW'
*/

#define Random       10
#define Gauss        20

#define OK       0
#define Error        1
#define Yes          77
#define No       78
#define Min          0    /* Find_MinMax(...)   */
#define Max          1

#define TYPE_ONE     21
#define TYPE_TWO     22
#define TYPE_THREE   23
#define TYPE_FOUR    24


int     NDATA  =  0;
int       NUNIT1 =  0;
int     NUNIT2 =  0;
int     NUNIT3 =  0;
int     NOUT   =  1;

int     NPATTERN = 0;         /* Number of input pattern*/
int     NWORK    = 0;         /* Number of work pattern*/
int    NTEST= 0;         /* Number of test pattern*/

int     result;
int     STOP = 0;

int NumOut = 250; /* Number  of  itteration,  after  which  show  result  in
debugfile. */
int Num_Iter=10;/* The parameters requred in the procecc of  */
float Percent=0.25;   /* dinamic lerning with change 'eta' */

float     LearnTolerance = 0.10;
float     TestTolerance = 0.5;

float     MAX_ERR=0.00001;   /* min error */
float     eta = 1.0;         /* learning coefficient*/
float     MIN_ETA=0.000001;

float     **Array_MinMax;
int       *Cur_Number;

float     W1[NMXINP][NMXUNIT];
float     W2[NMXUNIT];

float     PromW1[NMXINP][NMXUNIT];
float     PromW2[NMXUNIT];

float     PromW1_OLD[NMXINP][NMXUNIT];
float     PromW2_OLD[NMXUNIT];

float     Err1[NMXUNIT];
float     Err2;
float     OLD_ERROR;
float     GL_Error=0.0;

float     Out1[NMXUNIT];
float     Out2;

char NetStr[20]="Auto"; /* String with pattern of Net Structure*/

int  Type = TYPE_THREE; /* Enter the mode of work of programm */

int InitFunc =  Random;  /*  Random  [=10]  weigth  will  RandomDistribution
Gauss  [=20]  - ... GaussianDistributon  */
float      Constant    = 1;   /* RandomDistribution [-Constant,Constant]*/

float    Alfa = 0;    /* GaussianDistribution [Alfa,Sigma]*/
float      Sigma = 1; /* ...                              */
int        Widrow = No; /* Nguyen-Widrow initialization start weigth*/

int  Loop = 1;             /* Number repeat of Learning cycle */

char    *PatternFile;      /* File with input patterns*/
char    *TestVector;
char   *ReportFile="report.txt";    /* name of report file */
char       *NetworkFile;    /* Name of input NetConfig file */
char       *ResNetFname;    /* Name of output NetConfig file */

int        DEBUG = Yes;       /* if 'Yes' then debug info in  the  DebugFile
*/
char       *DebugFile="Logfile.log";  /* Name of the debug file*/

int        NumberVector = 0;     /* Number of TEST vector */
int        Shuffle = Yes;        /* Flag - shuffle the input vectors*/
int        Scaling = Yes;         /* Scaling input vector */
int        MaxLearnCycles = 1999; /* Max number of learning iteration */

FILE      *Dfp;                  /* Debug file pointer */
FILE      *Rfp;                  /* Report file pointer*/

typedef struct Pattern {
      int ID;     /* ID number this vector in all set of pattern */
      float *A;   /* pattern (vector) A={a[0],a[1],...,a[NDATA]} */
      float Target;      /* class which this vector is present*/
} PAT;

PAT     *Input;
PAT     *Work;
PAT     *Test;

/* lines in defaults file are in the form "NAME=value" */
typedef struct Default {
      char  *name;           /* name of the default */
      char  *value;          /* value of the default */
} DEF;

/* structure of statistics info about one test vector */
typedef struct Statistic {
      int     ID;        /* Primery number from input file */
      float   Target;
      float   TotalRes;  /* Total propability */
      int     Flag;      /* Flag = 1, if vector was error and = 0
                              in over case */
      float   *result;  /* Result of testing vector on current
                              iteration */
      int     *TmpFlag;  /* analog 'Flag' on current itteration */
      int     *NumIter; /* Number iteration of learning on which
                              Learning cycle  STOPED */
      int     **NumLE;  /* Error vectors after cycle of learning
                              was test*/
} STAT;

/* structure of the some result of learning cycle */
typedef struct ResLearning {
      int    NumIter;
      int    LearnError[NMAXPAT+1];       /* A[0]-count of error,
                            A[1]-ID1,
                            A[2]-ID2,...
                            A[NMAXRL]-ID?.*/
} RL;

/* function prototypes */

void       OnlyTestVector(void);
void       TestAfterLearn (void);
void       CheckOneVector ( void );
void       CrossValidation ( void );

DEF        **defbuild(char *filename);
DEF        *defread(FILE *fp);
FILE     *defopen (char *filename);
char     *defvalue(DEF **deflist, const char *name);
int            defclose(FILE *fp);
void     defdestroy(DEF **, int);
void     getvalues(void);

void       Debug (char *fmt, ...);
void       Report (char *fmt, ...);

void       Widrow_Init(void);
int        Init_W( void );
float      RavnRaspr(float A, float B);
float      NormRaspr(float B,float A);

void       ShufflePat(int *INP,int Koll_El);

float      F_Act(float x);
float      Forward (PAT src);
int        LearnFunc (void);
int        Reset (float ResErr, int Cnt, int N_Err);
void       Update_Last (int n, float Total_Out);
void       Update_Prom1 (int n);
void       Prom_to_W (void);
void       Update_All_W (int num, float err_cur );
void       Init_PromW(void);
void       Prom_to_OLD(void);
int        CheckVector(float Res, PAT src);
int        *TestLearn(int *src);


RL         FurtherLearning(int   NumIteration,
                    float StartLearnTolerans,
                    float EndLearnTolerans,
                    RL    src);



STAT       *definestat (PAT src);
STAT       **DefineAllStat (PAT *src,int Num);
void       FillStatForm (STAT *st, int iteration, float res, RL lr);
void       FillSimpleStatForm (STAT *st, float res);
void       destroystat ( STAT *st, int   param);
void       DestroyAllStat (STAT **st, int Num);
void       PrintStatHeader(void);
void       printstat(STAT *st);
void       PrintStatLearn(RL src);
void       PrintTestStat(STAT **st, int len);
void       PrintErrorStat (STAT **st,int Len);


int        DefineNetStructure (char *ptr);
void       getStructure(char buf[20]);

PAT        patcpy (PAT dest, PAT src);
PAT*       LocPatMemory(int num);
void       ReadPattern (PAT *input, char *name,int Len);
void       FreePatMemory(PAT* src, int num);
void       ShowPattern (char *fname, PAT *src, int len);
void       ShowVector(char *fname,PAT src);
float      getPatTarget (float res);


PAT*  DataOrder (PAT* src,int Len, int Ubit, PAT* dest, PAT* test);
void FindMinMax (PAT *src,int Dimens, int Num_elem, float **Out_Array);
void       ConvX_AB_01(PAT src);

int        *DefineCN (int len);
int        getPosition (int Num, int *src, int Len);
void       DestroyCN (int *src);
void       ShowCurN (int LEN);

float      **LocateMemAMM(void);
void       FreeAMM (float **src);

void       WriteHeaderNet(char *fname, float **src);
void       WriteNet (char *fname,int It);
void       ReadHeaderNet(char *fname, float **src);
int        ReadNet (char *fname, int It);
FILE       *OpenFile(char *name);
int        CloseFile(FILE *fp);

/*  End of common file  */



6. Файл автоматической компиляции программы под Unix -“Makefile”.
CC=    cc
LIBS= -lm

OBJ= nvclass.o

nvclass: $(OBJ)
       $(CC) -o nvclass $(LIBS) $(OBJ)

nvclass.o:  nvclass.c



7.  Основной модуль -  “nvclass.с”
/*
 *  Neuron Classificator ver 1.0
 */

#include "common.h"

/*  =========================
 *     MAIN MODULE
 *  =========================
 */
void main (int argc, char *argv[])
{ int i;
  char buf[MAXLINE], PrName[20], *ptr;
  time_t tim;
  time(&tim);

  /*  UNIX Module  */

  Dfp = OpenFile(DebugFile);
  strcpy(buf,argv[0]);
  ptr = strrchr(buf,'/');
  ptr++;
  strcpy(PrName,ptr);
  Debug ("nn'%s' - Started %s",PrName,ctime(&tim));

  getvalues();
  Rfp = OpenFile(ReportFile);

  DefineNetStructure(NetStr);  /* NetStr string from input file */
  getStructure(buf);

  Debug ("nNeyral net %s",buf);
  Input = LocPatMemory(NPATTERN);
  Work  = LocPatMemory(NPATTERN);

  Array_MinMax = LocateMemAMM();
  Cur_Number   = DefineCN (NPATTERN);

  printf("nMetka - 1");
  if (Type == TYPE_ONE)
      OnlyTestVector ();
  if (Type == TYPE_TWO)
      TestAfterLearn ();
  if (Type == TYPE_THREE)
      CheckOneVector ();
  if (Type == TYPE_FOUR)
      CrossValidation();

 time(&tim);
 Debug ("nn%s - Normal Stoped %s",PrName,ctime(&tim));

 CloseFile(Dfp);
 CloseFile(Rfp);
 FreeAMM (Array_MinMax);
 DestroyCN (Cur_Number);
 FreePatMemory(Input,NPATTERN);
 FreePatMemory(Work, NPATTERN);
}

/*
  *  ^OnlyTestVectors  -  read  net  from   (NetworkFile)   and   test   the
TestVector(s)
 */
void OnlyTestVector(void)
{  char buf[MAXLINE+1];
   STAT **st, *stat;
   int i,j;
   float Res;

  Debug ("nOnlyTestVector proc start");
  Debug ("n     NPATTERN = %d",NPATTERN);
  Debug ("n     NTEST    = %d",NTEST);

  Test = LocPatMemory(NTEST);
  ReadPattern(Test,TestVector, NTEST);
/*  ShowPattern ("1.tst",Test,NTEST);*/
  PrintStatHeader();
  st = DefineAllStat (Test,NTEST);
  ReadHeaderNet(NetworkFile,Array_MinMax);
  if (Scaling == Yes)
   { for (i=0;i< Loop ; i++)
    { Debug("n----/ STEP = %d /-----",i+1);
      Report("n < Loop %d >   ",i+1);
      ReadNet(NetworkFile,i+1);
      for (j=0;j< Len; i++)
    {fscanf(DataFile,"%d",&id);
     Ptr.ID = id;
     for (j=0; j < NDATA; j++)
      { fscanf (DataFile,"%f",&tmp);
        Ptr.A[j]=tmp;
      }
     if ( Flag )
       tmp = -1;
     else
       fscanf(DataFile,"%f",&tmp);
     Ptr.Target = tmp;
     input[i]=patcpy(input[i],Ptr);
    }
    fclose(DataFile);
}
/*
 * ^LocPatMemory - locate memory for (PAT *)
 */
PAT* LocPatMemory(int num)
{ int i;
  PAT *src;

  src = (PAT *) malloc (num * sizeof(PAT));
  for (i=0; i< num; i++)
   {src[i].ID = -1;
    src[i].A = (float*) malloc (NDATA * sizeof(float));
    src[i].Target = -1.0;
   }
  return (src);
}

void FreePatMemory( PAT* src, int num )
{ int i;

  for (i=0;i x/32768
 *          -> x from [0,1]
 */
float RavnRaspr(float A, float B)
 {float x;
   x = (B-A)*rand()/(RAND_MAX+1.0) + A;
   return x;
 }
float NormRaspr(float A,float B)
 { float mat_ogidanie=A, Sigma=B;
   float Sumx=0.0, x;
   int i;
   for (i=0;i<12;i++)
    Sumx = Sumx + RavnRaspr(0,1);     /* from R[0,1] -> N[a,sigma]*/
   x = Sigma*(Sumx-6) + mat_ogidanie;

  return x;
 }

int Init_W ( void )
{ int i,j;
  float A, B;
  time_t t,t1;
  t = time(NULL);
   t1=t;
  /* restart random generator*/
  while (t==t1)
    srand((unsigned) time(&t));

  if (InitFunc == Random)
   { A = -Constant;
     B =  Constant;
     Debug ("nInit_W ()  --- Start (%ld))",t);
     Debug ("n   InitFunc=Random[%4.2f,%4.2f]",A,B);
     for(i=0; i<=NDATA; i++)
      for(j=0; j<= NUNIT1; j++)
       W2[j]=RavnRaspr(A,B);
   }
  if (InitFunc == Gauss)
   { A =  Alfa;
     B =  Sigma;
     Debug ("nInit_W ()  --- Start (%ld))",t);
     Debug ("n   InitFunc=Gauss[%4.2f,%4.2f]",A,B);
     for(i=0; i<=NDATA; i++)
      for(j=0; j<= NUNIT1; j++)
       W2[j] = NormRaspr(A,B);
   }
 if ( Widrow == Yes )
   Widrow_Init();
 Debug ("nInit_W - sucsefull ");
 return OK;
}

/*  LearnFunc  */
int LearnFunc (void)
{ int  i, j, n, K, NumErr=0;
  int  num=0;
  float err_cur=0.0, Res=0;
  time_t tim;
  float  ep[NMAXPAT];

  GL_Error=1.0;
  time(&tim);
  Debug ("nLearnFunc ()  ---  Started");
  Debug ("n     eta 



Назад


Новые поступления

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

281311062 © il.lusion,2007г.
Карта сайта