«Одним из моих первых компьютеров была старая советская машина, больше похожая на калькулятор»
Я начал интересоваться компьютерами с детства, класса с пятого. В то время в домашнем обиходе они были далеко не у всех. Но мне повезло, на какое-то время моей маме по работе предоставили компьютер на дом, кроме того, компьютер был в школе. А потом еще один компьютер принес папа с работы: это была старая советская машина, которая больше напоминала калькулятор с большим количеством кнопок. Этот компьютер использовался как записная книжка, потому что там была память всего на 10 программ. Помню, как попытался запустить там одну из программ, а вместо Basic там оказался список покупок. Повезло, что к нему еще была приложена книжка про Basic. Я начал смотреть, разбираться.
В итоге начал с программирования каких-то простых игр — квестов из серии «перед тобой огромный огр, что ты сделаешь?», леталок, стрелялок. Поэтому, когда в школе на информатике начали изучать Basic, я уже успел многое попробовать и просил на уроках дать мне что-нибудь посложнее.
А когда пришло время определяться с поступлением, я выбрал Университет ИТМО, потому что уже тогда он был известен как суперчемпионский вуз. Причем изначально подавал документы только сюда, другие вузы не рассматривал. Поступил благодаря олимпиаде на факультет компьютерных технологий и управления.
Почему в жизни могут пригодиться не только «профильные» предметы
Во время обучения в вузе нам необходимо было осваивать Unix, моделирование, сети, программирование. И уже тогда приходилось часто иметь дело с практикой. Ведь когда тебе говорят сделать что-то, для начала ты должен понять, как все работает, какие технологии необходимы для решения этой задачи, и если ты не знаком с ними, то их нужно освоить. Все это уже само по себе близко к реальному делу.
Сейчас могу сказать, что вся фундаментальная база, которая давалась в вузе, в итоге пригодилась мне в работе: и моделирование, и сети, и «железо». И даже в какой-то степени философия. Постепенно ко мне пришло понимание, что люди разные, у всех разные ценности и что правильно с точки зрения одного — неправильно с точки зрения другого человека. Поэтому обычно я не вижу необходимости в спорах. Если только они не касаются принципиальных и конкретных технических вещей. Так что, можно сказать, все концептуальные штуки, которые ты когда-либо учил, остаются с тобой, а потом прорастают в нужный момент.
На четвертом курсе я нашел компанию Exigen, прошел летнюю стажировку, после чего устроился туда на работу. Она находилась на Петроградке, и это было очень удобно: я бегал между ИТМО, военной кафедрой и работой. Стажировка помогла мне влиться в настоящие проекты, понять, как все устроено: как работают команды, что представляют собой заказчики и что, оказывается, надо много общаться с людьми, а не сидеть в своем медвежьем углу, тихонько делая проект и раз в месяц выдавая результат.
На протяжении четырех лет после окончания университета я проработал в различных компаниях, специализировался на Java, backend, Android-разработке, в основном все вертелось вокруг JVM (Java Virtual Machine — прим.ред.). Сложно с нее «слезть», потому что она пригодна для всего, хотя иногда бывает скучновато. Правда, сейчас перешел на Kotlin, стало значительно веселее и удобнее.
«Когда ты знаешь, что твои тылы не прикрыты, стараешься больше»: чему может научить работа в стартапе и акселерация в Амстердаме
Еще с момента поступления в вуз у меня был план: сначала поработать программистом, получить опыт, а потом попробовать себя в стартапах, своего рода, предпринимательской деятельности в области IT. Мне всегда было интересно сделать систему, которая будет масштабироваться в зависимости от количества пользователей, ведь в случае чего меня никто не подстрахует. В стабильности сложно научиться чему-то новому. А когда ты знаешь, что твои тылы не прикрыты, стараешься больше.
В 2015 году мне предложили поработать над проектом трейдинговой платформы, где я стал отвечать за техническую часть. Позже в рамках проекта TabTrader мы попали в акселератор Rockstart в Амстердаме (Rockstart — акселератор, предлагающий менторскую поддержку на 180 дней, инвестиции в размере 20 тысяч евро и офисные помещения — прим.ред.). И это был очень крутой опыт.
Мы ходили на лекции по маркетингу, брендингу, были и лекции от технических специалистов, например, от сотрудников Google, которые рассказывали про облачные технологии. Там я старался пообщаться с как можно большим количеством людей — не только с программистами, но и маркетологами, психологами, чтобы получить разнообразный опыт. И наверное, прежде всего этот опыт был полезен тем, что я учился создавать что-то действительно нужное кому-то реальному, а не только воображаемым людям в своей голове. Сейчас проект продолжает успешно работать, более того, мы как раз набираем новых сотрудников.
Как пережить тяжелую травму, семь операций и запустить собственный проект
В начале 2017 года я получил тяжелую травму на лыжном курорте в Домбае, куда никому не советую ездить. С этим местом связано несколько очень серьезных происшествий. К сожалению, я не изучил отзывы об этом месте, прежде чем поехать туда с друзьями покататься на сноубордах. И столкнулся там с диким бардаком и полным отсутствием безопасности.
Трагедия произошла на подъемнике, на котором, как оказалось, была вообще снята система безопасности. Я понял это за несколько секунд до происшествия, уже мысленно попрощался с родителями. На склоне были мои друзья, они сразу повезли меня в больницу. Когда сняли одежду, на это, конечно, было страшно смотреть. В итоге я перенес семь операций, на протяжении года врачи не могли сказать мне, смогу ли я вообще сохранить руку — шансы были крайне низкими, ее полностью перештопали. Я сменил несколько докторов, в итоге меня вылечили в РНИИТО им. Р.Р. Вредена. Пожалуй, это единственное место в Петербурге, куда я советую обращаться с серьезной травмой. Руку удалось сохранить, сейчас я продолжаю ее разрабатывать.
Во время лечения у меня было ужасное состояние. Наверное, я только недавно стал отходить. Тем не менее, тогда я начал много читать: изучал информацию про биотех, нейроинтерфейсы, присматривался к протезам, потому что у меня начались осложнения. И в какой-то момент врач, с которым мы очень активно общались, сказал мне: «Вам бы уже самому что-нибудь сделать в этой области».
Кроме того, тогда я смотрел видео с Хью Герром. Это выдающийся альпинист, который попал в метель на склоне, пережил ампутацию обеих ног, но не примирился со своим положением. Сегодня он возглавляет исследовательскую группу в Массачусетском технологическом институте. Он и его сотрудники разрабатывают новые типы протезов конечностей (подробнее об истории Хью Герра можно почитать здесь). Меня очень впечатлила его фраза: «Человек не может быть сломанным. Сломаны наши технологии». Я подумал: «Как у нас могут быть такие продвинутые ракеты, корабли, телефоны с 3D-играми и такие дурацкие протезы?»
Почему сейчас на рынке протезов нет хороших решений
Так происходит прежде всего потому, что это очень маленький рынок. Есть мнение, что если ты сделал приложение, у которого миллион пользователей, то ты легко сможешь найти инвестора с миллионом долларов. А пользователей протезов рук в мире, насколько я знаю, порядка 100 тысяч. Тех, кому нужны протезы ноги, около миллиона. Рынок очень невелик, и, более того, на нем очень маленькая конкуренция — в мире существует всего несколько десятков крупных медицинских холдингов, которым принадлежит почти все. Поэтому для маленьких компаний барьер для входа очень высок.
И наконец, медицинские технологии — это очень сложная сфера, где есть огромное количество регуляторных механизмов, требований, рисков. Конечно, проще разработать развлекательное приложение или веб-сервис для миллионов пользователей, чем заниматься этим.
Но есть и доводы за. В последнее время очень хорошо развиваются мобильные процессоры: сейчас даже ноутбуки начинают делать на процессорах ARM, похожих на те, которые стоят в смартфонах. Кроме того, есть много хороших результатов, которые показывает машинное обучение. Известно достаточно много способов, которые позволяют снять сигналы с нервной системы. В том числе это неинвазивные методы, которые существенно облегчают работу. Поэтому я решил, что с технической точки зрения сделать такой проект вполне реально.
Как будет работать система
Прежде всего я подумал: какой самый простой способ, чтобы получить нейроинтерфейс? Нужен какой-то сенсор, его можно подключить к тому же телефону и написать какую-то программу для смартфона, которая умеет обрабатывать большое количество информации и извлекать из нее определенный смысл. Приложение служит посредником между сенсором и сервером, на котором происходит машинное обучение. Сервер умеет исполнять скрипты на Python. Таким образом, сейчас у нас есть три этих ключевых компонента: сенсор, приложение и сервер.
Нейроинтерфейс рождается на стыке нескольких областей: медицины, электроники, программирования и машинного обучения. Поэтому, конечно, я обращался за помощью к своим знакомым. Они, в свою очередь, советовали мне других специалистов. Например, электронику мне помогал делать специалист из Астаны Андрей Иванов. Потому что делать электронику самому, не обладая при этом опытом, было бы слишком долго.
Также я познакомился с ребятами из Computer Science Center, они захотели помочь мне в реализации проекта. Сейчас наша задача — довести приложение и сервер до более стабильного состояния. С помощью Deep Learning мы также хотим найти способ, который позволит быстрее обучать классификатор и в перспективе подойти к более сложным схемам управления, а не просто классификации. И наконец мы собираемся попробовать сделать на основе простой системы управления протез и фактически вставить телефон прямо в него. Это может быть своего рода референсом, которым могут воспользоваться протезисты, ещё не освоившие Pattern Recognition для управления протезами.
Сейчас большинство протезов идут либо вообще без электроники — то есть это фактически крюк, либо у них очень простая система управления: там расположены два датчика, один чувствует мышцы с одной стороны руки, другой — с обратной, а дальше разными ухищрениями, подергиваниями можно совершать какие-то действия.
Это устроено абсолютно не интуитивно, неудобно и не позволяет делать более сложные манипуляции. Все равно что на пульте от телевизора менять каналы только кнопкой «вперед», а потом указать «да, я хочу смотреть этот канал». Кроме того, исходя из того, что мне рассказывали протезисты, с которыми я консультировался, подчас пользователь даже не может оценить, что его рука собирается делать в следующий момент, если он отвлекся. Он не помнит, в каком она режиме и до куда он, условно, ее «дощелкал». Поэтому многие люди предпочитают такую схему вообще не использовать.
Перспективы
Я сразу определился с тем, что это будет опенсорсный проект. Ведь на самом деле многие были бы не против получить нейроинтерфейс. Это может быть полезно не только тем людям, у которых нет конечностей, но и в принципе всем, потому что так в перспективе можно управлять вообще чем угодно. Возможно, придет время, что и тачскрины устареют и их заменят решения, позволяющие, условно говоря, управлять мыслью. Сложно сказать, сколько для этого потребуется времени и сил, но практика показывает, что все рано или поздно устаревает, в том числе и тачскрин.
Пока у нас есть возможность получить какое-то ограниченное количество дискретных команд, которые можно выполнять, считывая с мышц нервные сигналы. Но вообще, мышца способна давать гораздо больше информации, чем движение, для которого она используется. Потому что на одной мышце завязано много нейронов. Допустим, одна мышца может тянуть одно сухожилие и, грубо говоря, отвечает за один сустав. Но если считывать с нее информацию электрически, то одной мышцей можно в итоге делать разные вещи. Конечно, если научиться это делать. Поэтому теоретически можно получить большую систему команд, большое пространство для входящего сигнала. Пока наш проект его не расшифровал, но в целом известен путь, как это сделать.
Есть впечатляющие исследования, в которых уже показали, как «забиндить» несколько команд на определенные действия. Представьте, что рука — это джойстик, джойстиком можно играть в стратегии, стрелялки, гонки и так далее. С помощью машинного обучения в результате мы должны получить такой «виртуальный джойстик», которым пользователь учится работать так, как будто это его новая часть тела и использовать его для определенных целей. Например, управлять техникой или играть в игры. В итоге я хочу, чтобы у нас получился опенсорсный способ связи с нервной системой, ведь нервная система есть у всех. Было бы печально, если будут существовать только какие-то закрытые решения.
Репозиторий проекта можно посмотреть на GitHub. Страница разработчика на Kaggle.