Обсуждение статьи "Нейросети — это просто (Часть 8): Механизмы внимания"

 

Опубликована статья Нейросети — это просто (Часть 8): Механизмы внимания:

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

Анализируя свечной график движения инструмента, мы выделяем тренды и тенденции, определяем зоны "проторговки". Т.е. из общей картины мы выделяем некоторые объекты, концентрируя свое внимание именно на них. Для нас интуитивно понятно, что объекты в разной степени влияют на будущее поведение цены. Для реализации именно такого подхода и был предложен в сентябре 2014 года первый алгоритм, анализирующий и выделяющий зависимости между элементами входной и выходной последовательностей [8]. Предложенный алгоритм называют "обобщенный механизм внимания". И изначально он был предложен для использования в моделях машинного перевода с использованием рекуррентных сетей и решал задачу долгосрочной памяти в переводе длинных предложений. Такой подход значительно превысил результаты, ранее рассмотренных нами рекуррентных нейронных сетей на основе LSTM блоков [4].

Классическая модель машинного перевода с использованием рекуррентных сетей состоит из двух блоков Encoder и Decoder. Первый кодирует входную последовательность на исходном языке в вектор контекста, а второй декодирует полученный контекст в последовательность слов на целевом языке. С увеличением длины входной последовательности влияние первых слов на итоговый контекст предложения снижается, и, как следствие, снижается качество перевода. Использование LSTM блоков немного увеличивало возможности модели, но все равно они оставались ограниченными. 


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

Автор: Dmitriy Gizlyk

 
Жечь трансформеры на кернелах это хай левел, по моему ) крутой скилл у автора статьи
 
Результаты обучения не сохраняются. Ценность статьи из-за этого близка к нулю.
 
Maxim Dmitrievsky:
Жечь трансформеры на кернелах это хай левел, по моему ) крутой скилл у автора статьи
Завидуешь? Пи..2
 
Все же результаты тестирования хуже, чем в предыдущей статье. Хотелось бы комментарий автора в связи с этим.
 
Maxim Dmitrievsky:
Жечь трансформеры на кернелах это хай левел, по моему ) крутой скилл у автора статьи

Полностью согласен. Первая статья вызывала смутные сомнения всякими 5S ), но после прикручивания кернелов хочется только респектовать автору без устали))


Andriy Konovalov:
Все же результаты тестирования хуже, чем в предыдущей статье. Хотелось бы комментарий автора в связи с этим.

То что отражено  в статье - это менее 5% того, что автор мог и наверное хотел сказать этой статьёй. Если вы видите только эти 5% и не пробовали поэкспериментировать на других задачах, пользы мало.

Как минимум нужны обширные разносторонние тесты.

 
Aleksey Mavrin:

То что отражено  в статье - это менее 5% того, что автор мог и наверное хотел сказать этой статьёй. Если вы видите только эти 5% и не пробовали поэкспериментировать на других задачах, пользы мало.

Как минимум нужны обширные разносторонние тесты.

Вот я и стараюсь спровоцировать автора на ещё 0.5% информации. В конце своих предыдущих статей автор сравнивал полученные результаты с предыдущими.

Для меня особый интерес вызывает именно попытка использовать механизмы внимания для предсказания торговых сигналов. Ведь если этот подход признан наиболее эффективным для генерации текста (а GPT и впрямь творит чудеса), то можно ожидать от него эффективности и при работе с другими видами последовательности - числовыми рядами котировок.

Ну, а за многопоточную реализацию Self-Attention - конечно, благодарность и уважение автору.

 
Наконец-то статья с реализацией механизма внимания на низком уровне без всяких высокоуровневых либ с реализацией в 3 строчки. 
Интересны некоторые концептуальные вопросы:
Чем отличается данная система Self-attention от простого полносвязного слоя, ведь в нем тоже последующий нейрон имеет доступ ко всем предыдущим? В  чем её ключевое преимущество? Никак не могу понять этого, хотя прочел достаточно много лекций по этой теме. 
 
Я не автор статьи, но вот какой ответ я нашел на ваши вопросы:

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

Это динамическое взвешивание обеспечивает главное преимущество механизма: повышенную чувствительность модели к отношениям между элементами входной последовательности, улучшая производительность в задачах, требующих понимания контекста​

 
Rashid Umarov #:
Я не автор статьи, но вот какой ответ я нашел на ваши вопросы:
Я тоже видел этот машинный перевод, но все таки он несколько некорректен. 
Если переформулировать на человеческий язык то смысл в следующем: "механизм SA является развитием полносвязной нейронной сети, и ключевое отличие от ПНС заключается в том, что элементарный элемент, которые анализирует ПНС - это выход одного нейрона, в тоже время элементарные элемент, который анализирует SA - это определенный вектор контекста"? Я прав, или есть еще какие то ключевые различия? 
 
DeadMorose777 #:
Я тоже видел этот машинный перевод, но все таки он несколько некорректен. 
Если переформулировать на человеческий язык то смысл в следующем: "механизм SA является развитием полносвязной нейронной сети, и ключевое отличие от ПНС заключается в том, что элементарный элемент, которые анализирует ПНС - это выход одного нейрона, в тоже время элементарные элемент, который анализирует SA - это определенный вектор контекста"? Я прав, или есть еще какие то ключевые различия? 

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

На самом деле это просто архитектура, не надо там искать сакральный смысл, потому что на временных рядах она работает не сильно лучше обычной NN или LSTM.

Причина обращения: