Текст книги "Эволюция разума"
Автор книги: Рэймонд Курцвейл
Жанр:
Биология
сообщить о нарушении
Текущая страница: 11 (всего у книги 20 страниц)
Эволюционные (генетические) алгоритмы
Еще один важный аспект разработки программы заключается в том, чтобы найти способ установить все те многочисленные параметры, которые контролируют функционирование системы распознавания. Среди этих параметров – допустимое число векторов для этапа векторного квантования, исходная топология иерархических состояний (до того, как в процессе тренировки ИСММ ликвидирует неиспользуемые состояния), порог распознавания на каждом иерархическом уровне, параметры, определяющие величину сигналов, и многое другое. Мы можем использовать интуитивный подход, но результаты будут далеки от оптимальных.
Мы называем данные параметры «Божьими параметрами», поскольку они устанавливаются до включения самоорганизующегося метода определения топологии скрытых моделей Маркова (или, в случае биологической новой коры, до того как человек начинает заучивать урок путем создания связей между нейронами новой коры). Возможно, название неправильное, поскольку эти исходные данные, записанные в ДНК, определены ходом биологической эволюции, хотя некоторые усматривают в этом процессе божий промысел (я, безусловно, считаю эволюцию духовным процессом и обращусь к этой теме в девятой главе).
Когда мы начали устанавливать «Божьи параметры» при моделировании иерархических систем обучения и распознавания, мы опять-таки обратились к природе и попытались оценить их путем моделирования процесса эволюции. Мы использовали так называемые генетические (эволюционные) алгоритмы, основанные на моделировании полового размножения и мутаций.
Я опишу этот процесс в упрощенном виде. Сначала мы определяли способ кодирования возможных решений данной проблемы. Если проблема заключалась в оптимизации исходных параметров какой-то цепи, мы определяли список всех параметров (приписывая каждому специфический объем информации (число битов)) этой цепи. Этот список является своеобразным генетическим кодом генетического алгоритма. Мы случайным образом создавали тысячи и более таких генетических кодов. Каждый код (который представляет собой один набор исходных параметров) рассматривается в качестве модельного организма («решения»).
Далее мы оценивали каждый модельный организм в модельной среде, используя описанный метод определения каждого набора параметров. Эта оценка – ключ к успеху генетического алгоритма. В нашем примере мы проверяли все программы, созданные на основе наших параметров, и оценивали их по определенным критериям (решена ли задача, как быстро она решается и т. д.). Лучшим организмам (лучшим «решениям») разрешалось выжить, а остальные были элиминированы.
Далее мы заставляли выжившие организмы размножаться до определенной численности «особей». Для этого мы имитировали половое размножение: иными словами, мы создавали потомство, в котором каждая особь наследовала одну часть генетического кода от одного родителя, а другую – от другого. Обычно в нашей системе нет никакой разницы между женскими и мужскими организмами, потомство может давать любая пара условных родителей, так что речь фактически идет об однополых браках. В этой связи данный процесс не столь интересен, как в природе. Для нас было важно только наличие двух родителей. По мере размножения наших модельных организмов мы допускали появление в их хромосомах случайных мутаций (изменений).
Итак, мы описали появление одного поколения модельных организмов. Далее мы повторяли все те же процессы для каждого следующего поколения: определяли, насколько улучшился дизайн (то есть рассчитывали среднее улучшение оценки для всех выживших организмов). Когда результаты оценки организмов из двух последовательных поколений практически переставали улучшаться, мы останавливали цикл и использовали лучшие образцы из последнего поколения[99]99
Ниже представлена схема генетического (эволюционного) алгоритма. Существует множество вариаций этого алгоритма, и создателям системы необходимо подобрать некоторые критические параметры и методы (см. ниже).
Генетический алгоритм.
Создать N «существ» (решений). Каждое из них характеризуется генетическим кодом – последовательностью чисел, характеризующих возможное решение проблемы. Эти числа могут описывать критические параметры, стадии решения, правила и др.
Процедуру осуществляют для каждого поколения в ходе эволюции.
Процедуру осуществляют для каждого из N существ (решений).
Используют данное решение (представленное генетическим кодом существа) для решения проблемы или симуляции. Оценивают решение.
Выбирают L существ с максимальным рейтингом выживания в будущем поколении.
Отбрасывают (N-L) оставшихся не способных выжить существ.
Создают (N-L) новых существ из L выживших существ следующим образом:
1) делают копии L выживших существ. В каждую копию вводят небольшие случайные вариации; или
2) создают дополнительных существ путем комбинаций генетического кода («половое» воспроизведение или комбинация отдельных частей хромосом) L выживших существ; или
3) выполняют комбинацию методов 1 и 2.
Принимают решение о необходимости дальнейшей эволюции.
Улучшение = (высший рейтинг в данном поколении) – (высший рейтинг в предыдущем поколении).
Если Улучшение < Предел улучшения, значит, процедура закончена.
Существо с наивысшим рейтингом из последнего поколения является наилучшим решением.
Используют это решение, определяемое его генетическим кодом, для решения проблемы.
Ключевые решения.
При реализации приведенной выше простой схемы создатель программы должен сначала установить следующие показатели.
Ключевые параметры:
N
L
Предел улучшения.
Чему соответствуют числа генетического кода, и как на основе генетического кода рассчитывается решение.
Метод выбора N существ в первом поколении. Обычно это лишь некая «разумная» попытка найти решение. Если разброс решений первого поколения слишком велик, эволюционный алгоритм может не найти хорошего решения. Часто имеет смысл выбрать исходные существа таким образом, чтобы они отличались разумным разнообразием. Это позволит избежать обнаружения оптимального решения «локального» значения.
Способ оценки решений.
Способ воспроизводства выживших существ.
Вариации.
Возможно множество вариаций предыдущего сценария. Например…
В каждом поколении не обязательно должно оставаться фиксированное количество выживших существ (L). Правила выживания могут позволять выживать разному количеству существ.
В каждом поколении не обязательно должно появляться фиксированное количество новых существ (N-L). Правила воспроизводства могут быть независимыми от размера популяции. Воспроизводство может коррелировать с выживанием, в результате чего наиболее успешные существа лучше воспроизводятся.
Решение о продолжении эволюции может приниматься по-разному. Оно может учитывать не только лучших существ из последних поколений, но и другую информацию. Решение также может учитывать тенденцию, простирающуюся за пределы двух последних поколений.
[Закрыть].
Суть генетического алгоритма (ГА) заключается в том, что создатели программы не программируют решение, а позволяют ему сформироваться в результате многократных имитаций конкуренции и улучшений. Биологическая эволюция – процесс умный, но медленный, и мы попытались этот медленный процесс ускорить. Компьютер действует достаточно быстро, чтобы имитировать смену множества поколений за несколько часов или дней, а наши эксперименты длились несколько недель, так что мы могли наблюдать смену сотен тысяч поколений. Но этот многократно повторяющийся процесс мы должны были воспроизвести лишь однажды. Как только мы запустили процесс искусственной эволюции, достаточно быстро смогли применить полученные усовершенствованные правила к решению реальных проблем. В нашей системе распознавания речи мы использовали их для обнаружения исходной топологии сети и других критических параметров. Итак, мы использовали две самоорганизующиеся системы: ГА для симуляции биологической эволюции, что позволило определить специфический дизайн коры, и ИСММ для симуляции организации коры, определяющей процесс обучения у человека.
Еще одно важное требование для успешного применения ГА заключается в обеспечении надежного метода оценки всех возможных решений. Эта оценка должна быть быстрой, поскольку в каждом поколении приходится анализировать тысячи возможных вариантов. Метод ГА прекрасно подходит для нахождения точного аналитического значения в задачах с очень большим числом переменных. Например, при проектировании моторов приходится учитывать более сотни переменных и удовлетворять десяткам различных условий. Использование инженерами General Electric метода ГА при создании реактивного двигателя позволило добиться более точного соответствия необходимым требованиям, чем применение традиционных методов.
При использовании ГА, однако, следует с особым вниманием относиться к тому, о чем вы собираетесь спросить. Этот алгоритм был разработан для решения статистической задачи о стопке брусков, для которой он позволяет найти идеальное решение, но за тысячи ходов. Программисты забыли включить в программу функцию минимизации операций.
Проект «Электрическая овца» Скотта Дрейва – основанная на генетическом алгоритме программа, которая умеет рисовать. Функция оценки использует в качестве оценщиков многие тысячи людей. Рисунки изменяются во времени – вы можете увидеть их на сайте electricsheep.org.
В системах распознавания речи сочетание генетических алгоритмов и скрытых моделей Маркова дало возможность получить отличные результаты. Симуляция эволюции с помощью ГА в значительной степени улучшила производительность сетей ИСММ. Эволюция позволила достичь результата, который намного превзошел исходный вариант, основанный на нашей интуиции.
Далее мы экспериментировали, вводя в систему небольшие изменения. Например, мы создавали некоторые пертурбации (случайные небольшие изменения) входного сигнала. Другое изменение состояло в том, что мы заставляли соседние марковские цепи «протекать» друг в друга: результаты одной модели влияли на «соседние» модели. В то время мы не отдавали себе в этом отчета, однако производимые нами изменения действительно напоминали процессы, происходящие в структурах биологической коры.
В первую очередь такие изменения снижали эффективность системы (точность распознавания). Однако если мы повторяли эволюционный процесс (то есть перезапускали генетический алгоритм) при наличии подобных изменений, это позволяло адаптировать систему и оптимизировать ее к данным условиям. Обычно это приводило к восстановлению эффективности. Если затем мы удаляли внесенные изменения, эффективность вновь падала, поскольку система эволюционировала для их компенсации. Адаптированная система становилась зависимой от внесенных изменений.
В частности, небольшие случайные изменения на входе позволяли повысить эффективность системы (после повторного проведения ГА). Причина заключается в проблеме так называемой сверхподгонки, характерной для самоорганизующихся систем. Существует опасность, что такая система в основном будет настроена на специфические примеры, которые использовались для ее обучения. Внесение случайных изменений на входе позволяет добиться большей инвариантности данных для обучения системы. Но этот метод работает только в том случае, если в новых условиях мы вновь запускаем генетический алгоритм.
Тут возникает дилемма в нашем понимании функционирования биологических кортикальных цепей. Например, было подмечено, что иногда происходит «протечка» кортикальных контактов, что объясняется самой природой биологических связей: электрохимические свойства аксонов и дендритов зависят от электромагнитного воздействия соседних контактов. Представьте, что нам удастся провести эксперимент с реальным мозгом, в котором подобная возможность устранена. Сделать это трудно, но не невозможно. Представьте, что в результате подобного эксперимента мы обнаружили, что кортикальные цепи работают менее эффективно. Нам пришлось бы заключить, что это явление – очень умное эволюционное приспособление, необходимое для достижения максимальной эффективности функции новой коры. А еще пришлось бы признать, что иерархические модели, описывающие восходящие потоки образов и нисходящие предсказательные сигналы, на самом деле гораздо сложнее, поскольку должны учитывать еще и взаимное влияние контактов.
Однако этот вывод не обязательно верен. Вернемся к нашему эксперименту с имитацией новой коры на основе иерархических скрытых моделей Маркова, в котором предусмотрим модификацию, напоминающую взаимное влияние нейронов. Если мы в этой системе повторим эволюционный процесс, эффективность системы восстановится (поскольку эволюция адаптируется к изменениям). Если же мы устраним взаимное влияние нейронов, эффективность вновь понизится. В биологической системе эволюция («настоящая» биологическая эволюция) действительно «прогонялась» при наличии подобного фактора. Таким образом, биологическая эволюция выбрала такие параметры системы, которые зависят от данных факторов, и их изменение негативно скажется на эффективности системы, если только мы не «перезапустим» эволюционный процесс. В компьютерном мире сделать это несложно – здесь эволюционный процесс занимает дни или недели, но в природе для этого потребовались бы десятки тысячелетий.
Так каким же образом мы можем установить, является ли какой-то характерный признак строения биологической новой коры жизненно важной инновацией, внесенной биологической эволюцией (то есть этот признак важен для нашего уровня интеллекта), или это лишь артефакт строения, от которого система теперь зависит, но без которого вполне могла бы развиваться дальше? Чтобы ответить на этот вопрос, достаточно просто запустить имитацию эволюционного процесса при наличии и при отсутствии этих деталей строения (например, при наличии и при отсутствии протечки контактов). Более того, мы можем проследить и за биологической эволюцией, наблюдая за колонией микроорганизмов, у которых процесс воспроизводства измеряется часами, но со сложными организмами, такими как человек, проделать такой эксперимент не представляется возможным. Это еще один из многих недостатков биологии.
Вернемся к нашим экспериментам по распознаванию речи. Мы обнаружили, что результаты получаются лучше, если мы запускаем эволюцию (то есть ГА) независимо в исходной системе для 1) иерархических скрытых моделей Маркова для внутренней структуры фонем и для 2) ИСММ для структуры слов и фраз. На обоих уровнях использовались ИСММ, но метод ГА создавал вариации на стыке этих двух уровней. Метод позволил моделировать такие явления, как размывание фонем, что часто случается при сочленении некоторых слов.
Вероятно, подобные явления происходят в различных отделах биологической новой коры, и в зависимости от типов образов, которые они обрабатывают, в них эволюционировали небольшие различия. Хотя все эти отделы используют один и тот же базовый алгоритм, у биологической эволюции было достаточно времени для тонкой настройки структуры каждого отдела, позволяющей оптимально обрабатывать образы соответствующего типа. Однако, как я уже отмечал ранее, нейробиологи и неврологи обнаружили в этих областях значительную пластичность, подтверждающую идею общего неокортикального алгоритма. Если бы фундаментальные принципы функционирования всех отделов коры кардинально различались, подобная взаимозаменяемость отделов коры была бы невозможна.
Используя описанную комбинацию методов самоорганизации системы, мы добились больших успехов. Наши системы распознавания речи впервые смогли разбирать непрерывную речь, состоящую из относительно неограниченного набора слов. Была достигнута высокая точность распознавания речи разных людей, говоривших с разным акцентом и на разных диалектах. Сейчас, когда я пишу эту книгу, последним достижением является программа под названием Dragon Naturally Speaking (версия 11.5) для PC компании Nuance (ранее Kurzweil Computer Products). Тем, кто сомневается в возможностях систем распознавания речи, я советую испытать этот продукт – через несколько минут настраивания на ваш голос при практически непрерывной речи и почти неограниченном наборе слов точность распознавания часто достигает 99 %. Dragon Dictation – более простое, но тоже удивительное бесплатное приложение для айфона, не требующее голосового тренинга. Персональный помощник Сири, установленный на современных айфонах, использует ту же самую технологию распознавания речи, содержащую дополнительный модуль, воспринимающий разговорную речь.
Высокая эффективность подобных систем – заслуга математиков. Вместе с математиками мы моделируем процессы, происходящие в новой коре говорящего человека (хотя у нас нет прямого доступа к его головному мозгу), что является ключевым этапом в распознавании того, что произносит говорящий, и (в случае таких систем, как Сири) того, что эти выражения означают. Возникает вопрос: если бы мы могли следить за тем, что происходит в новой коре говорящего, нашли бы мы корреляцию со связями и весами соответствующих иерархических скрытых моделей Маркова, рассчитанных нашей программой? Скорее всего, нам не удалось бы обнаружить точное соответствие – нейронные структуры в любом случае во многом отличаются от компьютерных моделей. Однако следует подчеркнуть, что между биологической системой и нашими попытками ее имитировать должны существовать важные математические соответствия – в противном случае эти модели не работали бы так хорошо.
ЛИСП
ЛИСП (LISP, LISt Processor – процессор списков) – язык программирования, созданный пионером в области ИИ Джоном Маккарти в 1958 г. Как следует из названия, этот язык оперирует списками. Каждое утверждение в нем представляет собой список элементов, а каждый элемент – это либо еще один список, либо «атом» – неделимая единица, представляющая собой число или символ. Список внутри списка тоже может быть списком, так что ЛИСП способен на рекурсию. Кроме того, предложения являются рекурсивными, если один список содержит в себе другой, тот – третий и т. д. до тех пор, пока не будет определен исходный список. За счет такой структуры ЛИСП позволяет осуществлять иерархические построения. Список может быть условным, то есть «возбуждается» лишь в том случае, когда удовлетворяются все составляющие его элементы. Иерархию таких условий можно использовать для идентификации образов с возрастающим уровнем сложности.
ЛИСП был чрезвычайно популярен в среде специалистов в области ИИ в 1970-х и начале 1980-х гг. В начале данного периода поклонники этого языка считали, что он отражает способ работы человеческого мозга и что с его помощью можно легко и эффективно закодировать любой мыслительный процесс.
Возник даже «мини-бум» компаний по созданию «искусственного интеллекта», предлагавших программы-переводчики и другие программные продукты, однако в середине 1980-х гг. стало ясно, что сам по себе язык ЛИСП не может решить проблему создания разума, и инвестиционный пузырь лопнул.
Впрочем, нельзя сказать, что поклонники ЛИСП полностью заблуждались. На самом деле каждый распознающий модуль новой коры можно рассматривать как предложение на языке ЛИСП – в каждом модуле содержится список элементов, причем каждый элемент тоже может представлять собой список. Таким образом, новая кора действительно занимается обработкой списков символов, что очень сильно напоминает процесс, описываемый программой ЛИСП. Более того, новая кора одновременно обрабатывает 300 млн таких «предложений».
Однако программе ЛИСП не хватало двух очень важных элементов, одним из которых является возможность обучения. Программу строку за строкой кодировали программисты. Делались попытки автоматического кодирования программы с помощью нескольких разных методов, но этому подходу уделялось недостаточно внимания в рамках общей концепции языка. Напротив, новая кора программирует сама себя, наполняя свои «предложения» (списки) значимой информацией на основе собственного опыта и сигналов обратной связи. В этом и заключается основной принцип работы новой коры: каждый из ее распознающих модулей (которым соответствуют отдельные предложения на языке ЛИСП) способен составлять собственный список и связываться с «вышестоящим» и «нижестоящим» списком. Второй недостающий элемент – параметры величины сигнала. Можно создать вариант ЛИСП (на языке ЛИСП), который учитывал бы такие параметры, но в базовой структуре языка их нет.
ЛИСП соответствует исходной философии в сфере ИИ, которая состояла в поиске разумных решений проблем и их кодировании напрямую на языке программирования. Первая попытка создания самоорганизующейся системы, способной обучаться на собственном опыте, – нейронной сети – оказалась неудачной, поскольку не давала возможности модифицировать топологию системы в процессе обучения. Иерархические модели Маркова обладают такой возможностью за счет механизма отсечения неиспользуемых связей. На сегодня модель ИСММ и ее математические аналоги составляют важнейшую часть систем ИИ.
Следствием наблюдаемого сходства ЛИСП и структуры списков в новой коре является аргумент, выдвигаемый теми, кто считает мозг слишком сложной структурой, не подвластной нашему пониманию. Эти люди подчеркивают, что в головном мозге имеются триллионы нервных контактов, и поскольку каждый из них спроектирован в специфическом месте, они эквивалентны триллионам строчек компьютерной программы. Как я уже писал, по оценкам, в новой коре содержится около 300 млн процессоров образов – или 300 млн списков, в которых каждый элемент списка связан с другим списком (или, на нижнем понятийном уровне, с поступающими извне базовыми образами). Но 300 млн строчек на языке ЛИСП – очень большое число, таких гигантских компьютерных программ пока не существует.
Однако не следует забывать, что эти списки на самом деле не определены в исходном плане нервной системы. Мозг сам их создает и автоматически осуществляет связи между ними на основе пережитого опыта. В этом основной секрет новой коры. Процессы, за счет которых происходит эта самоорганизация, значительно проще, чем 300 млн процессоров новой коры. Эти процессы определены в геноме. Как я расскажу в одиннадцатой главе, объем значимой информации (после обратимого сжатия) в геноме, относящейся к функции головного мозга, составляет примерно 25 млн байт, что эквивалентно менее чем миллиону строк программного кода. Причем в реальности алгоритм еще проще, поскольку большая часть из этих 25 млн байт генетической информации относится к биологическим нуждам нейронов, а не к их способности обрабатывать информацию. Но и с 25 млн байт информации мы в состоянии справиться.
Иерархические системы памяти
Как я рассказывал в третьей главе, Джеф Хокинс и Дайлип Джордж в 2003–2004 гг. создали модель новой коры, которая включала в себя иерархические списки. Эта модель описана в книге Хокинса и Блейксли On Intelligence, опубликованной в 2004 г.[100]100
Книга вышла в русском переводе: Хокинс Д., Блейксли С. Об интеллекте: М.: Вильямс, 2007.
[Закрыть] Более новую и очень элегантную версию теории иерархической временной памяти можно найти в докторской диссертации Дайлипа Джорджа (2008)[101]101
Диссертационная работа Дайлипа Джорджа: Dileep George, How the brain might work: a hierarchical and temporal model for learning and recognition, 2008.
[Закрыть]. Компания Numenta использовала эту модель в системе под названием NuPIC (Numenta Platform for Intelligent Computing) и включила в программы распознавания образов и извлечения данных для таких клиентов, как Forbes и Power Analytics Corporation. Проработав какое-то время с Numenta, Джордж занялся созданием новой компании, названной Vicarious Systems, при поддержке фонда Founder Fund (основанного Питером Тилем, также поддерживающим Facebook, и Шоном Паркером, первым президентом Facebook) и фонда Good Ventures, которым руководит сооснователь Facebook Дастин Московиц. Джордж сообщает о значительных успехах автоматического моделирования, усвоения и распознавания информации с высокой степенью иерархической сложности. Он называет свою систему «рекурсивной кортикальной сетью» и планирует использовать ее, среди прочего, для медицинской диагностики и робототехники. Метод иерархических скрытых моделей Маркова по своей математической природе очень близок к этим иерархическим системам памяти, особенно если мы позволяем ИСММ самостоятельно образовывать связи между распознающими модулями. Как было отмечено в третьей главе, ИСММ позволяет учитывать ожидаемое распределение величин всех входных сигналов в расчете вероятности соответствующего образа. Не так давно я организовал новую компанию, Patterns, Inc., которая будет заниматься созданием самоорганизующихся иерархических моделей новой коры на основе ИСММ и родственных методов для распознавания человеческой речи. Система, над которой мы работаем, будет постоянно читать различные материалы, включая «Википедию» и другие источники информации, а также слушать все, что мы говорим, и следить за всем, что мы пишем (конечно, если мы позволим). Задача заключается в создании помощника, способного отвечать на ваши вопросы – еще до того, как вы их сформулируете, – снабжать вас полезной информацией и направлять вас в течение дня.