мозговой интерфейс
Jan. 3rd, 2025 04:24 am![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
В "Exploring the trade-off between deep-learning and explainable models for brain-machine interfaces" https://neurips.cc/virtual/2024/poster/94983 люди декодируют сигналы с электродов в мозге чтобы управлять симулированными конечностями.
Интересно, что уже некоторое время тому назад люди догадались, что процесс этот в большой степени упирается в просто механику: у всех костей, суставов и т.д. есть инерция, трение, степени свободы, которые в большой степени и определяют движение. Поэтому чтобы симулировать управляемую мозгом конечность, надо симулировать всю эту механику, и к ней прикладывать управляющие сигналы от мозга. Сигналы эти содержат шум, поэтому шум пытаются вычищать фильтром Кальмана. В Википедии примером приложения фильтра Кальмана дают совмещение данных от ГПС и инерционной навигации, где обе части содержат ошибки, но их совмещение позволяет от ошибок избавляться. Насколько я могу понять, фокус в том, что ошибки разные: ГПС дает случайный разброс на малых расстояниях, но приличную точность в среднем на больших, а инерционные данные систематическую ошибку, которая мала на малых расстояниях, но сильно накапливается на больших, поэтому совмещение усредненной большой позиции от ГПС и недавней истории инерциальной навигации дает наилучшую точность. Но, опять же, насколько я понимаю, для мозгового управления ситуация другая, там пытаются совмещать таким образом разные данные - инерцию системы и управляющую силу.
Альтернативным подходом является применить нейросети к предсказанию эффектов, оно предсказывает лучше фильтра, но неизвестно почему. И вот тут люди решили приложить нейросеть не напрямую к предсказыванию эффектов, а к определению оптимальных коэффициентов усилиения в фильтре Кальмана, и вроде как не хуже, чем обычная нейросеть. С декларируемой выгодой, что так более объяснимо, с классическим фильтром, чем с напрямую нейросетью.
Но тут мне вот что непонятно:
1. Это мне пришло в голову только сейчас, поэтому не было возможности спросить лично, но почему собственно такое опосредованное воздействие является более объяснимым? Если изменение коэффициентов в Кальмановом фильтре в широком диапазоне способно сильно менять его эффекты, то это просто сдвигает проблему на один шаг косвенности, и теперь точно так же неизвестно, почему нейросеть меняет эти коэффициенты.
2. Если так подумать, то мозговой сигнал влияет на прилагаемую силу мышц. Чтобы сила превратилась в скорость, она интегрируется. В позицию - интегрируется еще раз. И вот эта двойная интеграция, да еще и с трением в системе, должна и без того легко сожрать весь шум, сделать его малозаметным. Если хорошо смоделировать механику приложения сил (например, пальцы двигаются не напрямую мышцами в них, а приводятся длинными сухожилиями от мышц выше в руке, и там есть всевозможные нелинейности), то может и без того хорошо выйдет. Но говорят, что такое не пробовали.
3. Если вспомнить, что нейроны активируются по накоплению сигнала, то запросто может быть, что в системе есть еще и третья ступень интеграции - сигнал от мозга интегрируется и только тогда управляет силой мышц. Тогда во-первых шум должен быть еще более пофиг, а во-вторых вполне может быть, что выгода от нейросетей заключается в том, что они фактически добавляют этот дополнительный уровень интеграции в систему. Но про такую возможность, вроде как, тоже никто не смотрел.
Интересно, что уже некоторое время тому назад люди догадались, что процесс этот в большой степени упирается в просто механику: у всех костей, суставов и т.д. есть инерция, трение, степени свободы, которые в большой степени и определяют движение. Поэтому чтобы симулировать управляемую мозгом конечность, надо симулировать всю эту механику, и к ней прикладывать управляющие сигналы от мозга. Сигналы эти содержат шум, поэтому шум пытаются вычищать фильтром Кальмана. В Википедии примером приложения фильтра Кальмана дают совмещение данных от ГПС и инерционной навигации, где обе части содержат ошибки, но их совмещение позволяет от ошибок избавляться. Насколько я могу понять, фокус в том, что ошибки разные: ГПС дает случайный разброс на малых расстояниях, но приличную точность в среднем на больших, а инерционные данные систематическую ошибку, которая мала на малых расстояниях, но сильно накапливается на больших, поэтому совмещение усредненной большой позиции от ГПС и недавней истории инерциальной навигации дает наилучшую точность. Но, опять же, насколько я понимаю, для мозгового управления ситуация другая, там пытаются совмещать таким образом разные данные - инерцию системы и управляющую силу.
Альтернативным подходом является применить нейросети к предсказанию эффектов, оно предсказывает лучше фильтра, но неизвестно почему. И вот тут люди решили приложить нейросеть не напрямую к предсказыванию эффектов, а к определению оптимальных коэффициентов усилиения в фильтре Кальмана, и вроде как не хуже, чем обычная нейросеть. С декларируемой выгодой, что так более объяснимо, с классическим фильтром, чем с напрямую нейросетью.
Но тут мне вот что непонятно:
1. Это мне пришло в голову только сейчас, поэтому не было возможности спросить лично, но почему собственно такое опосредованное воздействие является более объяснимым? Если изменение коэффициентов в Кальмановом фильтре в широком диапазоне способно сильно менять его эффекты, то это просто сдвигает проблему на один шаг косвенности, и теперь точно так же неизвестно, почему нейросеть меняет эти коэффициенты.
2. Если так подумать, то мозговой сигнал влияет на прилагаемую силу мышц. Чтобы сила превратилась в скорость, она интегрируется. В позицию - интегрируется еще раз. И вот эта двойная интеграция, да еще и с трением в системе, должна и без того легко сожрать весь шум, сделать его малозаметным. Если хорошо смоделировать механику приложения сил (например, пальцы двигаются не напрямую мышцами в них, а приводятся длинными сухожилиями от мышц выше в руке, и там есть всевозможные нелинейности), то может и без того хорошо выйдет. Но говорят, что такое не пробовали.
3. Если вспомнить, что нейроны активируются по накоплению сигнала, то запросто может быть, что в системе есть еще и третья ступень интеграции - сигнал от мозга интегрируется и только тогда управляет силой мышц. Тогда во-первых шум должен быть еще более пофиг, а во-вторых вполне может быть, что выгода от нейросетей заключается в том, что они фактически добавляют этот дополнительный уровень интеграции в систему. Но про такую возможность, вроде как, тоже никто не смотрел.
no subject
Date: 2025-01-03 02:49 pm (UTC)Коэффициенты для фильтра Калмана можно точно (аналитическим путём) определить только при условии выполнения некоторых предположений про линейность системы, гауссово распределение шумов и так далее. На практике эти предположения не выполняются, но фильтр Калмана всё равно работает. Качество его работы зависит от того, как именно подбирать коэффициенты. Методов может быть много и они все примерные, отсюда и естественное желание использовать для их определения нейронную сеть.
Механические ограничения (инерция) высокочастотный шум сглаживают, но не факт что оптимально. Примером может быть старческое дрожание рук.
no subject
Date: 2025-01-04 01:57 am (UTC)А про причину дрожания рук я не в курсе. Может там вообще шумы в приемнике?
no subject
Date: 2025-01-04 01:13 pm (UTC)Где бы ни были шумы, в мозгу, при передаче по нервам или при активации мускулов, дрожание-то всё равно есть, значит, инерции костей/связок для фильтрования недостаточно.
no subject
Date: 2025-01-07 06:03 am (UTC)no subject
Date: 2025-01-03 04:47 pm (UTC)no subject
Date: 2025-01-04 01:59 am (UTC)no subject
Date: 2025-01-04 02:34 am (UTC)Я подозреваю, что человек, который написал распознавание физической активности и мог бы написать им счисление перепада высот, уволился, а больше тот код никто не понимает.
no subject
Date: 2025-01-04 03:12 am (UTC)no subject
Date: 2025-01-04 05:45 am (UTC)no subject
Date: 2025-01-04 10:21 am (UTC)Но что если у нас множество сигналов, которые нужно собрать в один результат? Фильтр Кальмана работает со множеством входных векторов для получения результирующего вектора. Не столь важно, как и куда направлены исходные векторы, важно, чтобы результирующий смотрел куда надо.
Посмотрим на работу муравьёв, как они тащат груз в муравейник. Они облепляют его со всех сторон и каждый муравей тянет в свою сторону. То есть груз может поползти в любую сторону, а надо к муравейнику. Тогда часть муравьёв перебегает в сторону муравейника и вектор общей тяги оказывается в направлении муравейника, хотя многие муравьи по-прежнему тянут в другую сторону. То есть шумом являются те муравьи, которые тянут не туда.
Пусть мы хотим управлять движением руки. В этом движении участвует множество различных мышц (около 100), и на каждую нужно подать свой сигнал определённой величины. При наличии множества разных мышц погрешность измерения каждого отдельного сигнала особой роли не играет, тем более что мышца сама по себе является интегратором. Зато эти мышцы могут очень сильно мешать друг другу – вот это и есть шумы. То есть важно правильно соединить множество разных сигналов как бы в единый аккорд.
Если мы пойдём классическим путём, то должны построить функцию сигнала для каждой мышцы (напомню – около 100 мышц). А потом попытаться соединить эти функции в функцию управления рукой – адская комбинаторика, любой комп повесится. Если для каждой мышцы сигнал – это всего лишь включен (1) и выключен (0), то мы получим 2^100 комбинаций. А реально у нас разная амплитуда сигналов. До морковкина заговенья будем считать. На нынешнем этапе развития вычислительной техники это невозможно.
Можно поступить иначе и поставить управляющую систему – фильтр. Для него важно движение руки в целом, а не работа отдельных мышц. Тогда он будет управлять весовыми коэффициентами входных сигналов для достижения нужного итогового результата.
Не столь важно какая мышца куда тянет и с какой силой, важно, что вся рука в итоге выполнит нужное действие. То есть фильтр как бы не отдельные ноты для каждой мышцы играет, а сразу подбирает аккорды к руке. Получается сразу функция зависимости движения руки от входных сигналов. Мы можем подать произвольные сигналы на мышцы и посмотреть, как изменится положение руки, записать этот аккорд. Либо, если система позволяет, изменить положение руки и посмотреть, какой аккорд из сигналов соответствует такому положению. При этом мы не знаем, какие мышцы помогают, а какие мешают, что там с трением и прочей инерцией, но мы знаем итоговый результат изменения положения руки.
Ещё интереснее, что одно и то же движение руки можно получить множеством совершенно разных аккордов, но у каждого будет своя эффективность и энергозатратность. Можно ставить ещё один фильтр для оптимизации аккордов. А потом ещё понадобятся плавные переходы от одного положения к другому. Это ещё один управляющий элемент. Я так понимаю, что для всего этого и нужен ИИ.
Конечно же мы при этом не знаем, почему последовательность аккордов и каждый аккорд в отдельности получились именно такими. Хотим узнать – придётся топать по классическому пути, то есть исследовать сотню функций сигналов отдельных мышц, а потом все их комбинации, чтобы построить функцию руки.
no subject
Date: 2025-01-07 06:08 am (UTC)