Никитинская собственная кандидатская, которую защитил он три года назад, посвящена была моделированию зондоформирующих систем для коротковолнового излучения. Интересная и сложная была работа. Он покатался с ней по России, докладывал в столицах и чуть было не поехал заграницу, в Чехию. Однако в последний момент в Чехию поехал кто-то другой, а Коле, да и Ринат Миннебаичу, дали понять, что, несмотря на успешную защиту, развивать это многообещающее направление в родном отечестве представляется не перспективным, ввиду практической не востребованности и откровенной отсталости научной базы. Коля тогда сильно заволновался и даже ушел из университета на два года, работал программистом в частной фирме. Но потом Ринат Миннебаич, с которым поддерживал он контакт, упросил его вернуться. Теперь вместе они разворачивали какие-то невероятные хозрасчеты, в большей части программистские, в общем выкручивались как могли.
Научную жилку свою Коля в настоящее время подпитывал вот такими стихийно возникающими задачами. К теме своей кандидатской, насколько было мне известно, он не возвращался.
Коля, к вящему нашему удовольствию, с самого утра ковырялся в результатах экспериментов. Он хорошо знал нашу математическую модель, да и вообще был глубоко в контексте нейронных сетей. Последние пару недель он занимался слоями сети, влиянием их количества на вероятности конечных состояний. Ввиду того, что программистом Николай был отменным, он на кафедральной рабочей станции умудрился провести с утра несколько интересных экспериментов, компилируя куски кода нашего стенда, отслеживая закономерность возвращения низковероятного состояния.
Я немедленно развернул перед Колей идеи, которые обсуждали мы с Толей в дороге. О потенциальном влиянии предыдущих состояний и числа вычислительных итераций, или иначе, тут я внутренне поежился, функции времени. Хотя не было у меня пока четкого представления о том, как такую функцию выразить. Мы забросили Колину тетрадку и переместились к доске, на которой Николай волюнтаристски стер половину записей.
Наступила самая вожделенная часть нашей встречи — исследовательская импровизация. Она не всегда приходила гладко, как сегодня. Случалось порой, что обсуждение не ладилось и мы вообще забывали о науке, просто сидели, пили чай, обменивались новостями.
Битых три часа рисовали мы доске математическое выражение для учета истории состояний сети или функцию времени, выявляющую потенциально существенную вероятность. То я, то Коля бросались нервически стирать и переписывать написанное, обнаружив вопиющую оплошность товарища. Толя сидел на столе и сдвинув брови наблюдал за нашими криками и беготней. Дважды заглядывал к нам Ринат Миннебаич, но не вошел.
Странной получалась та функция. Некоторая неопределенность присутствовала в ней, трудно было проследить, как родилась она исходя из многофакторной зависимости от числа слоев, итераций учителя и интеграла по истории состояний нейрона по полному диапазону вероятностей. Пришли мы к единственному варианту, при котором функции времени сеть также обучалась. Мы включили функцию времени в процесс обучения, где теперь информация, подаваемая на вход сети, содержала в себе метку времени.
Конструкция получилась настолько сложной, что объяснить с первого взгляда конечную формулу было практически невозможно; обосновывался только последний шаг, последнее преобразование. Удержать ее целиком, доказательно в голове не удавалось, казалась она диким нагромождением интегралов-сумм, степеней и делений.
Коля выразил мои мысли, когда сказал:
— Первый раз такое со мной. Вижу первый шаг в приближении, и последний. Объяснить целиком не могу.
Постояли мы минут десять, разглядывая исписанную доску. Я перебирал в уме сделанные шаги. Не упустили ли мы чего-то важного? Самым важным теперь было правильно зафиксировать и запрограммировать модель, потому что перелопатили мы прежний подход существенно. О чем размышляли Коля и Толя я не знал, но они, как и я, пристально смотрели на финальную формулу.
Толя наконец пошевелился на столе.
— Вот это получился монстр! Дайте-ка я его перепишу сейчас. Мне его теперь в формат сишного кода надо перевести. Сфотографировать бы.
Коля почесал затылок перепачканной мелом ладонью и облокотился на стол. Его вихрастая светлая шевелюра стала еще взлохмаченнее.
— Перемудрили мы, по-моему, с идеей времени. На поверхности ошибки не наблюдается, но мы, кажется смешали две совершенно разные задачи — распознавания и прогнозирования. Ты то, Борь, понятное дело все это тащишь со своих давнишних лабораторных стендов по сжатию, интерполяциям и экстраполяциям. Но, по-моему, мы скрестили ежа с ужом.
Он холерически схватил стул и уселся на него, повернув спинкой к доске. По-прежнему всматривался он в наши вычисления, как будто верные.
Вадим Сергеич как ни в чем не бывало тыкал пальцами в клавиатуру. Периодически он поднимал голову, поглядывая на нас отсутствующим взглядом, но оставался целиком поглощенным заполнением каких-то электронных таблиц.