Говорящий с духами
Алексей Курилов
Что нас ждет в будущем? Чем станут для нас нейронные сети и почему они сейчас так беспробудно тупы? Что такое человек, где заканчивается Я и начинается МЫ? Если вы задавали себе эти вопросы, то эта книга для вас.
Часть 1. Утро.
Глава 1
Утро. Утро всегда наступает по-разному, для кого-то, это ранний будильник, который выдергивает тебя из липкого, вязкого сна. Для других утро наступает значительно позже, даже позже, чем встает солнце. Иногда с ватной головой и редкими мыслями – воспоминаниями о странном вчерашнем дне. Для Андрея утро наступило спокойно, он открыл глаза и увидел гладкий, белый потолок. Полежал так некоторое время, пытаясь понять, чего больше хочется: пить, вставать, или укрыться? Пить и укрыться хотелось одинаково, но победило – вставать. Сегодняшний день обещал быть таким же как многие, он пойдет на работу и будет там – разговаривать. У него такая работа разговаривать, и главное не то, что он скажет и даже не то, как он скажет, главное в чём-то другом, что он сам до конца не понимал. Может быть оно и к лучшему.
Очень давно, сразу после института, когда он был обычным программистом, нейронные сети только начали развиваться, одни распознавали голос, другие работали с фотографиями. Потом сети научились генерировать новые рисунки, они помогали читать текст и как-то незаметно вошли во все жизненные циклы. Андрей тогда работал в мелкой компании. Там было всего то с десяток программистов, но компания представляла себя лидером рынка. Это так принято, причислять себя к чему-то великому: вселенная замков, мир дверей, планета суши. Нельзя же чтобы было чуть-чуть, не может быть просто компания программистов, это обязательно вселенная, галактика, ну как минимум город. Вот и их компания называлась – «Галактика», никак не меньше. Серьезный бизнес не принимал нейронные сети, потому что для любого бизнесмена нейронная сеть это черный ящик, некий механизм, который вроде как работает, но как работает никто не знает. А самое главное, никто не может гарантировать будет ли он работать завтра, не получится ли так, что он работает только с одними и теми же данными, а какие-нибудь новые данные вызовут у него ступор, или того хуже ложные срабатывания. Поэтому даже в тех отраслях, где нейронные сети допускали к реальным данным, эти данные затем просматривали обычные люди, конечно, сети очень помогли избавиться от мусора и шума и до живого человека доходило меньше данных, которые нужно было перепроверить, но без человека пока было никуда не деться.
Однажды, Андрей пришел рано утром на работу, как всегда, включил компьютер, ввел логин-пароль. В почту накидали сообщений, и глядя в экран приблизительно отмерил для прочтения почты одну большую чашку кофе. Заблокировал компьютер и пошёл пополнять запасы. По пути ему встретилась Маринка из бухгалтерии.
– Андрюшка, как хорошо, что я тебя встретила, тебя хотел видеть Сергей Анатольевич.
– А, зачем он хотел меня видеть?
– Я не знаю, вчера приходили клиенты, они долго-долго разговаривали. Клиенты ушли довольные, а шеф только вышел из кабинета, сказал, чтобы ты к нему зашёл первым делом.
Ну, первым делом всё-таки будет кофе, решил Андрей. Вторым делом, конечно, он зайдёт. Набрав большую чашку кофе, медленно помешивая сахар, Андрей шел по коридору и думал, что же его ждёт в самом ближайшем будущем? Вариантов была уйма: это может быть повышение, куча работы, просьба остаться работать в выходные или вопрос, когда у меня отпуск. И вообще могло быть всё, что угодно.
Дойдя до кабинета, и открыв-таки почту, Андрей пил кофе и лениво просматривал её. Быть может что-то в последних письмах ему подскажет тему разговора. Почта была достаточно разнообразна. Несколько напоминаний о том, что перенесли какое-то совещание, несколько спам рассылок, и как они только умудрились прорваться через все эти фильтры и барьеры. Ну, и парочка полезных писем. Одно из них касалось как раз-таки отпуска, который подтвердили, Андрей был безмерно счастлив что через месяц покинет морозный Питер и отправиться к теплому морю. И второе от коллеги по цеху, по поводу недавней ошибки, которую они долго не могли поймать. Вроде как было описание как добиться ошибки со стопроцентной вероятностью. Андрея эти письма очень обрадовали, но он решил не дергать тигра за хвост и сходить к начальству.
Заходя в кабинет Сергея Анатольевича, Андрей заметил, что он был одет абсолютно обычно, в общем-то и сидел он абсолютно обычно, никакой суматохи никаких разрывающихся телефонов, а значит вызвали по какому-то будничному вопросу. Сергей Анатольевич, увидев Андрея обрадовался.
– О, Андрей, заходи-заходи, присаживайся, со вчерашнего дня тебя ждём.
– Андрея обернулся, понял, что «ждём» – скорее всего, относилось к вымышленным клиентам, и сел на стул напротив начальника.
– Вчера, мы разговаривали с нашим клиентом, и он высказал пожелание, он хочет чат бота.
Андрей подумал, что ему послышалось.
– Извините Сергей Анатольевич, чат в нашей Галактике? – Прозвучало это, конечно, очень пафосно, но так уж назывался их продукт.
– Да, Андрей, чат-бот, а не просто чат. Они хотят, чтобы этот чат бот отвечал на вопросы его клиентов.
Андрей почесал в затылке.
– Извините, но если чат-бот будет отвечать на вопросы их клиентов, то что будут делать сотрудники?
– Сотрудники будут учить чат-бота отвечать клиентам.
– А когда научат?
– Ну, скорее всего, их число резко сократится, но это уже не наша проблема, в любом случае. Экономика должна быть экономной.
– Сергей Анатольевич, но ведь вы понимаете, на каком уровне находится искусственный интеллект? Я бы вообще его не называл интеллектом, по большому счёту, и вы знаете, какие вопросы задают клиенты?
– Да, конечно, понимаю. Именно поэтому мы разработаем нейронную сеть, которая научиться отвечать клиентам.
– Сергей Анатольевич, у меня через месяц отпуск. – Сказал Андрей, так и не дождавшись этого вопроса.
– Ну вот, значит, у тебя есть целый месяц.
– Сергей Анатольевич а, как быть с другими проектами и задачами? На мне ещё баги, надо же это как-то исправить, клиенты ведь ждут.
– О других задачах не переживай, Андрей, мы их поручим другим людям, впрочем, решай сам, у нас четких сроков на разработку чат-бота нет, но как ты сам понимаешь, чем быстрее, тем лучше. Тем более, что у нас через полгода новый релиз, хотелось бы уже похвастаться.
Андрей вернулся за свой комп и решил пока не думать об этом. Для начала надо было разобраться с тем, что есть. Прогнал несколько раз последовательность, что прислал ему Федор, и убедившись, что программа падает всегда одинаково, запустил трассировку. Для полного трейса надо было примерно два часа, и Андрей с удивлением обнаружив, что кофе кончилось, пошел за очередной чашкой.
Мозг жадно схватился за новую идею и начал обдумывать её, как свежую жвачку полную вкуса и сладости. Сначала надо разбить запрос клиента на слова, потом надо понять смысл сказанного, потом по смыслу составить смысл ответа, потом подобрать слова для ответа. Нет, это сложно, сначала надо избавиться от мусора, всякие “как бы”, “ну”, “подскажите” и прочее, все это нужно людям, кстати надо будет потом накидать мусора, чтобы очеловечить ответ. А еще надо распознать вопрос ли это вообще, нет опять сложно, а что, если отдать все это нейронной сети. Нет не сети, сетям, точно! Надо сделать несколько сетей, кто-то будет решать вопрос ли это, кто-то будет разбирать смысл вопроса, кто-то будет как-то это все склеивать. Надо будет обучить сети по отдельности, и только потом объединить их все вместе.
И тут Андрей понял, что кофе опять кончился, да это не кофе, а прямо мед Вини-Пуха какой-то. Он с удивлением уставился на дно кружки, надо больше кофе, надо на много больше кофе. Трэйс был отправлен Федору вместе с догадкой куда бы смотрел Андрей и что бы стоило проверить. А новая задача теплилась в душе, ярким солнечным зайчиком бликуя с разных сторон, предполагая то одно то другое решение. Мозг приятно кипел, генерируя идею за идеей и придумывая как бы это реализовать в коде.
Глава 2
Этим утром работа кипела, чат бот научился понимать слова и даже смысл некоторых вопросов. Обучение шло медленно, сотни вариантов уже были выброшены, а еще больше будет выброшено. Иногда изменения приводили к прорыву, а иногда только все портили и приходилось возвращаться обратно, пробовать снова и снова.
В отпуск Андрей так и не ушел, он понял, что в отпуске ему не удастся поработать, а не работать сейчас он просто не мог, уж больно интересной оказалась задача про чат бота. А море может и подождать, как ждало миллионы лет до этого. Нейронная сеть обучалась разному, как отвечать на вопросы, как шутить, как понимать связки, чтобы не выглядеть тупой рыбкой с памятью в минуту. В итоге пришли к выводу, что надо разделять сеть по функциям и обучать каждую часть отдельно. Так получились отделы: восприятия информация, анализа, принятия решений и вывода информации. Нейронная сеть начала развиваться. Сначала в нее загрузили замкнутый словарь, где все слова были описаны словами из этого же словаря. После чего удалось замкнуть круг осмысленности и внутри сети родилось понятие смысла. Однако это было не новое явление и впервые наблюдалось еще в переводчиках, когда универсальный переводчик генерировал свой собственный внутренний смысловой язык, на который переводил всё, что мог, а уже потом с этого языка переводил куда требовалось. Однако обучение все еще было ограничено, бот впитывал только то, что ему говорили клиенты и учился отвечать только то, чему учили сотрудники банка. Этого было мало.
В то время еще никто не знал о замкнутом смысловом цикле и авто генерации, эти термины появились значительно позже. Как это обычно бывало они появились даже после того, как были изобретены и использованы. Никто не называл наконечник стрелы наконечником, все просто делали его и прикрепляли к стреле. И только когда надо было как-то описать это другому человеку пришлось назвать его наконечником. Так же случилось и с замкнутыми циклами.
Однажды вечером, когда голова уже мало что понимала, а данных, как всегда, не хватало, Андрей решил заставить разговаривать сеть саму с собой. Копии разговаривали очень пустынно и глупо, обмениваясь одними и теми же фразами, ведь не было подкрепления правильных ответов. И в этот момент Андрей понял, что в его голове постоянно звучит голос, его голос, когда он думает он всегда обсуждает это сам с собой, причем это не диалог, а как бы монолог с человеком который читает мысли. Один говорит голосом, а второй отвечает мыслями. Это затея понравилась ему, и он соединил выход из отдела принятия решений и замкнул его на вход отдела анализа, так, чтобы нейронная сеть не утруждала себя переводом мыслей на язык и обратно. Процесс пошел, но чем закончится было не понятно. Андрей почитал некоторое время логи и решил оставить так сеть на ночь.
Так родился замкнутый смысловой цикл, который сейчас проходят все, кто изучает искусственный интеллект, как изучает закон ома любой причастный к электронике.
Утром Андрей пришел на работу и начал общаться с сетью, как всегда, как делал это раньше и вдруг понял, что ему надоело писать скучные тексты. Он прикрутил обычный речевой генератор и распознавание голоса. Все это было изобретено, проверено и работало более-менее сносно. Как обычно налил кофе, надел наушники с гарнитурой, закрыл глаза и сделал вид, что общается не с компьютером, а с живым, пусть и очень странным, но человеком.
– Привет! Как у нас дела?
– Дела? Что именно надо делать?
– Это просто выражение такое, достаточно сказать “хорошо”.
– Понял, дела хорошо.
– Андрей решил, что ему будет веселее проводить время, если он будет общаться с женщиной и изменил настройки на женский голос.
– Как тебя звать?
– У меня нет ответа.
– Запомни, тебя зовут Ева и да, ты женщина.
– Хорошо, меня зовут Ева.
– Давай обсудим, как прошла ночь?