Мы сегодня поговорим о том, каким образом ИИ на сегодняшний день справляется с задачами обработки естественного языка. Прежде чем начать говорить об ИИ, по заветам древних бородатых мужиков (кто мы такие, чтобы нарушать то, что древние бородатые старцы придумали) мы должны договориться о том, что мы понимаем под ИИ. Если мы не дадим определение, мы можем погрязнуть в бесплодных спорах на эту тему. Если вы подойдёте к человеку на улице и спросите его, что такое ИИ, то скорее всего его представление об этом предмете будет сформировано искусством, в т. ч. кино. Все мы смотрели прекрасные фильмы типа Терминатора. И конечно под ИИ обыватель чаще всего понимает не совсем то, что под ИИ понимают в науке. В науке с этим понятием все не так сложно. В основе понятия ИИ лежит понятие интеллектуальной задачи. Это такая задача, которую человек решает с применением своего естественного интеллекта. Если мы создаём систему, которая предназначена для автоматизации решения такой задачи, то такая система будет являться системой ИИ.
Но несложно заметить, что понятие ИИ в науке — чрезвычайно широкое. Что такое интеллектуальная задача? Например, устный счёт — это тоже интеллектуальная задача. Мы производим арифметические вычисления, привлекая свой собственный интеллект. Таким образом, программа, которая автоматизирует обычные арифметические вычисления, тоже с этой точки зрения является системой искусственного интеллекта. Для того чтобы провести черту, отделив такого рода системы от систем более сложных, внутри понятия «искусственный интеллект» проведено разделение на сильный и слабый искусственный интеллект. Слабый, или, как его ещё называют, прикладной ИИ — это системы, которые предназначены для решения какой-то одной интеллектуальной задачи или какого-то очень узкого спектра интеллектуальных задач. А вот система, которая способна решать неограниченно широкий спектр интеллектуальных задач подобно тому, как это делает интеллект человеческий, — она называется сильным ИИ (также используется термин Artificial General Intelligence, AGI). Все системы ИИ, которые мы создали до сих пор, относятся к категории слабого ИИ (прикладного ИИ). При этом не важно, предназначена ли эта система для суммирования чисел или это система, которая обыгрывает человека в шахматы или в го и т. д., всё это — прикладные системы ИИ. Конечно, они очень сильно отличаются друг от друга по сложности тех интеллектуальных задач, которые они призваны автоматизировать. Если же мы говорим об универсальном ИИ, то это пока что гипотетические системы, к созданию которых мы сейчас только подступаемся.
В основе понятия ИИ лежит т. н. инструментальный подход. Алан Тьюринг (Alan Turing), как и многие технари, очень не любил философов, и, подходя к определению ИИ, он стремился избежать необходимости давать понятие самому слову «интеллект». Потому что как только мы начнём пытаться определять интеллект, мы погрязнем в очень долгих философских спорах. И Алан Тьюринг придумал такую штуку. Он был парень вполне социализированный, он ходил на вечеринки. В то время на вечеринках была очень популярна такая игра, которая называлась игрой в имитацию. Брали две комнаты, в одной комнате запирали парня, в другой комнате запирали девушку, и потом игроки, которые не знали, кто в какой комнате находится, могли подсовывать под дверь записки, на которых они писали какие-то вопросы, а человек, сидящий за дверью, должен был на эти вопросы письменно отвечать. Задачей игроков было определить, кто находится за дверью, понять, где находится парень и где находится девушка. Тьюринг решил, что немножко модифицировав эту процедуру, можно создать такой инструментальный метод, с помощью которого мы сможем понять, в какой момент мы создали универсальный ИИ. Если ИИ в ходе такой процедуры сможет обмануть экспертов и успешно притвориться человеком (то есть, интеллектом естественным), то мы должны будем признать за такой системой наличие у неё интеллекта. В силу небольшого временного регламента мы не будем погружаться в детали и философскую дискуссию, которая развернулась вокруг определения Тьюринга.
Первые попытки поиграть в такую игру относятся к раннему периоду развития систем ИИ. Ещё в 1966-м году появилась первая программа. Она называлась ELIZA (в часть Элизы Дулиттл из пьесы Бернарда Шоу «Пигмалион»). Наверняка кто-то из вас смотрел знаменитую оперетту по этому произведению Шоу, которая называется «Моя прекрасная леди». ELIZA притворялась человеком, но не просто человеком — она притворялась человеком-психиатром. Авторы ELIZ‘ы, по всей видимости, в какой-то момент встречались с психиатрами. Они заметили, что когда психиатры общаются с человеком, они очень часто следуют определённому скрипту, задают некоторые типичные вопросы. Соответственно, ELIZA претворялась психиатром, пародировала такое общение. А в 1972-м году в качестве ответа на этот эксперимент появилась программа PARRY, которая наоборот разыгрывала из себя пациента-параноика, поэтому PARRY. Интересно, что в таких тестах реальные психиатры лишь в 48% случаев смогли догадаться и понять, что с ними общается машина. Понятно, что это — никакой не честный тест Тьюринга. Это скорее некоторая игра. Ясно, что человек, у которого есть какие-то определённые психические девиации, может в своём общении напоминать машину.
Более интересные системы появились в начале 70-х, например это SHRDLU, созданная Терри Виноградом (Terry Winograd). В чем заключалась суть этой системы? Был создан маленький мирок, в котором был небольшой набор объектов: пирамидки, коробка, кубики и т. д. Все они были разных цветов. С этой программой можно было, используя естественный человеческий язык, обсуждать все, что происходит в этом мирке, задавать ей разные вопросы. Например, какой предмет находится в коробке; какого цвета предмет находится в коробке. И можно было также её попросить что-то сделать. Можно было ей с помощью естественного языка сказать: «Возьми тот предмет, который находится в коробке, и поставь его на тот предмет, который находится на параллелепипеде». То есть, при помощи естественного языка можно было достаточно свободно общаться с этой программой.
На видео человек спрашивает, что находится в коробке. Ответ: «Синяя пирамида и какой-то там блок». «На чем стоит пирамида?» — «На коробке». «Сколько блоков находится не в коробке?» — «Четыре». Ну и вот сложный вопрос: «Является ли хотя бы один из них более тонким, чем тот, про который я тебе сказал в прошлый раз?». Видно, что люди строят свои суждения достаточно свободно, и система достаточно свободно отвечает им и выполняет какие-то операции, которые человек просит её выполнить. В своё время это выглядело как магия. Многие люди, увидев работу SHRDLU, думали, что это настоящий интеллект. Было ощущение, что действительно общаешься с каким-то разумом. Эта программа сохранилась, её можно скачать и запустить даже на современной машине, потому что она написана на Лиспе (LISP). Если вы откроете её исходники, вы увидите огромное количество правил. Терри Виноград был достаточно «упоротым» человеком, и он написал 500Кб правил, по которым разбираются разные суждения людей, и на которые даются определённые ответы и определённые действия. Снаружи выглядит здорово, а внутри просто-напросто набор правил. Почему это работало? Просто потому что мирок этого SHRDLU — очень маленький. Он описывается буквально сотней разных слов. Потратив достаточно много времени, проведя много экспериментов, давая эту программку разным людям, изучая, какие новые вопросы они придумают и, добавляя реакции на слова людей, вы можете для такого маленького мирка построить систему, которая будет весьма интеллектуально себя вести.
Тьюринг вообще предполагал, что в 2000-м году машина с памятью в 109 бит будет способна обмануть человека в тесте в 30 % случаев. Надо отдать ему должное, он, в общем, не особенно ошибся. Что мы видим сейчас — в 2012-м году программа Евгений (Женя) Густман, которая изображала из себя мальчика из Одессы, в тестах университета Рединга (University of Reading) смогла обмануть судей почти в 30% случаев. На 10 лет опоздали, но 10 лет — это в истории науки и технологии не такой большой промежуток. Ну и в 2014-м году — 33% случаев, и в 2015-м году — Соня Гусева — 47% случаев (пунктуация и орфография сохранены).
здравствуйте! меня Соня зовут.
привет, я Ололо
можно вас спросить кое-что?
ну
ну?
ну, спрашивай
когда я говорю ну, меня бабушка ругает :)))
а вопрос какой был?
а вам зачем?
ты сама его задала
сама?
вопрос, блять
я от вас таких слов не ожидала :(((
Тут показан один из диалогов с таким чат-ботом, построенным на рекуррентных нейронных сетях. Я сейчас расскажу [об этом] примерно, мы заглянем под капот таких систем. Этот диалог не с тестов университета Рединга, просто эта программа была долгое время доступна онлайн, каждый желающий мог зайти и поговорить с ней. На Хабрахабре была статья, там народ резвился в комментариях и приводил свои диалоги, как они пообщались. На мой взгляд, вполне правдоподобно. Неискушённого человека обмануть может. Вообще, большая часть чат-ботов, которые на сегодняшний день создаются с практическими целями, — это системы весьма несложные. Почему? Потому что цель обычно заключается в том, чтобы обмануть хотя бы 50% людей. И даже если вы делаете чат-бота, который выпрашивает деньги, вам не нужно, чтобы он обманывал 90% людей. Даже если он обманет 10% людей, «разведёт» их на деньги, то это уже окупится. И смысла делать более сложную систему — нет, пока люди не поумнели и не научились эффективно с этим бороться.
Возможное возражение на аргумент Тьюринга — может быть процедура не совсем годится, чтобы отличать интеллект от неинтеллекта — было предложено в своё время Джоном Сёрлом (John Searle). Он придумал метафору «китайской комнаты». У нас есть комната, в которой сидит человек (в данном случае — Сёрл), который не знает китайского языка, но у него есть очень большой набор правил. В правилах написано, что если вам напишут определённые иероглифы, то нужно написать в ответ такие и такие иероглифы. Если напишут другие — то в ответ другие. При этом сам Сёрл не знает китайского языка, но умеет пользоваться вот этим набором правил. И у него есть клавиатура с иероглифами. Соответственно, ему на вход пишут какие-то иероглифы, а он, сверяя со своим набором правил, генерирует выход и подаёт его людям, которые находятся снаружи этой комнаты. У человека, который находится снаружи этой комнаты, может создаться впечатление, что человек, сидящий в комнате, на самом деле понимает китайский язык. Но мы-то знаем по постановке задачи, что он его не понимает. И вокруг этого аргумента в своё время было много копий поломано, в конечном счёте самый популярный ответ — это аргумент систем, когда говорят, что «ну да, человек не обладает пониманием китайского языка, но вот вся система в целом, если её взять, набор правил плюс человек, она уже обладает пониманием китайского языка».
Вот что важно понимать: некоторые думают, и это — достаточно широко бытующая точка зрения, что машины, которые мы сейчас создаём, решают многие задачи путём грубой силы, что они «глупые, но очень быстрые». И поэтому они могут при решении определённых задач человека обойти, [а на самом деле все не так]. Можем проделать такое примерное сравнение, сопоставив вычислительную мощь человеческого мозга и современного процессора. Вот что мы увидим: мозг состоит в среднем из 86-ти миллиардов нейронов и от 150-ти триллионов до квадрильона синапсов. У человека число синапсов до некоторого возраста увеличивается, достигает пика в районе 10-ти лет, потом начинает снижаться. Тем не менее, у взрослого человека в коре в среднем 150 триллионов синапсов. Каждый синапс, если посмотреть на те модели, которые у нас сейчас существуют, примерно эквивалентен тысяче бинарных триггеров. Вам нужна примерно тысяча транзисторов, чтобы смоделировать один более-менее биологически достоверный синапс. Если вы перемножите эти два показателя, число синапсов и количество триггеров, эквивалентных одному синапсу, у вас получится, что в мозге может быть примерно до квинтильона условных триггеров. А самые большие процессоры на сегодняшний день, например, SPARC T7, содержит 10 миллиардов транзисторов; есть AMD-шный процессор, у которого 16 миллиардов транзисторов. И отдельные вентильные матрицы могут содержать до 20 миллиардов. Мы видим, что по числу условных логических элементов мозг во много раз превосходит электронный процессор. Правда, процессоры действительно быстрее, то есть, если мы посмотрим на тактовую частоту (рабочую частоту мозга), она составляет до 1000 Гц. Рекордные частоты, достигнутые процессорами — от 4 до 8, почти 9-ти, гигагерц. Если мы домножим частоту на число триггеров тут и тут, то увидим, что одного-двух порядков нам примерно не хватает по «брутто» мощности этих систем. Это сравнение немножко спекулятивное, но оно не более спекулятивное, чем сравнение Курцвейла (Raymond Kurzweil), который пытается померить производительность этих двух машин в операциях с плавающей точкой. Это примерная «прикидка» того, что на самом деле представляет мозг, и как бы выглядело электронное устройство, которое моделирует те процессы, которые происходят в мозге. То есть, пока что грубая сила на стороне мозга, а не машин.
[Теперь поговорим про] задачи [обработки] естественного языка. Интересно, что попытка автоматизировать некоторые из таких задач, как например машинный перевод, — старше, чем сами электронные машины. Ещё в конце 20-х годов создавались системы, основанные на механике и оптике, которые двигались по печатному тексту и при помощи механической системы искали в словаре соответствующее слово. Эти системы находили искомое слово быстрее, чем это делал человек. В 60-е годы были первые попытки сделать машинный перевод при помощи ЭВМ (как на западе, так и у нас). В целом, результаты были более чем скромные. В 1966-м году был опубликован такой знаменитый ALPAC report, в котором было сказано: «Мы уже 10 лет пытаемся сделать систему машинного перевода, и, в общем, не получилось ничего, но нужно продолжать».
Я отобрал забавные примеры: «сосиска в тесте» (sausage in the father-in-law англ. «сосиска внутри тестя», ещё примеры: Лев Толстой — Lion Thick, англ. толстый лев; Алгебра Ли — Lie algebra, «алгебра лжи»). По этой ошибке достаточно хорошо видно, что задача машинного перевода чрезвычайно сложна именно в силу того, что когда человек переводит этот текст, он понимает, что и то, и другое — «в тесте». Но он должен обладать определёнными знаниями из области человеческой культуры и понимать, что чаще всего сосиску оборачивают в тесто, а не помещают в тестя. Хотя второе не исключено, и в некоторых контекстах может так оказаться, что правильный перевод будет именно такой. Задача машинного перевода очень близка к задаче понимания естественного языка в целом, понимания человеческой культуры, проекцией которой является этот самый язык. В целом, результаты к началу 90-х годов были достигнуты такие, что переводчик, используя систему машинного перевода, мог осуществлять перевод примерно в восемь раз быстрее, чем если бы он работал без помощи машины. То есть, это реальный практический результат. Но если машина будет самостоятельно переводить текст, получатся «коты, которые рождают трёх котят, двух белых и одного афроамериканца» (our cat gave birth to three kittens — two whites and one black).
Раймонд Пиотровский — это наш знаменитый специалист по статистической лингвистике. Его лаборатория тоже занималась разными попытками обработки естественного языка при помощи машин. Например, можно научить машины сочинять стихи. В принципе, задача просто сложить слова, зарифмовать и положить в стихотворный размер — не очень сложная. Если есть словарь ударений, то все становится достаточно просто. Но здесь был сделан шаг вперёд — была идея не просто сочинять стихи, а сочинять стихи на заданную тему. [Пример] — поэзия скальдов. Это поэзия, в которой каждый отдельный кусочек стиха может быть достаточно однозначно охарактеризован (мы говорим о векторах смыслов). И можно было сказать: «Сочини нам стихотворение, в котором ругают ворона». И программа могла сгенерировать такое скальдическое стихотворение, каждый кеннинг которого подбирался в соответствии с заданной темой.
Проблема генерации текстов живёт и развивается. Прекрасный пример — есть такая программка SCIgen, которая предназначена для того, чтобы генерировать наукоподобные тексты. И уже есть первые «пострадавшие». Многие из вас знакомы с тем, что сейчас представляют собой академические издания в России. Они предлагают за «скромный прайс» опубликовать любое ваше интеллектуальное произведение. Михаил Гельфанд проделал такой трюк — он взял при помощи этого SCIgen‘а нагенерировал текст наукоподобного бреда, потом перевёл его с английского на русский, и получилась такая прекрасная статья, которая называлась «Корчеватель — алгоритм типичной унификации точек доступа избыточности». Он разослал её по целому ряду ваковских изданий. Нашлось издание, которое согласилось опубликовать это произведение. Для любого человека, который занимается алгоритмами или избыточностью, понятно, что это полная чепуха. Важно понимать, что это было ваковское издание, в котором каждая публикация должна рецензироваться — «Журнал аспирантов и докторантов Курского университета». По-моему, издание ликвидировано по итогу скандала. (Имеется в виду «Журнал научных публикаций аспирантов и докторантов», издаваемый и сегодня в Курске. Однако в «Перечне российских рецензируемых научных журналов, в которых должны быть опубликованы основные научные результаты диссертаций на соискание учёных степеней доктора и кандидата наук» по состоянию на 25.04.2017 такого журнала нет. — Прим. «XX2 ВЕК»).
Есть менее скандальные способы применения алгоритмов генерирования текстов. Например, в 2013-м году под руководством Дариуса Каземи (Darius Kazemi) был запущен проект «Национальный месяц создания романов». Программа написала роман, который называется «Подростки прогуливаются вокруг дома». Был использован способ ролевой генерации текстов — было несколько алгоритмов, каждый из которых взял на себя роль одного из подростков, которые прогуливаются вокруг дома, и они выстроили некоторый диалог этих подростков. В первом квартале 2016-го года разработчики из японского Университета будущего Хакодате (яп. 公立はこだて未来大学, англ. Future University Hakodate) создали систему, которая тоже написала роман, который назывался «День, когда компьютер пишет роман». Они даже попали с этим произведением в финал литературного конкурса и обогнали произведения 1450-ти настоящих писателей. И в 2016-м году Google тоже взялся за задачу генерации текстов. Посмотрим, что из этого получится. Уже было анонсировано, что в основу обучающей выборки будет положено 2865 романов, которые программа прочитает и напишет свой роман.
Есть ещё инструменты для анализа текстов, я не буду сейчас подробно останавливаться. Есть системы, которые не пишут текст, а помогают вам писать текст. Вот, например это программка Главред — такой онлайн инструмент, который играет в редактора и находит в вашем тексте какие-то ошибки, которые настоящий редактор вам, скорее всего, посоветует поправить. На самом деле, автоматизация работы писателей дошла до того, что появились такие многофункциональные инструменты, которые позволяют вести реестр персонажей своего большого произведения, каким-то образом учитывать отношения, изменения отношений между персонажами, проверять ваш текст на непротиворечивость фактов, делать такой таймлайн, в которой укладывать те или иные происходящие события. Соответственно, если вы хотите написать Санта-Барбару, то я думаю, что без такого инструмента сейчас уже трудно создать что-то подобное и не запутаться в собственных построениях.
Мы видим, что программы могут не только помогать писателю, но и читателю. Вот Summly — это один из таких проектов, который прочитывает за вас большой текст и готовит из него короткую выжимку в 400 символов, в которой вы можете коротко прочитать основную суть того текста, выбросив из него всю воду, все лишнее.
Ещё современные машины сочиняют стихи. Вот это сочинил генератор стихов Яндекса (пунктуация и орфография сохранены).
как позвонить в сбербанк россии
возьму в аренду самосвал
лечение гипертонии
стендап пузатый генерал
измерить скорость интернета
литературная газета
фильм достучаться до небес
код магнитолы мерседес
вакансии в североморске
что значит слово реапод
несчастный случай снег идёт
цена на шубы в пятигорске
лес пахнет дубом и сосной
я просто должен быть с тобой
Понятное дело, это просто зарифмованные запросы в Яндексе, но получается, по-моему, гораздо лучше, чем у большинства поэтов на Стихи.ру.
В основе современной революции (второй весны ИИ) лежат такие модели как нейронные сети. Я не буду глубоко погружаться в историю всего этого, тем более что мы сегодня про это ещё услышим и не раз. Люди, которые создавали нейронные сети, Уоррен Мак-Каллок (Warren Sturgis McCulloch) и Уолтер Питц (Watler Pitts), — очень интересные учёные не только потому, что им первым удалось решить такую непростую задачу как создание одной из первых работающих вычислительных моделей, подражающих работе мозга. Они знамениты ещё тем, что они были творческими людьми, были не чужды поэзии, писали очень недурные, на мой взгляд, тексты:
Мы замки на небе возводим,
И не коснуться им земли,
Пока мы ими сумасбродим,
Пока с ума нас не свели.
Нести свой замок ты свободен
Среди толпы в степной пыли.
Мы замки на небе возводим,
А замкам хочется земли.
И повезёт, коль отцвели.
Пока ещё мы не уходим,
Находим ум, что плодороден,
Чтоб семена на нем взошли.
Мы замки на небе возводим,
А замкам хочется земли.
Действительно, работа первых специалистов в этой области — это было такое строительство замков в поднебесьи, потому что, по воспоминаниям биографов Питца и Мак-Каллока, они на протяжении месяцев могли работать над какой-то одной моделью, пытаться её развивать, в конце концов прийти к выводу, что они пошли по неправильному пути, просто сгрести весь этот ворох бумаги, которую они исчеркали за это время, выбросить его и начать свою работу с нуля. Говорят, что свою модель искусственного нейрона они создали так: они поздней ночью, попивая на корточках виски, на салфетках создали эту конечную работающую модель, которая потом легла в основу современных нейронных сетей.
![Аналогия между искусственными нейронными сетями и нейронами в мозге](https://22century.ru/wp-content/uploads/2017/12/2-500x312.png)
Современные вычислительные нейронные сети одновременно и похожи, и не похожи на то, что происходит в мозге. Мозг состоит из нейронов, связанных отростками. Есть исходящий аксон — отросток у нейрона, есть входящий дендрит и контакты между ними — это синапсы. И вот из таких многих миллиардов клеток построен наш мозг. Сигнал проходит через синаптические щели и определённым образом трансформируется. Есть много исследований нейрофизиологов, есть математические модели, которые являются более-менее биологически достоверными — наследники модели Ходжкина —
Хаксли. На самом деле, вычислительные сети — это большое упрощение того, что происходит в мозге. По сути дела, каждый нейрон — это такое суммирующее устройство, которое определённым образом взвешивает входящие сигналы, суммирует их, подвергает преобразованию через какую-то пороговую функцию и передаёт сигнал дальше по сети. Фрэнк Розенблатт (Frank Rosenblatt) — это создатель первого «железного» воплощения нейронной сети. Перцептрон Розенблатта — первый нейроморфический компьютер. Современные системы — наследники перцептрона Розенблатта — это нейроморфические процессоры.
![Процессор TrueNorth](https://22century.ru/wp-content/uploads/2017/12/TrueNorth.jpg)
Вот здесь изображён TrueNorth. Это процессор, который моделирует работу миллиона искусственных нейронов. У каждого из них — 256 программируемых синапсов. Это пример систем, которые являются более биологически достоверными — импульсные нейронные сети. Те нейронные сети, которые мы используем, — немножко проще. Они представляют немного более простую модель. Тем не менее, они способны решать очень многие задачи, в том числе и по обработке естественного языка. В октябре 2016-го года был впервые достигнут паритет распознавания речи с людьми. При помощи рекуррентных нейронных сетей удалось построить модели, которые эффективно способны распознавать устную речь.
![Google Translate перешёл на глубокое обучение.](https://22century.ru/wp-content/uploads/2017/12/4.png)
Что произошло в сфере машинного перевода по сравнению с «тестем и сосисками». Google Translate сейчас перевёл большинство пар языков на нейронную сеть. Перевод производится без посредника в виде английского языка, как было раньше. Они показали, что в некоторых самых сложных парах (например, пары «английский-китайский») ошибка была на 60% снижена. То есть, на сегодняшний день машинный перевод развивается и становится более качественным. Проблема этого направления во многом в том, что нет хороших билингвальных корпусов. Несмотря на то, что у нас есть очень много текстов на разных языках, у нас очень мало текстов, которые были бы одновременно доступны на одном и на другом языке и были бы достаточно хорошо друг с другом синхронизированы. Все, кто пользовался Google Translate, знают, что технология далека от совершенства, но прогресс большой. Я думаю, будет ещё больше в ближайшие годы.
Как мы можем представить в «мозгах» машины естественный язык? Есть классические техники, при помощи которых это делали раньше. В Bag-of-words мы можем взять какое-то суждение на естественном языке и просто записать, сколько каких слов в нем встречается — построить такую частотную таблицу. [Например, в предложении] «Дар напрасный, дар случайный! Жизнь, зачем ты мне дана?» «дар» встречается два раза, остальные — по одному разу, а другие «чемоданы, чебуреки, чебоксары» — по «нолю раз». В принципе, вы дальше можете «скормить» эту модель нейронной сети, попробовать её поучить. Например, у нас будет сто тысяч предложений Толстого и сто тысяч предложений Тургенева, и мы будем учить сетку отличать Толстого от Тургенева или Пушкина от Лермонтова. И она, «кушая» такой вот «мешок слов», будет способна более-менее с некоторой точностью определить авторство. Но можно заметить, что в такой модели никак не учитывается порядок слов. Для того чтобы учитывать порядок слов, есть другая классическая модель, т. н. n-грамма. Когда мы храним два соседних слова — это биграмма. Здесь мы уже каким-то образом учитываем порядок слов. Если мы возьмём триграммы или квадрограммы, то они будут в ещё большей степени учитывать следование одних слов за другими. [Другая модель —] one-hot vector‘ы. В языке есть, например, триста тысяч разных слов и словоформ. Представим себе вектор размерностью в триста тысяч, и в позиции, соответствующей данному слову, мы просто ставим единицу. Соответственно, у нас все предложение будет последовательностью таких вот векторов — один вектор размерностью триста тысяч, другой тоже, и т. д. На самом деле такие модели есть. Нейронную сеть можно «кормить» такими one-hot векторами и учить её, например, предсказывать следующее слово в тексте.
![Иллюстрация работы разных видов эмбеддингов (векторных представлений слов)](https://22century.ru/wp-content/uploads/2017/12/5.png)
Недостатки этих подходов такие: в них не учитываются семантические отношения между словами. Это просто два разных вектора, никак не связанные друг с другом. Их структура не отражает семантику. Данные крайне разрежены из-за большого числа измерений. Представьте себе, у нас каждый вектор — триста тысяч чисел. И усложнение моделей, которые строятся на таких представлениях естественного языка, как показывает практика, не приводит к улучшению понимания системой естественного языка. То есть, мы наращиваем число нейронов, наращиваем число слоёв сетки, но оказывается, что прогресса нет. Это все продолжалось примерно до начала 2000-х годов, пока не была написана ключевая работа Бенжио (Yoshua Bengio) про языковые нейронно-вероятностные модели. Основная идея — что статистические свойства контекста определяют семантику слова. То есть, мы должны взять большой набор текстов на каком-то языке и для каждого слова смотреть, в каком контексте оно встречалось, какие слова предшествовали этому слову, и какие слова следовали за ним. Дальше мы делаем следующее — мы можем придумать такое векторное пространство, в котором все эти слова расположены так, чтобы слова, у которых контексты наиболее похожи, находились близко друг к другу. А слова, у которых постоянно разные контексты, были бы в этом векторном пространстве далеко друг от друга.
![Так, на основе контекстов, работает word2vec](https://22century.ru/wp-content/uploads/2017/12/6.png)
Соответственно, возникла идея, что каждое слово можно представить в виде какого-то более короткого вектора, чем one-hot вектор. Каждая позиция будет какой-то условной фичей, описывающей это слово. Следующий шаг, на котором строится современная технология анализа языка при помощи нейронных сетей, основывается на работе Томаса Миколова (Tomas Mikolov). В 2013-м году он создал инструмент word2vec, который сейчас активно используется везде (либо он, либо уже его наследники — GloVe и т. д., которые позволяют эту задачу выполнить). То есть, предлагается померить семантическое расстояние между словами на основе анализа контекстов на очень большом корпусе. [Для простоты] представим себе, что у нас всего два измерения в векторе (на самом деле это какое-то многомерное пространство).
![Расстояние между словами в семантическом пространстве](https://22century.ru/wp-content/uploads/2017/12/7.png)
Что характерно для векторных пространств типа word2vec — разница между «толстый» и «толще», если вы вычтете из одного вектора другой, получится примерно такая же, как расстояние между «быстрый» и «быстрее» или «длинный» и «длиннее». Разницу этих двух векторов, двух точек в этом пространстве, покажет вектор, который характеризует такое отношение, «толстый — толще» или «толще — толстейший». Отношение между «он» и «его», а также между «она» и «её» будут тоже описываться примерно одинаковыми векторами. А отношение между Парижем и Францией будут такими же, как между Лондоном и Англией, Римом и Италией. Слова, которые являются синонимами, будут в этом векторном пространстве находиться очень близко, расстояние между ними будет маленьким.
![Векторное семантическое пространство для слова «фрукт»](https://22century.ru/wp-content/uploads/2017/12/8.png)
Это визуализация такого векторного пространства, построенного на большом корпусе текстов естественного языка. Мы просим визуализатор показать нам проекцию векторного пространства для слова «фрукт», и вот что мы видим. Слова, которые ближе всего: «фрукты» (семантическое расстояние 0,77), потом «вишни», «ягоды», «груши», «цитрусовый», «манго», «виноград». Так получилось на большом корпусе. Соответственно, если взять и разделить на кластеры, на центроиды, то можно посмотреть, какие здесь ещё есть центры распределений слов, сравнительно близких к «фрукту», и какие центры у этих кластеров. То есть, можно посмотреть, что это за пространство получилось.
Очень интересно, как можно сравнить, что в разных языках происходит. Расположение в векторном пространстве одних и тех же терминов для разных языков после поворота этого векторного пространства оказывается очень близкими. Видите, four в английском языке и quatro в испанском. Five и cinque. И так далее. Мы видим, что взаимное расположение слов в семантическом пространстве, построенном при помощи word2vec, похоже для разных языков.
![Расстояние между одинаковыми словами в двух разных языках приблизительно совпадает](https://22century.ru/wp-content/uploads/2017/12/9.png)
При помощи моделей, построенных на рекуррентных нейронных сетях и вот таких вот эмбеддингах, можно сделать очень большой шаг вперёд от того, что было у Терри Винограда, когда внутри системы ИИ оказывались тысячи блоков «if». Современные системы могут, например, генерировать юмор, будучи обученными на большом наборе текстов. Рекуррентная нейронная сеть шутит: «В чем разница между снеговиком и снежной бабой? Snowballs (англ. снежные яйца, снежные шары)»; «Люблю своих любовниц так же, как люблю кофе. Терпеть не могу».
Вопрос из зала: Может оказаться, что само понятие «интеллект» обозначает что-то другие? Может это не интеллект, а его моделирование?
Сергей Марков: Ну, допустим разбираться в живописи — это интеллект? А можно ли это в искусстве — вы знаете, это вопросы все сложные и философские. Я, как большинство инженеров, не люблю их. Потому что ко мне приходит бизнес и говорит: «Нам нужно решить вот такую задачу, сделать оператора кол-центра, который будет подражать человеку. Вы звоните по телефону в кол-центр, с вами разговаривает бот, вы думаете, что это человек. Машина должна стоить как минимум в три раза меньше, чем человек. Вот тебе лопата, вот забор. От него и до обеда — копай!». Вот на что похожа наша работа. Обычно задача к специалистам по ИИ приходит не от них самих, а от экономики, от каких-то практических сфер применения нашей работы. Если нам будет поставлена задача сделать систему, которая будет оценивать произведение живописи, то OK, мы будем делать такую систему в соответствии с теми заданными параметрами, которые от нас попросит заказчик. Я вообще не философ, чтобы здесь размышлять и подвергать что-то сомнению. Есть генеративные модели, которые на сегодняшний день не только оценивают живопись, а которые эту живопись рисуют. Есть системы, которые позволяют перенести стиль художника на какую-то произвольную картинку. Это называется artistic style transfer. Есть нейронные сети, которые генерируют порнокартинки. Заказа не было, это мы придумали сами. На это ещё фантазии у специалистов по ИИ достаточно. А рассуждать о том, что является, а что нет, применим ли бионический подход или бионический подход «не взлетит» и т. д. — это все скорее вопросы к философам, а не к нам. Поэтому ответ такой.
Вопрос из зала: Я правильно понял, что нейронная сеть через этот способ отношения слова к остальным словам может подражать человеку?
Сергей Марков: Вот смотрите, задач для обработки естественного языка очень много. А задача чат-бота, ведение диалога (это называется «разговорной моделью»), — это одна из частных задач, которые решаются, и которые решаются неплохо. Как мы видим на примере испытаний в Рединге, машина уже сейчас в состоянии обмануть в диалоге многих людей, прикинувшись человеком. Но это просто классическая задача, которую придумал Тьюринг в своё время, у неё практическое применение, может быть, не очень большое. Но помимо этой задачи есть огромное количество задач, таких как машинный перевод, — перевести текст с одного языка на другой. Его тоже нужно в известной мере понять, правильно сопоставив лексические и семантические конструкции одного языка семантическим и лексическим конструкциям другого языка. Есть задача определения интенции (намерения). Вот, например, если говорить о нашем роботе-операторе кол-центра, у него есть такая задача — абонент сказал какую-то фразу, и нам нужно понять, куда мы дальше должны по скрипту общения идти. Мы спрашиваем абонента: «Вы готовы оплатить долг перед банком в течение 10-ти дней?», а он говорит: «Ой, вы знаете, плохо, у меня зарплату задерживают». И нам нужно понять в соответствии с тем, что он сказал, что дальше нам нужно пойти по вот этой ветке общения: «Ну, хорошо, может быть вы сможете оплатить 10% от этой суммы». Ну, или что-то ещё. Задача определения интенции — это понимание того, что человек сказал.
Есть тысяча задач, связанных с естественным языком, несколько [из них] мы здесь увидели. Но на самом деле их очень много. И все они решаются на основе этих моделей — эмбеддингов, word2vec, о которых я говорил. Преобразование слов в какое-то векторное пространство, обладающее определёнными свойствами, тоже делается при помощи нейронной сети. И потом применяют нейронные сети, которые умеют «кушать» текст в таком виде и на выходе либо классифицировать его, либо генерировать какой-то текст в ответ. То есть, либо решать задачу классификации, либо решать задачу seq2seq (описана в этой статье, получая на вход одну последовательность, выдать на выход другую последовательность). Но это классы задач, а реально их существует тысяча разных в этой области.
Вопрос из зала: Ещё раз, вопрос об имитации ответов, а не о каком-то искусственном интеллекте, я правильно понял?
Сергей Марков: А почему имитация ответа не является ИИ?
Вопрос из зала: Потому что она идёт по заранее определённой схеме.
Сергей Марков: А вот ваш мозг тоже действует по заранее определённой схеме, в нем электроны перемещаются, физические процессы идут точно так же, как в программе.
Вопрос из зала: Ну, вот автоответчик…
Сергей Марков: Я вам приводил пример, что системы могут учиться на больших корпусах, даже выявлять из них семантические отношения между языком. Многие современные системы — самообучающиеся, и если задача стоит в том, чтобы система училась, то она будет учиться. У программы, которая обыграла в го лучших игроков в мире, на входе было десять тысяч партий мастеров. Но этого мало, это слишком маленький обучающий набор. Дальше программа играла сама с собой и училась на этих партиях играть лучше, лучше и лучше.
Вопрос из зала: Что там был за человек, который делал страшные вещи? Вы заинтриговали.
Сергей Марков: А, Фрэнк Розенблатт. Смотрите, Розенблатт в конце своей жизни активно сотрудничал с нейрофизиологами и делал следующий захватывающий эксперимент. Они брали крыс и учили их ходить по лабиринту. Обычная история — «научим крыс работать головой». Через какое-то время, когда крысы выучивали путь в этом лабиринте, этих крыс убивали, брали их мозг, делали из него кашицу и разными способами вводили другим крысам, которые лабиринта никогда не видели. Вводили с помощью либо инъекциями в мозг, либо скармливали, и проверяли, стали ли эти крысы лучше ходить по лабиринту. Выглядит довольно нелепо, ещё и жестоко. Особенно крысам не нравилось первое, а тем, которые кушали — было нормально. Почему это происходило — потому что в то время под влиянием открытий Уотсона и Крика, под влиянием открытия «информационных молекул», была альтернативная теория, которая считала, что носителями информации в мозге являются не синапсы, не коннектом мозга, а есть какие-то информационные молекулы в мозге, в которых эта информация хранится. Например, РНК. И поэтому эти опыты только на первый взгляд выглядят нелепо. На самом деле они были проявлением спора коннекционистов со сторонниками идеи информационных молекул. Пытались разобраться, где и каким образом хранится информация в мозге. Конечно, нейронаука сделала очень много шагов вперёд, поэтому сейчас нам это кажется нелепым, это вроде бы общее знание, что связи между нейронами хранят информацию.
Вопрос из зала: Последнее время в нейронных сетях поднимается тема об опасности. Илон Маск (Elon Musk) об этом говорил, он вообще предлагает создать какие-то структуры, контролирующие его (ИИ) развитие. Какой точки зрения вы придерживаетесь на этот счёт?
Сергей Марков: У меня есть лекция на полтора часа на эту тему, я её сейчас не буду читать, но в общих чертах так бы сказал: во-первых, нужно понимать, что на одной стороне есть высказывание Маска или Стивена Хокинга (Stephen Hawking). Ни один, ни другой не являются специалистами в области ИИ. На другой чаше весов есть высказывания специалистов в области ИИ, например Эндрю Ына (Andrew Ng, это один из руководителей исследовательской группы Baidu). Он сказал, что сейчас думать об опасности ИИ — это примерно то же самое, что всерьёз заниматься проблемой перенаселения на Марсе. Наверное мы рано или поздно колонизируем Марс, и возможно, что там возникнет проблема перенаселения, и тогда её нужно будет решать. Но почему мы должны этим заниматься уже сейчас? Дело в том, что люди, которые сами не занимаются системами ИИ, у них в силу незнания начинается такой «анимизм». Им кажется, что те системы, которые мы создаём, обладают свободой воли, собственным сознанием или чем-то ещё, они приписывают мистические свойства этим моделям, хотя там мистики очень мало. Маск, по всей видимости, преследует вполне практическую цель, когда эту тему объясняет, потому что он любитель государственных грантов, и грант на тему безопасности ИИ — это хорошая тема, я его очень понимаю.
Но с другой стороны, как всякая революционная индустрия, она содержит в себе определённые опасности. В своё время появление парового двигателя тоже привело к огромному количеству катастроф. Множество людей погибло от взрывов котлов и т. д. Нам нужно разрабатывать разумные законы, чтобы этими рисками управлять. Эти риски лежат, скорее всего, в другой плоскости, не в той, что Скайнет захватит мир, а в том, что вы приходите в банк, обращаясь за кредитом, и от этого зависит ваша жизнь, здоровье или что-то ещё, а решение принимает какая-то прикладная система ИИ, и у вас нет права знать, как она устроена, какую информацию о вас она берет в расчёт. Или, например, система ИИ, которая воспроизводит решение хороших экспертов, а среди этих экспертов есть люди с какими-то предрассудками, например, расовыми или гендерными. И системы ИИ, обученные на решениях вот этих экспертов, начинают воспроизводить такие «косяки». Вот это — реальная опасность. Она есть уже сейчас, и она уже проявляется, потому что все больше и больше прикладных систем ИИ внедряется в самые разные сферы экономики. И здесь, конечно, разумно разрабатывать системы для контроля ошибок, контроля злонамеренных действий. Любая сложная система более уязвима для внешнего вмешательства. Мы видим, например, что системы технического зрения, устанавливаемые на автомобилях с автопилотами, можно обманывать специальным образом. Можно сгенерировать при помощи нейронных сетей специальную обманную картинку. У системы технического зрения будет возникать своеобразная оптическая иллюзия, ей будет казаться то, чего нет на самом деле. Этими вещами нужно заниматься, но это очень далеко от тех форм хайпа, которые есть сейчас в СМИ. То есть, СМИ и обывателей волнует, когда Скайнет будет создан, а реальные проблемы в это время никто не решает.
Вопрос из зала: А когда появятся нейросети, которые будут создавать нейросети?
Сергей Марков: А они уже есть. Вот два года назад вышла работа DeepMind на эту тему, и там описана сетка, которая подбирает архитектуру сеток для решения задач. В принципе, это такое горячее направление, им все занимаются. Первая публикация на эту тему есть. Наша жизнь человеческая — это тоже seq2seq задача. Наш мозг на вход получает последовательность данных от органов чувств, а на выход генерирует какие-то движения мышц. На входе — последовательность, на выходе — последовательность. Очевидно, что между ними есть какое-то соотношение, которое представляет собой наш интеллект. Такие задачи чрезвычайно сложны для нынешних моделей. Оказывается, что те лучшие рекуррентные сетки, которые у нас есть — типа LSTM, они не справляются. Задачу распознавания речи они могут решить, а задачу восстановления какого-то хитрого алгоритма, в котором на вход мы даём набор чисел, а на выход хотим отсортированный набор тех же чисел получить — нет. Есть экспериментальные модели, например нейронная машина Тьюринга, которые пытаются так или иначе эти задачи решать, но пока там довольно скромные успехи. Нам не хватает вычислительных мощностей, есть недостатки моделей, которые мы используем. С обучением тоже — мы используем градиентные методы, а сейчас известно, что они плохие, но как их улучшить — есть много дискуссий на эту тему. Какие-то задачи мы решаем, но есть порог для тех моделей, которые мы используем. Когда мы его преодолеем, и каким именно образом — в науке есть расхождение мнений. Есть нейроморфные процессоры, это одно направление. Там пытаются пойти немножко ближе к биологии и смоделировать, как это делает мозг. Есть Ян Лекун (Yann LeCun), и у него идея заменять градиентные методы альтернативными методами обучения. Есть много разных исследований, и какие из них ведут нас к успеху — пока точно не известно, но по прикидкам к концу 2020-го у нас появится машина, сопоставимая по брутто-производительности с мозгом. И есть надежда, что к концу 2020-го мы сможем тоже подтянуть модели для того, чтобы в лабораторных условиях получить нечто похожее на AGI. Прогнозы учёных — 2020—2060-е годы. Центр распределения вот так выглядит.
Будем ждать, будем делать!
-
https://www.facebook.com/app_scoped_user_id/899856746803964/ Геннадий Дегтярёв