Читать нас в Telegram
Иллюстратор: Женя Родикова

В этом выпуске мы обсуждали: 

  • Как устроен мир разработки чат-ботов и персональных ассистентов
  • Что такое «навыки» чатботов и как их программируют?
  • Почему всех впечатляет нейросеть GPT-3
  • Как работает GPT-3 и что позволяет ей порождать связный текст
  • Как тестировать интеллектуальность нейросетей
  • Где нужны гибридные подходы к построению интеллектуальных систем
  • Зачем делать студию разработки персональных ассистентов
  • Как устроено преподавание в Y-DATA

В выпуске были упомянуты

книги, ссылки, термины, персоналии

  • языковая модель GPT — 16:52
  • Attention, трансформеры и рекуррентные нейросети — 23:41
  • knowledge-графы и онтологии — 34:48
  • конференция Диалог — 35:11
  • гипонимы, гиперонимы — 35:30
  • DBPedia — 38:35
  • языковая модель T5 — 40:50
  • книга Э.Т. Джейнса «Probability Theory: The Logic of Science”  — 49:18

Ссылки и полезная информация

  1. Yandex.Музыка
  2. Apple Podcasts
  3. Google Podcasts
  4. Anchor
  5. ВК
  6. Pocket Cast
  7. Telegram подкаста

Оглавление выпуска

  • 03:53 — Осознанный путь фрилансера и зарплата 
  • 06:34 — Мир чат-ботов и голосовых помощников
  • 09:06  — Пронавыкиголосовых ассистентов
  • 11:33 — Универсальный подход к построению голосовых ассистентов
  • 16:39 — GPT: как она умеет шутить и почему третья лучше предшественников
  • 26:15 — Про Few-shot learning, Zero-shot learning и BERT
  • 28:00 — IQ тесты для нейросети
  • 31:17 — Нужно ли искусственному интеллекту быть похожим на человека?
  • 32:54 — Онтологии, symbolic AI и гибридный подход.
  • 38:41 — Почему мы все время думаем про суперинтеллект
  • 40:19 — Научная работа в жизни Давида
  • 44:34 — Про Dialogic Digital
  • 46:30 — Про Y Data
  • 48:45 — Блиц

Текстовая версия выпуска

00:00 Даниил Скоринкин: Привет, друзья, это очередной выпуск подкаста “Неопознанный искусственный интеллект” от издания “Системный блокъ” — подкаста, в котором мы пытаемся разобраться, что называют искусственным интеллектом сегодня, во что он превратится завтра, и когда уже этих чертовы чат-боты наконец начнут нас понимать. И сегодня в студии я, Даниил Скоринкин, главный редактор “Системного блока” 

Анатолий Старостин: Я, Анатолий Старостин, руководитель службы развития технологий медиасервисов Яндекса. 

Гость выпуска — Давид Дале

Даниил Скоринкин: В гостях у нас Давид Дале:, который раньше работал в Яндексе и делал Алису, а  сейчас стал фрилансером по разработке чат-ботов и диалоговых систем, преподает в Y-Data — это тель-авивский филиал ШАДа Яндекса, работает инженером-исследователем в области автоматической обработки языка, NLP в Сколтехе. Давид,  и первый вопрос,  про личный путь — как ты вообще пришёл в data science и как дата сайентист-математик потом становится специалистом по автоматической обработке языка? 

Давид Дале: Всем добрый день. У меня был еще один прыжок перед прыжком в лингвистику, это был прыжок из экономики в Data Science. Но надо сказать, что он прошел достаточно легко, потому что когда я учился на экономфаке, была эконометрика, которая тоже машинное обучение, только сбоку, когда нужно анализировать данные, строить регрессии и пытаться каким-то образом объяснить себе экономический мир с точки зрения науки — и после этого перейти в какие-то другие предсказательные модели было не очень сложно. 

Анатолий Старостин: Когда я первый раз тебя увидел, мне сказали “это Давид, он пришёл к нам из Yandex DataFactory”. Но это вот было сразу после экономфака или у тебя ещё что-то было до этого?

Давид Дале: Сразу после экономфака была Школа анализа данных. Это что-то вроде магистратуры, которую уже лет десять как проводит Яндекс. Что-то вроде магистратуры — потому что там довольно интенсивная учёба,    там формат лекций, семинаров, огромного количества домашек, там обучают достаточно фундаментальным вещам. На втором годе обучения я пошел работать full-time в Альфа-банк, строить модели для кредитного скоринга, предсказывать, вернёт ли заемщик долг по кредитной карте. После чего меня переманили в Data Factory — это что-то вроде консалтинга, но не обычный консалтинг, когда твой продукт — презенташка “что делать”, а консалтинг с представлением работающего прототипа, и этот консалтинг делался для большого количества индустрий, включая производственные. Мой самый интересный проект был с Первоуральским трубопрокатным заводом, где мы оптимизировали участок термообработки, то есть помогали закаливать трубы чуть быстрее, не теряя при этом в качестве произведенных труб. 

Даниил Скоринкин: Суровый уральский data science. Прыжок от трубопрокатных вещей к лингвистике интересен. 

Давид Дале: Прыжок произошел спонтанно: потом Data Factory закрыли, потому что Яндекс решил, что не интересно заниматься не масштабируемым бизнесом, а консалтинг — это не масштабируемая штука: объём произведённого продукта линейно зависит от количества привлекаемых data scientist-ов. Яндекс решил, что лучше мы пустим всех ребят, которые здесь работают, разрабатывать какие-то внутренние продукты. И на тот момент Алиса полгода как запустилась, и мне было интересно в этом поучаствовать, я тогда не очень это умел, я пришёл, я восхитился, я понял, что это то, чем мне хочется заниматься — учить роботов говорить с  людьми на человеческом языке.

Осознанный путь фрилансера и зарплата

03:53 Анатолий Старостин: С тех пор, я так понимаю, что очень многое поменялось — в Алисе ты проработал еще даже полтора… и потом ты ушел из Яндекса. Ты человек, который выбрал осознанный путь фрилансера, ты мне недавно это сказал — “я теперь фрилансер”. Я хотел понять, почему ты так решил?

Давид Дале: Я так решил, потому что мне кажется, что человеку важно такое в жизни попробовать, у меня появилась финансовая возможность это попробовать в какой-то момент. То есть в отличие от работы в команде… Яндекс — это всё-таки большой муравейник или армия, в которой у тебя есть начальник, и ты ведёшь там свою группу или тебя ведут штурмовать определенную высоту. В общем, мне захотелось быть не муравьем в муравейнике, а какой-то такой самостоятельной бабочкой или стрекозой, которая летит, куда сама выберет. Кажется, это просто психологически полезно, потому что я себя чувствовал самому себе менеджером,  самому себе тимлидом и самому себе рабочей силой и ресурсом, и как-то больше начинаешь понимать вообще о том, как всё работает, когда играешь сразу за весь оркестр. 

Анатолий Старостин: Ну хорошо, прагматический такой вопрос. Ты сейчас сумел построить жизнь так, что тебе твоя фрилансовая деятельность приносит не меньше дохода, чем был в Яндексе?

Давид Дале: Это не совсем так. Яндекс с учетом разных вознаграждений и опционов приносил мне больший доход, чем то, что я получаю сейчас, с другой стороны, я работаю меньше, чем в Яндексе. В единицу времени мой доход больше или по крайней мере сопоставим

Даниил Скоринкин: Наконец-то в нашем подкасте начались разговоры за зарплаты, я ждал этого! А мне вот интересен в этом переходе во фриланс другой аспект: вот прыжок из муравья бабочку, он такой немножко полёт в неизвестное. Тут как бы вот интересно, с чего ты начинал  этот полет, грубо говоря, вот как ты ищешь первого клиента, когда ты решил “я такой фрилансер, буду пилить чат-бот”.

Давид Дале: Первого серьезного чат-ботного клиента ко мне привел сам Яндекс, потому что Яндекс сам не делает всё содержимое Алисы — любой бизнес или любой индивидуальный разработчик может написать для Алисы свой навык, который бы выполнял в Алисе определенную функцию. Один из таких крупных заказчиков пришёл в Яндекс, говорят “Мы хотим с вами интегрироваться”. У Яндекса у самого рук делать это нету, но есть какое-то количество студий и индивидуальных разработчиков. И конкретно этому клиенту посоветовали меня, потому что так сложилось.

Что сейчас есть в мире чат-ботов и голосовых помощников

06:34 Анатолий Старостин: Ты можешь, Давид, как-то нашим слушателям, поскольку видно, что ты в этом очень сейчас глубоко сидишь, рассказать про современную индустрию вообще вот чат-ботов, персональных ассистентов, как это выглядит сегодня? У тебя есть какой-то взгляд на индустрию чат-ботов вообще вот в мире, в России, как всё сейчас выглядит? 

Давид Дале: Если честно, полноценного взгляда у меня нет, потому что я понимаю, что есть много применений каких-то голосовых и диалоговых технологий, с которыми я пока что даже близко не сталкивался. Но из того что я вижу, это как минимум три фронта. Первый фронт — это автоматизация контактных центров, когда тебе звонит на телефон робот или ты звонишь в какую-то контору, и тебе отвечает робот, и борьба идет за качество понимания людей и за интересность и полноту того, что эти роботы могут покрыть своими ответами. Здесь достаточно понятная бизнес-история: живому человеку в колл-центре надо платить деньги, роботу тоже надо платить деньги, но меньше. 

Анатолий Старостин: Есть уже примеры реальных внедрений? 

Давид Дале: И очень много. Вопрос в качестве. То есть когда, например, мне звонит моя поликлиника, они умеют распознавать только “да” или “нет”, я говорю “да” и “да”, на этом наш разговор заканчивается. И такого рода применения простых диалогов очень много. Первый фронт — это были контактные центры. Второй фронт — это как раз то, что называется ассистентами, это Siri, Алекса, Алиса, OK Google и некоторые другие. Сейчас, кажется, много уже появилось русскоязычных ассистентов — Маруся, Салют, что-то готовит МТС, что-то уже уже приготовил Тинькофф. С ними история самая понятная, потому что наверняка многие из вас с ними пробовали говорить или где-то видели, слышали. Они хороши тем, что они какие-то очень простые действия хорошо автоматизируют. У меня самого дома стоит колонка от Алисы, я постоянно включаю на ней музыку, я регулярно ставлю на ней будильники, и она включает-выключает мне лампочки, когда я лежу в кровати и мне лень тянуться.

Есть ещё разные другие простые сценарии, которые интересно переводить в голосовой формат, например, недавно был хакатон, которые устраивали РЖД, на котором мы делали навык, через который потенциально можно было бы заказывать билеты, в итоге это не получилось, но сейчас он может сказать, когда ближайшая электричка от и до, это тоже то, чем люди могут пользоваться ежедневно и регулярно. 

Что такое навыки у голосовых ассистентов?

09:06 Анатолий Старостин: Ты вот только что сказал слово “навык”, ещё английское, очевидно, “скилл”. Можешь прокомментировать, что это такое? 

Давид Дале: Навыком называется какой-то отдельный сценарий, встроенный в ассистента. Как правило, те навыки, про которые мы говорим, они изолированы от основного ассистента, они являются автономным ботом, которому ассистент может передать трубку. То есть если бы существовал навык, например, РЖД, который пока что никто не опубликовал, можно было бы сказать “Алиса, спроси навык РЖД, когда ближайший Сапсан до Питера”. И в этот момент Алиса передаёт в трубку боту, который написан разработчиками из РЖД, который сам должен распознать, в чем вообще смысл запроса пользователя, сам сформировать ответ и передать его Алисе, чтобы она его зачитала. В Алисе сейчас это реализовано так: навыки не видят друг друга, навыки не видят саму Алису, передача трубки осуществляется в тот момент, когда навык назван по имени, то есть у каждого навыка есть активационное имя, при произнесении которого Алиса может решить его включить. С другими ассистентами иначе, я не скажу за все, но схема примерно одинаковая.

Анатолий Старостин: И таких навыков ведь очень же много, правда? Я так понимаю, вот у Алексы их уже какие-то тысячи…

Давид Дале:  У Алексы их десятки тысяч, у Алисы их единицы тысяч.

Для каждой маленькой задачи — маленький искусственный интеллект

10:38 Анатолий Старостин: Дань, не отзывается ли тебе наша история про пластырь, про то, как много искусственных интеллектов склеиваются пластырем?

Давид Дале: Мне кажется, что это неизбежно, что мы очень далеки от того момента, когда будет искусственный интеллект общий, способный и заказать правильное блюдо в ресторане, и заказать нужный билет на поезд со всеми опциями, и делать вообще все. Мне кажется правильным, когда тот, кто занимается поездами или занимается заказом блюд или занимается медицинскими консультациями,  берёт и предоставляет какую-то понятную логику для того, чтобы мой цифровой ассистент мог этой логикой воспользоваться. Вопрос дальше, а какой должен быть интерфейс между тем, кто шарит в определенной услуге и процессе, и помощником. 

Универсальный подход к построению голосовых ассистентов

11:33 Анатолий Старостин: Я хотел бы понять примерно следующее: существуют ли сейчас уже какие-то решения, как бы претендующие на универсальность, какие-то универсальные библиотеки, что-то, что помогает всем разработчикам диалогов писать свои диалоги и как-то хотя бы намечает путь к объединению, чтобы один диалог мог что-нибудь передать в другой. Когда мы с тобой вместе делали Алису, у нас тогда внутри одной Алисы было несколько сценариев: был сценарий погоды, музыки, и уже тогда стояла задача передачи информации из одного сценария в другой. То есть ты спросил “Какая погода в Москве”, а потом спросил “А какой там курс доллара”, и в этот момент ты перешёл из одного сценария в другой, и кусок информации из одного сценария передал в другой. А теперь мы выходим на уровень, когда эти навыки пишутся Community,  и кажется, что должна вставать похожая проблема — навык про РЖД должен как-то передать информацию следующему навыку… А скорее всего он так не делает. Вот вопрос: в эту сторону как-то общество движется, все думают о каких-то универсальных представлениях для диалогов?

Давид Дале: Да, про это думают. Мне в частности понравилась задача, которая давалась, кажется, полтора года назад на соревновании Dialog State Tracking Challenge, задача была от Гугла, и она заключалась в том, чтобы по схеме (сейчас объясню, что это такое) восстанавливается состояние диалога, это как раз набор тех элементарных кусочков знаний, которые нужны для того, чтобы диалог можно было продолжить. Например, понимание о том, что мы говорим про поезд Питер-Москва, и мы говорим про срок на следующих выходных, и дальше можно спрашивать “там” или “тогда”, относя к этим временам и местам. Теперь что такое схема. Схема — это описание конкретного сценария, какие в нём есть слоты, то есть сущности, которые можно чем-то заполнить. Есть сущность, например, “точка отправления, точка назначения”, есть сущность “дата”, есть какие-то ещё сущности, которые можно описать словами и которые можно заполнять данными особого типа, например, топонимами или временем, или чем-то еще, и задача была в том, чтобы, имея для нового сценария схему, то есть описание текстовое того, какие есть слоты, примеры того, чем они могли быть заполненными, дальше прочитать текст диалога, и эти слоты заполнить каким-то машинным способом. То есть имея такого рода алгоритм, имея схемы, размеченное разработчиками описание того, какие типы данных могут встретиться, можно, кажется, что этот алгоритм всегда прогонять на всех предыдущих диалогах, и неважно, откуда пришел ответ — из Алисы, из внешнего навыка А или из внешнего навыка Б, всегда держать все слоты, предусмотренные схемой, заполненными. 

Анатолий Старостин: Понятно. Ты сейчас сказал слово “соревнование”, ещё совсем не в продакшене, это скорее в области science. 

Давид Дале: Это находится в области очень прикладного science, то есть я могу представить, как это решение, еще чуть допиленное, с парой костылей, становится основой нового интерфейса между внешними навыками и ассистентом.

Анатолий Старостин: Понятно. Но ты сейчас в своей практике написания навыков подобные вещи не используешь? 

Давид Дале: Я подобные вещи не использую, потому что подобные вещи должен принять решение использовать сам ассистент — в данном случае, команда например Алисы или Алексы, или Google Ассистента должна сказать, что мы можем от вас получать схему, мы можем вам передавать значения всех слотов, накопленные в рамках имеющихся схем. 

Анатолий Старостин: Таким образом, мы как раз говорим о некотором зачатке универсального протокола, который должен начать возникать. Он может быть неполным… в нем могут быть совершенно практические сущности, которые в основном встречаются в прикладных диалогах, но это всё равно должно быть что-то единое, подо что всё подпишутся, все закоммитятся “да мы работаем с этим протоколом”, правильно я тебя понял? 

Давид Дале: Я не очень глубоко копал, но, кажется, ассистент от Сбера, который вышел этой осенью, пытается какие-то зачатки подобного протокола формировать. 

Почему всех впечатляет  GPT-3

16:39 Даниил Скоринкин: Мы поговорили сейчас о том, что есть индустрия разработки чат-ботов, и она пока занимается созданием узких программируемых навыков, которые выполняют некоторые конкретные утилитарные функции, с другой стороны, в науке, которая довольна близка инженерии, вроде бы есть какие-то попытки сделать некоторые инструменты, которые проявляют некоторые тенденции к обобщению довольно мощному и к такому переходу от навыка к навыку. Я сейчас говорю о моделях типа GPT-2, 3 и так далее. Вопрос: вот GPT-3 всех вроде бы впечатляет своими результатами. Почему впечатляет и почему  она такая крутая и как она работает, насколько ты это понимаешь, и есть ли это какой-то путь вперед? 

Давид Дале: GPT  — это штука, которая всех впечатляет, мне кажется, отчасти благодаря хорошему пиару. То есть когда мы говорим про языковые модели в среде не очень инженерных людей, обычно они чаще слышали про GPT. Но как только мы приходим к тем, кто реально решает какие-то задачи компьютерной лингвистики, они чаще говорят про другую модель — про Bert, которая, кажется, уже здесь немножко обсуждалась. Значит, наверное, я сразу расскажу про GPT, потому что про неё спрашивали. GPT — это классическая авторегрессионная языковая модель. Что значит языковая модель? Значит, она пытается предсказывать вероятности встречаемости текстов в языке. Что значит авторегрессионная? Значит, она пытается предсказать продолжение по началу. То есть единственная вещь, которую обучалась делать GPT — это прочитать текст и предсказать, каковы вероятности встретить то или иное слово в качестве следующего слова в этом тексте. То есть GPT учится дописывать следующее слово в тексте. Понятно, что слово за слово можно написать очень длинный текст, но всё, на что обращает внимание GPT в момент написания — это префикс этого текста. 

образовательная вставка:

Префикс здесь — это начало текста. Человек подает префикс нейросети, чтобы та написала продолжение текста. Например, по двум начальным строчкам нейросеть может написать эссе на заданную тему. 

Нейросети типа GPT-3 могут угадывать по префиксу тип задачи, которую от них требуют решить. 

Если написать начало стихотворения — GPT-3 может продолжить в стихах. Если подать пары фраз на русском и английском — GPT продолжит переводить. А если показать в префиксе, как превращать грубые фразы в вежливые, то GPT-3 научится делать и это.

У группы Open AI, которая это делает, амбиция такая, что любую задачу можно сформировать как какой-то текстовый вопрос, на который можно написать текстовый же ответ, и они пытаются делать всё больше и больше языковые модели, чтобы они всё больше и больше разных задач в такой форме могли воспринять. Пример: на вход в модель подаётся некоторое количество пар фраз на французском языке и на английском, французская фраза тире английская, французская-английская, ещё одна французская фраза, например, “je ne mange pas six jours”, простите за мой французский. И после этого GPT, оказывается, может догадаться, и достаточно часто догадывается, что от него требуется, и переводит эту фразу на английский — “I haven’t been eating for 6 days”. Прикол в том, что специально GPT не учился переводу. Он учился продолжать огромное количество текстов, десятки гигабайт текстов, собранных со всего интернета, среди которых случайно попались тексты, в которых французская фраза переводилась на английский язык. И амбиция с GPTв том, что среди всех текстов, прочитанных этой моделью, были примеры решения разных задач, и если правильно сформулировать тот текст, который подается на вход этой языковой модели, то она отдаст осмысленный и полезный выход — это очень приятно, такая универсальность, то есть они действительно пытаются решить задачу в общем виде. Но она не очень приятная для индустриальных целей, потому что это магия, потому что если каким-то образом вот фраза “я не ел шесть дней” перевелась не так, то ты не можешь взять и просто так изменить что-то в модели, чтобы она передавалась правильно. И если у тебя качество модели вот такой, которая специально не обучалась переводить, 80% — это очень крутой результат с точки зрения науки… Но проблема в том, что если ты хочешь сделать переводчик, то ты лучше потратишь деньги, разметишь данные, обучишь модель на размеченных парах на 2 языках, и получишь качество, там, 97%.

GPT-3 умеет шутить

21:24 Анатолий Старостин: У меня сегодня утром была дискуссия двухчасовая с одним товарищем, который сейчас в Америке, в Сиэтле живёт, и он вообще комик. Он стендапер. Он совершенно сражен GPT-3, он просто считает, что в мире произошла революция невероятных масштабов, потому что он пришел к выводу, что GPT-3 пишет хорошие шутки. Как он пришёл к этому выводу? Он делает следующее: он берёт начало — все стендапы начинаются обычно с какого-то захода из серии “я сейчас расскажу вам о чём-нибудь”, некое обращение к аудитории. И он мне показывал примеры, там, “я сейчас расскажу вам, почему ноги — это хорошо”. GPT-3 после этого чувствует, что ей намекают на какое-то эссе — она, видимо, видела миллион этих эссе — и она начинает выдавать связный текст, объясняющий, что ноги — это хорошо, причём она это делает красиво, Она говорит “я сейчас расскажу вам, что ноги — это хорошо, потому-то, потому-то и потому-то, во-первых, во-вторых, в-третьих”. И после этого она честно генерирует абзац на “во-первых”, абзац на “во-вторых” и абзац на “в-третьих” и связывает то, что она сказала в начале, в преамбуле, и в конце ещё как-то красиво заканчивает это эссе. То есть это производит впечатление прямо интеллектуального существа.

Как работает GPT-3 и почему она лучше предшественников?

22:43 Давид Дале: Значит, во-первых, почему GPT-3 генерирует более красивый текст, чем GPT-2, а  GPT-2 — чем более старые языковые модели? Действительно, за счет огромного количества прочитанных текстов, то есть просто размер обучающей выборки, и во-вторых, это важно, за счёт того, насколько можно при генерации текущего слова полноценно учесть все предыдущие слова в тексте. До того, как появилась архитектура нейросетей, называемая трансформер, обычно тексты генерировали рекуррентными нейросетями, которые к текущему моменту запоминают всё содержимое предыдущего текста в каком-то не очень большом числом[MOU4] векторе. Типа, весь текст, каким бы сложным он не был, представляется точкой в 1000-мерном пространстве. 1000-мерное пространство — это много, но всё-таки большую часть нюансов туда не затолкаешь. Трансформер  — это следующее поколение нейросетевых языковых моделей, которое появилось года три назад, которое при генерации текущего слова смотрит на все предыдущие слова и может смотреть на них, то есть учитывать их, подбирая важность каждого слова под текущий момент. Таким образом, говоря “во-вторых”, оно может посмотреть на начало текста и заново его как бы перечитать. За счёт того механизма, который называется Attention. Когда вот это представление смысла текстов в каком-нибудь, например, в 1000-мерном пространстве на каждом шаге пере-регенерируется, заново беря представления каждого прочитанного слова и взвешивая их с весами, подобранными под текущий момент в диалоге, и эти веса на каждом шаге пересчитываются заново, и нейросеть как бы обращает внимание на разные кусочки уже написанного, отсюда Attention. 

Анатолий Старостин: Ну то есть вот тот эффект, который я описал про “во-первых, во-вторых” — это вот проявления этого? 

Давид Дале: Это проявление вот этих самых длинных Attention. Собственно, GPT-3 от GPT-2 отличается количеством параметров и отличается тем, что эти Attention-ы, они смотрят еще дальше, чем они смотрели раньше, нейросети-трансформеры устроены (по крайней мере, в своей базовой версии) так, что они видят какое-то фиксированное число слов назад. И любой текст, более старый чем это число слов назад, он не принимает участие вообще никакого в генерации текущего слова. То есть вот помнит нейросеть тысячу слов и всё. Все слова до этого, если их специально как-то не переупаковать, они не используются. И GPT-3 устроена точно так же, но в нём вместо 1000 стало несколько тысяч, за счёт этого связность текстов повысилась. 

Анатолий Старостин: А еще связность текстов  повышается за счёт того, что естественный язык так устроен, что в нём много повторений на самом деле. Если у тебя повествование идёт, то разные топонимы, разные имена собственные, так далее, повторяются периодически. Поэтому связность может оказаться еще большей теоретически, потому что у тебя первый раз сущность может употребляться где-нибудь там уже за 10 000 слов, но она пунктиром была повторена несколько раз и попала в окно в 3000 слов, и в результате получается, что возникает ощущение, что сеть помнит вообще на 10 000 назад. 

Few-shot learning, Zero-short learning и BERT

26:15 Давид Дале: Я могу рассказать про тренд, который уже сейчас есть в машинном обучении, в последние несколько лет он пришёл и в компьютерную лингвистику. Это попытка сократить стадию обучения. Что делают модели машинного обучения сейчас: у них есть фаза обучения, когда параметры этих моделей адаптируются к тем примерам, которые им показали. Есть фаза применения, когда параметры модели не меняются, но для какого-то нового входа, например, текста, модель предоставляет какой-то новый выход, например, сгенерированный ответ на этот текст. Соответственно, модель обучается на задаче какого-то типа. Дальше модель можно пытаться, например, дообучить на задачу другого типа. То есть есть вот языковая модель BERT, которую можно дообучить, например, на задачу выделения семантических ролей в тексте, для этого ей надо показать какое-то количество примеров решения этой задачи, и именно модель BERT хороша тем… и перевернула NLP, потому что она умеет дообучаться с относительно небольшого количества примеров за счет тех знаний, которые она уже накопила, пытаясь решать свою первоначальную задачу восстановления пропущенных слов. То есть это называется формально few-shot learning, когда с нескольких примеров модель благодаря накопленному опыту уже может подхватить задачу. То, что хотят сделать создатели GPT, OpenAI, она ещё амбициозней — они хотят сделать zero-shot learning большого количества задач работы с текстом, когда модель ни разу не пыталась решить эту задачу в явном виде в процессе обучения и на лету улавливает эту поставленную задачу в применении. 

IQ тесты для нейросети

28:00 Давид Дале: Что такое интеллект — это как мне его протестировать? Надо взять какое-то количество задач, которые программа ещё ни разу не видела, и посмотреть, с какой долей из них она справится. Если это доля достаточно высока, мы будем считать это успехом, и кажется, кстати, такой тест в прошлом или в этом даже году собрал Франсуа Шолле. Я не знаю подробностей, я сам читал по диагонали статью, но один из тестов на интеллектуальность есть.

Анатолий Старостин: Это работа, которая “Measurement of intelligence”, там 60-70 страниц, такая почти монография, в которой в конце картинки классные про разные такие, типа, тесты на IQ.

Давид Дале: Да, я всю эту работу не читал, я читал пока только блог-пост про неё. Но кажется, что мы говорим про одно и то же.

Даниил Скоринкин: Там такие абстрактные задачки, типа тут дорисуйте линию так, будто она отражается от кубиков, в который она врезалась.

Анатолий Старостин: Мы будем систему называть интеллектуальной, если она способна к few-shot learning на разнообразных новых задачах, которых она до этого не видела?

Давид Дале: Ну в идеале иметь способность к zero-shot learning — когда не имея примеров вообще в стадии обучения, а имея только какое-то объяснение задачи, типа сказано “отрази линию”, и модель отражает линию.

Анатолий Старостин: Понятно, но это же довольно условная граница между zero и few. Но я напомню, статья от OpenAI, собственно, про GPT-3, статья была посвящена тому, что вот мы обучили такую большую генеративную модель с кучей параметров, и она сама по себе проявляет свойства few-shot лернеров. Few-shot learning или zero-shot learning в данном случае?

Давид Дале: Значит, то, что действительно показывали в этой статье — это few-shot learning, но облегченный few-shot learning, потому что с точки зрения классического пайплайна обучения-применения это не обучение, но да, примеры действительно нужны. Вот настоящий совсем прям хороший искусственный интеллект, ему наверно примеры были бы не нужны вообще, то есть если он имеет представление о том, что такое албанский и чеченский язык, то даже без примеров перевода с албанского на чеченский ему можно было бы сказать переведи с албанского на чеченский, и он сразу бы начал переводить.

Анатолий Старостин: В GPT-3 сейчас так нельзя? 

Давид Дале: Зависит от того, насколько хитро ты сформулируешь условие, потому что всё равно это определяется тем, насколько похожие вещи встречались. Например, задача суммаризации отлично решается, если ты толкнешь туда длинный текст и напишешь “tldr” в конце 

Даниил Скоринкин: (это такой отзыв, что слишком длинный текст, я не осилил), ты намекаешь нейросети, что слишком длинно, и она каким-то образом понимает, что его надо сократить.

Анатолий Старостин: Надо же не забывать, что с GPT-3 есть ещё много экспериментов по программированию реальному.

Давид Дале: Да, она HTML страницы умеет генерировать.

Нужно ли искусственному интеллекту быть похожим на человека?

Анатолий Старостин: Прекрасная машина будущего, которая будет вот таким свойством обладать,, она должна быть построена на принципах какой-то антропоморфности, то есть она должна быть чем-то похожа на нас, на людей, или “мы свой, мы новый мир построим”?

Давид Дале: Ну у неё точно должен быть антропоморфный интерфейс, потому что это то, к чему мы привыкли. При этом кажется, что у нее там будет внутри — будет ли там что-то похожее на человека или нет — это не очень важно. То, что крякает как утка, может считаться уткой. Да, мне кажется, что так, ну на самом деле я не так много знаю про архитектуру человека, а то, что я про него знаю, мне кажется таким очень костыльным…

Анатолий Старостин: То есть какая-то амбиция такая, что мы в принципе могли бы и получше сделать? 

Давид Дале: Я не уверен, что лучше, ну то есть может быть можно было бы сделать проще, то есть в человеке очень много разных регуляторных систем — нервные и гормональные. И нервная тоже делится на очень много разных подсистем, каждая из которых пытается как-то подпереть другую. Там, кора пытается заткнуть лимбическую систему, лимбическая система ещё что-то пытается заткнуть. В искусственном интеллекте, кажется, можно сразу запрограммировать, чтобы затыкать не приходилось, и не факт, что оно функционально будет лучше, но просто изнутри оно может быть, наверное, проще…

Даниил Скоринкин:  Короче, мы сделаем не лучше, а дешевле.

Давид Дале: Да, какая-то такая идея.

Онтологии, symbolic AI и гибридный подход

32:54  Анатолий Старостин: Я в данном подкасте выступаю немножко как такой олдфаг, человек, который всё ещё любит онтологии, всё ещё любит symbolic AI и пытается как-то сам себя и других убеждать в том, что всё это направление должно быть еще когда-нибудь… восстановлено в правах. Интересно, что ты про это думаешь,  

Давид Дале: Я не очень много сам работал с такими моделями старого образца. Если говорить про то, а во что я верю, во что можно вкладываться, я думаю, что да, истина где-то в гибриде, потому что нейронки сами по себе… их проблема в том, что они не могут быть дискретными, потому что дискретные вещи нельзя постепенно обучать. А силы нейросети в постепенном обучении и постепенном дообучении, вот, и если мы хорошо научимся скрещивать одну с другим, то есть постепенно обучать нейронку, при этом чтобы она могла использовать данные из каких-то дискретных структур, она может быть гораздо сильнее, чем просто нейронка, и с другой стороны, дискретные структуры сами по себе — их проблема в том, что они всё равно часто врут, потому что реальность всегда сложнее, чем дискретная структура. 

Анатолий Старостин: Ты сейчас сформулировал это довольно классическим образом: когда начинают говорить о гибридах нейронных моделей и, условно, будем называть их дискретными, они сразу представляют, что вот слева дискретные, справа нейронные, вот мы их совместили как-то, склеили, и они продолжают жить отдельной жизнью друг от друга, и как бы как будто бы дискретная вот уже создана, вот некая фиксированная онтология, вот knowledge-граф, а кажется, что правильная такая система должна была бы быть динамичной с обеих сторон — сами вот эти дискретные описания тоже должны были бы быть по-своему как-то обучаемыми.

Давид Дале: Да, конечно, на самом деле одна из задач, которую я решал в этом году — это были соревнования, приуроченные к конференции “Диалог” по компьютерной лингвистике, соревнования по пополнению таксономии — это такой частный случай онтологии, когда у нас есть множество объектов, и указано, какие объекты являются частным случаем других с точки зрения лингвистики — это отношение “гипоним-гипероним ”. 

образовательная вставка

Гипоним — слово, которое обозначает подвид какой-то сущности. Например, слова пудель, болонка, такса — гипонимы слова собака. А слова радость, обида, зависть — гипонимы слова чувство. Более общее родовое понятие называется гиперонимом. Собака — гипероним для болонки, таксы и пуделя, а чувство — гипероним для зависти, радости и обиды. 

И вот есть такое дерево, точнее не дерево, а граф из понятий — он не дерево, потому что, например, если мы берём понятие “спаржа” — оно является частным случаем продукта, а ещё оно является частным случаем травы. И здесь как бы две веточки вот этого дерева сущностей сходятся в какую-то одну новую веточку. И вот есть еще какое-то новое понятие “шпинат”, которого нет в онтологии, и надо определить, чем оно является, то есть найти для него родителей, найти для него гиперонимов в этом дереве, имея просто тексты, в которых это слово “шпинат” как-то встречалось. И эту задачу очень удобно решать с помощью нейросетей, потому что мы можем нейросетевыми методами, связанными с векторными представлениями слов, найти слова, которые по своим представлениям похожи на шпинат, то есть часто встречаются в том же контексте, что и шпинат, и понять, а к каким понятиям они относятся, какое у них место в этой таксономии, и слово шпинат вкрутить куда-то туда же. И это пока что не позволяет достичь высокой точности, то есть все новые слова правильно воткнуть в эту таксономию, но оно позволяет создать какой-то список кандидатов, частным случаем чего шпинат может являться, которые дальше человек может глазами отревъюить и относительно небольшими своими усилиями человеческого труда новое слово в таксономию добавить. 

Анатолий Старостин: Ну есть можно было бы представить себе, например, условного робота, который читает тексты разные. И дальше он применяет какие-нибудь твои нейронные наработки, и в какой-то момент обнаруживает — вот тыква с какой-то вероятностью овощ, и дальше, например, берет и тебя спрашивает об этом, и верифицирует эту информацию, тебя и может быть ещё пятерых людей для надежности. И если все говорят “да, тыква — овощ”, тогда он свою вот эту онтологию пополняет. Могло бы такое существовать?

Давид Дале: Такое могло бы существовать, и есть кажется попытки такое создавать — есть Википедия, создаваемая людьми, в которую люди добавляют знания для людей, есть некое ее машиночитаемое зеркало — DBPedia, в котором данные представлены в машиночитаемом формате, и кажется есть разные попытки пополнять её также машинными или полумашинными способами. 

Почему мы все время думаем про суперинтеллект

38:41 Анатолий Старостин: Начиная разговаривать о таких постановках задач, вдруг начинаем говорить на самом деле о суперинтеллекте, то есть о каких-то машинах, которые должны знать всё про этот мир, условно говоря, да, а кажется, что мы-то сами совсем не такие, ни один из нас не знает всё про что-нибудь, мы вообще знаем довольно мало, на самом деле.

Даниил Скоринкин: Я, Толь, хочу на твою реплику ответить цитатой, которая, мне кажется, тебе понравится; сейчас процитирую сначала, потом скажу тебе, кто и когда это написал. “Многие, говоря об искусственном интеллекте, хотят, чтобы по всем позициям он был гениальным; его как бы сравнивают не с одним человеком, а со всем человечеством. Конечно, будут созданы роботы, которые в той или иной области — скажем, в счете — превзойдут человека, но в целом если робот по интеллекту будет равен среднему человеку, то мы сможем сказать “цель достигнута”. Так вот, это 1976 год, журнал “Техника молодёжи”, написал это Виктор Глушков, такой неудавшийся создатель советского интернета, очень известный сегодня в среде людей, которые следуют вот такой вот советской несостоявшейся кибер-утопии. Мне кажется, он разделял твой пафос на тему того, что не нужен нам супер-сверхинтеллект в этом роботе, а нужен какой-то бытовой и житейский интеллект.

Анатолий Старостин: В науке всё развивается по спирали, и идеи, которые в каком-то моменте кажутся утопичными или просто не реализуются, не получается реализовать — это не значит, что они должны быть полностью закопаны…

Научная работа в «Сколтехе»

40:19 Анатолий Старостин: Это был мой следующий вопрос: расскажи про свою науку, где ты занимаешься и что ты делаешь?

Давид Дале: Я занимаюсь сейчас наукой в NLP-группе в Сколтехе под руководством Александра Панченко. Та задача, которой я занимаюсь сейчас — это перенос стиля на текстах, то есть есть на входе текст А, нужно сгенерировать текст Б, который бы нес тот же смысл, что и текст А, но был бы написан в другом стиле. Например…

Даниил Скоринкин: Типа не “пошел нафиг”, а “извольте удалиться”.

Давид Дале: Именно. То, с чем мы сейчас работаем — это как раз удаление токсичности из текста, потому что эта задача кажется прикладной, имеющей много применений, и под нее много размеченных данных, например, датасет, в котором комментарии к создателям Википедии размечены как токсичные и нетоксичные. И как раз прелесть, например, языковой модели, допустим, GPT-2, которая есть в открытом доступе, которую можно скачать и пофайнтюнить, в том, что ее можно легко научить на каком-нибудь токсичном корпусе генерировать токсичные тексты или на не токсичном генерировать нетоксичные. Но сложно управлять содержанием того, что она генерирует, потому что ты ей даёшь какой-то префикс, и она дальше фантазирует как хочет на тему этого префикса. Поэтому мы взяли еще одну модель, она чуть менее известная, но в прикладных целях, возможно, даже более крутая. Это модель Т5 от Гугла, тоже недавно вышедшая, которая по своей структуре является моделью seq2seq, то, что называется, она на вход принимает текст и генерирует на выходе совершенно другой текст, как-то связанный с первым, но необязательно являющийся его продолжением. И вот мы взяли парафразер, который обучен на парах текстов с одинаковым смыслом…

Анатолий Старостин: А где взяли такие пары? 

Давид Дале: Мы сами пары не взяли, мы взяли из репозитория Hugging Face уже готовый обученный парафразер, то есть Т5, дообученный на задачу перефразирования, и там было несколько датасетов, например, вопросы с Quora, которые были помечены людьми как имеющие один и тот же смысл, датасет с дубликатами вопросов, и какое-то количество данных, полученных на основе перевода. Мы берем фразу на английском, переводим ее на чешский или китайский, потом переводим обратно на английский и надеемся, что с высокой вероятностью фраза, даже если она звучит по-другому, обладает одним и тем же смыслом, дальше…

Анатолий Старостин: Ну в этот момент мы сильно рассчитываем на качество машинного перевода.

Давид Дале: Да. Конечно, мы сильно рассчитываем на качество машинного перевода…

Анатолий Старостин: Я правильно понял, что ты в результате совместил две модели?

Давид Дале: Именно, я совместил две модели, то есть я когда пытаюсь сгенерировать текст, очищенный от токсичности, я генерирую его по чему-то вроде формулы Байеса, где у меня перемножаются условная вероятность следующего слова в тексте при условии того текста, который я хочу перефразировать, и кроме того, у меня умножается вероятность нужного стиля нетоксичного при условии этого слова, которое я генерирую, а вот это вероятность стиля при условии текста, она получается из пары моделей GPT, первая из которых обучена генерировать токсичные тексты, а другая обучена генерировать нетоксичные. 

Анатолий Старостин: В результате хорошо работает? Уже статью уже написали?

Давид Дале: Нет, статью сейчас будем писать. Ещё проблема именно перефразирования в том, что здесь нет достаточно хороших автоматических метрик качества, потому что… ладно, мы стиль можем примерно классификатором померить, а вот то, насколько хорошо перенёсся смысл без человека, уже достаточно надежно не измеришь.

Зачем делать студию разработки диалоговых агентов?

44:34 Анатолий Старостин: Я недавно от тебя, Давид, услышал, что ты решил основать студию разработки, которую ты назвал Dialogic Digital. Можешь про это немножко сказать, что за план, что вы хотите сделать?

Давид Дале: План на самом деле довольно простой. Я когда вышел на фриланс, я понял, что возможностей для заказов вокруг меня сильно больше, чем я сам могу обработать. С другой стороны, я понимаю, что вообще всё это хорошо у меня так работает, потому что я сам уже прокачан, у меня есть какое-то представление о том, как надо, на основе моего опыта, и работая сейчас, принимая сейчас заказы, я потихонечку учусь тому, а как делать хорошо, как делать хорошие диалоговые интерфейсы. И если бы я мог через себя пропустить больше опыта, я делал бы ещё круче, но моя возможность ограничена — соответственно, мне хочется обзавестись командой, которая бы это получение опыта распараллеливала и достаточно эффективно им бы обменивалась. Поэтому просто хочется говорить как про студию, как про какую-то команду людей, но, собственно, я сейчас нахожусь в начале поиска таких людей, я ходил с несколькими ребятами в хакатоны, и мне показалось, у нас получалось хорошо. Можно пытаться настраивать какое-то долгосрочное сотрудничество. 

Анатолий Старостин: А ты не боишься, что это станет full-time job, и вся наука закончится на этом, и ты будешь на это тратить большую часть времени?

Давид Дале: Ну как раз потому что будет команда, я надеюсь, что это можно сделать не full-time job. Потому что сейчас если я что-то на себя взвалил и у меня горят сроки, мне всё равно приходится это доделывать самому; когда нас будет несколько, мы сможем друг другу эти проекты перекидывать. 

Как преподают в Y-DATA

46:30 Анатолий Старостин: Можешь рассказать про преподавания Y-Data, что это и чем она отличается или не отличается от московского ШАДа? 

Давид Дале: Как я уже говорил, московский ШАД — это что-то вроде магистратуры, там учатся 2 года, там учатся в основном молодые студенты 20-25 лет, и там много фундаментальных предметов, постепенно готовящих их к тому, чтобы делать что-то сложное. В Тель-Авиве аудитория другая и формат поэтому тоже другой. Типичный студент там — это тридцатилетний разработчик, у которого уже есть семья, дети, какая-то плюс-минус сложившаяся работа, какой-то свой стиль жизни, и который хочет профессионально прокачаться, стать не просто разработчиком, а дата-сайнтистом, соответственно, такие студенты, у них меньше времени, у них есть деньги, чтобы платить за программу, им не хочется слишком заниматься какими-то фундаментальными вещами, какую-то математику прокачивать или учиться программировать, они хотят получать ценный прикладной контент в сжатом виде. При этом курс, который преподаю я, основы теории вероятностей и статистики — он один из самых, наверное, менее прикладных. То есть моя задача всё-таки за буквально полтора месяца, сколько мой вводный курс длится, дать им какой-то базовый аппарат, позволяющий им потом машинное обучение осваивать и применять, обладая этими вероятностными знаниями и техниками. Студенты очень требовательные, часть из них знают тервер лучше меня, первые года два мне было несколько неловко, потом я понял что данность на самом деле такова, что в Тель-Авивском ШАДе студенты почти так же много учатся друг у друга, потому что среди них много очень сильных, как и у преподов, но за счет того, что каждый из них обычно силён в чём-то своём, все они в итоге или практически все больше 90% выходят довольными.

Блиц

48:45 Даниил Скоринкин: Переходим к блицу. Мы задаем короткие вопросы, ты отвечаешь коротко или не очень коротко, как хочешь. 

Анатолий Старостин: Твои любимые книжки, фильмы, сериалы по теме искусственного интеллекта?

Давид Дале: Очень сложно, я не смотрел ни одного сериала про искусственный интеллект; фильм про искусственный интеллект, который я смотрел и запомнился — это, конечно же, “Она”, чисто про приложение, каким оно могло бы быть. Про книги… книга совсем даже не про искусственный интеллект, а про математику — это “Probability Theory: The Logic of Science” [Эдвина Томпсона] Джейнса — одного из таких самых ортодоксальных поклонников байесовского подхода к теории вероятности, который пытается действительно на основе теории вероятности и ее байесовских методов воссоздать то, каким мог бы быть вот этот мыслящий робот.

Даниил Скоринкин: Назови какую-нибудь способность,  которой совершенно не обладают современные языковые помощники, современные голосовые ассистенты, но очень хотелось бы, чтобы они научились? 

Давид Дале: Банально — я хотел бы, чтобы они умели запоминать произвольные факты. Это очень полезно, и кажется, что это не очень сложно, но пока что я бы не видел, что такое сделали. 

Анатолий Старостин: Ты имеешь в виду, запоминать юзер инпут, что мы им что-то сказали и они это запомнили? 

Давид Дале: Есть сейчас Алиса знает, что меня зовут Давид, потому что я ей это сказал, но она, например, не знает, как зовут мою улитку, и если я ей 10 раз скажу, она всё равно не будет знать. 

Анатолий Старостин: Назови, пожалуйста, три сферы экономики, которые ещё не изменил искусственный интеллект, но обязательно это сделает. 

Давид Дале: Ух, сложно. Мне кажется, что у нас в образовании маловато искусственного интеллекта, что кажется, что сейчас узкое место — это учителя, и каким-то образом можно будет это расширить, когда алгоритмы научатся хорошо ладить с детьми. Вот я жду этого момента, это, конечно, будет более бесчеловечно, как любая новая технология делает мир чуть более бесчеловечным, но наверное, в целом мир от этого всё-таки выиграет. Вторая сфера — это транспорт. Я всё жду вот этих самых самодвижущихся автомобилей, потому что, кажется после этого то, как мы обращаемся с транспортом, может сильно измениться, когда все вот эти такси будут вести нас куда надо совершенно самостоятельно. Давайте скажу про третью, потому что это не совсем про искусственный интеллект, это даже просто про формальные методы. Я очень жду, когда научный метод начнет применяться в политике.

Даниил Скоринкин: Это прямо по следам советских диссидентов из вот такого разлива Андрея Сахарова, он все мечтал об управления человечеством с научно-демократический точки зрения.

Анатолий Старостин: Мне кажется, что вот современных политиков GPT-2 может заменить уже прямо сейчас.

Даниил Скоринкин: Раз уж мы про такие социальные проблемы заговорили, кому следует бояться за свое рабочее место.

Давид Дале: Я думаю про то, кого экономически выгоднее всего автоматизировать — наверное, кого-то, кого много. В первую очередь, приходят те же самые водители такси, потому что и сейчас уже и так технология заставляет их зарабатывать существенно меньше. Такси сейчас стоит копейки, когда всё-таки беспилотники пойдут своим триумфальным шествием, кажется, что всем этим людям придется зарабатывать как-то иначе, и возможно, еще несколько таких же массовых профессий. Я не очень переживаю за курьеров, потому что у них всё-таки сложная работа, включающая в себя какие-то взаимодействия, которые искусственный интеллект может не потянуть. А вот, например, часть продавцов, я думаю, уже очень скоро вытеснят какие-нибудь умные кассы. 

Анатолий Старостин: Насколько я знаю, у тебя пока нет детей, но всё-таки представим себе реальность, в которой они есть. Возможно, если это не обозримое будущее, а попозже, может, тогда уже подоспеют  искусственные интеллекты серьёзные. Доверил бы ты им воспитание своих детей?

Давид Дале: Думаю, что доверил бы частично. То есть совершенно точно не полностью. Потому что я не верю, что эти искусственные интеллекты смогут заменить людей вполне, и я просто не знаю, что может произойти, если неполноценный человек заменит полноценного. Я боюсь непредсказуемых побочных эффектов.

Анатолий Старостин: Оказавшись перед искусственным интеллектом, что ты ему скажешь? Прямо вот таким настоящим, перед AGI.

Давид Дале: Наверное, я спрошу: “как тебе?”.

Даниил Скоринкин: Какой-то совет людям, которые хотят, может быть, войти в область разработки чат-ботов, навыков для них или вообще в область вот какого-то data science?

Давид Дале: Это два разных совета. Потому что сейчас чат-боты и навыки — это очень часто не про data science как таковой, а про то, чтобы сделать хороший продукт с диалоговым интерфейсом. Диалоговый интерфейс и работа с данными — это совершенно необязательно одно и то же, но в целом, наверное, и тем, и другим я посоветую банальное: пробуйте как можно больше разных штук и некоторые из этих штук старайтесь доводить до публичных результатов, тогда у вас все пойдет. 

Финал

Даниил Скоринкин: Друзья, это был очередной выпуск подкаста “Неопознанный искусственный интеллект” от издания “Системный блок”. очередной вдохновляющий выпуск. Сегодня в студии с вами был я, Даниил Скоринкин, главный редактор “Системного блока”.

Анатолий Старостин: Я, Анатолий Старостин, руководитель службы развития технологий медиасервисов Яндекса.

Даниил Скоринкин: А в гостях у нас был Давид Дале:, с которым мы обсудили огромную кучу всяких вопросов. Давид, спасибо тебе огромное, что ты пришел к нам и рассказал нам столько всего интересного.

Давид Дале: Ребята, спасибо, что пригласили. Я в процессе нашего разговора сам понял несколько неожиданных новых идей, из которых, возможно, что-то хорошее получится.

Анатолий Старостин: Значит, всё было не зря!