Отображение кластеров.
Кластером будет являться группа векторов, расстояние между которыми внутри этой группы меньше, чем расстояние до соседних групп. Структура кластеров при использовании алгоритма SOM может быть отображена путем визуализации расстояния между опорными векторами (весовыми коэффициентами нейронов). При использовании этого метода чаще всего используется унифицированная матрица расстояний (u-matrix). При использовании этого метода вычисляется расстояние между вектором весов нейрона в сетке и его ближайшими соседями. Затем эти значения используются для определения цвета, которым этот узел будет отрисован. Обычно используют градации серого, причем чем больше расстояние, тем темнее отрисовывается узел. При таком использовании узлам с наибольшим расстоянием между ними и соседями соответствует черный цвет, а близлежащим узлам – белый.
Описание реализации сети
В программе реализован алгоритм SOM, состоящий из 64 нейронов. Карта представляет собой прямоугольную сетку 8х8 элементов. Количество входов произвольно и задается размерностью векторов из обучающего множества.
При инициализации весам присваиваются малые случайные значения (от 0 до 1), при этом веса не нормируются.
Функция соседства нейронов h(t) используется Гауссова с ,убывающей линейно от 8 до 0.0001 .
Cкорость обучения a(t) убывает линейно от 0.9 до 0.1 .
Рекомендуемое количество эпох обучения – более 32000 (500*количество нейронов)
На карте отображаются как принадлежность вектора кластеру, так и расстояние между кластерами (extended Kohonen map). Степень схожести кластеров показано путем окрашивания ребер между нейронами в различные оттенки серого. Более светлые показывают схожесть, более темные – различие кластеров (имеется в виду расстояние между весовыми векторами соседних нейронов в евклидовом пространстве). Используется 16 градаций серого цвета.
Работа с программой
-
решетка справа на экране карта (SOM) 8x8
-
слева список векторов – обучающее множество (заполняется после загрузки векторов)
-
внизу слева можно вводить произвольный вектор (должно быть задано обучающее множество)
-
внизу справа задается количество эпох обучения (по умолчанию 32000)
подробнее:
-
На карте отображаются поданные на вход сети вектора. Ребра между соседними клетками (нейронами) показывают степень схожести этих нейронов. Светлее ребро – более схожи нейроны, темнее – более различны. Раскраску можно включить/выключить в пункте меню “Show\Map as extended”.
-
“Vectors list (training set)”
Список векторов отображает текущее обучающее множество. Вектора загружаются из файла (“File\Load set of vectors…”). Слева перед точкой стоит номер вектора (для наглядности первые 26 векторов представлены буквами английского алфавита).
Чтобы подать желаемые вектора на вход сети, необходимо выделить один/несколько векторов и нажать кнопку “Give vectors to net”. После чего они появятся на карте справа. Вектора подаются и отображаются последовательно (верхний, затем 2-ой сверху…). В случае отнесения 2-х и более векторов к одному кластеру, на карте будет отображен только последний вектор, принадлежащий этому кластеру.
-
“Vector”
В поле ввода можно задавать произвольный вектор, используя только числа и знак ‘-‘. Элементы вектора разделяются пробелом. Задание вектора возможно только при загруженном обучающем множестве векторов и количество его элементов должно совпадать с количеством входов сети.
После нажатия кнопки “Give vector to net” вектор добавляется к обучающему множеству (но участвовать в обучении будет только после переобучения сети) и отображается на SOM карте.
-
“Training”
В окне ввода задается количество эпох обучения. По умолчанию используется 32000 эпох.
Описание меню:
“File”
“Clear Kohonen map” - очищает карту (визуально, данные при этом не затрагиваются)
“Load set of vectors…” - загрузка файла с векторами обучающего множества
“Load map weights …” - загрузка файла с весами сети
“Save map weights …” - сохранение файла с весами сети
“Save Kohonen map” - сохранение файла с отображением текущего состояния карты
“Exit” - выход из программы
“Process”
“Train” - обучение сети. Выполняется только после загрузки обучающего множества
“Stop training” - прерывание обучения и очистка весов сети.
“Clasterize” - подать на вход сети все вектора из обучающего множества (только при обученной сети)
“Show”
“Map as extended” - включает/отключает раскраску ребер карты
Структура файлов:
Файлы с обучающим множеством (*.set) :
Состоят из чисел, знаков ‘-‘ и пробелов.
Первые два числа – количество векторов и размерность вектора.
Остальные числа – элементы векторов, разделенные пробелами и символами ‘конец строки’.
Элементы векторов – целые числа.
Файлы с весами сети (*.wgh) :
Аналогично предыдущим, но элементы – вещественные.
Файлы с отображением текущего состояния карты (*.res) :
Текстовой файл, представляющий схему карты.
Проведение эксперимента:
Теперь проведём эксперимент с файлом IRIS_4.set на примере задачи классификации ирисов Фишера.
-
Загрузить обучающее множество из 32 векторов ( “File\Load vectors set...” файл “IRIS_4.set ” ). Эти векторы отобразятся в окне "Vectors list".
Т.к. в задании необходимо исследовать зависимость качества функционирования самоорганизующейся карты Кохонена от количества эпох обучения, проведём эксперимент с разными эпохами
а)
-
Загрузить веса сети ( “File\Load map weights…” файл “wght5k.wgh”, веса после 5000 эпох обучения)
-
Затем запустить обучение (“Process\Train”)
-
Выделить в окне "Vectors list" требуемые векторы (которые будут участвовать в кластеризации) и нажать "Give vectors to net". Кластеризация отобразится на карте.
-
Ввести произвольный вектор в поле “Vector” и нажать "Give vector to net". Сеть отнесет его к какому-либо кластеру и отобразит его. Его номер можно посмотреть в списке векторов, это будет последний вектор в списке.
Сохраним карту и веса:
Веса:
64 4
61.8929 28.9328 41.0104 12.835
64.1392 29.0747 43.5397 13.2717
65.6928 28.9471 45.867 13.9928
68.2766 30.2241 47.893 14.6381
67.8218 30.3878 50.8476 18.3313
70.9679 30.4313 57.1579 19.3763
74.6844 30.3919 61.7449 20.6379
77.0934 31.6338 66.5857 21.5501
59.2397 33.9536 29.618 8.43112
63.3564 31.2359 39.9742 12.2969
65.2151 30.9305 44.7565 14.3974
65.5074 30.349 47.2361 15.9638
67.6262 30.6784 51.3468 21.9774
68.3022 30.9321 54.7233 21.1442
71.2408 31.3052 59.3609 20.1176
72.5944 33.5316 61.567 22.7689
55.0922 38.6092 16.4802 3.29703
57.5485 36.1932 23.9825 6.2925
62.5801 31.2924 42.4768 13.4525
62.0619 31.0424 46.5058 15.3231
62.7874 31.1021 50.0555 19.2818
63.5209 32.8887 54.5451 23.1701
65.7675 31.7413 57.3046 23.2566
67.6366 31.977 58.0443 22.1513
54.672 40.3836 13.965 2.9295
54.0394 37.1796 16.0256 3.08603
57.4901 32.2241 34.7233 10.6969
59.6873 31.5895 45.0895 15.5413
59.5487 30.5173 47.8703 17.8031
59.9589 30.1764 50.9849 20.3365
63.4868 29.7693 54.8469 20.0368
64.8669 27.4732 56.6719 18.7586
53.3412 36.3653 14.3966 2.05567
52.13 34.5445 15.1901 2.29118
54.6944 31.8792 28.9283 8.53333
57.1041 29.6325 41.7066 13.4286
56.4389 29.385 44.7231 15.2661
56.6828 28.3099 48.4984 18.9545
58.3548 27.038 50.8901 19.0101
62.4548 26.8726 53.4159 17.4789
49.9815 34.3408 13.8833 2.1936
50.3837 34.2884 15.8383 4.16903
53.3852 31.0926 26.6088 7.80996
56.643 28.0257 37.9502 12.4992
56.2409 27.409 41.5509 13.1012
54.0851 26.5799 44.9985 15.7392
59.8652 26.9192 49.2617 16.6308
62.4691 26.9893 49.3861 17.4356
46.9472 32.9182 12.5811 2.10558
48.2547 32.6932 15.4076 2.29598
51.904 29.0174 25.5742 6.7305
55.9766 25.91 35.3807 10.493
54.6048 25.2649 39.5283 12.7203
56.8982 26.8704 43.7282 12.8186
60.4251 27.0924 46.9094 13.3904
61.9715 24.4965 48.9836 15.1228
44.1829 29.5198 12.803 1.92217
47.9161 30.5876 14.7107 2.11272
49.9104 28.0218 22.6193 5.28843
50.7713 23.6518 32.9402 10.4031
54.6438 24.0954 37.7067 11.032
57.6693 25.8571 40.7868 11.4455
60.1867 24.8903 44.3548 12.701
62.1786 22.9892 45.3256 14.1781
Карта Кохонена:
- - C - - - - -
- - - - G - - -
- - - - - - - -
- - - - - - - -
- - - - - - - -
- - - - - - - E
- - - - - - - -
126 - - - - - - -
Теперь попробуем проэксперементировать с другими весами:
б)
Загрузим веса сети ( “File\Load map weights…” файл “wght32k.wgh”, веса после 32000 эпох обучения)
Веса:
64 4
44.87 24.3533 12.9968 2.78508
43.6752 29.8397 12.5762 1.65789
46.271 34.0538 12.0995 2.21093
49.9847 32.4899 12.7471 2.03921
50.7312 34.8136 14.3844 2.08102
52.2468 37.3286 15.1969 2.49381
53.2463 39.7435 13.7782 2.86052
56.3941 42.4183 14.0236 2.81713
47.2208 27.8691 16.5387 3.80792
47.4037 30.7866 13.9296 2.29004
48.831 30.7196 15.5429 1.86394
48.04 33.9545 17.614 2.01755
50.2752 34.2014 16.2366 5.12188
54.1151 34.1533 15.7659 2.7094
52.5992 38.424 17.8527 3.95415
56.8351 38.1571 16.9095 3.01924
50.9373 24.8428 30.1546 10.7902
51.7811 27.2815 26.0844 6.816
52.1389 29.3574 24.7544 5.59682
53.0056 31.0585 25.8971 6.47728
55.1557 32.0213 27.8941 8.58532
57.6944 32.7801 27.571 7.96933
60.8164 32.9214 33.8465 9.93202
63.1318 33.3133 35.9391 10.4825
49.4706 22.8712 33.4633 10.0045
55.7589 24.7731 36.5453 10.3186
58.0002 26.7303 39.9195 11.3352
60.7959 27.7175 40.4291 12.9928
60.5742 29.4836 42.5926 13.9804
64.0084 29.3329 43.3086 13.2613
66.2875 29.9648 44.6466 14.0574
68.5712 31.4747 46.9725 14.4408
54.0166 27.9154 37.5545 13.4473
55.2305 24.2565 39.7628 12.5312
59.9133 22.0976 40.033 10.088
62.5907 22.6951 44.387 13.7377
60.7903 29.0344 46.26 13.6887
63.3948 32.5074 46.237 15.6037
66.9498 30.059 49.6674 16.9002
68.5318 29.649 48.5616 14.5765
55.9907 28.0043 42.4386 12.5586
51.3334 25.398 44.5515 15.0896
58.2554 24.7092 46.9501 14.9491
61.8242 23.8655 49.3779 15.0255
62.8883 25.964 49.503 18.5349
64.9768 31.034 51.4688 19.995
68.1826 30.4898 52.725 22.1899
73.0122 29.0483 60.8935 17.8789
55.6909 29.2473 44.9885 14.2426
57.1905 28.4332 47.1406 16.3778
57.4076 26.4914 50.3902 19.4432
61.553 26.899 53.2509 14.8249
63.9986 30.0085 55.283 18.0382
63.1672 33.0684 54.027 23.212
69.2856 31.3107 58.4954 22.3048
76.6405 28.4938 66.315 21.0818
59.8322 33.6969 45.1415 16.0299
59.6622 30.4536 49.1835 18.0007
57.5555 28.0774 50.4193 22.5397
63.472 27.0915 53.2929 19.0726
65.7002 26.4244 57.1869 19.5446
66.3919 32.0572 57.0842 23.5992
71.6368 35.2347 60.8556 24.453
77.6601 37.2712 66.0187 21.2985
Карта Кохонена:
126 - - - - - - -
- - - - - - - -
- - - - - - - -
- - - - - - C -
- - - - - - - -
- - - - - - G -
- - - E - - - -
- - - - - - - -
Загрузим веса сети ( “File\Load map weights…” файл “wght64k.wgh”, веса после 64000 эпох обучения)
Веса:
64 4
54.1829 34.1916 15.5917 2.66903
50.5384 34.9207 13.9625 2.10738
49.999 32.6562 13.2987 2.00283
46.0077 34.6106 12.722 2.66992
43.6239 30.433 12.4164 1.62378
45.0145 23.1646 13.0232 2.97779
49.003 23.7785 27.5642 8.07657
49.529 23.2319 33.1597 10
53.2343 39.7621 13.7687 2.84848
51.6915 37.4733 15.3497 2.62044
50.2826 34.0757 16.2825 4.99885
47.9966 33.9892 17.6619 2.00173
46.4919 31.7182 14.866 2.0093
48.8456 30.4068 14.7938 1.84522
51.1757 25.0705 30.1649 10.8953
56.4932 25.4995 35.496 10.0031
56.6847 42.2909 13.867 2.84873
56.169 38.2767 16.9965 3.27473
51.0813 37.8983 19.0631 4.05094
53.0527 32.2716 25.0038 5.81025
50.7363 30.4536 20.7244 4.55383
53.6286 29.2251 32.3868 9.55976
53.5365 27.7456 37.862 13.6056
55.2086 24.4255 39.5953 12.3867
60.9073 37.2357 26.3089 7.06449
61.1147 33.3956 32.6654 9.36796
61.0865 28.0988 40.0401 12.9798
63.0805 29.0023 43.0006 13.0019
59.0395 29.9644 42.091 14.9293
56.7671 29.5439 41.5612 12.4831
55.3155 26.3159 43.3682 12.3155
57.9999 26.6882 40.0163 11.2954
69.7233 31.7222 47.5554 14.277
67.5695 29.2874 47.5713 14.4299
66.2434 29.9477 44.5914 14.1564
62.4837 32.9292 45.6878 15.6366
60.6541 28.6826 46.175 13.4444
55.8365 29.2841 45 14.2842
49.5511 25.1517 44.8837 16.7013
59.952 22.0651 40.0415 10.0584
72.0097 29.9599 57.9848 16.115
67.1066 25.1684 57.8987 17.9746
67.0023 29.9834 49.9908 17.0272
63.2902 31.0958 48.7532 17.9267
61.1059 29.2774 48.3833 17.9997
58.9907 30.8964 49.6163 18.0012
57.795 25.9595 47.4496 16.1209
62.4414 22.4442 44.5577 14.1109
76.7288 28.2219 66.0813 22.2037
72.278 29.8059 60.8489 19.0933
68.1104 30.4922 52.8563 22.1011
64.7304 31.4934 51.7933 20.8096
61.4819 29.1279 51.8982 19.7115
57.0798 26.9354 50.0798 20.1695
61.1019 27.3596 50.9953 15.6645
60.0176 22.0217 49.99 15.0083
77.758 37.9715 65.853 21.2392
71.9408 35.608 60.9391 24.6465
66.9384 31.7502 57.3349 22.6204
62.6845 33.694 56.5906 23.9894
64.138 29.2404 55.5498 19.6712
63.866 27.0413 52.9935 19.003
61.1504 26.1436 55.6134 14.0904
63 25.7472 49.3863 17.5851
Карта Кохонена:
- - - - - 126 - -
- - - - - - - -
- - - - - - - -
- - - - - - - -
- - C - - - - -
- - - - - - - -
- - G - - - E -
- - - - - - - -
Загрузим веса сети ( “File\Load map weights…” файл “wght128k.wgh”, веса после 128000 эпох обучения)
Веса:
64 4
76.4688 28.4249 67.1063 21.4874
78.1561 37.9993 65.2646 20.8436
63.0414 32.9918 59.9858 24.9785
64.2568 28.5136 56.5136 21.6626
65.2961 28.39 56.1585 18
61.1247 26.96 52.5558 15.1065
61.7738 23.7738 49.4087 15
62.5776 22.5776 44.4224 13.8448
75.4254 29.3489 61.4784 20.9803
71.9952 35.9829 60.9933 24.9881
67.6679 32.006 57.1946 23.2896
62.9803 33.4039 54.4704 23.3842
63.9874 27.0099 52.9978 19.0062
62.4477 27.061 48.6933 18.2456
60.0104 28.9536 44.9981 14.9912
62.1773 28.5532 41.6595 13
71.8566 30.6502 58.7936 17.3673
68.4032 30.4032 54.5969 21
67.7458 30.3729 51.6272 23
56.9243 26.8585 49.9242 19.6737
57.977 27.9822 50.977 23.9391
57.6531 26.7019 46.3931 16.8969
58 26.6163 39.7323 11.6514
59.9688 22.0708 39.9854 10.0234
68.6932 31.0059 47.8066 14.6079
67.0002 30.001 49.9994 17.0001
65 31.1829 51.4085 20
59.7852 30.6405 48.6075 18
56.9092 28.209 47.243 17.2083
49.0076 25.0028 44.9965 16.9961
55.2326 24.2057 39.0137 11.7812
56.0609 25.0609 35.939 10
66.1944 29.8053 44.7782 13.8978
64.0031 31.9954 45.0031 14.9999
61.3277 33.5574 45.8851 16
61 28.9903 46.6725 13.3256
55.6051 27.5801 44.5711 13.009
57.1667 28.8101 41.7613 13.2922
52.0054 26.9987 38.9994 13.9964
49.8178 23.5872 32.4858 10.2443
62.9303 31.9436 36.841 10.9476
58.2919 34.1768 27.332 7.42632
56.9689 33.1408 29.9278 9.01234
56.0003 29.0013 35.9987 12.9982
53.8465 30.5362 33.3018 9.44699
52.294 29.7438 27.0677 6.97348
48.9869 29.5968 22.7131 5.6699
48.3617 24.538 26.5138 7.70548
54.8663 38.7113 16.9999 3.71119
53.8736 36.4959 14.4959 2
54 34 15.7296 3.27035
50.4046 33.8476 16.4046 4.90889
48 34 17.6519 2.00002
48.6871 30.6041 15.1934 1.85473
46.4971 32.0415 14.2065 2.08716
44.9997 23.0525 13.006 2.99265
57.0468 41.7503 13.4159 2.66892
53.1598 39.8402 13.8402 2.73972
51 37.7394 16.0699 2.91898
49.5003 35.7868 13.7868 1.71345
50.9237 34.4228 14.6086 2.29489
49.9999 32.6043 13.2087 2.00001
46.0009 35.975 10.0363 2.00686
43.7227 30.0413 12.8377 1.72271
Карта Кохонена:
- - - - - E - -
- - - - - - - -
- - G - - - - -
- - - - - - - -
C - - - - - - -
- - - - - - - -
- - - - - - - 126
- - - - - - - -
Вывод:
Конкурентное обучение заключается в формировании весовых векторов сети так, чтобы каждый из них был похож в некотором смысле с векторами из опрделённого подмножества входных вектров. это общее для группы входных вектров сходство может определяться различными способами. Проще всего считать схожими между собой векторы, для которых расстояние по Евклиду является минимальным, или для которых является максимальным их скалярное произведение.
При подаче на вход сети Кохонена некоторого образа, представленного вектором в пространстве признаков, в выходном слое активируется один нейрон, весовой вектор которого наиболее схож с входным вектором.
Значит сеть можно использовать для решения задач кластеризации многомерных входных данных. Активация определённого нейрона выходного слоя указывает, к какой группе или кластеру принадлежит входной образ.