┌┴┴┴┴┴┴┴┴┐ С горячим электронным приветом!
└┬┬┬┬┬┬┬┬┘ Цитирую: Yuriy Mironenko -> Andrew Filinsky, 21 Окт 2005
AF>> Эта задача в том виде, как ты её предложил, решается без
AF>> использования перцептрона. Перцептрон тоже можно использовать, но
AF>> незачем :)
YM> Вполне вероятно. Метод в студию :-)
YM> Hу или идею метода.
Hу, попробую описать идею метода :)
Берем кучу статистики. Предположим, у тебя _уже есть_ серые битмэпы и
попиксельно им соответствующие черно-белые. Это ключевой и, повторю, наиболее
труднореализуемый технический момент. Hужно иметь в виду, что точно такой же
набор данных требуется и в случае обучения перцептрона.
Из имеющейся статистики строим кучу образцов, кои представляют собой, как ты
предложил, квадраты размером 2*N+1 клеток, N натуральное, в твоём случае N=5,
значения клеток - число в диапазоне 0..255, градация серого. Это вход образца.
Для каждого образца строим выход. Ты предложил выход в виде квадрата 3*3, я же
предлагаю квадрат размером 1*1 ;) - точка, соответствующая центру входного
образца, значение - 0 или 1, чёрный или белый цвет. Точка ничем не хуже
квадрата 3*3, а лучше она тем, что на тех же данных можно собрать больше
статистики, и обработка входа в выход существенно упрощается.
Статистика собрана. Она включает в себя миллионы образцов вход/выход.
Дальше нужно ввести функцию нечеткого сравнения образцов. Это функция, которая
на входе принимает два образца, а на выходе выдает вещественное число - оценку
схожести. Какую функцию выбрать для нечеткого сравнения образцов - вопрос
особый. В качестве первого и достаточно мощного решения я предлагаю
использовать функцию вычисления среднеквадратичного отклонения одного образца
от другого. (Это достаточно тривиальная функция, но если непонятно - по твоему
запросу объясню подробнее) Если быть точным, в качестве оценки нужно брать
обратную функцию к функции среднеквадратичного отклонения ;)
Теперь собственно алгоритм преобразования. Он сводится к вычислению значения в
данной точке (0/1) по входной матрице 2*N+1. Hу, хотя бы так. Сравниваем все
образцы из статистики с данным обрацом. Образца с нулевым выходом суммируем,
образцы с единичным выходом - вычитаем. Если итоговое значение суммы меньше
нуля - результат равен нулю. Если итоговое значение суммы больше нуля -
результат равен единице. Если итоговое значение суммы равно нулю - результат
выбирается случайным образом между нулём и единицей :) Всё :)
Алгоритм придуман глядя в потолок, имеет массу путей улучшения, но даже в
предложенном виде он обеспечит тебе осмысленный результат, то есть - работает.
Основной недостаток по сравнению с гипотетическим решением, основанным на
перцептроне - это ресурсоёмкость. Время работы перцептрона не зависит от
количества статистики, на которой он обучался, время работы данного алгоритма -
прямопропорционально количеству образцов.
Обсудим? :)
С моих слов записано верно. Andrew Filinsky.
... [Брутальные Маргиналы Team] [Черный список GO.FLIRT] [Pipe Smokers Team]