Değiştirilmiş kohonen ağı simülasyon programı
A Simulation program for modified kohonen network
- Tez No: 39102
- Danışmanlar: PROF.DR. UĞUR ÇİLİNGİROĞLU
- Tez Türü: Yüksek Lisans
- Konular: Elektrik ve Elektronik Mühendisliği, Electrical and Electronics Engineering
- Anahtar Kelimeler: Belirtilmemiş.
- Yıl: 1993
- Dil: Türkçe
- Üniversite: İstanbul Teknik Üniversitesi
- Enstitü: Fen Bilimleri Enstitüsü
- Ana Bilim Dalı: Belirtilmemiş.
- Bilim Dalı: Belirtilmemiş.
- Sayfa Sayısı: 139
Özet
ÖZET Bu çalışma Değiştirilmiş Kohonen Devresi'ni fonksiyonel olarak simüle eden bir programın hazırlanmasıdır. Adı geçen devre genel olarak Neural Networks olarak anılan devreler sinirinin bir alt grubu olan Kohonen Devresini temel alarak tasarlanmıştır. Kohonen devresi ile en önemli farklılığı, hücrelerin birbirleri ile olan ilişkilerinde katsayılar sabit ve tüm hücre çiftleri için aynıdır. Adaptasyon sadece hücrelerin girişlerle olan ilişkilerini değiştirebilir. Bu özellik de devrenin uygulama alanını Kohonen Devresine oranla daraltır. Simülasyon programı C++ dili ile nesne-yönelimli programlama yöntemleri ile yazılmıştır. Bunun sonucunda programın kaynak koduna sahip olan her programcı var olan programı çok az değiştirerek kendi istediği eklemeleri yapabilir, örneğin Synapse ve Node nesneleri yerine farklı bir nesne koyularak yepyeni bir devre elde edilebilir. Programın tüm kaynak kodu EK A'da verilmiştir. Program çalıştırılarak sonuçlan gözlenmiş, istenilen temel özellikleri sağladığı görülmüştür.
Özet (Çeviri)
A SIMULATION PROGRAM FOR MODIFIED KOHONEN NETWORK SUMMARY The purpose of this work is to develop a user-friendly software package to simulate a variant of the Kohonen Neural Network. The simulation is said to be functional; that is, it does not take into account physical aspects of the real circuit, because the latter is already realized and found to be operational electronically. For example the timing of the devices are not a problem because the circuit is synchronous and test results show that the actual circuit operates as it is supposed to The bottleneck of the real circuit is the number of functional elemente. The small number of neural cells are not appropriate to show the functionality of the circuit. But in a simulation, one can test a circuit of any size if there exists enough memory. Before going on to the special aspects of the circuit, it is necessary to discuss what is the Kohonen Neural Network, or generally what is a Neural Network. Neuron-like circuits also known as Neural Networks are the subject of extensive research studies held by different scientists, such as engineers, neurologists and biologists. Some of the objectives of these works include building models of human brain, understanding its inner workings, and of course building machines that imitate neural structures which might solve some problems that are impossible or impractical to be solved by conventional computers. A Neural Network is a structure made by simple processing elements which are massively interconnected. Each processing element computes some function of its inputs (and its internal variables if any) and takes some action depending on the result. Each processing element stores a weight value for each processing element and each input that it is in relation. To compute its function, the processing element multiplies the inputs from the outside world and the ones from other elements and takes the sum of these multiplication. It then compares the result to its threshold, and decides the value of its output depending on that comparison. This computation is the one used by Hopfield type Neural Networks. In different neural structures, the computation method may vary. The function of the processing element is not constrained to the example above. It may be any function that gives some useful results. The main point is: the weight values are not required to be constant. Most implementors prefer to have variable weights. The efficiency of the network is the result of this property. The rules of modification are also variable and there are many networks known by the name of their“learning rules”such as Hopfield Networks. There are many learning rules that are widely used. Some examples are: * Hebb learning * Widrow learning* Kohonen learning * Grossberg learning * Kosko/Klopf learning Some learning rules necessitates external control. In this kind of networks the external controller or the teacher gives some input to the network along with the expected output; the network processes the input and evaluates an output; then it compares the latter with the expected output and changes its weights (depending on the learning rule applied) to rninimize the error. This process continues until an acceptable error level is reached. These learning rules are called supervised learning rules. The alternative is unsupervised learning. This is the scheme used in Kohonen Networks and detailed explanation will be given with the latter. One of the main differences among neural network types is the way the weights are stored and updated. The weights may be stored in digital or analog forms. Another difference is the technology used to implement the network. The network may be an electronic circuit, an optical machine, a biochemical alien or simply a sofhvare simulation. The encoding of the information is another issue. Signals may be voltage levels, frequency of a voltage pulse, a current, a charge packet etc. These choices depend on the devices chosen for the implementation of the network. The device chosen for the implementation of the synaptic function of Modified Kohonen Network is a charge pump, thus the signals are in form of charge packets. For the simulation program, the nature of the signal is not an important issue. The Kohonen Network is a self-organizing network; that is, weight values are changing without operator intervention. The decision to change a value is made by the network, and the criteria for this decision is not some externally applied“expected”output. The network evaluates ite internal model of the input space and responds to external stimuli based on this model. Kohonen Network starts to operate with random weight values. During the training phase a large number of inputs are applied and the network changes its weights based on a race among the processing elements. Each processing element subtracts its weight values from the respective inputs. Then, the vector that is closest to the input vector is evaluated. The processing element which has the closest weight vector to the input vector wins the race and updates its weights. In some applications, the neighbours of the winner processing element are also permitted to change their weights. Using this method, the network forms some clusters that represent input classes. After the training phase, the network can classify its inputs and take some action depending on this classification. The most important issue of this method is the selection of the inputs. For proper operation, inputs must be chosen carefully to represent the classes that the network is supposed to recognize. The subject of this work is a modified version of the Kohonen Network. This network consists of a winner-take-all circuit which chooses the winner processing element, and a synapse matrix. Every synapse has a storage capacitance that keeps its weight value, a computation unit which takes the absolute value of the difference between the input and the weight, and an update circuitry which is enabled when the processing element is the winner of the race. This network has digital outputs fed back to the update circuitry of corresponding nodes. At any time, only one of the outputs is active, which is the winner. When a processing element wins the race, its update circuitry is enabled to change the value of the vector stored in its synapses. The rule used to change the weight values is to add an amountproportional to the difference of the weight value and the input, to the weight value, he difference is a signed value and may increment or decrement the weight. The ratio of proportionality is chosen to be near one at the beginning. This serves to converge to the desired value easily. Then, the coefficient is decreased to fine tune the weight value. For the proper operation of the network, each weight vector should be equally probable to win the race. Because of the leakage of the storage capacitance, the weight value decreases continuously. If it is not updated frequently, the weight value will be lost, and the performance of the network will degrade seriously. The purpose of this work is to functionally simulate this circuit to realize a bigger network than the sample chip can, and to determine the number of necessary processing elements to solve a problem. The software can train, simulate and view the results. The program is written in C++ using Borland C++ 2.0 compiler. All components of tne program are written as C++ objects to provide flexibility for further improvements. The drawback of this approach is the overhead that is added to the program by the object-oriented approach. For example, the implementation of the synapse matrix might be as an array of synapse structures, but actually it is implemented as a linked list of synapse objects. Because of this approach, the dynamic allocation became easier, out the memory overhead is increased. The network may be analyzed as an ideal or real circuit. The difference is the weight decrease due to the charge leakage on the weight capacitances. The user can change the value of leakage coefficient P to see the effect of new technologies with different leakage characteristics. It is also possible to change the synaptic function of the network to take the square difference of inputs and weights. The number of inputs and outputs are variable and the size of the network depends on the memory of the computer. The user interface of the program is an event driven graphical menu system. Every command of the user is entered to the program via this user interface. To add flexibility to the simulator, the menu system is also designed as objects, and future additions to the menu system is very easy. A user that changed any part of the simulator may add or delete some menu choices or even menus. New choices or menus will be defined as additional choice or menu objects, and the system will accept them easily. At any time the user can view the state of the weights, save it for later use and load it from a file. The major properties of the network such as number of inputs and outputs, etc. may be stored m a setup file (with a.stp extension); the state of the circuit may be stored in a state file (with a.stt extension). These files are ASCII files and can be edited to change the properties of the network, or to by-pass the training phase. Via the separation of the setup, state and input files, the user can perform 'what if?' analysis by changing the setup files, state files or simply the order of processing of the input files. These files offer many combinations to the user, and helps the evaluation of the right circuit. The most critical part of the program is the generation the random inputs. These inputs must represent the classes that the circuit is supposed to recognize. The input generator supplies the circuit with random numbers that have the mean and standard deviation defined in the input file (with a.inp extension). The distribution function is Gaussian and method used to generate these numbers is called Central Limit Theorem. This theorem holds that the sum of uniformly distributed random numbers has a Gaussian distribution. Based on this theorem, agenerator object consists of 24 random integer generator objects. An integer generator object is composed 16 random bit generators. The number of integer generators is related to the accuracy of the standard deviation. The current minimum standard deviation is 0.06. If it is necessary to have smaller standard deviations, the number of random integer generators should increase. The Gaussian distribution is the only function applicable for the moment, but the user may replace it with any distribution function by simply deriving an object from the Gauss object. The new object will inherit the interface to other objects from the Gauss object, and will only implement the part that computes the distribution function. Because of the memory problems, an alternative Gaussian number generator object is written, which has only one random integer generator. This generator is activated 24 times to have approximately the same result. To show the functionality of the program, two demonstration scenarios are experimented. To test the simulation part, a circuit of three outputs and one input is tested. The input to this network is sinus function. The weight values of the outputs are 0.16667, 0.5 and 0.83333 respectively. The resulting output file is graphically visible along with the input signal. The Demol choice of Demos Menu shows the result of this simulation. The sinus function is added to a D.C. value of 0.5. When the sinus starts with zero, the input value is 0.5, and the closest weight belongs to the second processing element. Thus, the output of this element raises to one, while the output of the others stays at zero. When the sinus reaches 0.33334, the weight that is closer to the input belongs to the third processing element, thus its output raises to one, and the others are zero. When the sinus passes the peak value, and reaches 0.33333, the first one goes active again, and the others are zero. When the sinus decreases enough, the first one becomes active, and the rest is zero. This pattern repeats itself as times goes. The second circuit has three inputs and ten outputs. This circuit is supposed to map RGB inputs to the closest of the ten colors represented by the outputs. RGB values are in the range 0-255 and are normalized by division by 255. This is visualized as a unit cube in RGB space. The unit cube is assumed to be composed of eight identical cubes. Outputs of the circuit represent black (0.0, 0.0, 0.0), white (1.0, 1.0, 1.0) and colors that corresponds to the centers of these cubes. The simulation is done with the input file describing this scenario, weight values and means defined in the input file may be seen, and the interactive simulation can start. When the Demo 2 choice of Demos Menu is selected, the program starts to train the network with the predefined values that are corresponding to the colors represented in the demonstration. This training finishes when the error of the circuit becomes acceptable for the demonstration. This criteria is applied by trial and error methods for this demonstration, but a user may add this check to the program for a specific circuit model. After the training the user is asked to give three numbers in the range [0, 255] that represent RGB levels of the color tested. The program scales these values with 255 to obtain a real value in the range [0.0, 1.0]. The circuit is simulated with these values as inputs, and the results are shown graphically. The corresponding point in the RGB space is shown with the color of this point. The RGB space is shown by a three dimensional Cartesian reference system.The demonstrations show that the program is capable to simulate a wide range of Modified Kohonen Network circuits. Because of the object-oriented nature of the simulator, training takes a long time. But it is possible either to by-pass the training by manually editing the state file, or to modify the learning coefficient to speed up the training. The possibility to save and restore a trained circuit helps the user to save time. The graphical user interface helps the user to model the simulator's inner workings easily and shortens the learning period. ît adds flexibility for the further enhancements of the program by any user mat has the source form of the program. The source form of the program is given in the appendix of this thesis. And the readers that would like to add their extensions are encouraged.
Benzer Tezler
- Yapay sinir ağlarında öğrenme algoritmalarının analizi
Analysis of learning algorithms in neural networks
SEVİNÇ BAKLAVACI
Yüksek Lisans
Türkçe
1994
Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve Kontrolİstanbul Teknik ÜniversitesiDOÇ.DR. LEYLA GÖREN
- Lojistik sistemlerin yapay sinir ağları ile modellenmesi, gerçeklenmesi ve kontrolü
Modeling, implementation and control of logistics systems using artificial neural networks
MURAT ERMİŞ
Doktora
Türkçe
2005
Endüstri ve Endüstri Mühendisliğiİstanbul Teknik ÜniversitesiEndüstri Mühendisliği Ana Bilim Dalı
PROF.DR. FÜSUN ÜLENGİL
- Uydu görüntü verisinin yapay sinir ağları ile sınıflandırılması
Classification of satellite imagery data with artificial neural networks
COŞKUN ÖZKAN
Doktora
Türkçe
2001
Jeodezi ve Fotogrametriİstanbul Teknik ÜniversitesiJeodezi ve Fotogrametri Mühendisliği Ana Bilim Dalı
DOÇ.DR. FİLİZ SUNAR ERBEK
- Modified hilbert huang transform for data analysis and its application to vibration signals
Değiştirilmiş hilbert huang dönüşümü ile veri analizi ve titreşim sinyallerine uygulaması
AHMET ÖZTÜRK
Doktora
İngilizce
2011
Elektrik ve Elektronik Mühendisliğiİstanbul Teknik ÜniversitesiElektrik Mühendisliği Ana Bilim Dalı
PROF. DR. SERHAT ŞEKER
- Değiştirilmiş ateş böceği algoritması ve veri yoğunluğu kümelemesine uygulanması
Improved firefly algorithm and apply to clustering based on density
AREF YELGHI
Doktora
Türkçe
2018
Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve KontrolKaradeniz Teknik ÜniversitesiBilgisayar Mühendisliği Ana Bilim Dalı
PROF. DR. CEMAL KÖSE