Как стать автором
Обновить

Комментарии 14

Я сильно не углублялся в изучение CTM, но есть ощущение, что особо новых мыслей нет. Нейросети с короткой и долгосрочно памятью давно известны, временная синхронизация в импульсных сетях - Spiking neural network (SNN) тоже. Рекуррентные Сеть долго-краткосрочной памяти (LSTM) были очень популярны пока их не заменили трансформеры с механизмом внимания, которые на много более эффективны. Но в целом не плохо, что ведутся исследования альтернативных моделей и архитектур.

CTM расширяет классические идеи памяти и спайковой динамики и вносит три ключевых отличия:
1. Внутреннее рекуррентное время, независимое от длины входной последовательности, позволяющее модели «думать» произвольное число тиков;
2. Neuron-Level Models — индивидуальные MLP-функции, которые учатся на собственной временной истории нейрона и реализуют адаптивную фильтрацию, недоступную ни LSTM, ни трансформерам;
3. Матрица синхронности используется как прямое латентное пространство, так что сама ко-активация нейронов становится признаками для вывода.

В совокупности это превращает временную корреляцию из побочного эффекта (как в SNN) в управляемый вычислительный ресурс и обеспечивает интерпретируемую глубину рассуждения — то, чего нет у существующих архитектур. Поэтому работа CTM скорее — шаг к конвергенции биологического и искусственного интеллекта, чем «ещё одна память в RNN».

Не совсем понятно про реккурентное время, как я понимаю оно сделано через скрытое состояние? Просто в SSM время тоже через скрытое состояние. А в версии linoss (тоже ssm) так уже улавливает осцилляции и затухания и синхронизацию.

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

Надо посмотреть что сейчас CTM предлагает. Так как пока ищу решение для реализации релейных клеток таламуса. Их отличие в том, что у них есть два режима. Сигнал как есть и серия сигнала . Например, 1 может быть послан как 1111, но за тоже время. На классических сетках такое не сделать без специальных махинаций.

То что вы описали похоже на нахождение асимметрии сигнала, через измените состояния.

Сейчас над таким бьюсь. Как видно, это уже порождает серию импульсов сигнала. Пока не понятно, как должны быть связаны соседние нейроны друг с другом. Надо посмотреть, может. CTM сделали тоже самое.

А вообще нейрон является своего рода автоматом, выделяющим асимметрию.

https://t.me/greenruff/2328?single

Спайки делают нечто похожее. RNN делает это урезано на более крупном уровне

Почитал. Нейрон запоминает и обрабатывает историю входов (как минимум последние N шагов). Чем то напоминает скользящее среднее. Я иначе делал. В моем случае нейрон хранит состояние, которое меняется под воздействием сигнала но по разному. Хранить N состояний накладно, достаточно хранить текущее состояние и правильно реагировать на новый сигнал (он вносит разный вклад в изменение состояние). Точнее мы храним состояние нейрона и асимметрию (то есть как он реагирует на входной сигнал). Смещение асимметрии сигнала приводит к тому, что он по разному реагирует на спад и рост сигнала. При этом мы храним две асимметрии: амплитуды и частоты. Это биологически ближе к нейронам. Но это тоже не полная реализация. В реальности нейрон имеет обратный захват, где модулирует входной сигнал , очищая его от "шума".

Ещё раз прочитал, да хранение истории оправданно биологически. Но это увеличивает размер памяти в 4-8 раз. Что нереально сейчас для крупных сеток.

Как компромисс, можно использовать CTM подход либо на уровне выходов слоев или блоков. Другого решения не вижу, современные карты просто не потянут данную модель на уровне нейрона

Позанудствую. Тут пришла идея, что можно применять CTM не на уровне нейронов, а блоков (например трансформеров) как компромисс. Для этого использовать свёртки, но запоминая состояние.

def class BlockCTM(nn.Module):
    def __init__(self, d_model, K):
        super().__init__()
        self.K = K
        self.conv = nn.Conv1d(d_model, d_model, kernel_size=K, groups=d_model, bias=False)
        # хранит последние K−1 выходов
        self.register_buffer('buffer', torch.zeros(1, d_model, K-1))

    def forward(self, new_x: torch.Tensor) -> torch.Tensor:
        # new_x: [batch, d_model] — только новый timestep
        x = torch.cat([self.buffer, new_x.unsqueeze(-1)], dim=-1)  # [batch, d_model, K]
        ctm = self.conv(x)[..., -1]   # берем только свежий выход
        # обновляем буфер
        self.buffer = x[..., 1:].detach()
        return new_x + self.alpha * ctm
      

Это аналог CTM, но через свёртки на уровне блоков. Например, добавляем его на выходе каждого блока трансформера.

Чекнул ваш ТГ, вижу вы тоже занимаетесь на стыке прикладного CS в области нейробиологии. Какова конечная цель исследований?

Все это здорово но в статье я не услышал явных преимуществ новой модели перед существующими. Ваши комментарии говорят о том, что вы всерьез интересуетесь СТМ. Это просто любопытство или часть работы? Я не случайно спрашиваю . Эта тема меня тоже заинтересовала и я мог бы подключиться к ней на каких либо условиях

Я разбирал CTM с целью понять, насколько хорошо данная архитектура ложится под задачу: обучение на размеченных ЭЭГ данных с целью формирования модели EEG_to_Text. В данной момент это моя научная работа для маги 😅

Понял, спасибо, Удачи в исследованиях!

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

Да это интересная тема. Но мне кажется, сейчас пока вполне достаточно аудиовизуального взаимодействия с ИИ, и это скорее ближе к медицине. У меня немного другой уклон. Я интегрирую классические движки строгого логического вывода с нейросетями. Что то типа расширения RAG. :-) Ну и другие заморозки ИИ. Короче, на вольных хлебах и теоретически мы можем пересечься если будут какие либо проекты коммерческой ориентации. Ещё раз Удачи!

Учту, спасибо и вам удачи!

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации