В этой статье мы обсудим экспертные системы (системы, основанные на правилах) и то, как мы используем экспертные системы для двоичной классификации.

Зачем нам нужна двоичная классификация?

Причина, по которой мы заботимся о двоичной классификации, заключается в том, что в нашем проекте Capstone наша главная цель состоит в том, чтобы, учитывая изображение, содержащее некоторый текст, как мы идентифицируем этот текст, а затем переводим/транслитерируем его на язык по нашему выбору; это наша цель. Теперь, прежде чем мы перейдем к этой конечной цели, у нас есть одна промежуточная цель: по заданному изображению мы должны быть в состоянии выяснить, содержит ли оно текст или нет. Итак, это типичная проблема «Да или Нет», которую мы называем проблемой двоичной классификации. Вот почему нас интересует двоичная классификация, и для начала этой статьи мы рассмотрим нечто, известное как экспертная система или система, основанная на правилах, для двоичной классификации.

Наша цель в конечном счете состоит в том, чтобы научить машину принимать решения за нас; поэтому машина будет смотреть на изображение и сообщать нам, содержит ли оно текст или нет, но прежде чем мы обсудим это, давайте посмотрим, как люди принимают решения.

Как люди принимают решения?

Итак, чтобы обсудить это, давайте возьмем пример из медицинской области, где врач смотрит на некоторых пациентов и пытается решить, есть ли у этого пациента лихорадка денге или нет. Таким образом, врач может рассмотреть несколько факторов, таких как кожная сыпь, лихорадка, головная боль, холодный кашель, рвота и т. д., а затем решить, есть ли у пациента лихорадка денге или нет.

Допустим, ниже приведена ситуация для одного из пациентов:

У этого пациента была кожная сыпь, не было лихорадки, головной боли, простудного кашля, рвоты и т. д., и на основании этого врач решает, что у этого человека нет лихорадки денге.

Теперь в случае с другим пациентом было выявлено другое сочетание признаков, некоторые симптомы присутствовали (присутствовали), некоторые симптомы отсутствовали, но, поскольку большинство симптомов присутствовало, доктору было достаточно сделать вывод, что у этого человека лихорадка денге. .

Врач принимает это решение, основываясь на прошлом опыте, поэтому за годы практики мы можем сказать, что Доктор осмотрел несколько пациентов/случаев (например, данные показаны для 4 пациентов ниже), для каждого из случаев у врача был доступ к определенному набору симптомов (например, кожная сыпь, лихорадка и т. д.), а также к конечному результату, т.е. был ли у этого пациента диагностирован лихорадка денге или нет.

Итак, основываясь на доступе к большому количеству таких прошлых данных из личного опыта, врач может посмотреть на эти симптомы и принять решение, есть у пациента лихорадка денге или нет.

И теперь, поскольку мы в конечном итоге заинтересованы в том, чтобы машина принимала эти решения, мы переходим от этого представления к более числовому представлению (поскольку машина понимает числа).

Теперь данные преобразуются в машиночитаемый ввод.

Этот тип принятия решений встречается во всех областях и не ограничивается только медицинской сферой. Например, в видах спорта, где крикет есть судья, который должен решить, вышел ли человек или нет, и давайте рассмотрим конкретный случай, когда судья должен решить, является ли игрок LBW или нет. Теперь это снова зависит от различных факторов, таких как, где мяч был подан, был ли удар по линии или нет, какова была высота доставки в это время и так далее, и все эти факторы действуют как входные данные для судьи. принять решение.

И снова мы можем сделать этот ввод машиночитаемым, как показано ниже:

Итак, теперь вопрос в том, что мы используем для принятия решений? Итак, теперь мы хотим понять семантику принятия решений, и есть две вещи, которые играют здесь роль: одна — функции, а другая — правила.

Функции — это не что иное, как все эти входные данные, которые мы принимаем (симптомы в случае лихорадки денге, например), и на основе этих входных данных в уме врача что-то происходит, когда он пытается объединить эти различные входные данные в некое подобие основанного на правилах, а затем, основываясь на этом, он принимает решение, например, может быть так, что если 3 или 4 симптома присутствуют (присутствуют), то врач почти уверен что у пациента денге.

Мы хотим передать эту задачу машине, поэтому вместо того, чтобы человек принимал это решение по различным правилам в своей голове, мы хотим иметь возможность перевести эту задачу на машину в виде программы, и машина должна быть в состоянии выполнить эту программу, взяв определенные входные данные, а затем дать нам ответ. Таким образом, чтобы записать правила для экспертной системы, мы учитываем различные правила и кодируем их с помощью блоков кода if-else.

Итак, вот как выглядит экспертная система, это преобразование всех правил, которые есть в голове человека, в красивую программу, которую затем можно выполнить и вернуть результат.

Ограничения экспертной системы

Возьмем задачу найма кого-то на работу. Теперь для этого мы рассмотрим различные параметры, такие как оценки по 10-му стандарту, 12-му стандарту, выпускник или нет, и если да, то какой был CGPA и так далее.

И на основе этих входных данных у менеджера по найму будут определенные правила в голове, согласно которым, если определенный набор условий удовлетворяется, то человек нанимается. Если эти условия не выполняются, то человек не принимается на работу. Таким образом, мы можем думать об экспертной системе в этих ограниченных условиях.

Теперь, что происходит в различных практических сценариях, включая этот самый сценарий (где мы рассматриваем эту задачу найма кого-то на работу), мы загружены большим количеством данных или у нас может быть что-то, известное как множество многих факторов, мы не основываем наше решение. на 4–5 входных данных (как на изображении выше), но может быть много других факторов, таких как, есть ли у человека какие-либо публикации в прошлом, языки, которыми кандидат владеет, какие системы баз данных (для работы в БД) у кандидата знает, были ли какие-либо награды, которые кандидат получил в прошлом, и если да, то были ли эти награды от ученых, клиентов или организаций и так далее. Итак, есть так много других факторов, на которых мы хотели бы основывать наше решение.

Теперь, если мы просто перечислим все эти данные, это будет выглядеть так, как показано на рисунке ниже.

Здесь, на изображении выше, каждая строка представляет данные для одного сотрудника, который был в этой компании в прошлом, поэтому у нас есть много-много функций, доступных здесь, и у нас также будет один выходной столбец, который снова будет двоичным и будет представлять, сделал ли этот человек хорошую работу (сделал хорошую карьеру) в компании или нет. Теперь то, что мы хотим сделать, это на основе доступных данных придумать некоторые правила, чтобы, если объединить эти параметры в определенных условиях if-else (при необходимости мы могли бы также иметь веса для этих условий, например, если CGPA важнее, чем что-то еще или знание Java важнее всего остального и т. д.), что говорит о том, должна ли компания нанять нового человека, у которого есть определенные ценности для этих функций, так что это работа, которую мы пытаемся сделать.

Но проблема в том, что для любой компании типичного размера потребуется нанять и уволить тысячи сотрудников, проводить итерации и так далее. Многие люди на самом деле уволились бы с работы, поэтому у нас были бы данные по многим сотрудникам и по каждому сотруднику, у нас было бы большое количество характеристик. Таким образом, это приводит к многому объему данных, которые человеку становится трудно осмыслить (например, как вы соотнесете опыт работы с C или Java и относитесь к CGPA, какая связь с 10-ми стандартными оценками). , как бы вы связали их в определенных условиях if-else). Таким образом, в любой реальной проблеме, первая проблема заключается в том, что у нас есть много данных, которые нужно осмыслить, и человеку становится трудно разбить их на определенные, если- другие условия. Во-вторых, даже если мы каким-то образом визуализируем все данные, правила, которые вам могут понадобиться, могут оказаться очень сложными для их записи. Было бы столько перестановок и комбинаций, что в какой-то момент стало бы невозможно все запомнить и записать. Поэтому правила могут быть слишком сложными, чтобы их можно было записать. В некоторых случаях правила могут быть просто невыразимыми, например, менеджер по найму, помимо просмотра всей количественной матрицы, может иметь что-то еще в своем уме, например, он может сказать, что я нанял кандидата, потому что я видел честность в этом кандидате. Итак, как мы можем выразить это как правило? Как мы вообще можем количественно оценить что-то вроде честности? Трудно написать это как правило.

Четвертая проблема заключается в том, что иногда правила могут быть просто неизвестны. Например, независимо от того, сколько у нас данных о лихорадке Эбола, мы до сих пор не знаем факторов, вызывающих это заболевание, поэтому мы рассматриваем множество симптомы, но у многих пациентов проявляются очень разные симптомы, может быть какая-то общая связь между этими пациентами, вызывающими это заболевание, или между этими пациентами может не быть общей связи, это очень случайно, и мы не знаем, что приводит к вспышке лихорадки Эбола. или почему человек заражается этой болезнью или вирусом. Таким образом, правила в этом случае не знает даже человек, несмотря на доступ к большому количеству данных.

Итак, вот четыре проблемы, с которыми обычно сталкивается любая крупномасштабная система, основанная на правилах:

я.) Много данных

ii.) Много сложных правил, которые трудно записать

iii.) И иногда сами правила невыразимы, то есть мы даже не можем записать их как логическое условие.

iv.) Правила неизвестны.

Итак, это привело к развитию Машинного обучения, о котором идет речь в этой статье.

В этой статье рассматривается содержание модуля Экспертные системы — 6 банок курса Глубокое обучение, и все изображения взяты из одного и того же модуля.