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

Мотивация

Что такое искусственный интеллект? Кто знает. Это постоянно меняющаяся цель, чтобы определить, что является ИИ, а что нет. Итак, я хотел бы погрузиться в более конкретную науку - вычислительный интеллект (CI). CI - это набор из трех теорий, а также их дизайн и приложения. Они более строгие с математической точки зрения и могут отделить вас от стаи, добавив к вашему набору инструментов Data Science. Возможно, вы знакомы с этими ветвями - Нейронные сети, Эволюционные вычисления и Нечеткие системы. Погружаясь в CI, мы можем говорить о сложных алгоритмах, которые решают более сложные проблемы.

Внутри CI существует большое сообщество. В частности, в IEEE существует большое сообщество CI с ежегодной конференцией для каждого филиала. Я публиковался / был волонтером на конференции FUZZ-IEEE в течение последних нескольких лет, и это всегда отличная возможность узнать о новейшей математике и алгоритмах. Каждое сообщество продвигает инновации в области CI, которая перетекает из академических кругов в промышленность. Многие методы CI зародились в академических кругах и превратились в реальные приложения.

Один из наиболее частых вопросов, которые я получаю, когда говорю о CI: «Какие проблемы решает каждая ветвь?» Хотя я понимаю этот вопрос, ветки не сегментированы по тому, какие проблемы они решают.
Вдохновение теорий разделяет ветви. Таким образом, невозможно сегментировать их приложения. «Но, Брайс, что такое теория КИ?» Короче говоря, каждая теория начинается с математического представления, которое затем воплощается в алгоритм (что-то, что может сделать компьютер). Каждая из ветвей сама по себе заслуживает множества статей. В этом посте я даю общий обзор и пример совместной работы каждой ветки для решения проблемы. Читая это, помните, что невозможно сделать больше, чем коснуться поверхности с помощью методов, содержащихся в каждой ветви. Я буду писать более подробные сообщения о конкретных экземплярах каждой из этих ветвей, но я хочу описать каждую из них на высоком уровне, чтобы вы могли почувствовать вкус того, что возможно.

Нейронные сети

Вдохновение: «Искусственные нейронные сети (НС), использующие человеческий мозг в качестве источника вдохновения, представляют собой массивно-параллельные распределенные сети, способные учиться и обобщать примеры». [1]

Каждая NN состоит из нейронов, и их организация определяет их архитектуру. Ширина и глубина NN определяют их архитектуру; Отсюда и зародилось «глубокое обучение» - наличие глубоких сетей NN. В области обработки естественного языка (NLP) архитектуре GPT-4 уделяется большое внимание. Что касается компьютерного зрения (CV), я всегда был поклонником архитектуры GoogleNet. Ни одна архитектура не подходит для каждой ситуации, поэтому существует так много разных.

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

Для вычисления математики в каждом нейроне выполняются два важных шага.

  1. Точечный продукт - умножение и сложение (внутри круга)
  2. Предопределенная математическая функция («f (y)»)

Умножение простое; точки веса (w) с входом (x). Получив ответ, вы передаете его математической функции f (y). Каждый из этих шагов - хитрый трюк, позволяющий извлечь уроки из данных. Умножение - это линейное уравнение, поэтому оно может изучать только линейные отношения. В большинстве случаев данные не являются линейными. В результате нам нужно дать НС свободу изучать более сложные паттерны. Заранее заданная нелинейная функция (функция активации) позволяет NN изучать нелинейные отношения.

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

Архитектура становится все более сложной с каждым нейроном. Предлагаю посмотреть, сколько параметров у GPT-4;). Теперь вы можете представить, сколько разных архитектур у вас может быть с бесконечным количеством конфигураций. Конечно, оборудование ограничивает размер нашей архитектуры, но NVIDIA (и другие) масштабируют оборудование впечатляющими темпами.

До сих пор мы исследовали только вычисления, которые происходят внутри сети с установленными весами. Найти подходящие веса - сложная задача, но, к счастью, существуют математические приемы, позволяющие их оптимизировать. Если вас интересуют подробности, я рекомендую вам поискать обратное распространение. Обратное распространение использует цепное правило (из исчисления) для оптимизации весов. Для этого поста не обязательно понимать, как обучение весов, но необходимо знать, что обратное распространение делает это очень хорошо. Но здесь есть свои оговорки. По мере обучения сетевые сети оптимизируют все веса относительно данных. Однако сначала нужно определить веса - они должны иметь какое-то значение. Возникает вопрос: с чего начать? Обычно мы присваиваем весам случайные значения. К сожалению, неправильная инициализация может привести к неоптимальному решению. Итак, обычная практика полагается на многократное обучение NN с различными инициализациями в надежде найти лучшее. Эта проблема является прямым результатом использования обратного распространения ошибки - нахождение локально оптимального решения не означает, что у нас есть ЛУЧШЕЕ решение. В этом абзаце есть множество ключевых слов для Google для более подробного изучения.

Дело в том, что NN - это математическая структура, представляющая сложные функции, вдохновленные нейронной структурой мозга. NN изучают множество функций, но наиболее распространенной является регрессия (классификация технически является типом регрессии - подумайте об этом) . В следующих статьях я более подробно расскажу о сложных архитектурах и вариантах их использования. Но рассмотрим пример, когда сеть классифицирует вино как хорошее или плохое. Примерные характеристики (входные данные) для вина - его сладость, кислотность и уровень алкоголя (есть еще много возможных входных параметров, но давайте ограничим их тремя). Давайте также ограничим эту проблему одним нейроном. Имея достаточное количество образцов данных, хорошее и плохое вино (относительно этих входных данных), NN может научиться классифицировать вино как хорошее или плохое на основе этих характеристик.

Помните, в чем может быть наша проблема? Случайная инициализация. К счастью, Evolutionary Computation предлагает решение (примечание: я сосредоточен на этой проблеме, чтобы связать все три ветви вместе). Для более детального изучения НС я рекомендую эту статью.

Эволюционные вычисления

Вдохновение: «Используя биологическую эволюцию в качестве источника вдохновения, эволюционные вычисления (EC) решают проблемы оптимизации, генерируя, оценивая и изменяя совокупность возможных решений». [1]

Генетические алгоритмы (ГА), вероятно, являются наиболее популярным алгоритмом, принадлежащим EC. Оптимизация роя частиц, оптимизация колоний муравьев, генетическое программирование (среди прочего) также относятся к эволюционным вычислениям, но мы ограничим объем ГА.

  • Эволюционный процесс вдохновил на создание ГА. ГА моделируют многие поколения проблемы, чтобы найти лучшее решение. Как и NN, GA пытаются оптимизировать функцию затрат, но в GA это называется функцией приспособленности. Фитнес-функции гибки в том, что они могут моделировать, но все они имеют одни и те же компоненты - хромосомы и гены. Строительными блоками каждой хромосомы являются гены. Подобно NN, гены - это веса, которые оптимизирует GA. Шаги к алгоритму следующие:
  1. Сгенерировать N хромосом (случайным образом)
  2. Оцените приспособленность каждой хромосомы (функция приспособленности)
  3. Выбрать родительские хромосомы для следующего поколения (выбор)
  4. Создание детских хромосом от наиболее подходящих родителей (кроссовер)
  5. Изменить какие-нибудь гены? (мутация)
  6. Повторяйте с шага 2 до тех пор, пока не будете довольны (сходимость)

Для более подробного объяснения ознакомьтесь с этим постом. GA обладают способностью находить лучшее решение, чем NN, но это не гарантирует, что они это сделают. Один из параметров может быть близок к идеальному решению, но он не может его распознать. Идеального алгоритма оптимизации не существует, поэтому их так много. Однако ГА могут найти отличные ответы при правильном использовании. Рассмотрим наш предыдущий пример с вином. Мы можем использовать как GA, так и NN в тандеме. В этом случае GA может сначала идентифицировать начальный набор весов (каждый набор будет хромосомой), а затем NN может оптимизировать, используя обратное распространение. В совместном использовании этих алгоритмов нет необходимости (потому что мы, вероятно, сможем найти хорошее решение с любым из них), но я хочу подчеркнуть, как мы можем использовать эти алгоритмы вместе для решения одной и той же проблемы.

Нечеткие системы

Вдохновение: «Используя человеческий язык в качестве источника вдохновения, нечеткие системы (ФС) моделируют лингвистическую неточность и решают неопределенные проблемы на основе обобщения традиционной логики, что позволяет нам проводить приблизительные рассуждения». [1]

Полное раскрытие информации - я предвзято отношусь к нечетким системам, поэтому постараюсь придерживаться фактов. Есть много способов объяснить эту тему, но мне нравится начинать с нечетких множеств. Традиционная теория множеств вынуждает элементы принадлежать к тому или иному множеству. Например, лошадь принадлежит к набору млекопитающих, а лягушка - к множеству земноводных. Эта структура (также известная как теория четких множеств) работает для ситуаций с точной сегментацией; однако мир не так точен. Подумайте о представлении серого цвета. Когда он относится к белому набору? Когда он относится к черному набору? В теории четких множеств мы должны решить, какой именно. Но в теории нечетких множеств он может принадлежать обоим с степенью принадлежности. Функция принадлежности (или характеристическая функция) вычисляет степень принадлежности. Размер степени членства - это то, насколько элемент принадлежит набору. В следующем примере показано, как может выглядеть функция принадлежности при построении графика по полному диапазону значений. Мы можем посмотреть на следующий график и оценить, что исходное значение 50 будет иметь степень принадлежности 1; однако, когда исходные значения приближаются к 100, степень членства быстро приближается к степени членства 0.

Многие различные функции могут представлять функцию принадлежности; Я только что показал один пример. Эти функции составляют основу теории, потому что с их помощью мы начинаем математически описывать мир. Как только они определены, мы начинаем разрабатывать более сложные представления, такие как нечеткие правила.

Нечеткие правила похожи на правила традиционной логики; однако они нечеткие. Давайте рассмотрим следующее правило относительно содержания алкоголя в нашем примере с вином (я знаю, что язык не идеален, но придерживайтесь меня):

Если кислая, то она нам понравится.

Используя четкую логику, мы определяем порог. Этот порог проводит границу между тем, что мы считаем алкоголиком или нет. Если мы проведем эту линию на уровне кислотности 4, все, что ниже 4, станет не кислотным (включая 3,99). Мы знаем, что в этом нет смысла. Наверное, нам понравится, если будет 3,99.

Введите нечеткую логику. Применяя к этому правилу нечеткую логику, мы используем функцию принадлежности, чтобы фиксировать как «кислотность», так и то, насколько она нам понравится. Без жесткого порога мы сможем интерпретировать это утверждение с более человеческой интуицией. Математический вывод может выглядеть так:

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

Заключение

AI повсеместен. Этот термин заполонил нашу жизнь и потерял свой вкус. Но, как специалист по анализу данных / инженер машинного обучения / инженер искусственного интеллекта (как бы вы себя ни называли), мы можем поддерживать сообщество на более высоком уровне. Мы можем конкретизировать наши алгоритмы, поэтому наша работа представляет собой нечто большее, чем набор заранее определенных операторов «если-то». Конечно, я знаю, что существуют интеллектуальные алгоритмы за пределами этой структуры, но это реалистичный способ обсудить нашу работу и подчеркнуть уникальность наших методов (если вы их используете). Если вы новичок в CI, я призываю вас найти приложения, расширить теорию и стать частью сообщества CI (я буду первым, кто вас поприветствует;)).

Ссылки:
[1] https://cis.ieee.org/about/what-is-ci