2014 dxdy logo

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

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




Начать новую тему Ответить на тему На страницу Пред.  1, 2
 
 Re: Структура RNN2D
Сообщение18.09.2024, 21:18 


12/07/15
01/11/24
3276
г. Чехов
mihaild в сообщении #1655180 писал(а):
Оно же реализуется как небольшая $1 \times n$ свертка и потом глобальный пулинг.
Отобразить всё от от $n$ до $n+1$ в единицу, остальное в ноль можно вроде бы тремя-четырьмя слоями ReLU. Применяем поэлементно, а потом global sum pooling.

Свертка - понятно, пулинг - понятен. А что значит "отобразить в ноль/единицу"?

-- 18.09.2024, 21:48 --

P.S. Продолжаю крутить гиперпараметры. Я сделал толстый слой RecurrentSoftOrdering. На выходе дохленький полносвязный слой. Но главное - в основе RSO использую BinarySoftOrdering, который отличается от обычного SoftOrdering тем, что количество бинов равно 1. Такой слой выродился в банальный сигмоидальный слой nn.Sigmoid(). Сигмоида работает как операция сравнения: если вход больше нуля, то такие данные "попадают в бин" и суммируются (счетчик приращивается); если вход меньше нуля, то попадание мимо бина - данные не суммируются - это тоже информативно.
На входе RSO (внутри RSO) также имеется однослойная полносвязная сеть, которая пространство входных данных + текущий стейт преобразует в необходимой толщины поток данных для построения гистограмм. Гистограммы стали сильно упрощенные (BSO), поэтому их надо побольше параллельных. Входной полносвязный слой обеспечивает разнообразие гистограмм, иначе вся нейросеть не смогла бы освоить сложность входных данных.
В общем такая структура пошла лучше и достигла все-таки пика ROC-AUC 0,88 за ~11,5 мин, выше не набирается, переобучение наступает. В общем у LSTM и у моей архитектуры близкие способности и временные затраты.
P.P.S. Кстати, данная задачка решается разными способами, достигаются результаты ROC-AUC 0,93+ и вплоть до 0,99+, но с помощью GPU и временными затратами 5, 8 и более часов, с помощью чистки-преобразования данных методами EDA.
Я же кормлю данные практически без адаптации, только сделал случайное перемешивание. Четырехлетний ноутбук с двухядерным CPU.
В общем задачка интересная в том смысле, что можно упереться по времени и попытаться улучшить пиковый ROC-AUC.

 Профиль  
                  
 
 Re: Структура RNN2D
Сообщение18.09.2024, 21:55 
Заслуженный участник
Аватара пользователя


16/07/14
9066
Цюрих
Mihaylo в сообщении #1655316 писал(а):
А что значит "отобразить в ноль/единицу"?
Имелось в виду, что функцию $f(x) = \begin{cases} 1, n \leq x < n + 1 \\ 0, |x| < 10^6 \wedge x \not \in [n, n + 1) \end{cases}$ можно точно выразить нейронкой небольшой глубины.

 Профиль  
                  
 
 Re: Структура RNN2D
Сообщение19.09.2024, 19:53 


12/07/15
01/11/24
3276
г. Чехов
Ну понятно, что нейронку можно научить всему. Но наверное все-таки лучше научить нейронку работать с готовыми инструментами аналитики, такая была у меня мысль. И вот пришла конкретная мысль - агрегация данных. Нейронке такой подход не совсем очевиден. Она только умеет аппроксимировать. А что если научить интерполировать, делать EDA?.. :|

 Профиль  
                  
 
 Re: Структура RNN2D
Сообщение20.09.2024, 14:59 
Заслуженный участник
Аватара пользователя


16/07/14
9066
Цюрих
Научить можно всему, но всё же разные архитектуры неявно содержат разные приоры, и одна архитектура для приближения некоторой функции может требовать сильно меньше параметров, чем другая. Просто Ваше утверждение
Mihaylo в сообщении #1655146 писал(а):
упорядочивание данных методом гистограммы даёт возможность работы с данными, с которыми не умеет работать никакая существующая базовая структура
неверно - имеющаяся структура позволяет с небольшим количеством весов реализовать Ваш подход точно.
Как оно будет работать на практике - надо проверять экспериментально. Но сравнение с описанной мной выше архитектурой (или чем-то похожим) - это один из первых вопросов, который возникает при знакомстве с Вашей идеей.

 Профиль  
                  
 
 Re: Структура RNN2D
Сообщение20.09.2024, 15:45 


12/07/15
01/11/24
3276
г. Чехов
Я бы не сказал, что нелинейная $f(x)$, которую вы привели ранее, является частью существующей структуры. У меня ведь тоже кроме суммирования, умножения на константу и сигмоид ничего принципиально нового нет.

P.S. Обнаружил, что в градиентом бустинге применяют Histogram-based-алгоритмы. Как я понял, что это по сути то же самое, только строится дерево.

 Профиль  
                  
 
 Re: Структура RNN2D
Сообщение20.09.2024, 16:07 
Заслуженный участник
Аватара пользователя


16/07/14
9066
Цюрих
Mihaylo в сообщении #1655405 писал(а):
Я бы не сказал, что нелинейная $f(x)$, которую вы привели ранее, является частью существующей структуры
Так я не предлагаю её напрямую пихать. Я предлагаю 1x1 convolution с последующим global pooling. С мотивацией, что эта структура при небольшом числе параметров может точно выучить предлагаемую Вами функцию.

 Профиль  
                  
 
 Re: Структура RNN2D
Сообщение20.09.2024, 17:45 


12/07/15
01/11/24
3276
г. Чехов
То есть нагенерировать синтетических данных и обучить нейронку этому же?
Ну да, это получится. Но это не будет означать, что эти же слои в составе, предназначенном для более комплексной задачи, додумаются принять вид гистограммы.
Одно дело - зашить в нейронку алгоритм на структурном уровне, совершенно другое - обучить ее этому специально.

 Профиль  
                  
 
 Re: Структура RNN2D
Сообщение20.09.2024, 18:17 
Заслуженный участник
Аватара пользователя


16/07/14
9066
Цюрих
Mihaylo в сообщении #1655416 писал(а):
То есть нагенерировать синтетических данных и обучить нейронку этому же?
Нет, просто на тех задачах, на которых Вы тестируете свою модель, протестировать и вот такую.
Mihaylo в сообщении #1655416 писал(а):
Но это не будет означать, что эти же слои в составе, предназначенном для более комплексной задачи, додумаются принять вид гистограммы
Не значит, и, скорее всего, не додумаются. Вопрос в том, будет ли полученный результат лучше или хуже.

 Профиль  
                  
 
 Re: Структура RNN2D
Сообщение20.09.2024, 18:24 


12/07/15
01/11/24
3276
г. Чехов
Теперь понял.

 Профиль  
                  
 
 Re: Структура RNN2D
Сообщение20.09.2024, 19:34 


12/07/15
01/11/24
3276
г. Чехов
Mihaylo в сообщении #1655214 писал(а):
Я беру стандартно диапазон (-1, +1), данные нормализованы.

В какой-то момент я верил в BinarySoftOrdering - простая реализация гистограммы, у которой нет гиперпараметров - range_min, range_max и количество бинов - ничего этого нет принципиально. Примерно на 50% быстрее вычисляется. Но её предел ROC-AUC 0,86, может чуть выше. И всё: гиперпараметр всего лишь один - количество гистограмм, я примерно нашёл оптимум 100 гистограмм, не продвигается дальше.
Немного поменял тактику для обычного SoftOrdering: я теперь поставил сигмоиду после входного линейного слоя перед построением гистограммы. Это был решающий удар. Пространство из $(-\infty, +\infty)$ преобразуется в $(0, 1)$ и теперь нет срывов из-за выхода за пределы диапазона. Фактически я сделал нелинейным распределение бинов: около нуля они плотные, а ближе к краям растягиваются вплоть до бесконечности.

Количество бинов равно 11, количество гистограмм равно 20, рекуррентный SoftOrdering. За 25 минут достиг результата ROC-AUC 0,899. Правда приходится активно подкручивать learning_rate. Начинаю с 0.1, заканчиваю на 0.001. Да-да, такой мощный разбег. Иначе долго процесс обучения идёт.

 Профиль  
                  
 
 Re: Структура RNN2D
Сообщение23.09.2024, 07:12 


12/07/15
01/11/24
3276
г. Чехов
Добавил batchnorm после суммирования (подсчета), результат улучшился. Теперь я получаю результат лучше и даже чуть быстрее, чем у LSTM. За 5 минут ROC AUC 0.904. Надеюсь нет утечки тренинговых данных в тестовые (проблема батчнорма).

 Профиль  
                  
 
 Re: Структура RNN2D
Сообщение23.09.2024, 21:22 


12/07/15
01/11/24
3276
г. Чехов
Ещё кое-что изменил, сделал довольно логичный шаг, снижающий переобучение. Теперь я могу за 15 минут дотянуться до ROC-AUC 0,919.

Для сравнения: есть один алгоритм решения на kaggle, который решает эту задачу с ROC-AUC 0,93+ на видеокарте NVidia P100 за 2,5+ часа. Применяется Double-stacked LSTM, BiDirectional=True, длина стейта 512.

Но простой LSTM точно побежден.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 27 ]  На страницу Пред.  1, 2

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group