Представление знаний нейронными сетями - Представление входных данныхОсобенность нейронной сети в том, что в них все входные и выходные параметры представлены в виде чисел с плавающей точкой обычно в диапазоне [0..1]. В то же время данные предметной области часто имеют другое кодирование. Так, это могут быть числа в произвольном диапазоне, даты, символьные строки. Таким образом, данные о проблеме могут быть как количественными, так и качественными. Рассмотрим сначала преобразование качественных данных в числовые, а затем способ преобразования входных данных в требуемый диапазон. Качественные данные мы можем разделить на две группы: упорядоченные (ординальные) и неупорядоченные. Для определения способов кодирования этих данных рассмотрим задачу о прогнозировании успешности лечения какого-либо заболевания. Примером упорядоченных данных могут, например, являться данные о дополнительных факторах риска при данном заболевании.
А также возможным примером может быть возраст больного.
Опасность каждого фактора возрастает в таблицах при движении слева направо. В первом случае видим, что у больного может быть несколько факторов риска одновременно. В этом случае нам необходимо использовать такое кодирование, при котором отсутствует ситуация, когда разным комбинациям факторов соответствует одно и то же значение. Наиболее распространен способ кодирования, когда каждому фактору ставится в соответствие разряд двоичного числа. Число 1 в этом разряде говорит о наличии фактора, а число 0 — о его отсутствии. Параметру нет можно поставить в соответствие число 0. Таким образом, для представления всех факторов достаточно четырех разрядного двоичного числа. Таким образом, число 10102 = 1010 означает наличие у больного гипертонии и употребления алкоголя, а числу 00002 соответствует отсутствие у больного факторов риска. Таким образом, факторы риска будут представлены числами в диапазоне [0..15]. Во втором случае мы также можем кодировать все значения двоичными весами, но это будет нецелесообразно, так как набор возможных значений будет слишком неравномерным. В этом случае более правильным будет установка в соответствие каждому значению своего веса, отличающегося на единицу от веса соседнего значения. Так число 3 будет соответствовать возрасту 50-59 лет. Таким образом, возраст будет закодирован числами в диапазоне [0..4]. Аналогично можно поступать и для неупорядоченных данных, поставив в соответствие каждому значению какое-либо число. Однако, это вводит нежелательную упорядоченность, которая может исказить данные и сильно затруднить процесс обучения. В качестве одного из способов решения этой проблемы можно предложить поставить в соответствие каждому значению одного из входов нейронной сети. В данном случае при наличии этого значения соответствующий ему вход устанавливается в 1 или в 0 при противном случае. Данный способ не является панацеей, ибо при большом количестве вариантов входного значения число входов нейронной сети разрастается до огромного количества. Это резко увеличит затраты времени на обучение. В качестве варианта обхода этой проблемы можно использовать несколько другое решение. В соответствие каждому значению входного параметра ставится бинарный вектор, каждый разряд которого соответствует отдельному входу нейронной сети. Например, если число возможных значений параметра 128, то можно использовать семиразрядный вектор. Тогда первому значению будет соответствовать вектор 0000000, 128-му — 1111111, а, например, значению 26 — 0011011. Тогда число требуемых для кодирования параметров входов можно определить как N=Log2 (n), (7.14) n — количество значений параметра, N — количество входов.
|
