Токен за токеном - SeNS Boston
Розенблатт уходит в залив
Фрэнк Розенблатт после выхода книги Минского жил ещё два года. По всем рассказам, он был расстроен, но продолжал работать. В 1971 году, в день своего сорокатрёхлетия, он отправился на лодке в Чесапикский залив с двумя коллегами. Лодка перевернулась. Розенблатт не выплыл. Его коллеги выжили.
Что именно случилось в тот день, толком неизвестно. Тогда говорили об обыкновенной неосторожности. Через много лет некоторые из писавших о Розенблатте намекали, что обстоятельства его смерти могли быть не такими случайными, как кажется на первый взгляд. Доказательств у этого, однако, нет, и предлагать читателю спекуляции было бы нечестно. Что известно точно: он был молодой, талантливый, переживший публичный научный разгром, и он утонул в день собственного сорокатрёхлетия.
Минский его пережил на сорок пять лет. До конца жизни он отрицал, что книга 1969 года была мотивирована чем-то, кроме научной добросовестности. Большинство историков сегодня склоняются к тому, что он, скорее всего, говорил правду. Но эффект книги от этого не меняется: коннекционистская исследовательская программа после 1969 года надолго замёрзла.
Что было на месте льда
Зима, наступившая для нейросетей в семидесятые годы, не была зимой для всего искусственного интеллекта. Деньги и интерес остались, просто перетекли в соседние комнаты. В Стэнфорде и MIT процветали экспертные системы: программы, в которые инженер по знаниям вручную закладывал тысячи правил вида «если симптом А и симптом Б, то болезнь В с вероятностью семьдесят процентов». Эти программы научились ставить медицинские диагнозы, искать минералы по геологическим разрезам, конфигурировать сложное компьютерное оборудование на заказ. Каждый год новый прорыв, каждый год новый стартап.
В коммерческой обработке естественного языка, между тем, тихо шла другая работа. Без газетных заголовков и без венчурных денег. В лабораториях IBM, BBN, Bell Labs и нескольких университетов несколько десятков человек занимались тем, что напрямую вытекало из шенноновских набросков 1948 года: статистическим моделированием языка для распознавания речи.
Главой этого тихого направления был чех по имени Фредерик Елинек. Он родился в Праге в 1932 году, в шестнадцать лет, после коммунистического переворота, бежал на Запад, через какое-то время оказался в США, закончил MIT, и в начале семидесятых перешёл в исследовательский центр IBM в городе Йорктаун-Хайтс, штат Нью-Йорк. Ему было поручено заниматься распознаванием речи. В отличие от большинства тогдашних специалистов в этой области, Елинек не верил в подход через лингвистическое знание. Он не считал, что нужно сначала разобраться, как устроена грамматика английского языка, и потом запрограммировать это знание в компьютер. Он считал, что нужно собрать очень много примеров живой речи, посчитать в них статистику, и пусть машина сама решит, что во что переходит.
Фредерик Елинек, IBM Research
Подход Елинека был прямым продолжением шенноновского эксперимента 1948 года, только в индустриальном масштабе. Команда IBM построила систему распознавания речи на основе скрытых марковских моделей. Сама модель состояла из двух частей. Первая, акустическая, угадывала по входному звуковому сигналу, какие фонемы могли быть произнесены. Вторая, языковая, решала, какая последовательность слов из этих фонем наиболее вероятна, опираясь на n-граммную статистику английского языка. То есть на ту самую идею Маркова и Шеннона: следующее слово зависит от нескольких предыдущих, и эта зависимость описывается таблицей вероятностей.
Результаты были скромные по нынешним меркам и потрясающие по меркам тех лет. К концу семидесятых система IBM могла распознавать диктовку с ограниченным словарём приблизительно с десятипроцентной ошибкой. К середине восьмидесятых ошибка снизилась вдвое. К началу девяностых системы на основе HMM освоили словарь в десятки тысяч слов и стали достаточно полезными, чтобы их купили коммерческие пользователи. Программа Dragon NaturallySpeaking, к концу девяностых ставшая популярной у врачей и юристов, была прямой наследницей IBM-овской традиции.
Среди академических лингвистов это направление вызывало негодование. Лингвисты считали, что речевая обработка должна опираться на правила, на знание о фонотактике английского, на синтаксис. Тупое подсчитывание вероятностей по миллионам слов казалось им варварством. Это варварство, однако, давало результаты, тогда как лингвистически грамотные системы не давали. Постепенно лингвистов из исследовательских команд по распознаванию речи начали увольнять. Елинеку приписывают замечание, ставшее знаменитым в кругу специалистов: каждый раз, когда из команды уходит ещё один лингвист, точность системы немного растёт. Сам Елинек впоследствии настаивал, что фразу эту он то ли произнёс, то ли не произнёс, то ли произнёс в другой формулировке. Но в индустрии все понимали, о чём речь. С данными можно делать вещи, которые невозможно сделать с теорией.
Тридцать лет, с конца шестидесятых до конца девяностых, на переднем крае компьютерной обработки естественного языка оставались именно эти статистические методы. Скрытые марковские модели в распознавании речи. N-граммные языковые модели в машинном переводе. Статистические парсеры в синтаксическом анализе. Везде та же самая шенноновская интонация, только теперь умноженная на гигабайты текста и часы машинного времени.
А нейросети всё ещё спали в подвале.
Тонкая струйка
Слово «спали» здесь не вполне справедливо. У нейросетей был узкий круг сторонников, выживавших на скудном пайке. Эти люди не получали больших грантов, печатались в специальных журналах, известных только в своей нише, и преподавали в нескольких университетах. Большая часть остального академического сообщества не считала их направление перспективным.
В 1986 году в журнале Nature вышла статья из трёх авторов: Дэвида Румельхарта, Джеффри Хинтона и Рональда Уильямса. Называлась «Learning representations by back-propagating errors», то есть «Обучение представлений путём обратного распространения ошибки». Статья описывала алгоритм, позволявший обучать многослойные нейронные сети. Сама идея была не нова, её, по разным версиям, придумывали независимо человек шесть, начиная с шестидесятых годов. Но статья Румельхарта, Хинтона и Уильямса оказалась той, которую заметили.
Алгоритм назывался backpropagation, в обиходе быстро сократилось до backprop. Идея была такая. У вас есть многослойная сеть. Вы подаёте на вход пример, считаете прогноз на выходе, сравниваете его с правильным ответом, получаете ошибку. Теперь нужно изменить веса всех связей в сети так, чтобы ошибка уменьшилась. Проблема: связей много, слоёв много, как понять, какую именно связь и в какую сторону менять? Backprop отвечал на этот вопрос с помощью простой математической процедуры, прокатывающей ошибку «назад» через сеть и вычисляющей частные производные ошибки по всем весам одновременно. Эта математика была давно




