УДК 004:65
МЕТОД ГЕНЕРАЦИИ ТЕСТОВ ДЛЯ ОТЛАДКИ НЕЙРОСЕТЕВЫХ ЭКСПЕРТНЫХ СИСТЕМ
О.Н. Долинина, А.К. Кузьмин
Кафедра «Прикладные информационные технологии»,
ГОУ ВПО «Саратовский государственный технический университет»;
Представлена членом редколлегии профессором В. И. Коноваловым
Ключевые слова и фразы: искусственные нейросети; метод технической диагностики; отладка нейросетей; ошибки в базах знаний.
Аннотация: Приведены основные этапы жизненного цикла нейросетевых систем, анализ ошибок, возникающих в базах знаний экспертных систем; проанализированы существующие методы их отладки. Описан подход к решению задачи генерации исчерпывающих тестовых наборов, основанный на преобразовании структуры представления знаний экспертной системы к виду логической сети и применения к ней методов технической диагностики. Предложен метод тестирования нейросетевых экспертных систем, основанный на распространении данного подхода на модель многослойного персептрона.
Введение
Из всего множества существующих экспертных систем можно выделить системы, в основе которых лежит нейросетевая модель представления знаний и механизм принятия решений [1]. Системы подобного класса обладают некоторыми особенностями. В частности, знания такой системы представлены не в явном виде (например, в виде продукционных правил), а в виде весовых коэффициентов связей между нейронами [2-4]. При этом значения коэффициентов настраиваются автоматически в процессе обучения, то есть в процессе их итеративной коррекции в сторону снижения суммарной ошибки на выходе системы. Для успешного обучения необходимо наличие обучающего множества, под которым понимают известную совокупность пар (X,7^ входных и соответствующих выходных векторов системы. При этом роль экспертов сводится к созданию обучающего множества, а не к формализации своих знаний (последнее представляет собой сложную задачу, которая требует объединения значительных усилий когнитолога и эксперта предметной области). Создание обучающего множества заключается в определении списка входных признаков, которые оказывают влияние на результат, а также подборе пар входных и соответствующих выходных векторов. Далее полученные пары подаются на вход алгоритма обучения, который итеративно выполняет необходимые коррекции весовых коэффициентов.
Решение задачи генерации тестовых наборов
Рассмотрим трехслойный персептрон P, обученный на множестве L. Входной вектор X соответствует множеству In значений входных нейронов. Персептрон P осуществляет отображение множества входных векторов X в множество выходных векторов Y : P = X ^ Y.
Так как обучающее множество формируется экспертами, то не существует гарантии того, что обученная нейросеть не содержит ошибок. Введем понятие ошибки нейросети. Ошибка нейросети имеет место при наличии такой комбинации значений входных нейронов {Inb In2, ..., Inm е In}, при установке которой отображение P становится неверным.
Наиболее трудно обнаруживаемой является ошибка типа «забывание об исключении» [5, 6]. Определим данный класс ошибки в терминах нейросети. Формальная модель ошибки типа «забывание об исключении» заключается в том, что отображение X ^ Y корректно всегда, кроме случая установки такой комбинации значений входных нейронов {Inb In2, ..., Inm е In}, при которой отображение P становится неверным.
Формальная модель ошибки типа «забывание о нескольких исключениях» заключается в том, что отображение X ^ Y корректно всегда, кроме случаев установки таких комбинаций значений входных нейронов In = {Ini, Inj, Ink, . }, при которых отображение P становится неверным.
Ошибка типа «забывание об исключении» является наиболее общей и покрывает ошибку типа «забывание о нескольких исключениях». Единственным методом, позволяющим выявить все возможные ошибки в нейросети, является тестирование. Однако отсутствие хорошо разработанных методов и средств контроля качества нейросетевых систем сильно ограничивает возможности их применения [2]. Классическим подходом к тестированию нейросетей является разделение имеющейся базы примеров на обучающее, контрольное и тестовое множества. Обучающие примеры подаются на вход алгоритма обучения, при этом контрольное множество используется для контроля переобучения нейронной сети [2]. Тестовое множество в процессе обучения не используется и служит для тестирования уже обученной сети. Основная проблема заключается в том, что тестовое множество генерируется экспертами, что не позволяет обнаружить максимальное количество ошибок. Исходя из вышесказанного, необходимо разработать метод, позволяющий сформировать тестовое множество таким образом, чтобы тестирование гарантированно выявляло бы максимальное количество ошибок.
Для решения задачи генерации тестовых наборов предлагается подход, основанный на преобразовании нейронной сети к логической сети (ЛС) и применении к последней методов технической диагностики [9, 10]. В работе [5] представлена методология тестирования продукционных баз знаний при помощи алгоритма поиска константной неисправности в логической сети Path Oriented Decision Making (PODEM) [9]. В технической диагностике под константной неисправностью понимаются ошибки типа «константный ноль (единица)», когда на одном или нескольких выходах системы постоянно присутствует нулевой (единичный) сигнал независимо от входных значений [10]. Ошибку типа «забывание об исключении» можно рассматривать как неисправность «константный 0» логической сети, которая проявляется только при каком-либо наборе значений сигналов ЛС.
Также в работе [5] доказано, что если тест выявляет ошибки такого типа, то этот тест гарантированно выявляет ошибки и всех других типов.
Для генерации тестового набора нейросеть должна быть преобразована к продукционной базе знаний (ПБЗ), затем к виду И\ИЛИ-графа и затем к логической сети с целью дальнейшего использования методов технической диагностики цифровых устройств [5].
Продукционная база знаний определяется совокупностью
Р = (Р, Я, О, С, Д (1)
где Р - конечное множество фактов о решаемой проблеме. Каждый факт может быть установленным или неустановленным, совокупность установленных фактов задает некоторую ситуацию в предметной области. Множество продукций Я или правил, включающее правила вида
гт : ЕСЛИ / И / ... И / ТО /к, (2)
где гт- имя правила, гт е Я; //...,/п - условия выполнения правила;/ - следствие правила, / /■, ..., /П, /к е Р; О - множество целей или терминальных фактов экспертной системы (ЭС); С - множество разрешенных комбинаций фактов, в которое не входят комбинации с установленными одновременно какими-либо двумя фактами, взаимно исключающими друг друга; I - интерпретатор правил, реализующий процесс вывода. База правил Я и множество целей О образуют базу знаний.
Логика ПБЗ, определяемая ее И/ИЛИ-графом Г, может быть задана более наглядно соответствующей Г-связной логической сетью. Так, например, графу (рис. 1) соответствует логическая сеть, приведенная на рис. 2. Заметим, что функциональный базис логической сети ПБЗ содержит только элементы «И» и «ИЛИ», то есть не является полным.
/в
/7
/8
/3
Рис. 2. Эквивалентная И/ИЛИ-графу логическая сеть
В терминах ЛС тестом, обнаруживающим неисправность типа «забывание об исключении», является набор установленных и неустановленных фактов, которые обеспечивают активизацию правила ri и активизацию пути в ЛС от линии ri до одной из выходных линий, которым соответствуют цели ПБЗ.
Однако преобразование нейронной сети к логической требует, во-первых, дискретизации степени взаимовлияния нейронов; во-вторых, представления значений входных, промежуточных и выходных признаков дискретными значениями
0 или 1; и, в-третьих, прореживания структуры сети путем определения и исключения наименее значимых нейронов и связей. В теории нейронных сетей разработаны методы, позволяющие решать вышеуказанные задачи и представлять нейронные сети в виде наборов правил вида
if (x1 op vn [or v12 or ...]) and /or (x2 op v21 [or v22 or ...]) and /or... then classm , (3)
где xi - входной признак i; vij - значение j для признака i; op - один из операторов сравнения >, <, >=, <=, <>, =.
Алгоритмы преобразования нейросети к системе продукций можно подразделить на поисковые алгоритмы и алгоритмы, основанные на прямой интерпретации весовых коэффициентов связей. Главным недостатком алгоритмов первого типа является их высокая вычислительная сложность, которая экспоненциально растет при увеличении количества входных и выходных признаков [8]. Исходя из этого, предлагается использовать алгоритмы, предполагающие прямую интерпретацию весовых коэффициентов. Достаточно хорошо зарекомендовал себя алгоритм Glare [8], который предполагает аналитический подход и прямую интерпретацию весовых коэффициентов связей между нейронами входного и промежуточного слоев и связей между нейронами промежуточного и выходного слоя. В пользу выбора Glare также говорят следующие факты:
— набор правил, сгенерированный с помощью такого алгоритма, имеет точность прогноза не меньшую, чем точность прогноза самой нейронной сети;
— отсутствие необходимости модификации метода обучения или структуры самой нейронной сети.
Приведем полный алгоритм генерации тестового множества с использованием алгоритма PODEM [9, 11] для отладки нейронной сети, основанной на трехслойном персептроне.
Алгоритм генерации тестовых наборов для трехслойного персептрона
Входные данные алгоритма
1. Обученная нейросеть P, основанная на модели трехслойного персептрона. Количество нейронов на первом слое обозначим N1, на втором - N2 и на третьем - N3. Активационное значение нейрона j на слое i обозначим Stj. Весовой коэффициент связи нейрона j на слое i с нейроном к слоя (i-1) обозначим Wj.
Для нейронов первого слоя введем дополнительные обозначения: m - номер входного признака, n - номер значения входного признака m, которое кодирует
данный нейрон. Таким образом, Stmn обозначает i-й нейрон первого слоя, соответствующий значению n атрибута m.
2. Обучающее множество L, под которым будем понимать совокупность пар (X,Y} входных и соответствующих выходных векторов системы, где X- множество входных векторов системы
(X1... xi)r.(x1... x)n, (4)
У - множество выходных векторов системы (у>1 кУ]^! ■■■(.У1---У]} ; I - размер
входных векторов (количество входных признаков), I = N1; ] - размер выходных векторов (количество выходных признаков), ] = N3; п - мощность обучающего множества (количество обучающих примеров).
Выходные данные алгоритма
Тестовое множество Т, совпадающее по структуре с обучающим множеством Ь и состоящее из пар входных и соответствующих ожидаемых выходных векторов системы.
Алгоритм генерации тестового множества
1. Рассмотреть первый нейрон выходного слоя St2l.
1.1. Составить для нейрона St2l упорядоченную последовательность ЯШШ1, состоящую из нейронов входного слоя, упорядоченных по абсолютному значению весового коэффициента связи с нейроном St2l
ЯWIH1 = { Sth, St1 у .... | АЪз( W21) < АЪз( ^2+1)}. (5)
1.2. Для нейрона St2l составить последовательность RЯWIH1, полученную путем усечения длины последовательности ЯWIH1, полученной в предыдущем шаге. В последовательности RRWIH1 включаются первые NWIH элементов ЯWIH1, 1 < NWIH < N2.
1.3. Повторить шаги 1.1-1.2 для всех нейронов промежуточного слоя. В результате получить множество последовательностей {RЯWIH1, RЯWIH2, .... ЯЯWIHN2}.
1.4. Выделить из обучающего множества Ь подмножество Ь1 такое, что каждый входной вектор Ь1 активирует первый (рассматриваемый) нейрон выходного слоя
Ь1 с Ь, V (< X,У > с Ь1) 1 - У1 < 1 - Уп, п = 2, ..., N3. (6)
1.5. Для нейрона W2l подсчитать индекс значимости II21. Для этого:
1.5.1. Подать на вход сети элементы обучающего подмножества Ь1, подсчитать среднее активационное значение ЛЛЬ21 нейрона St2l:
X ^21
ЛЛЬ21= ^------, (7)
п
где St21 - активационное значение нейрона при подаче на вход Р примера / из обучающего подмножества Т1; п - мощность подмножества Т1.
1.5.2. Подсчитать индекс значимости II21:
AALlX
(8)
1.6. Повторить шаги 1.5 для каждого нейрона скрытого слоя. Получить последовательность индексов значимостей II21, II21, ..., II2 N 2 .
1.7. Построить последовательность скрытых нейронов ЯWHO1 для данного выходного нейрона Stзl. Упорядочивание производится по возрастанию соответствующих индексов значимостей, знаки элементов последовательности берутся равными знакам соответствующих весовых коэффициентов связей нейронов скрытого слоя с рассматриваемым нейроном выходного слоя Stзl:
ЯWHOl = б1яп(И^х ^2,|, б1яп(Щ\)х\St2^ ...; II21 < ^2у ••• (9)
1.8. Построить матрицу ЛТТЯ, строками которой являются последовательности ЯЯШШ, полученные в шагах 1.1—1.3, отсортированные по порядку следования соответствующих элементов последовательности ЯШНО\, полученной в шаге 1.7. При этом инвертировать знаки элементов матрицы ЛТТЯ в тех строках, которые соответствуют отрицательным элементам последовательности ЯЯШНО:
ATTR =
signWi) x RRWINt signWm) x RRWINm signW”) x RRWINn
II2i < II2 m < II
2m
2n
(i0)
1.9. Построить нулевую матрицу ЯЛТТЯ размером /х/, где / - количество входных атрибутов; / - наибольшее количество возможных значений атрибутов.
1.10. Заполнить ЯЛТТЯ. Для этого:
1.10.1. Рассмотреть элементЛТТЯц. Пусть элементомЛТТЯц является нейрон 5^ . Тогда ЯЛТТЯ},* примет значение -1, если < 1 и +1,
если К > 1:
ЯЛТТЯ,,* - 5^п( Я!* ). (11)
1.10.2. Занести пару {И, *) в список и использованных координат.
1.10.3. Повторить шаг 1.10.1 для ЛТТЯХ,2... ЛТТЯ\^шш. При этом если текущие значения пары {И, *) присутствуют в списке использованных координат и, то ЯЛТТЯИ* новое значение не присваивается.
1.10.4. Повторить шаги 1.10.1-1.10.2 для всех строк ЯЛТТЯ.
1.11. На основе матрицы ЯЛ ТТЯ построить классифицирующее правило ЯиЬЕ\. Если ЯЛТТЯ/- 1, то это означает, что атрибут / должен принимать/-е значение, если ЯЛТТЯ/ - -1, то это означает, что атрибут / не должен принимать/-е значение:
rRULE1 : N
if(Stml’n1 = i(0))or (St^j ,n2 = 1(0)...) and (St^1 = 1(0))or(<’n2 = 1(0).) and к then _ classi
V__________________________________J
(12)
2. Повторить шаг 1 для всех остальных выходных нейронов 5^2,
St
St
З, N З
. В итоге получить набор классифицирующих правил вида:
if(Stml’n1 = i(0))or(Stm1 n = 1(0)...)and (<n1 = 1(0))or(St;Jn2 = i(0)...)and
m1,n1
к then _ classi = i(0))or(Stijn2 = 1(0)...)and )and
к then class2
if(Stim
(<ni=i(0))or(Stm2-2=i(0)
if(Stml,n1 = i(0))or(Stijn2 = 1(0)...)and
(Stim2,n1 = i(0))or(Str2-2 = i(0)...)and к then classNЗ
(1З)
3. Для множества правил, полученных в п. 2, построить соответствующую логическую схему S. Дать имена линиям и элементам схемы. Множество линий обозначить L = {lJ, l2, ..., lm}, множество элементов схемы обозначить U = = {mj, u2,un}. Составить матрицу инцинденций Mразмером nxm. В матрице M элемент, находящийся в строке i и столбце j равен 1 (-1), если линия j является входной (выходной) для элемента схемы i. Если в столбце i отсутствует значение 1 (-1), то линия li является выходом (входом) схемы. При этом необходимо зафиксировать соответствие между номерами узлов и типами соответствующих узлов (И, ИЛИ).
4. Экспертным методом сформировать множество запрещенных кубов С1. Множество разрешенных кубов С можно получить вычитанием из куба всевозможных комбинаций R значений запрещенных кубов из множества С1 : С = R -C1j - CI2 - - С1з-... - С1„.
5. Установить множество тестов Т пустым: T = 0.
6. Из множества нерассмотренных неисправностей схемы S выбрать очередную неисправность s/a. Инициализировать стек D-границы и внести в него элементы, для которых линия s является входной. Номера таких элементов соответствуют номерам столбцов ячеек со значением 1 в строке s. Установить на линии s значение Da. Если же невыбранных неисправностей нет, то завершить алгоритм.
7. Для линии s определить значения входов, при которых она имеет значение Da (выполнить операцию D-установки). При этом, если присутствует возможность выбора, выбрать путь согласно правилу «а»1, остальных кандидатов ввести в стек установки St.
8. Для полученных входных значений определить значения всех элементов, которые однозначно вытекают из полученных входных значений (выполнить операцию импликации).
9. Рассмотреть первый элемент в стеке D-границы. Выбрать следующий за ним по направлению к выходу элемент и выяснить условия, при которых на его входе установится значение D (выполнить операцию D-прохода). Если при таком выборе присутствуют альтернативные элементы, то выбрать элемент согласно правилу «б», остальных же кандидатов внести в стек D-границы. В случае невозможности D-прохода для текущего элемента выбрать для его осуществления следующий элемент в стеке D-прохода. Если же стек D-прохода пуст, то считать данную неисправность s/a избыточной и вернуться на шаг 7.
10. Выполнить операцию импликации.
11. Для линий, которые выходят из элементов, для которых определен выход, но еще не определены входы, выяснить значения входа, при котором линия принимает нужное значение (выполнить операцию возврата). В случае появления возможности выбора использовать правило «а». Остальных кандидатов внести в стек возврата Back.
12. Для полученного в шаге 11 значения входа выполнить операцию импликации. Убедиться в корректности первоначального значения линии (выбранной в шаге 11). Если верное значение не получено, то инвертировать значение входа и повторить попытку. В случае неудачи D-проход невозможен и необходимо вернуться к шагу 10.
13. Повторить шаги 11-12 для остальных линий в стеке возврата Back.
14. В случае достижения значением D выхода схемы S полученные входные значения считать входным вектором нового теста и вернуться на шаг 6. В против-
1 Под правилом «а» подразумевается правило, согласно которому выбирается ближайшая к входному контакту линия. Правило «б» подразумевает выбор линии, ближайшей к выходному контакту.
ном случае вернуться на шаг 8. Если получен новый тест, то преобразовать его к виду куба T1 и пересечь со множеством разрешенных кубов С (T2 = T1 П C).
15. В кубе T2 заменить все значения «X» на «1» и исключить из него повторяющиеся кубы.
16. Объединить полученное множество кубов T2 с уже имеющимся множеством T, результат присвоить Т: T = T + T2.
Результатом выполнения данного алгоритма является тестовое множество вида (4). При тестировании для получения эталонных ответов используются эксперты. Несложно убедиться в том, что тестовое множество, которое строится данным алгоритмом, является минимальным. Тесты строятся для набора входных нейронов. Ни один из наборов тестового множества не может быть удален, так как в этом случае тестовое множество, по крайней мере, для одного из значений входных нейронов, окажется не полным.
Заключение
В настоящей статье описан метод генерации тестового набора, используемый для отладки нейросетевых экспертных систем, основанных на трехслойном пер-септроне. Метод основан на преобразовании нейронной сети к виду логической схемы посредством выделения из нее продукционных правил и применении метода генерации тестов PODEM, используемого в технической диагностике. Показано, что предложенный метод выявляет ошибки типа «забывание об исключении», а также и ошибки других типов, покрываемые ошибкой «забывание об исключении».
Список литературы
1. Уотермен, Д. Руководство по экспертным системам : пер. с англ. / Д. Уо-термен. - М. : Мир, 1989. - 388 с.
2. Dayan, P. Theoretical Neuroscience: Computational and Mathematical Modeling of Neural Systems / P. Dayan, L. Abbott // The MIT Press, Cambridge, Massachusetts, London, England, 2004. - 573 p.
3. Minsky, M. Perseptrons / M. Minsky , S. Papert. - Cambridge : MA : MIT Press, 1969. - 167 p.
4. Rosenblatt, F. Principles of Neurodynamics : Perceptrons and the Theory of Brain Mechanisms / F. Rosenblatt. - New York : Spartan Books, 1962.
5. Долинина, О.Н. Разработка метода тестирования продукционных баз знаний экспертных систем с учетом ошибок типа «забывание об исключении» / О.Н. Долинина. - Саратов, 1997. - 171 c.
6. Поспелов, И.Г. Динамическое описание систем продукций и проверка непротиворечивости продукционных экспертных систем / И.Г. Поспелов, Л.Я. Поспелова. - Изв. АН СССР, ТК, 1987. - № 1. - С. 184-192.
7. Rumelhart, D.E. Learning Representations by Back-Propagating Errors / D.E. Rumelhart, G.E. Hinton, R.J. Williams // Nature. - 1986. - Vol. 323. - P. 533.
8. Gupta, A. Generalized Analytic Rule Extraction for Feedforward Neural Networks / A. Gupta, S. Park, S. Lam // IEEE Transactions on Knowledge and Data Engineering. - 1999. - Vol. 11, No. 6. - P. 985-992.
9. Goel, P. “PODEM - X” : an Automatic Test Generation System for VISI Logic Structures / P. Goel, B.C. Rosales // Proc. 18-th IEEE Design Automation Conf. - 1981. -Vol. 133. - P. 260-268.
10. Ярмолик, В.Н. Контроль и диагностика цифровых узлов ЭВМ / В.Н. Ярмолик. - М. : Наука и техника, 1988. - 240 с.
11. Киносита, К. Логическое проектирование СБИС : пер. с япон. / К. Кино-сита, К. Асада, О. Карацу. - М. : Мир, 1988. - 309 с.
Method of Tests Generating for Debugging of Neuron Networks Expert Systems
O.N. Dolinina, A.K. Kuzmin
Department «Applied Information Technology»,
Saratov State Technical University; [email protected]
Key words and phrases: artificial neuron networks; errors in the database; debugging of neuron networks; method of engineering diagnostics.
Abstract: The article presents the key stages of the life cycle of neuron network systems as well as the analysis of errors occurred in the data base of the expert systems. Methods of their debugging are analyzed. The article considers the approach to the task solution of the exhaustive patterns generation, based on the conversion of the knowledge representation structure into the type of the logic network and application of the engineering diagnostics methods. The method of testing of neuron network expert systems based on the spreading of the approach to the model of the laminated perceptron is proposed.
Methode der Testengeneration fur Debugging der Neuroexpertensysteme
Zusammenfassung: Hier werden Grundetappen des Lebenszyklus der Neuronenetzsysteme, Analyse der Fehler, die in Basen des Wissens der Expertensysteme entstanden, angefuhrt, auch werden existierende Debuggingsmethode analysiert. Hier wird die Behandlung zur Losung der Aufgabe der Generation der erschopfenden Testsatze beschrieben, die ist auf Reorganisation der Struktur der Vorstellung des Wissens des Expertensystems zum Art des logischen Netzes und der Anwendung dazu Methode der technischen Diagnose. Auch wird eine Testmethode fur das Neuronenet-zexpertensystem vorgeschlagen, der ist auf die Verbreitung dieser Behandlung auf das Modell des mehrschichtigen Perzeptrons.
La methode de la generation des tests pour la mise au point des systemes d’experts appartenus aux reseaux neuronaux
Resume: Sont presentees les etapes principales du cycle de vie des systemes neuronaux, l’analyse des erreurs elevees dans les bases de connaissances des systemes d’experts, sont analysees les methodes existantes et leur mise au point. Est decrite une approche de traitement du probleme de generation des ensembles de tests exhaustifs basee sur la transformation de la structure du systeme de representation des connaissances dans les systemes d’experts pour former un reseau logique, auquel il est possible d’appliquer les methodes de diagnostic technique. Est proposee une methode pour tester les systemes d’experts fondee sur la repartition de cette approche sur le modele de perceptron multicouche.
Авторы: Долинина Ольга Николаевна - кандидат технических наук, доцент, заведующая кафедрой «Прикладные информационные технологии»; Кузьмин Алексей Константинович - ассистент кафедры «Прикладные информационные технологии», ГОУ ВПО «СГТУ».
Рецензент: Большаков Александр Афанасьевич - доктор технических наук, профессор кафедры «Система искусственного интеллекта», ГОУ ВПО «СГТУ».