Меня восхищает движение инженеров NN (следует ли называть их NN Breeders?) К архитектуре с диалогом между несколькими нейронными сетями, что продемонстрировала архитектура самоуправляемых автомобилей от NIVIDIA. и переводчик seq2seq от Google. Но чего-то не хватает ...
Две проблемы, которые только частично решаются этими реализациями, - это внимание и объяснимость. Я немного расскажу об обоих, а затем исследую недостающий элемент, который их связывает.
Внимание:
Здесь я остановлюсь на примере синтаксического анализа предложений. Когда ей дают длинное предложение, нейронные сети обычно с трудом обращают внимание на релевантную информацию. Слово в начале предложения может определять спряжение слова рядом с концом предложения, но нейронная сеть «забыла об этом». Исследователи пытались просить сети «запомнить все» (путем преобразования всего предложения в вектор фиксированной длины), но это работает только с предложениями, столь же сложными, как те, что были в их обучении.
Например, «Джим любит вечеринки с друзьями, еду, которую они готовят вместе, и их украшения». Синтаксический анализатор должен связывать местоимения «его», «они» и «их» со своими референтами: «Джим», «друзья» и «стороны». Простая архитектура LSTM дойдет до слова «их» и запомнит его состояние по предыдущему слову «и». Надеюсь, как утверждали исследователи, это состояние все же будет включать в себя некоторое знание более раннего слова «партии»! Для коротких предложений сеть запоминает - состояние сети не сильно нарушается. Когда предлагаются более длинные предложения, сеть, как правило, выбирает недавние слова, а не слова, которые имеют смысл. (LSTM может решить, что «их украшения» означают «продукты» украшения »…)
Чтобы решить эту проблему, подход seq2seq генерирует вектор контекста. Когда сеть кодировщика встречает новое слово, часть сети ищет другие слова в предложении, которые могут иметь отношение к делу. Слова, которые считаются релевантными, передаются в сеть декодера. Вектор контекста, по сути, выделяет части предложения и отправляет только эти части. Он привлекает внимание сети. Благодаря этому сеть декодера может получать релевантную информацию издалека (или вперед, для двунаправленной RNN). Длина предложения имеет меньшее значение, потому что релевантными считаются только несколько слов. И действительно общее внимание может "прыгать", выбирая слова из предложения любой длины. (Мы идем за тобой, Пруст!)
Объяснимость:
Нейронные сети становятся больше и загадочнее. Когда они принимают решение, мы хотели бы знать, какая информация послужила основой для этого решения. Решение NVIDIA состоит в том, чтобы отображать то, что сеть «воображает», чтобы водитель мог видеть, что автомобиль думает о своей среде. Если их нейронная сеть Driveworks показывает только две машины на полосе рядом с вами, а вы видите три машины за окном, значит, что-то не так.
В общем, возможность отображать то, что думает сеть, является мощным инструментом. В переводе, снабженном пояснением, будет сказано вам: «используйте здесь‘ la ’, потому что следующее слово женского рода». Объяснения показывают нам, когда сеть принимает решения, используя разумные обобщения, вместо запоминания нескольких пикселей.
Итак, отрасль добивается прогресса в обеих этих областях. Чего не хватает?
Согласованность:
В обоих случаях мы надеемся найти согласованность. «Когда моя RNN разбирает предложение, ищет ли я информацию? Когда он находит информацию, принимает ли он решения так, как я? »
Основная интуиция здесь исходит из нашего собственного опыта:
Что происходит с вашим вниманием и с объяснимостью ваших мыслей, когда вы переходите от «Я не понимаю, к чему относится это слово…» к «а, это относится к этому другому слову, здесь»? В общем, когда вы разбираетесь в вещах, вы отвечаете двум критериям:
Вы перемещаете свое внимание, пока не найдете информацию, которая помогает осмыслить.
Когда вы что-то поняли, вы можете объяснить, почему это имеет смысл.
Этих заявлений, хотя и упрощенных, все же достаточно для руководства дизайном. Сеть декодера должна быть сложной - она хочет получить определенный набор слов как правильный контекст. Если вектор контекста содержит слова, которые «имеют какой-то смысл», сеть декодера должна предпочесть продолжить поиск. (Расплывчатое описание того, «как продолжать искать» через мгновение…)
Когда сеть декодера решает, что «это слово согласовано, в частности, с помощью этих других слов», это должно быть доступно для нас . Пример: архитектура кодировщика-контекста-декодера, читающая «Джон дал Сьюзен куки», посмотрела бы на «куки» и сообщила бы нам: «куки» - это косвенный объект «дал». Это позволяет нам проверить, о чем думает сеть, и увидеть, достаточно ли у нее здравого смысла!
Давайте объединим эти два критерия и рассмотрим пример, состоящий из нескольких предложений: «Это не собиралось останавливаться в ближайшее время. Алисе это не понравилось, она неохотно надела туфли и схватила зонтик. Из-за дождя ей стало еще хуже ». Здесь «это» дождь. И чтобы обнаружить, что «это» означает «дождь», сети потребуется игнорировать большинство слов в предложениях, используя вектор контекста (оценивая большинство слов как «0», тогда как существительные «Алиса», «обувь» , «зонт», «ездить на работу» и «дождь» имеют ненулевое значение).
Предположим, что контекстный вектор сети изначально предпочел «обувь» в качестве референта «оно», потому что эти слова близки друг к другу. Однако передача этого вектора в сеть декодера приводит к выводу «некогерентно!». Чтобы следовать нашим критериям, приведенным выше, сеть затем отбрасывает «обувь» из своего вектора контекста и снова ищет. При второй попытке самый сильный сигнал исходит от «зонтика» (опять же из-за близости). Наша придирчивая сеть декодеров по-прежнему отвечает «некогерентно!» Итак, зонтик отбрасывается от вектора контекста, и декодер снова смотрит. Наконец, «дождь» - логичный выбор - в отличие от зонтов и обуви, дождь «не прекращался». Кроме того, «обувь» употребляется во множественном числе.
Наиболее важно то, что в приведенном выше примере первое слово «It» на какое-то время неоднозначно. У декодера должна быть истерика, когда предложение начинается с «оно» - референта нет! А когда станет доступна дополнительная информация, декодеру потребуется обновить свою оценку «этого». Слово «это» в первой части предложения было бы ужасно двусмысленным. Сеть анализирует столько, сколько может, а затем возвращается на второй проход, расширяя свой поиск последовательной интерпретации "этого". Некоторые вещи постоянно неоднозначны! (‹-Пример) Сеть должна быть способна сказать вам, какие слова неоднозначны и каким образом.
Собираем внимание и объясняем вместе:
Нам нужно увидеть причины решений наших сетей, чтобы проверить согласованность их мыслей. Последующие поколения могут считать объяснимость такой же фундаментальной, как написание отладочных тестов.
И сеть должна переключать свое внимание на данные, чтобы она могла наблюдать ввод любого размера (например, огромные изображения, длинные предложения, вовлеченные игры).
Нейронная сеть может обеспечить обе эти цели, перемещая свое внимание до тех пор, пока не найдет информацию, повышающую согласованность. Тест на согласованность может быть еще одним «модулем» в кластере нейронных сетей, участвующих в разговоре. Упрощенная архитектура может выглядеть так: модуль согласованности берет вектор контекста и, возможно, выходные данные декодера, и выдает либо «когерентный», либо «некогерентный». Если он возвращает «когерентный», используйте вывод декодера. В противном случае «некогерентный» запускает подавление некоторых активных функций в векторе контекста. По сути, внимание сети переключается на менее заметные слова.
Безусловно, есть лучшие способы встроить проверку когерентности в нейронные сети, чем мое упрощенное описание выше. По мере того как исследователи решают более сложные задачи машинного обучения, архитектура, соединяющая модули сети, может стать более важной, чем архитектура каждой ячейки. «LSTM vs GRU» - небольшое разногласие, в то время как огромные различия могут возникнуть из-за способов соединения нескольких NN. При такой сложности важна некоторая гарантия связного мышления; по крайней мере, одному из этих модулей будет поручена проверка согласованности и изменение значимости вводимых данных.