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

 
Maxim Dmitrievsky #:

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

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

Вектор - это просто последовательный набор чисел. Этот термин не привязан ни то, что к рекуррентным НН, а даже к машинному обучению вообще. Этот термин может применяться абсолютно в любой математической задаче, в которой требуется порядок чисел: хоть в школьных задачах по арифметике. 
Искать сакральный смысл - как раз самое важное, если требуется спроектировать что то необычное. Да и проблема анализа рынка не в самих моделях, а в том что эти(рыночные) временные ряды слишком зашумлены и какую бы модель не применяли, она вытащит ровно столько информации, сколько заложено. А заложено, увы, тут маловато. Чтобы увеличить количество "вытаскиваемой" информации, надо увеличить исходное количество информации. И вот как раз при увеличении количестве информации и выходят вперед самые важные особенности НН - масштабируемость и адаптируемость. 
 
DeadMorose777 #:
Вектор - это просто последовательный набор чисел. Этот термин не привязан ни то, что к рекуррентным НН, а даже к машинному обучению вообще. Этот термин может применяться абсолютно в любой математической задаче, в которой требуется порядок чисел: хоть в школьных задачах по арифметике. 
Искать сакральный смысл - как раз самое важное, если требуется спроектировать что то необычное. Да и проблема анализа рынка не в самих моделях, а в том что эти(рыночные) временные ряды слишком зашумлены и какую бы модель не применяли, она вытащит ровно столько информации, сколько заложено. А заложено, увы, тут маловато. Чтобы увеличить количество "вытаскиваемой" информации, надо увеличить исходное количество информации. И вот как раз при увеличении количестве информации и выходят вперед самые важные особенности НН - масштабируемость и адаптируемость. 

Этот термин привязан к рекуррентным сетям, которые работают с последовательностями. Просто используется добавка в виде механизма внимания, вместо гейтов по типу как в lstm. Примерно такое же можно придумать самостоятельно, если долго курить теорию МО.

То, что проблема не в моделях - 100% согласен. Но все равно любой алгоритм построения ТС можно так или иначе потом оформить в виде архитектуры НС :) палка о 2-х концах.
 
DeadMorose777 #:
Наконец-то статья с реализацией механизма внимания на низком уровне без всяких высокоуровневых либ с реализацией в 3 строчки. 
Интересны некоторые концептуальные вопросы:
Чем отличается данная система Self-attention от простого полносвязного слоя, ведь в нем тоже последующий нейрон имеет доступ ко всем предыдущим? В  чем её ключевое преимущество? Никак не могу понять этого, хотя прочел достаточно много лекций по этой теме. 

Здесь большая "идеологическая" разница. Если  кратко, то полносвязный слой анализирует всю совокупность исходных данных, как единое целое. И даже незначительное изменение одного из параметров оценивается моделью как что-то кардинально новое. Поэтому любая операция с исходными данными (сжатие/растяжение, вращение, добавление шума) требует переобучение модели.

Механизмы внимания, как Вы правильно заметили, работают с векторами (блоками данных), которые в данном случае корректней называть Эмбедингами - закодированное представление отдельного объекта в анализируемом массиве исходных данных. В Self-Attention каждый такой эмбединг трансформируется в 3 сущности: Query, Key и Value. По существу, каждая из сущностей является проекцией объекта в некое N-мерное пространство. Замечу, что для каждой сущности обучается своя матрица, поэтому и проекции осуществляются в разные пространства. Query и Key используются для оценки влияния одного объекта на другой в контексте исходных данных. Dot product Query объекта A и Key объекта B показывают величину зависимости объекта A от объекта В. А поскольку Query и Key одного объекта являются разными векторами, то коэффициент влияния объекта А на B будет отличаться от коэффициента влияния объекта B на A. Из коэффициентов зависимости (влияния) формируется матрица Score, которая нормализуется функцией SoftMax в разрезе Query объектов. Нормализованная матрица умножается на матрицу сущностей Value. Результат операции прибавляется к исходным данным. Это можно оценивать как добавление контекста последовательности к каждому отдельному объекту. Здесь надо обратить внимание, что каждый объект получает индивидуальное представление контекста.

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

Как правило, используется несколько подряд слоев Self-Attention. Поэтому содержимое данных на входе и выходе блока будут сильно отличаться по содержанию, но аналогичные по размеру.

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

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

 
Dmitriy Gizlyk #:

Здесь большая "идеологическая" разница. Если  кратко, то полносвязный слой анализирует всю совокупность исходных данных, как единое целое. И даже незначительное изменение одного из параметров оценивается моделью как что-то кардинально новое. Поэтому любая операция с исходными данными (сжатие/растяжение, вращение, добавление шума) требует переобучение модели.

Механизмы внимания, как Вы правильно заметили, работают с векторами (блоками данных), которые в данном случае корректней называть Эмбедингами - закодированное представление отдельного объекта в анализируемом массиве исходных данных. В Self-Attention каждый такой эмбединг трансформируется в 3 сущности: Query, Key и Value. По существу, каждая из сущностей является проекцией объекта в некое N-мерное пространство. Замечу, что для каждой сущности обучается своя матрица, поэтому и проекции осуществляются в разные пространства. Query и Key используются для оценки влияния одного объекта на другой в контексте исходных данных. Dot product Query объекта A и Key объекта B показывают величину зависимости объекта A от объекта В. А поскольку Query и Key одного объекта являются разными векторами, то коэффициент влияния объекта А на B будет отличаться от коэффициента влияния объекта B на A. Из коэффициентов зависимости (влияния) формируется матрица Score, которая нормализуется функцией SoftMax в разрезе Query объектов. Нормализованная матрица умножается на матрицу сущностей Value. Результат операции прибавляется к исходным данным. Это можно оценивать как добавление контекста последовательности к каждому отдельному объекту. Здесь надо обратить внимание, что каждый объект получает индивидуальное представление контекста.

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

Как правило, используется несколько подряд слоев Self-Attention. Поэтому содержимое данных на входе и выходе блока будут сильно отличаться по содержанию, но аналогичные по размеру.

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

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

Спасибо большое! Ваши статьи сильно помогли разобраться в столь сложной и комплексной теме. 

Глубина ваших знаний просто поражает на самом деле. 

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