2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 MaxPEPool - жнец данных
Сообщение22.03.2026, 14:36 
Придумал я такой наивный слой нейросети - MaxWithPositionalEncodingPooling. Это такой сильно поднавороченный брат старого доброго слоя MaxPooling. Просто прикрутил к MaxPooling позиционное кодирование (глобальное и локальное, другими словами, абсолютное и псевдоотносительное).

Сам по себе MaxWithPositionalEncodingPooling безжизненный, так как не обучается, поэтому я дооборудовал его входным и выходным слоем:
входной обучаемый - произведение Адамара, типа "линейный слой без суммирования" (потом я ещё придумал аналогичное свёрточное произведение),
выходной обучаемый - обычный линейный слой с функцией активации или аналогичный.

Итог разработки:
GatedMaxPEPool1D
ConvMaxPEPool1D
ConvMaxPEPool2D

Цель - [хотя бы частичная] замена рекуррентных алгоритмов RNN/LSTM/GRU. У этих алгоритмов недостаток - невозможность распараллеливания алгоритма.

Я обнаружил, что серия слоёв MaxPEPool может вполне успешно выжимать из последовательностей полезные данные, поэтапно сокращая их размерность. Сравнивал с LSTM.

Были данные - таблица (in_seqlen, in_features), получили новые данные - таблица (out_seqlen, out_features), где out_seqlen < in_seqlen.
В конце жатвы можно просто найти среднее или максимальное значение оставшихся элементов последовательности, и вроде даже такие итоговые данные успешно поддаются дальнейшему анализу с помощью обычного линейного слоя.

Недостаток нового слоя - он может работать только с фиксированными размерами последовательности. Жнецу нужно что-то жать, иначе возникает неразрешимый вопрос. Мне кажется, над этим можно поработать.

Для работы с последовательностями переменной длины предполагаю использовать устоявшийся уже слой SoftBinning (бывший SoftOrdering). SoftBinning, как мастер по работе с данными переменной длины, делает окончательное обобщение с фиксацией размера данных. Жнецы сокращают длину последовательности, это решает проблему сильного различия длины входных данных. Это проблема позиционного кодирования в трансформерах - данные более 10000 символов кодировать затруднительно. Я надеюсь, жнецы или их аналог - это решение этой проблемы.

Код:
MaxPEPool1 #Жатва началась
MaxPEPool2
MaxPEPool3
SoftBinning #Главный жнец
Linear #Анализ


Главного жнеца можно заменить на mean() или max(), которые выжимают последовательность до конца, оставляя лишь одного члена последовательности, не изменяя число признаков в отличие от SoftBinning. Вполне рабочий вариант для некоторых задач. Проверил.

 
 
 [ 1 сообщение ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group