Реферат: Структура нейронных сетей
Представление входных данных
Основное отличие НС в том, что в них все входные и выходные параметры представлены в виде чисел с плавающей точкой обычно в диапазоне [0..1]. В тоже время данные предметной области часто имеют другое кодирование. Так это могут быть числа в произвольном диапазоне, даты, символьные строки. Таким образом данные о проблеме могут быть как количественными так и качественными. Рассмотрим сначала преобразование качественных данных в числовые, а затем рассмотрим способ преобразования входных данных в требуемый диапазон.
Качественные данные мы можем разделить на две группы: упорядоченные (ординальные) и неупорядоченные. Для рассмотрения способов кодирования этих данных мы рассмотрим задачу о прогнозировании успешности лечения какого-либо заболевания. Примером упорядоченных данных могут например являться данные, например, о дополнительных факторах риска при данном заболевании.
Нет |
Ожирение |
Алкоголь |
Курение |
Гипертония |
А также возможным примером может быть например возраст больного
До 25 лет |
25-39 лет |
40-49 лет |
50-59 лет |
60 и старше |
Опасность каждого фактора возрастает в таблицах при движении слева направо.
В первом случае мы видим, что у больного может быть несколько факторов риска одновременно. В таком случае нам необходимо использовать такое кодирование, при котором отсутствует ситуация, когда разным комбинациям факторов соответствует одно и то же значение. Наиболее распространен способ кодирования, когда каждому фактору ставится в соответствие разряд двоичного числа. 1 в этом разряде говорит о наличии фактора, а 0 о его отсутствии. Параметру нет можно поставить в соответствии число 0. Таким образом для представления всех факторов достаточно 4-х разрядного двоичного числа. Таким образом число 10102 = 1010 означает наличие у больного гипертонии и употребления алкоголя, а числу 00002 соответствует отсутствие у больного факторов риска. Таким образом факторы риска будут представлены числами в диапазоне [0..15].
Во втором случае мы также можем кодировать все значения двоичными весами, но это будет нецелесообразно, т.к. набор возможных значений будет слишком неравномерным. В этом случае более правильным будет установка в соответствие каждому значению своего веса, отличающегося на 1 от веса соседнего значения. Так число 3 будет соответствовать возрасту 50-59лет. Таким образом возраст будет закодирован числами в диапазоне [0..4].
В принципе аналогично можно поступать и для неупорядоченных данных, поставив в соответствие каждому значению какое-либо число. Однако это вводит нежелательную упорядоченность, которая может исказить данные, и сильно затруднить процесс обучения. В качестве одного из способов решения этой проблемы можно предложить поставить в соответствие каждому значению одного из входов НС. В этом случае при наличии этого значения соответствующий ему вход устанавливается в 1 или в 0 при противном случае. К сожалению данный способ не является панацеей, ибо при большом количестве вариантов входного значения число входов НС разрастается до огромного количества. Это резко увеличит затраты времени на обучение. В качестве варианта обхода этой проблемы можно использовать несколько другое решение. В соответствие каждому значению входного параметра ставится бинарный вектор, каждый разряд которого соответствует отдельному входу НС. Например если число возможных значений параметра 128, то можно использовать 7 разрядный вектор. Тогда 1 значению будет соответствовать вектор 0000000 а 128 - вектор 1111111, а ,например, 26 значению – 0011011. Тогда число требуемых для кодирования параметров входов можно определить как
N=log2 n (15)
Где
n- количество значений параметра
N- количество входов
Преобразование числовых входных данных
Для НС необходимо чтобы входные данные лежали в диапазоне [0..1], в то время как данные проблемной области могут лежать в любом диапазоне. Предположим что данные по одному из параметров лежат в диапазоне [Min..Max]. Тогда паиболее простым способом нормирования будет
(16)
где x- исходное значение параметра
-значение, подаваемое на вход НС
К сожалению этот способ кодирования не лишен недостатков. Так в случае если то распределение данных на входе может принять вид