Реализация принципа оптимизации взаимной информации
С данной целью в среде Matlab была написана программа, которая в цикле на каждом шаге вычисляет взаимную информацию для текущих выходных данных и сравнивает с взаимной информацией на предыдущем шаге. Для получения входных данных в среде Matlab была создана программа, которая вырезает из одного изображения (рисунок 8) две смежные области размером 100×100 и записывает каждую из них в массив… Читать ещё >
Реализация принципа оптимизации взаимной информации (реферат, курсовая, диплом, контрольная)
Максимизация взаимной информации двух выходов, получающих информацию от двух смежных, не пересекающихся областей одного изображения.
Рассмотрим процесс машинного обучения, в котором в качестве критерия оценки будет выступать взаимная информация между двумя выходными наборами данных, каждый из которых соответствует одному из наборов данных от смежных, но не пересекающихся областей одного изображения.
Входные данные для данного случая представлены двумя матрицами:
Для получения входных данных в среде Matlab была создана программа, которая вырезает из одного изображения (рисунок 8) две смежные области размером 100×100 и записывает каждую из них в массив:
x = imread ('cvz9.jpg');
xa = x (1:100,1:100,1);
xb = x (101:200,1:100,1);
x_a = cast (xa, 'double');
x_b = cast (xb, 'double');
Рисунок 8. Исходное изображение.
Набор первоначальных матриц весов для машинного обучения формируется генератором случайных чисел, который генерирует набор из ста матриц:
Для получения матриц весов в среде Matlab была создана программа, которая создает 100 наборов матриц весов и записывает из в многомерный массив:
for i = 1:100.
wa_set (, i) = rand (100,100);
wb_set (, i) = rand (100,100);
end.
Выходные данные получаются путем перемножения транспонированной матрицы весов и матрицы входных данных:
В результате перемножения получаются матрицы выходных данных:
Далее необходимо рассчитать коэффициент корреляции для данных матриц.
На основе данного коэффициента рассчитывается взаимная информация двух матриц выходных данных:
.
который является критерием качества работы нейронной сети.
Для данного случая нам необходимо выбрать матрицы весов таким образом, чтобы взаимная информация была максимальной.
С этой целью необходимо получить матрицы выходных данных для каждого набора матриц весов и по ним рассчитать взаимную информацию.
Далее необходимо выбрать матрицы весов с максимальной взаимной информацией.
С данной целью в среде Matlab была написана программа, которая в цикле на каждом шаге вычисляет взаимную информацию для текущих выходных данных и сравнивает с взаимной информацией на предыдущем шаге.
В случае, если взаимная информация на текущем шаге оказывается больше, то данная информация считается максимальный, а текущий набор данных записывается в качестве наилучшего набора.
Лис.
X;
inform0 = 1;
for i = 1:100.
for j = 1:100.
ya = wa_set (, i)'*x_a;
yb = wb_set (, j)'*x_b;
inform (i, j) = - (log (1-corr2 (ya, yb)*corr2 (ya, yb)))/2;
if inform (i, j)>inform0.
inform0 = inform (i, j);
wa_max = wa_set;
wb_max = wb_set;
end.
end.
end.
В результате расчета получится матрица взаимных информаций, графическое представление которой представлено на рисунке 9.
Рисунок 9. Поверхность взаимной информации.
Как видно из рисунка 9, на первом шаге распределение взаимной информации хаотическое, а максимальная взаимная информация невелика.
Также в качестве информации на выходе программы получаются максимальная взаимная информация и соответствующие ей матрицы весов.
На этом первый шаг машинного обучения заканчивается.
Следующий шаг в точности повторяет первый, только вместо первоначального набора матриц весов берется матрица весов, полученная в качестве наилучшей на первом шаге, а также её потомки, полученные путем незначительных вариаций.
С каждым шагом максимальная взаимная информация приближается к требуемому значению.