Йерархические Трансформеры — часть 2

Йерархические Трансформеры Вторая Часть

Иерархическое внимание работает быстрее

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

В статье Иерархический трансформатор — часть 1 мы определили, что мы подразумеваем под “иерархическими трансформаторами”, и рассмотрели одну из выдающихся работ в этой области, называющуюся “Песочные часы”.

В этой статье мы продолжим линию работы, рассмотрев другую известную работу под названием “Иерархический трансформатор внимания” (HAT).

Приступим.

Иерархический трансформатор внимания (HAT)

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

Токенизация и сегментация

Метод HAT работает путем взятия входного документа и разделения его на токены с помощью токенизатора Byte-Pair Encoding (BPE), который разбивает текст на подслова/токены. Этот токенизатор используется во многих известных моделях больших языковых моделей, таких как BERT, RoBERTA и семейство GPT.

Затем он разбивает токенизированный документ на N одинаковых по размеру частей; то есть если S обозначает входной документ, то S = [C1, …., CN] – это N одинаковых по размеру части. (На протяжении всей статьи мы иногда называем части сегментами, но это одно и то же понятие.) Каждая часть представляет собой последовательность k токенов Ci = [Wi[cls], Wi1…, Wik-1], где первый токен, Wi[cls], представляет сегмент.

Как мы видим на изображении выше, каждая часть является последовательностью из k токенов, где первый токен – токен CLS.

Архитектура модели

После токенизации и сегментации входной последовательности она передается в модель трансформатора HAT. Модель HAT является кодировщиком-трансформатором и состоит из двух основных компонентов:

  1. кодировщик по сегментам (SWE): это общий блок кодировщика, который принимает последовательность сегмента (также известного как часть) и обрабатывает этот сегмент.
  2. кодировщик между сегментами (CSE): это еще один блок кодировщика, который принимает токены CLS всех сегментов (также известных как части) и обрабатывает связи между сегментами.