Однако достаточно скоро стало очевидно, что Perception может усвоить лишь ограниченный объем материала. Когда я посетил профессора Розенблатта в 1964 г., я попытался слегка изменить входные данные. Система была натренирована на распознавание печатных букв и делала это достаточно точно. Она довольно хорошо выполняла задачу самоассоциации (узнавала букву, если я закрывал ее часть), но не справлялась с инвариантностью (путалась при изменении размера буквы или шрифта).
Во второй половине 1960-х гг. нейронные сети стали невероятно популярными, и «коннекционизму» была посвящена как минимум половина исследований в области искусственного интеллекта. Между тем, более традиционный подход к созданию искусственного интеллекта состоял в попытках программирования решений специфических задач, таких как распознавание инвариантных свойств печатных букв.
В том же 1964 г. я посетил Марвина Минского, одного из основоположников исследований в области искусственного интеллекта. Хотя он сам выполнил несколько пионерских исследований по изучению нейронных сетей еще в 1950-х гг., он был недоволен активным развитием исследований в этом направлении. Считалось, что нейронные сети не нуждаются в программировании, поскольку обучаются решать задачи самостоятельно. В 1965 г. я поступил в Массачусетский технологический институт. Минский был моим научным руководителем, и я разделил его скептицизм в отношении идеи коннекционизма.
В 1969 г. Минский и Сеймур Пейперт — основатели лаборатории искусственного интеллекта при Массачусетском технологическом институте — написали книгу Perceptrons[98], в которой излагалась проблема персептрона, заключавшаяся в том, что такие персептроны, как Mark 1, не способны определить является ом изображение связанным. Эта книга вызвала бурю гнева. Человек может очень легко определить, является ли образ цельным (связанным), и для компьютера эта задача не представляет никакой сложности. Тот факт, что персептроны не могут этого сделать, многими был воспринят как полный провал.
Суть книги, однако, интерпретировалась шире, чем подразумевали авторы. Теорема Минского и Пейперта применима только к определенному типу нейросетей, называемых упреждающими сетями (к которым, в частности, относится персептрон Розенблатта), но другие типы нейронных сетей не имеют этого ограничения.
И все же книга отчасти способствовала ослаблению интереса к нейронным сетям в 1970-х гг. Исследования возобновились в 1980-х гг. в попытках использовать «более реалистичные модели» биологических нейронов и избежать ограничений, накладываемых теоремой Минского — Пейперта. Тем не менее способность новой коры решать ключевую проблему инвариантности по-прежнему не поддавалась воспроизведению в рамках коннекционизма.
Два изображения с обложки книги «Перцептроны» (авторы Марвин Мински и Сеймур Паперт). Верхнее изображение: неподключенный образ (темный участок состоит из двух разъединенных частей. Внизу: образ подключенный.
Разреженное кодирование: векторное квантование
В начале 1980-х гг. я начал заниматься проектом, посвященным другой классической проблеме распознавания образов — пониманию человеческой речи. Сначала мы использовали классический подход, заключающийся в прямом программировании знаний о фундаментальных единицах речи, называемых фонемами, и лингвистических правилах связывания отдельных фонем в слова и фразы. Каждая фонема характеризуется определенными частотными параметрами. Например, мы знаем, что такие гласные, как «и» и «а», характеризуются определенными резонансными частотами, называемыми формантами, причем каждой фонеме соответствует определенное соотношение формант. Свистящие звуки, как [з] и [с], характеризуются шумовым импульсом, охватывающим несколько частот.
Спектр трех гласных звуков. Слева направо: звук [i], как в слове «appreciate», [и], как в «acoustic», и [а], как в «ah». По оси Y отложены звуковые частоты. Чем темнее полосы, тем больше энергии соответствует этой частоте.
Мы регистрировали речь в виде звуковых волн, которые затем конвертировали в частотные полосы, используя частотные фильтры. Результат такой трансформации (спректрограмма) выглядит следующим образом.
Фильтры имитируют функцию улитки человеческого уха на начальном этапе биологического процесса восприятия звука. Компьютерная программа сперва идентифицировала фонемы на основании распознанных частот, а затем на основании характерных последовательностей фонем идентифицировала слова.
Кое-что у нас получилось. Мы смогли натренировать нашу систему на распознавание речи конкретного человека, пользовавшегося небольшим набором слов (несколько тысяч). Далее мы попытались научить ее распознавать десятки тысяч слов, речь разных людей и непрерывную речь (без пауз между словами), но столкнулись с проблемой инвариантности. Разные люди произносят одну и ту же фонему по-разному: в устах одного человека фонема «и» может звучать, как «а» у другого человека. Даже один и тот же человек не отдает себе отчета в том, как он произносит отдельные фонемы. Характер звучания часто зависит от соседних фонем. Некоторые фонемы полностью исчезают. Произношение слов (то есть сочленение фонем) также весьма вариабельно и зависит от контекста. Те лингвистические правила, которые мы заложили в нашу программу, не смогли учесть чрезвычайную вариабельность разговорной речи.
Спектр слова «hide» («хайд» — прятать). Горизонтальные линии соответствуют формантам — частотам с наиболее высокой энергией.
Тогда мне стало ясно, что распознавание образов и понятий человеческим мозгом имеет иерархическую природу. Это совершенно очевидно для человеческой речи, состоящей из сложных иерархических структур. Но что лежит в основе этой структуры? Это был первый вопрос, который я задал себе, собираясь заниматься созданием автоматических систем распознавания разговорной человеческой речи. Звук проникает в ухо как вибрация воздуха и под действием примерно 3000 внутренних волосковых клеток внутри ушной улитки превращается во множество полос различной частоты. Каждая волосковая клетка настроена на восприятие определенной частоты (звуковые частоты мы воспринимаем как тона), и каждая действует как частотный фильтр, испуская сигнал, когда улавливает звук своей или близкой резонансной частоты. Таким образом, выходящий из улитки уха звук составлен примерно из 3000 отдельных сигналов, каждый из которых характеризуется изменяющейся во времени интенсивностью узкой звуковой полосы (конечно, эти полосы перекрываются).
Даже при условии множественных повторов структур мозга мне кажется совершенно невероятным, что мозг обрабатывает 3000 отдельных звуковых сигналов. У меня вызывала большое сомнение столь низкая эффективность эволюции. Теперь мы знаем, что еще до того, как звуковые сигналы попадают в новую кору, в слуховом нерве происходит очень значительное сокращение объема информации. В наших искусственных системах распознавания речи мы тоже применяли фильтры (сначала 16, а потом 32; больше, как оказалось, использовать бессмысленно). Таким образом, в нашей системе в каждый момент времени входной сигнал был представлен 16 числами. И нам предстояло свести эти 16 потоков данных к единому потоку, сохранив при этом информацию, необходимую для распознавания речи.
С этой целью мы использовали математический метод, называемый векторным квантованием. Итак, представьте себе, что в любой момент времени звук (выходящий из уха к мозгу) представлялся компьютерной программой в виде набора из 16 чисел — выходные сигналы, прошедшие 16 частотных фильтров (в человеческом ухе было бы 3000 чисел, соответствующих выходным сигналам из 3000 волосковых клеток). На языке математики каждый подобный набор чисел (3000 в биологической системе или 16 в компьютерной модели) называют вектором.
Для простоты рассмотрим процесс векторного квантования для вектора из двух чисел. Каждый вектор можно представить себе в виде точки в двумерном пространстве.
Если у нас имеется множество таких векторов, при нанесении их на график мы можем заметить формирование определенных кластеров.
Для идентификации кластеров нужно решить, сколько их будет. В нашей работе мы обычно допускали существование 1024 кластеров, которые могли пронумеровать и обозначить 10-разрядным двоичным числом (поскольку 210 = 1024). Наша выборка векторов представляет необходимое нам разнообразие. Сначала мы предполагали, что первые 1024 вектора образуют одноточечные кластеры. Затем мы рассматривали 1025-й вектор и находили ближайшую к нему точку. Если это расстояние больше самого маленького расстояния между двумя любыми точками из 1024, мы считаем эту точку началом нового кластера. Тогда мы «схлопываем» два ближайших кластера в единый кластер (при этом у нас по-прежнему остается 1024 кластера).