Революция разума: на подступах к Сингулярности. Как технологии изменят общество и сознание (страница 4)
Можно рассматривать сложность экспертных систем на основе правил с точки зрения точек отказа. Известно, что количество подмножеств у множества из n-элементов составляет 2n – 1 (не считая пустое множество). Если набор правил ИИ состоит из одного закона, то существует всего одна точка отказа: корректно это правило само по себе или нет. Если правила два, точек отказа будет уже три: две соответствуют каждому из правил в отдельности, а третья относится к их комбинации. С ростом количества правил число возможных точек отказа растет экспоненциально. Пять правил порождают 31 точку отказа, 10 правил – 1023; 100 правил – и точек отказа уже больше тысячи миллиардов умножить на миллиард и еще раз умножить на миллиард, а 1000 правил дают больше гугол умножить на гугол умножить на гугол точек отказа. Из этого, в частности, следует, что чем больше у вас в системе правил, тем больше возможных точек отказа добавит каждое дополнительное правило. Даже если ничтожно малая доля комбинаций из правил работает некорректно, рано или поздно наступит момент (когда конкретно, зависит от задачи), когда добавление нового правила, которое решает проблемную ситуацию, приведет к появлению более одной новой проблемы. Такую ситуацию и называют потолком сложности.
Вероятно, из подобных экспертных систем дольше всего разрабатывалась Cyc (от слова encyclopedic – «энциклопедический»), созданная Дугласом Ленатом и его коллегами по компании Cycorp в 1984 году23. Разработчики преследовали цель зафиксировать все соображения здравого смысла, которые известны людям, например, «брошенное на пол яйцо разобьется» или «ребенок, бегающий по кухне в грязной обуви, вызовет недовольство родителей». Миллионы соображений подобного рода нигде не зафиксированы, но при этом необходимы для понимания того, чем руководствуется среднестатистический человек. Однако, поскольку Cyc хранила эти знания в виде набора правил, она также оказалась подвержена проблеме потолка сложности.
В 1960-х годах мы с Минским обсуждали достоинства и недостатки символьного подхода к созданию ИИ, и в сравнении я начал осознавать преимущества сетевой парадигмы. Коннекционизм подразумевает использование сети простых узлов, которая приобретает функции интеллекта благодаря своей структуре, а не информации в отдельных узлах. Вместо сложных правил система опирается на узлы, которые сами по себе почти ничего не умеют, но, объединенные в большую сеть, способны извлекать информацию из поступающих данных. Благодаря этому такие сети способны находить закономерности, которые никогда не пришли бы в голову программистам, если бы те попытались применить символьный подход. Одним из основных преимуществ сетевого подхода является то, что с его помощью можно решать задачи, не имея готового метода. Ведь даже если бы мы в совершенстве владели навыком правильно формулировать и безошибочно переносить в программу необходимые для работы ИИ правила (а это большое «если»), нам бы все равно мешало отсутствие четкого понимания, какие из них стоит вносить в программу.
Нейронная сеть – это мощный инструмент для решения сложных задач, однако он не лишен недостатков. Построенный по такому принципу искусственный интеллект имеет обыкновение превращаться в «черный ящик». ИИ дает нам ответ, но не в состоянии пояснить, как он пришел именно к такому варианту24. Это свойство угрожает стать серьезной проблемой, поскольку людям хочется знать обоснование принятых решений по важным вопросам, таким как выбор метода лечения, обеспечение соблюдения норм правопорядка, гигиенический надзор, управление рисками. Вот почему в настоящее время ряд экспертов в области ИИ работает над повышением «прозрачности» результатов работы нейросетей (так называемой «механистической интерпретабельности»), иначе говоря, возможности раскрыть причинно-следственные связи, стоящие за их решениями25. Пока неясно, насколько эта цель достижима, учитывая, что многослойные нейросети становятся все более сложными и мощными.
Когда я начинал работать с нейронными сетями, их устройство было гораздо более простым. В основе технологии лежала идея создать компьютерную модель того, как работает центральная нервная система человека. Поначалу это было довольно туманное соображение, потому что моделирование началось еще до того, как ученые смогли более-менее подробно изучить, каким образом организованы сети нейронов в биологическом мозге.
Схема простой нейронной сети
Приведем описание типичного алгоритма на основе нейронной сети. В зависимости от конкретной задачи этот алгоритм может принимать множество форм, но в любом случае при создании системы необходимо выбрать подходящие методы и установить значения ключевых параметров.
Чтобы создать решение на основе нейронной сети, нужно пройти через несколько этапов:
– Определить, какие данные будут использоваться в качестве входных.
– Разработать структуру нейронной сети (то есть задать количество и размеры слоев, а также связи между нейронами).
– Обучить нейросеть на данных с известными ответами.
– Использовать нейросеть для решения новых задач.
– Опубликовать результаты и открыть доступ к своему сервису.
Рассмотрим каждый из этих шагов (кроме последнего) подробнее.
Входные данные
Входные данные задачи, поступающие в нейронную сеть, состоят из ряда чисел. Нейросеть может обрабатывать:
– В задачах распознавания визуальных образов: изображения, представленные в виде двумерного массива чисел, соответствующих пикселям.
– В задачах обработки аудиосигнала (например, речи): звук, представленный в виде двумерного массива чисел, одно измерение в котором соответствует точкам на временной шкале, а второе – характеристикам звука (например, частотным составляющим).
– В задачах распознавания образов произвольной природы: многомерный массив чисел, характеризующих входной образ.
Определение структуры сети
Архитектура нейронной сети определяется связями каждого из нейронов:
– Каждое «входящее» соединение нейрона обычно связано с «исходящим» соединением другого нейрона либо с одним из входных значений набора данных.
– Как правило, единственное «исходящее» соединение служит для передачи результата работы данного нейрона другому, находящемуся в более высоком слое, либо сообщает результат работы всей нейронной сети.
Создание входного слоя нейронов
– Первый слой содержит N0 входных нейронов. Входящие соединения каждого из них связаны с «точками» (то есть числами) из массива входных данных. Количество и структура этих связей могут быть установлены произвольно либо определены с помощью генетического алгоритма (см. описание ниже).
– Для каждого соединения необходимо задать «силу синаптической связи». Начальные значения «весов» связей могут быть равны какому-то одному числу, или заданы случайным образом, или определены каким-либо еще способом.
Создание внутренних слоев нейронов
Необходимо создать M скрытых слоев. В каждом из внутренних слоев:
– Создается Ni нейронов (где i – номер слоя). Входящие соединения каждого из них связываются с исходящими соединениями нейронов в предыдущем слое (см. также раздел «Вариации»).
– Задаются начальные значения «весов» связей, равные какому-то одному числу, определенные случайным образом или другим способом (см. ниже).
– Выходные соединения нейронов в слое с номером M передают итоговый результат работы нейронной сети (см. раздел «Вариации»).
Процесс распознавания
Принцип работы нейрона
Каждый нейрон по ходу одного цикла работы нейросети совершает следующие операции:
– Умножает каждый входящий сигнал (то есть числовое значение, поступившее от нейрона в предыдущем слое либо из массива входных данных) на вес соответствующей синаптической связи.
– Суммирует все входящие взвешенные сигналы.
– Если полученная сумма больше порога активации данного нейрона, нейрон возбуждается и посылает исходящий сигнал, равный единице, иначе исходящий сигнал равен нулю (см. раздел «Вариации» ниже).
Получение результата работы нейросети
Во всех слоях от входного до выходного каждый нейрон выполняет следующие действия:
– Вычисляет взвешенную сумму входящих сигналов (то есть исходящих сигналов нейронов предыдущего слоя либо чисел из массива входных данных).
– Если взвешенная сумма входящих сигналов больше порогового значения для нейрона, исходящий сигнал принимается равным единице, иначе нулю.
Процесс обучения нейронной сети
– Раз за разом проводится процесс распознавания на примерах из обучающей выборки.
– После каждого цикла работы нейросети веса синаптических связей между всеми нейронами корректируются так, чтобы улучшить точность ответов нейросети на данной выборке примеров (о том, как это происходит, рассказано далее).
– Обучение продолжается до тех пор, пока точность работы нейросети на обучающей выборке не перестанет расти (то есть не приблизится к предельным для данных условий значениям).
Ключевые аспекты проектирования
Приведенная выше простая схема требует от разработчика принятия нескольких решений в самом начале работы:
– Каким аспектам задачи будут соответствовать числа, подаваемые на вход нейронной сети.
– Каким будет количество слоев.
– Сколько нейронов будет в каждом слое (это число может быть различным для разных слоев).
– Сколько входящих соединений будет у нейронов в каждом слое. Это количество тоже может отличаться от слоя к слою и даже от нейрона к нейрону внутри одного слоя.
– Какой будет сама структура связей. Для каждого нейрона необходимо составить список нейронов, исходящие соединения которых будут являться входящими для данного. Это одна из самых важных задач при проектировании. Ее можно решить разными путями:
1. Назначить соединения случайным образом.
2. Использовать генетический алгоритм (см. ниже) для определения оптимальной схемы.
3. Задать топологию на усмотрение разработчика.
– Какими будут начальные значения весов всех синаптических связей. Они могут быть определены разными способами:
1. Установлены равными какому-то одному значению.
2. Определены случайным образом.
3. Найдены с помощью генетического алгоритма.
4. Установлены согласно представлениям разработчика.
– Каков будет порог активации для каждого нейрона.
– В какой форме нейросеть будет давать ответ. Результатом ее работы может быть:
1. Массив сигналов нейронов выходного слоя.
2. Исходящий сигнал единственного нейрона, на вход которому подаются сигналы последнего слоя нейронов.
3. Результат вычисления определенной функции от исходящих сигналов нейронов последнего слоя, например, их сумма.
4. Результат вычисления определенной функции от исходящих сигналов нейронов нескольких слоев.
– Каким методом будут корректироваться синаптические веса в ходе обучения нейросети. Это один из ключевых моментов, которому посвящены многочисленные исследования и дискуссии. Отметим ряд важных моментов:
1. После каждого цикла работы нейросети можно поочередно увеличивать или уменьшать вес каждого соединения на малую величину и проверять, какое из этих изменений увеличивает точность работы. Это требует больших временных затрат, поэтому были разработаны способы предсказать сторону, в которую следует изменить вес конкретной связи.
2. Существуют специальные статистические методы коррекции весов после каждого цикла работы сети, позволяющие добиться того, чтобы сеть давала более точный ответ для текущего примера.
3. Заметим, что нейросеть может успешно обучаться даже при наличии ошибок в обучающей выборке примеров. Это позволяет использовать данные, собранные в реальном мире, в которых неизбежно присутствует доля ошибочно размеченных. Для достижения хотя бы удовлетворительных результатов обучения нейросети распознаванию образов очень важным условием является наличие большого количества тренировочных данных. Как и в случае с человеком, время, затраченное на обучение, имеет большое значение для качества итогового результата.
Вариации
Существует множество вариаций приведенной выше схемы:
– Топологию сети можно выбрать случайным образом или найти оптимальную схему связей между нейронами, применив генетический алгоритм, в котором используется подобие мутации и естественного отбора применительно к структуре сети.
– Веса можно устанавливать в соответствии с различными соображениями.