Они сказали, что ИИ, разработанные Microsoft и Alibaba, превосходят людей в чтении. Хотя модели, разработанные этими компаниями, не совсем точны, они смогли превзойти людей по некоторым показателям при некоторых задачах чтения. Этот пост предлагает интуитивное понимание того, как искусственный интеллект Microsoft, R-Net, сделал это возможным.

Во-первых, проблема ...

Учитывая отрывок P

«Тесла родился 10 июля [О.С. 28 июня] 1856 г. в сербской семье в деревне Смильян, Австрийская империя (современная Хорватия). Его отец, Милутин Тесла, был сербским православным священником. Мать Теслы, Лука Тесла (урожденная Мандич), отец которой также был православным священником, 10 обладала талантом создавать инструменты для домашнего творчества, механические приспособления и способность запоминать сербские эпические поэмы. Лука никогда не получал формального образования. Никола считал свою эйдетическую память и творческие способности генетикой и влиянием своей матери. Прародители Теслы были из западной Сербии, недалеко от Черногории: 12 »

И вопрос Q

«В чем заключались особые способности матери Теслы?»

Предоставьте непрерывный «диапазон» текста в качестве ответа A

«Изготовление орудий труда, механических приспособлений и способность запоминать сербские эпические поэмы»

Стэнфордский набор данных с ответами на вопросы (также известный как SQuAD) содержит ~ 500 статей, из которых около 100 000 пар Q и A (приведенный выше пример был взят оттуда).

Прежде чем мы перейдем к методу Microsoft для понимания прочитанного, давайте кратко рассмотрим две концепции, которые широко используются в их статье:

я. Рекуррентные нейронные сети

RNN - это особый вид нейронной сети, используемый для анализа временных (или последовательных) данных. В то время как стандартные нейронные сети с прямой связью не имеют концепции памяти, RNN включают то же самое, работая с вектором контекста, который "возвращается":

По сути, вывод на любом временном шаге t является функцией прошлого контекста и текущего ввода.

Особый вид RNN - это двунаправленная RNN (BiRNN). В то время как стандартные RNN запоминают исторический контекст, запоминая прошлые данные, BiRNN также перемещаются в обратном направлении, чтобы понять контекст из будущего:

Важно отметить, что хотя RNN теоретически могут запоминать историю любой длины, они обычно намного лучше учитывают краткосрочный контекст, чем долгосрочную информацию (›20–30 шагов).

** R-Net в основном использует RNN (более конкретно, Gated Recurrent Units) для имитации действия чтения отрывка текста **.

II. "Внимание"

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

Он используется в приложениях, где у вас есть набор точек данных, которые могут не иметь отношения к поставленной задаче. В таких случаях внимание вычисляется как среднее softmax-weighted всех точек в коллекции. Сам вес вычисляется как некоторая нелинейная функция 1) векторного набора и 2) некоторого контекста.

** R-Net использует внимание, чтобы выделить одну часть текста в контексте другой **.

The R-Net

На интуитивном уровне R-Net выполняет понимание прочитанного способом, который очень похож на то, как вы или я: «читая» (применяя RNN) текст несколько раз (3, чтобы быть точное) и «точная настройка» (с помощью Attention) все лучше и лучше векторных представлений терминов на каждой итерации.

Давайте разбираться в каждом этапе чтения по отдельности…

Первое чтение: беглый взгляд

Мы начинаем со стандартных векторов лексем (иначе говоря, слов или терминов), используя вложения слов от Glove. Однако люди обычно понимают точное значение слова в контексте окружающих его терминов.

Рассмотрим примеры: «Может случиться» и «четвертого мая», где значение «может» зависит от окружающих терминов. Также обратите внимание, что фон может поступать в направлении вперед или назад. Следовательно, мы используем BiRNN вместо стандартных вложений слов, чтобы придумать лучшие векторы.

Этот процесс применяется как к вопросу, так и к отрывку.

Второе чтение: анализ на основе вопросов

Во втором проходе сеть настраивает словесные представления из отрывка в контексте самого вопроса.

Предположим, вы находитесь в выделенном месте отрывка:

«… Обладал талантом изготавливать инструменты для домашнего творчества, механические приспособления и способность запоминать сербские эпические поэмы. Лука никогда не получал формального образования ... »

Учитывая «создание’ ’, если бы вы применили внимание к знакам вопроса, вы, вероятно, выделили бы:

"В чем заключались особые способности матери Теслы?"

Аналогичным образом сеть корректирует вектор для «создания», чтобы приблизить его к «способностям» в семантическом смысле.

Это делается для всех токенов в отрывке - по сути, R-Net формирует связи между потребностями вопроса и соответствующими частями отрывка. В документе эта часть называется «RNN на основе стробированного внимания».

Третье чтение: самосознание, полное понимание отрывка

  • На первом проходе мы понимали токены в контексте их ближайших окружающих терминов.
  • Во втором мы улучшили наше понимание рассматриваемого вопроса.

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

Мать Теслы, Лука Тесла (урожденная Мандич), отец которой также был православным священником, 10 обладала талантом к изготовлению инструментов для домашних мастеров, механическими приспособлениями и способностью запоминать сербские эпические поэмы. Лука никогда не получал формального образования. Никола считал свою эйдетическую память и творческие способности генетикой и влиянием своей матери.

Оба относятся к способностям матери Теслы. Однако, в то время как первое встречается вокруг текста, описывающего указанные способности (то, что мы хотим), второй термин связывает их с талантами Теслы (чего мы не хотим).

Чтобы определить правильное начало и конец ответа (к которому мы вернемся на следующем шаге), нам нужно сравнить разные термины схожего значения в отрывке, чтобы оценить, что уникально в каждом из них. Это сложно с обычными RNN, поскольку два выделенных термина довольно далеки.

Чтобы решить эту проблему, R-Net использует то, что они называют «Самостоятельное внимание».

Почему Самостоятельное соответствие?

Применяя внимание, мы обычно используем некоторые данные (например, термин отрывка), чтобы взвесить набор векторов (например, термины вопроса). Однако в этой итерации мы будем использовать термин текущего отрывка для взвешивания жетонов самого отрывка. Это помогает нам отличить текущий термин от терминов схожего значения в остальной части отрывка. Чтобы обеспечить это в дальнейшем, эта фаза чтения выполняется с использованием BiRNN.

На мой взгляд, в этом шаге использования согласованного внимания и есть «волшебство» R-Net: использование внимания для сравнения отдаленных терминов в одном и том же отрывке.

Последний шаг: отметка ответа

На последнем этапе R-Net использует вариант Pointer Networks, чтобы выяснить, где находятся начальная и конечная точки ответа. Проще говоря:

Мы начинаем с вычисления другого вектора внимания над текстом вопроса. Он используется в качестве «начального контекста» для этой итерации. Используя эти знания, для начального индекса вычисляется набор весов (для каждого члена отрывка). Термин, получивший наибольший вес, считается «отправной точкой» ответа.

Помимо весов, эта двухэтапная RNN также возвращает новый контекст - кодирующую информацию о начале ответа.

Вышеупомянутый шаг повторяется снова, на этот раз с новым контекстом вместо вопроса, основанного на вопросе, чтобы вычислить веса для конечной точки ответа.

И вуаля! У нас есть решение! (Фактически, ответ, показанный в нашем примере выше, - это то, что на самом деле придумала R-Net.)

[Если вы хотите вникнуть в подробности R-Net, которые я не смог осветить в этом посте, прочтите их оригинальную статью. Если код помогает вам лучше понять вещи (как это делает я), вам следует взглянуть на отличную запись в блоге YerevaNN, в которой делается попытка воссоздать R-Net в Keras.]