Ознакомительная версия. Доступно 18 страниц из 86
Как мы помним, цель этого процесса состоит в том, чтобы найти численное представление – вектор – каждого слова лексикона с учетом семантики этого слова. Предполагается, что использование таких контекстных векторов приведет к появлению высокопроизводительных нейронных сетей для обработки естественного языка. Но в какой степени “семантическое пространство”, создаваемое word2vec, действительно отражает семантику слов?
Ответить на этот вопрос нелегко, поскольку представить трехсотмерное семантическое пространство word2vec мы не можем. Впрочем, у нас есть несколько способов в него заглянуть. Проще всего взять конкретное слово и найти его соседей в семантическом пространстве, ориентируясь на расстояние между контекстными векторами. Например, после обучения сети по соседству со словом Франция оказались слова Испания, Бельгия, Нидерланды, Италия, Швейцария, Люксембург, Португалия, Россия, Германия и Каталония[243]. Алгоритмы word2vec не объясняли понятия “страна” и “европейская страна” – эти слова просто встречались в обучающих данных в сходных контекстах со словом Франция, как слова гамбургер и хот-дог в примере выше. Если поискать ближайших соседей слова гамбургер, среди них окажутся бургер, чизбургер, сэндвич, хот-дог, тако и картошка фри[244].
Рис. 37. Двумерное представление расстояний между контекстными векторами названий стран и их столиц
Можно также рассмотреть более сложные связи, выявляемые в ходе обучения сети. Специалисты Google, создавшие word2vec, заметили, что в полученных сетью контекстных векторах расстояние между названием страны и названием ее столицы примерно одинаково для многих стран. На рис. 37 эти расстояния показаны в двумерном представлении. И снова системе не объясняли понятие “столица” – соответствующие связи проявились в ходе обучения сети на миллиардах словесных пар.
Такие закономерности позволили предположить, что word2vec сможет “решать” задачи на аналогию такого типа: “Мужчина – женщина, король – ____”. Достаточно взять контекстный вектор слова женщина, вычесть из него контекстный вектор слова мужчина и прибавить результат к контекстному вектору слова король[245]. Затем необходимо найти в семантическом пространстве контекстный вектор, который находится ближе всего к результату. Да, это королева. Когда я экспериментирую с онлайн-версией word2vec[246], этот метод часто оказывается действенным (“ужин – вечер, завтрак – утро”), но столь же часто выдает непонятные (“жажда – пить, усталость – пьян”) или абсурдные пары (“рыба – вода, птица – гидрант”).
Эти свойства выявленных контекстных векторов весьма любопытны и показывают, что программе удается установить некоторые связи между словами. Но будут ли контекстные векторы, обладающие такими свойствами, полезны в задачах ОЕЯ? Ответ – однозначно да. Сегодня почти все системы ОЕЯ вводят слова с помощью контекстных векторов того или иного типа (word2vec – лишь один пример).
Предложу вам аналогию: человек с молотком везде видит гвозди, а исследователь ИИ с нейронной сетью везде видит векторы. Многие решили, что word2vec можно применять не только к словам, но и к целым предложениям. Почему бы не закодировать предложение в качестве вектора точно так же, как кодируются слова, используя при обучении пары предложений, а не пары слов? Разве это не позволит лучше отразить семантику, чем простой набор контекстных векторов? Такой эксперимент провели несколько исследовательских групп, и группа из Университета Торонто назвала представления предложений “мысленными векторами”[247]. Другие пробовали с переменным успехом кодировать в качестве векторов абзацы и целые документы. Идея свести семантику к геометрии кажется исследователям ИИ весьма привлекательной. “Думаю, мысль можно задать вектором”, – заявил Джеффри Хинтон из Google[248]. С ним согласился Ян Лекун из Facebook: “[В Лаборатории ИИ Facebook] мы хотим представить весь мир мысленными векторами. Мы называем это World2Vec”[249].
И последнее замечание о контекстных векторах. Несколько исследовательских групп продемонстрировали, что контекстные векторы – что, пожалуй, неудивительно – отражают предвзятость, характерную для языковых данных, на основе которых они создаются[250]. Так, при решении задачи “мужчина – женщина, программист – _____” с помощью контекстных векторов Google вы получите ответ “домохозяйка”. Обратный вариант задачи – “женщина – мужчина, программист – _____” – дает ответ “инженер-машиностроитель”. Вот еще один пример: “мужчина – гений, женщина – _____”. Ответ: “муза”. Сформулируем иначе: “женщина – гений, мужчина – _____”. Ответ: “гении” (во множественном числе).
Вот вам и десятилетия феминизма. Нельзя винить в этом контекстные векторы: они просто отражают сексизм и другие тенденции языка, а язык отражает предрассудки нашего общества. И все же контекстные векторы выступают ключевым компонентом всех современных систем ОЕЯ, которые занимаются целым спектром задач – от распознавания речи до переводов с одного языка на другой. Предвзятость контекстных векторов может приводить к появлению неожиданных, непредсказуемых перекосов в широко применяемых системах ОЕЯ. Исследователи ИИ, которые занимаются анализом подобных ошибок, только начинают понимать, какой неочевидный эффект они оказывают на выходные сигналы систем ОЕЯ, и несколько групп разрабатывают алгоритмы “устранения предвзятости” в контекстных векторах[251]. Это сложная задача, но, вероятно, справиться с ней легче, чем устранить тенденциозность языка и предрассудки общества.
Ознакомительная версия. Доступно 18 страниц из 86