"Как вы делаете ваши
чудеса?" "Какие такие
чудеса?" "Ну... исполнение
желаний..." "Ах, это? Как
делаю... Обучена сызмальства,
вот и делаю. Откуда я знаю, как я
делаю..." Стругацкие, "Понедельник начинается в субботу" |
Человеческий мозг привычным образом делает чудеса. За долю секунды узнаёт в толпе знакомое лицо или походку. Различает в голосе оттенки эмоций. Находит контекст в политическом заявлении. Уверенно управляет процессами неизвестной ему природы. Строит абстрактные модели внечувственных явлений. Достигает внезапного озарения после месяцев бесплодных размышлений. Но при этом мозг так чудовищно медлителен, что в вычислениях и логике его побеждает любой допотопный компьютер. Впрочем, даже у самых быстрых компьютеров есть свои слабые места. Еще вчера лучшие машины не могли отличить телеграфный столб от дерева, не справлялись с намазыванием масла на хлеб и часами думали над детским вопросом - назвать книжку, где упоминается о летающем домике, серебряных башмачках и говорящем чучеле. Сегодня кое-что уже изменилось. Нет, человек не научился решать в уме интегральные уравнения и, оставаясь человеком, не научится. Зато машины теперь уверенно распознают рукописные символы и переродившиеся предраковые клетки, предсказывают колебания погоды и биржи, оптимизируют сложные химические процессы и транспортные потоки, тонко управляют механическими руками и деформируют зеркала телескопов для подавления атмосферных искажений изображения. Делают эти чудеса нейронные сети, или нейрокомпьютеры, - плод полувекового сотрудничества компьютерной науки с нейробиологией. Сотрудничество это было и остается взаимовыгодным, и нейробиологи в свою очередь привыкли считать мозг нейрокомпьютером, машиной, подобной цифровым компьютерам и состоящей из миллиардов переключающих элементов - нейронов, объединенных триллионами связей в сложнейшую сеть. В таком случае, в чем же смысл вопроса, вынесенного в заглавие данной статьи? Чем же мозг отличается от нейрокомпьютера? В первом, классическом, приближении, выработанном за 50 лет и воплощенном в искусственных нейронных сетях, - ничем. Но уже во втором приближении к истине, открытом нейробиологами за последние два года, отличие проявляется, причем весьма серьезное. А именно, не является реальный нейрон примитивным переключающим элементом: по своим свойствам он напоминает сложный аналоговый компьютер, работающий, вероятно, на молекулярном уровне.
Давайте рассмотрим сначала в первом приближении, что из себя представляет и как работает нейрон. Это высокоспециализированная живая клетка, имеющая множество коротких отростков - дендритов - и один очень длинный отросток (до метра длиной) - аксон. В дендритах и аксоне могут распространяться электрические сигналы в виде последовательностей узких колоколообразных импульсов, причем амплитуда этих импульсов строго постоянна, а интенсивность сигнала кодируется частотой следования импульсов друг за другом. Аксон отличается от дендритов не только длиной, но и функционально: по дендритам импульсы бегут только к телу нейрона, а по аксону - только от тела нейрона, то есть дендриты - это входы нейрона, а аксон - его единственный выход. Аксон имеет тысячи ответвлений, которые тянутся к дендритам других нейронов и там образуют синапсы - контакты между нейронами. Синапс - это не физический, а функциональный контакт: в нем мембраны двух нейронов не соприкасаются, а разделены щелью, через которую электрический импульс перепрыгнуть не может. Добежав по ветви аксона до синапса, импульс вызывает выделение из мембраны своего нейрона особого вещества - нейромедиатора, которое быстро диффундирует через щель синапса к мембране другого нейрона и там воздействует на специальные белковые комплексы - рецепторы. В зависимости от типа этих рецепторов синапс оказывает либо возбуждающее, либо тормозящее воздействие на принимающий сигнал нейрон, а число рецепторов определяет как бы коэффициент усиления данного входа нейрона. Вследствие своей конструкции синапс имеет два важных свойства. Во-первых, сигнал может проходить через синапс только в одном направлении, то есть связи между нейронами характеризуются строгой однонаправленностью. Во-вторых, каждая связь между двумя нейронами имеет свой вес: положительный у возбуждающих синапсов и отрицательный у тормозящих, а величина этого веса может изменяться в процессе настройки сети нейронов, то есть при ее обучении. Типичный нейрон имеет тысячи входных синапсов, через которые на него поступают сигналы от тысяч других нейронов. Каждый входной сигнал умножается на вес соответствующего синапса, затем нейрон суммирует интенсивности возбуждений и торможений по всем синапсам и по величине этой суммы определяет, какой интенсивности выходной сигнал ему следует послать в свой аксон. Наиболее реалистичная функция преобразования суммарного входа в выход - не линейная и не ступенчатая, а вида сглаженной ступеньки. По этой причине нейрон не является ни тривиальным аналоговым сумматором, ни классической логической ячейкой типа "или"; он представляет собой ячейку "нечеткой логики", у которой входы и выход могут принимать значения из широкого спектра "ни да, ни нет".
Итак, в первом приближении нейрон весьма прост. Это элемент, имеющий несколько входов и один выход и преобразующий несколько чисел, подаваемых на его входы, в одно число, возникающее на его выходе. Правило преобразования таково: число на каждом входе умножается на приписанный данному входу вес, затем результаты суммируются по всем входам, а к сумме применяется определенная функция, например - сглаженная ступенчатая 1/(1+exp(-x)). В искусственной нейронной сети эти идеальные нейроны функционально образуют несколько слоев. Входы нейронов первого слоя служат входами сети, выходы нейронов последнего слоя - выходами сети, а остальные нейроны принадлежат одному или нескольким промежуточным - "скрытым" - слоям, причем входами каждого нейрона каждого слоя (кроме, разумеется, первого) являются выходы всех нейронов предыдущего слоя. На входы сети подается множество чисел, определяющее условие проблемы, а на ее выходах возникает множество чисел, соответствующее ее решению. Например, на входы нейронной сети, распознающей рукописные символы, подаются уровни серого цвета с матрицы фотодетекторов, а на выходах сети появляется наиболее вероятный код данного символа. Еще пример: в нейронную сеть, управляющую адаптивной оптикой телескопа, вводится искаженное атмосферой изображение звезды, а из сети выходит картинка деформаций зеркала телескопа, которые следует произвести, чтобы скомпенсировать атмосферные искажения. Уровень интеллекта современных нейронных сетей на проблемах распознавания образов и принятия решений в условиях недостаточности информации примерно соответствует уровню пчелы, выбирающей цветок, или паука, прослушивающего паутину. Как же нейронные сети делают свои чудеса? Хочется ответить словами эпиграфа: обучены сызмальства, вот и делают. Обучают нейронную сеть путем настройки весов всех входов всех ее нейронов. Для этого в сеть вводят множество учебных примеров и определяют отклонения ее ответов от правильных, затем по так называемому алгоритму обратного функционирования вычисляют поправки к весам входов нейронов, вводят эти поправки, снова прогоняют учебные примеры, и так далее, пока ошибки ответов сети не попадут в допустимый диапазон малости. Если это не получается, то архитектуру сети следует усложнить добавлением новых нейронов или даже новых скрытых слоев. Разумеется, любая нейронная сеть будет адекватно реагировать только на ту входную информацию, которая не слишком сильно отличается от учебной. Если же загнать в сеть иероглиф майя или изображение звезды в разбитом зеркале... Впрочем, не будем придираться, ведь в такой ситуации и человек окажется не на высоте.
Говорят, что все гениальное просто. Однако далеко не все реальное просто. Недавние нейробиологические исследования доказали, что реальный нейрон куда сложнее, чем о нем думали всего пару лет назад. Во-первых, оказалось, что нейрон суммирует возбуждения и торможения только от удаленных друг от друга синапсов, а сигналы от соседних синапсов взаимно усиливаются, и их интенсивности скорее перемножаются, чем складываются. Во-вторых, выяснилось, что нейрон контролирует не только среднюю частоту, с которой он генерирует импульсы, но и точное время выстрела каждым отдельным импульсом. Точность, с которой нейрон подстраивает это время, очень высока: от 1/100 до 1/1000 секунды. В-третьих, было обнаружено, что импульсы, генерируемые нейроном, уходят из него не только в аксон, но и в дендриты тоже. Да, импульс, идущий по дендриту в обратном направлении, не может преодолеть синапс и пройти в предыдущий слой нейронов, однако он воздействует на то, как синапс пропускает импульсы в прямом направлении: если обратный импульс приходит на синапс раньше прямого, то прямой импульс ослабляется, а если позже - то прямой усиливается. Все эти новые факты свидетельствуют о том, что отдельный нейрон представляет собой аналоговый компьютер, производящий внутри себя какие-то вычисления и по их результатам тонко управляющий своими входами и выходом. Нейробиологам еще предстоит понять смысл этой неожиданной сложности нейрона и ее значение для работы мозга.
Информация о том, что нейрон казался простым, а оказался сложным, может вызвать у читателя естественный вопрос: "Значит ли все это, что современные нейронные сети, состоящие из "простых" нейронов, в чем-то ущербны, и что лишь будущие сети из "сложных" нейронов смогут достичь вершин интеллекта?" Про сети из "простых" нейронов можно сказать коротко: "Работают!" Также можно долго и с интересными примерами рассказывать о том, как хорошо они работают. Однако сейчас для меня важнее упомянуть об одной малоизвестной детали. Дело в том, что лишь считанные единицы искусственных нейронных сетей могут с полным правом называться нейрокомпьютерами: они реализованы аппаратно, как уникальный "хард", в "железе", то есть в кремнии. Абсолютное же большинство нейронных сетей реализовано программно, то есть является нетрадиционным "софтом", виртуальными машинами, компьютерными симуляциями, работающими на традиционных, универсальных компьютерах. И этот второй вариант очень даже неплох в силу дешевизны и высокой производительности современных массовых компьютеров. Разумеется, нейронные сети, состоящие из "сложных" нейронов, тоже будут моделироваться - хотя бы в чисто научных целях, чтобы глубже понять работу мозга. Однако моделирование такой сети потребует в тысячи раз больше вычислительных ресурсов, что вряд ли окупится приростом ее интеллекта. Возможно, следует подражать природе лишь до определенной черты и вовремя вспоминать о том, что самолеты крыльями не машут, а шагающие машины были только у марсиан. Поэтому я хочу еще раз напомнить читателю, что почти все работающие искусственные нейронные сети - это просто новый "дух" в старом "теле", это эффективные вычислительные алгоритмы нового типа, исполняемые на безразлично каком "железе". Да, создателям этих алгоритмов природа подсказала и "нечеткую логику", и необычную архитектуру потоков данных, и принцип настройки параметров путем обучения. Но я не сомневаюсь, что ученые и инженеры сумеют создать еще более эффективные алгоритмы, не подглядывая за природой и полагаясь только на мощь своих бортовых нейрокомпьютеров.
Сергей СЕРЫЙ,
kvss@usa.net
Горячие темы