Эволюция разума. Как расширение возможностей нашего разума позволит решить многие мировые проблемы — страница 26 из 52

Наши первые системы распознавания речи были основаны на специфических правилах, описывающих структуру фонем и предложений, составленных и закодированных лингвистами, но новым системам на основе ИСММ не нужно было объяснять, что в английском языке 44 фонемы, каковы последовательности вероятных векторов для каждой фонемы и что одни последовательности фонем встречаются чаще других. Мы предоставили системе возможность самостоятельно обнаружить эти «правила» в процессе тысяч часов обработки транскрибированной человеческой речи. Преимущество этого подхода, в отличие от тренировки модели на заранее заданных правилах, заключается в том, что система находит вероятностные закономерности, о которых лингвисты порой даже не подозревают. Мы обратили внимание на то, что правила, усвоенные системой в автоматическом режиме при обработке предоставленных ей данных, не очень сильно отличаются от правил, сформулированных экспертами, но эти отличия могут быть чрезвычайно важными.

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

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

Эволюционные (генетические) алгоритмы

Еще один важный аспект разработки программы заключается в том, чтобы найти способ установить все те многочисленные параметры, которые контролируют функционирование системы распознавания. Среди этих параметров — допустимое число векторов для этапа векторного квантования, исходная топология иерархических состояний (до того, как в процессе тренировки ИСММ ликвидирует неиспользуемые состояния), порог распознавания на каждом иерархическом уровне, параметры, определяющие величину сигналов, и многое другое. Мы можем использовать интуитивный подход, но результаты будут далеки от оптимальных.

Мы называем данные параметры «Божьими параметрами», поскольку они устанавливаются до включения самоорганизующегося метода определения топологии скрытых моделей Маркова (или, в случае биологической новой коры, до того как человек начинает заучивать урок путем создания связей между нейронами новой коры). Возможно, название неправильное, поскольку эти исходные данные, записанные в ДНК, определены ходом биологической эволюции, хотя некоторые усматривают в этом процессе божий промысел (я, безусловно, считаю эволюцию духовным процессом и обращусь к этой теме в девятой главе).

Когда мы начали устанавливать «Божьи параметры» при моделировании иерархических систем обучения и распознавания, мы опять-таки обратились к природе и попытались оценить их путем моделирования процесса эволюции. Мы использовали так называемые генетические (эволюционные) алгоритмы, основанные на моделировании полового размножения и мутаций.

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

Далее мы оценивали каждый модельный организм в модельной среде, используя описанный метод определения каждого набора параметров. Эта оценка — ключ к успеху генетического алгоритма. В нашем примере мы проверяли все программы, созданные на основе наших параметров, и оценивали их по определенным критериям (решена ли задача, как быстро она решается и т. д.). Лучшим организмам (лучшим «решениям») разрешалось выжить, а остальные были элиминированы.

Далее мы заставляли выжившие организмы размножаться до определенной численности «особей». Для этого мы имитировали половое размножение: иными словами, мы создавали потомство, в котором каждая особь наследовала одну часть генетического кода от одного родителя, а другую — от другого. Обычно в нашей системе нет никакой разницы между женскими и мужскими организмами, потомство может давать любая пара условных родителей, так что речь фактически идет об однополых браках. В этой связи данный процесс не столь интересен, как в природе. Для нас было важно только наличие двух родителей. По мере размножения наших модельных организмов мы допускали появление в их хромосомах случайных мутаций (изменений).

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

Суть генетического алгоритма (ГА) заключается в том, что создатели программы не программируют решение, а позволяют ему сформироваться в результате многократных имитаций конкуренции и улучшений. Биологическая эволюция — процесс умный, но медленный, и мы попытались этот медленный процесс ускорить. Компьютер действует достаточно быстро, чтобы имитировать смену множества поколений за несколько часов или дней, а наши эксперименты длились несколько недель, так что мы могли наблюдать смену сотен тысяч поколений. Но этот многократно повторяющийся процесс мы должны были воспроизвести лишь однажды. Как только мы запустили процесс искусственной эволюции, достаточно быстро смогли применить полученные усовершенствованные правила к решению реальных проблем. В нашей системе распознавания речи мы использовали их для обнаружения исходной топологии сети и других критических параметров. Итак, мы использовали две самоорганизующиеся системы: ГА для симуляции биологической эволюции, что позволило определить специфический дизайн коры, и ИСММ для симуляции организации коры, определяющей процесс обучения у человека.

Еще одно важное требование для успешного применения ГА заключается в обеспечении надежного метода оценки всех возможных решений. Эта оценка должна быть быстрой, поскольку в каждом поколении приходится анализировать тысячи возможных вариантов. Метод ГА прекрасно подходит для нахождения точного аналитического значения в задачах с очень большим числом переменных. Например, при проектировании моторов приходится учитывать более сотни переменных и удовлетворять десяткам различных условий. Использование инженерами General Electric метода ГА при создании реактивного двигателя позволило добиться более точного соответствия необходимым требованиям, чем применение традиционных методов.

При использовании ГА, однако, следует с особым вниманием относиться к тому, о чем вы собираетесь спросить. Этот алгоритм был разработан для решения статистической задачи о стопке брусков, для которой он позволяет найти идеальное решение, но за тысячи ходов. Программисты забыли включить в программу функцию минимизации операций.

Проект «Электрическая овца» Скотта Дрейва — основанная на генетическом алгоритме программа, которая умеет рисовать. Функция оценки использует в качестве оценщиков многие тысячи людей. Рисунки изменяются во времени — вы можете увидеть их на сайте electricsheep.org.

В системах распознавания речи сочетание генетических алгоритмов и скрытых моделей Маркова дало возможность получить отличные результаты. Симуляция эволюции с помощью ГА в значительной степени улучшила производительность сетей ИСММ. Эволюция позволила достичь результата, который намного превзошел исходный вариант, основанный на нашей интуиции.

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

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

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

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