Главная » Просмотр файлов » Диссертация

Диссертация (1149691), страница 25

Файл №1149691 Диссертация (Матрично-векторные уравнения локального апостериорного вывода в алгебраических байесовских сетях) 25 страницаДиссертация (1149691) страница 252019-06-29СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 25)

Если же ЗЛПне имеет решения, то вероятность пропозициональной формулы устанав­ливается равной 0.Локальный апостериорный выводТеперь рассмотрим второй вид локального логико-вероятностноговывода – апостериорный вывод. Все алгоритмы апостериорного выводареализованы в классах, являющихся наследниками класса BasePropagator.Также, как и классы, содержащие реализацию алгоритмов априорного вы­вода, классы-пропагаторы реализуют паттерн «одиночка».Начнем с первой задачи апостериорного вывода – определить вероят­ность поступившего свидетельства.

Рассмотрим пропагацию детерминиро­ванного свидетельства во фрагмент знаний со скалярными оценками.Листинг 4.11 — Реализация алгоритма вычисления вероятностисвидетельства.public virtual double evidenceProbaility ( BinaryEvidencebinaryEvidence ){Matrix < double > quants = binaryEvidence . getProbabilities () ;if ( this . kp is ScalarConjunctKnowledgePattern )5{quants = matrixHelper .

getKronekerPowerOfI ( binaryEvidence .getSize () ) * quants ;}int [] atomsMap = getAtomsMap ( binaryEvidence );Vector < double > transformedEvidence ;10for ( int i = 0; i < quants . RowCount ; i ++){142if ( quants [i , 0] == 1){transformedEvidence = transformEvidence (i , binaryEvidence .getSize () , atomsMap ) ;if ( this . kp is ScalarConjunctKnowledgePattern ){return conjunctEvidenceProbability ( transformedEvidence );}else{return quantEvidenceProbability ( transformedEvidence ) ;}}1520}return 0;25}Листинг 4.12 — Вспомогательные алгебраические вычисления для методаevidenceProbability.protected double quantEvidenceProbability ( Vector < double >evidence ){return getEvidenceMatrix ( matrixHelper .

sMatrixArray , evidence ) .PointwiseMultiply ( this . kp . getProbabilities () ) . Column (0) . Sum() ;}5 protected double conjunctEvidenceProbability ( Vector < double >evidence ){return getEvidenceMatrix ( matrixHelper . rMatrixArray , evidence ) .PointwiseMultiply ( this . kp . getProbabilities () ) . Column (0) . Sum() ;}В первых четырех строках мы преобразуем вектор вероятностей сви­детельства, построенного над идеалом конъюнктов в вектор вероятностейквантов.

Переменная atomsMap используется для сопоставления индексов ато­мов свидетельства с индексами атомов фрагмента знаний, в которое данноесвидетельство поступило. Далее мы проходим по всему вектору вероятно­стей квантов и ищем номер того кванта, вероятность которого не равна 0.Очевидно, что поскольку свидетельство детерминированное, то существуетодин и только один такой квант. По номеру кванта мы можем определить143сам квант, а значит и означивание атомов, входящих в него, после чегопостроить вектор, соответствующий данному детерминированному свиде­тельству. Данный вектор объединяет в себя информацию о положительно иотрицательно означенных атомах, а также о тех атомах, которые не вошлив свидетельство.

По данному вектору можно построить вектор r⟨ ; ⟩ ,d⟨ ; ⟩ ,или s⟨ ; ⟩ и воспользовавшись матрично-векторными операциями, предо­ставляемыми библиотекой Math.NET, получить апостериорную вероятностьсвидетельства. Реализация алгоритмов поиска вероятности стохастическо­го и интервального свидетельства схожи с вышеуказанной реализацией иотличаются лишь заданием ограничений для ЗЛП в случае неточного свиде­тельства, поэтому опустим их рассмотрение и сразу перейдем к реализациирешения второй задачи апостериорного вывода.Сперва рассмотрим пропагацию детерминированного свидетельстваво фрагмент знаний со скалярными оценками, чтобы подробно разобратьалгоритм обработки свидетельства, а затем пропагацию стохастическогосвидетельства во фрагмент знаний с интервальными оценками.

Ниже при­веден метод propagate класса ScalarPropagator, параметром которого являетсяобъект класса BinaryEvidence. Данный метод возвращает матрицу с апосте­риорными оценками вероятностей. Листинг 4.13 — Реализация алгоритма пропагации бинарногосвидетельства.public Matrix < double > propagate ( BinaryEvidence binaryEvidence ){var evidenceProbability = binaryEvidence . getProbabilities () ;5int [] atomsMap = getAtomsMap ( binaryEvidence );Matrix < double > quants = matrixHelper .

getKronekerPowerOfI (binaryEvidence . getSize () ) *evidenceProbability ;Matrix < double > aposterioriProbability = DenseMatrix .Create ( this . kp . getVectorSize () , 1 , 0) ;10Vector < double > transformedEvidence ;15for ( int i = 0; i < quants . RowCount ; i ++){if ( quants [i , 0] == 1){144transformedEvidence = transformEvidence (i , binaryEvidence .getSize () , 7 atomsMap ) ;if ( this .

kp is ScalarConjunctKnowledgePattern ){aposterioriProbability = aposterioriProbability +getConjunctsProbability ( transformedEvidence ) * quants[i , 0];} else{aposterioriProbability = aposterioriProbability +getQuantsProbability ( transformedEvidence ) * quants [i ,0];}2025}}return aposterioriProbability ;}Как можно заметить, та часть метода, где происходит предобработкасвидетельства, схожа с реализацией решения первой задачи апостериорноговывода, поэтому сконцентрируем внимание на той части, где непосред­ственно проводятся вычисления апостериорных вероятностей. Для этогообратим внимание на реализацию следующих двух методов, первый изкоторых предназначен для вычисления апостериорных вероятностей про­позиций-квантов, а второй апостериорных вероятностей элементов идеалаконъюнктов.Листинг 4.14 — Вспомогательные алгебраические вычисления для методаpropagate.private Matrix < double > getQuantsProbability ( Vector < double >evidence ){Matrix < double > nonNormalizedQuants = getEvidenceMatrix (matrixHelper .

hMatrixArray , evidence ) * this . kp .getProbabilities () ;var normalizationFactor = quantEvidenceProbability ( evidence ) ;5Matrix < double > aposterioriQuants = nonNormalizedQuants . Divide (normalizationFactor ) ;return aposterioriQuants ;}14510 private Matrix < double > getConjunctsProbability ( Vector < double >evidence ){Matrix < double > nonNormalizedConjuncts = getEvidenceMatrix (matrixHelper . tMatrixArray , evidence ) * this . kp .getProbabilities () ;var normalizationFactor = conjunctEvidenceProbability ( evidence);Matrix < double > aposterioriConjuncts = nonNormalizedConjuncts .Divide ( normalizationFactor ) ;15return aposterioriConjuncts ;}В каждом из методов, сначала вычисляются ненормализованныеапостериорные оценки вероятностей, затем отдельно вычисляется норма­лизующий множитель и ,наконец, векторы, содержащие апостериорныеоценки покомпонентно делятся на нормализующий множитель.

МетодgetEvidenceMatrix по заданному набору матриц (H∘ ,H+ ,H− ,M∘ ,M+ ,M− , илиT∘ ,T+ ,T− ) и характеристическому вектору свидетельства вычисляет соот­ветствующее произведение Кронекера.Теперь рассмотрим пропагацию стохастического свидетельства вофрагмент знаний с интервальными оценками.Листинг 4.15 — Реализация алгоритма пропагации стохастическогосвидетельства.public Matrix < double > propagate ( ScalarEvidence scalarEvidence ){var evidenceProbability = scalarEvidence .

getProbabilities () ;int [] atomsMap = getAtomsMap ( scalarEvidence );5Matrix < double > evidenceQuants = matrixHelper .getKronekerPowerOfI ( scalarEvidence . getSize () ) *evidenceProbability ;10Vector < double > convertedEvidence = new DenseVector ( this . kp .getSize () );Matrix < double > newProbabilities = new DenseMatrix ( this . kp .getVectorSize () , 2) ;for ( int i = 0; i < evidenceQuants . RowCount ; i ++){convertedEvidence = transformEvidence (i , scalarEvidence .getSize () , atomsMap ) ;Matrix < double > evidenceMatrix ;146Vector < double > evidenceVector ;if ( this . kp is IntervalConjunctKnowledgePattern ){evidenceMatrix = getEvidenceMatrix ( matrixHelper .tMatrixArray , convertedEvidence ) ;evidenceVector = getEvidenceMatrix ( matrixHelper .rMatrixArray , convertedEvidence ) .

Column (0) ;Matrix < double > a = DiagonalMatrix . OfDiagonal (1 , 2,evidenceVector ) ;} else{evidenceMatrix = getEvidenceMatrix ( matrixHelper .hMatrixArray , convertedEvidence ) ;evidenceVector = getEvidenceMatrix ( matrixHelper .sMatrixArray , convertedEvidence ) . Column (0) ;}var lp = setBinaryConstraints ( evidenceVector ) ;newProbabilities += solveProblem ( evidenceMatrix , lp ) *evidenceProbability [i , 0];152025}Console . Write ( " After propagation : " + newProbabilities .ToString () ) ;return newProbabilities ;}В первых 5 строках инициализируются матрицы, хранящие апосте­риорные вероятности, вероятности пропозиций-квантов, соответствующихидеалу конъюнктов, над которым построено свидетельство, и другие. Внут­ри цикла for производится итерация по пропозициями-квантам и построе­ние матрицы и вектора, соответствующих данному детерминированномусвидетельству.

Затем создается и решается ЗЛП, результатами которойявляется матрица 2 × , хранящая апостерионые вероятности. После это­го полученные вероятности взвешиваются умножением на вероятностьпропагированного свидетельства и складываются, давая окончательный ре­зультат.Рассмотрение остальных типов поступающих свидетельств и фраг­ментов знаний мы опустим, поскольку целью данного парагарфа являетсяобзор основных технологий и подходов к программированию, использован­ных при реализации алгоритмов логико-вероятностного вывода.1474.2.5Примеры использованияВ данном параграфе продемонстрируем некоторые варианты исполь­зования комплекса программ.

Для начала рассмотрим фрагмент кода ипроанализируем его, а затем рассмотрим результат его работы.Листинг 4.16 — Тестирование метода проверки непротиворечивости.static void IntervalConsistency (){IntervalKnowledgePattern intervalKP = newIntervalConjunctKnowledgePattern (new double [] { 1 , 0.52 , 0.84 , 0.52 , 0.68 , 0.2 , 0.52 , 0.2 } ,5new double [] { 1 , 0.6 , 1 , 0.7 , 0.7 , 0.5 , 0.68 , 0.9 } ,new string [] { " x1 " , " x2 " ," x3 " });Console .

WriteLine ( " Probability of conjuncts : \ n " + intervalKP .getProbabilities () . ToMatrixString () ) ;Console . WriteLine ( " This pattern is consistent ? " + intervalKP .isConsistent () ) ;10 Console . WriteLine ( " Consistent probability of conjuncts : \ n " +intervalKP . getProbabilities () . ToMatrixString () );}В первых четырех строках инициализируется фрагмент знаний надидеалом конъюнктов с интервальными оценками вероятностей. Затем оцен­ки вероятностей выводятся на экран, после чего производится проверканепротиворечивости фрагмента знаний и уже согласованные оценки вы­водятся на экран.

Результатом работы данного фрагмента кода будетследующий вывод:Листинг 4.17 — Результат работы функции IntervalConsistency.510Probability of conjuncts :110 ,30 ,90 ,610 ,50 ,90 ,520 ,70 ,12 0 ,540 ,22 0 ,680 ,20 ,9148This pattern is consistent ? TrueConsistent probability of conjuncts :110 ,50 ,90 ,610 ,50 ,90 ,520 ,70 ,2 0 ,540 ,22 0 ,680 ,2 0 ,541520Сравнив первые и вторые оценки, можно заметить, что некоторые изних отличаются, что вкупе с положительным результатом работы методаisConsistent() говорит о том, что интервальные оценки были уточнены. Бла­годаря использованию метода ToMatrixString() библиотеки Math.NET можно небеспокоится о табуляции и аккуратном выводе на экран матриц, содержа­щих оценки вероятностей.Теперь приведем пример априорного вывода во фрагменте знаний надпропозициями-квантами.

Характеристики

Список файлов диссертации

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6757
Авторов
на СтудИзбе
282
Средний доход
с одного платного файла
Обучение Подробнее