Мое введение в машинное обучение в мире биотехнологий
Прошлым летом мне посчастливилось пройти стажировку в амбициозном молодом стартапе под названием Cambridge Bio-Augmentation Systems, или сокращенно CBAS (произносится «Сибасс»). Это одна из первых нейроинженерных компаний в мире, которая устанавливает связь между нервной системой человека и компьютерами. Это означает, что они создают «USB-порт для тела», соединитель нового поколения для протезирования, который подключается к нервной системе и может управляться мозгом пациента.
При чем здесь машинное обучение? Разъем улавливает нейронные сигналы, идущие от мозга к конечностям - это просто напряжения. CBAS разрабатывает нейронную сеть (модель машинного обучения), которая может понимать сигналы от мозга. Если мы сможем понять сообщения мозга, мы сможем использовать их в качестве входных данных для программного обеспечения. Идея состоит в том, чтобы создать новую платформенную технологию для взаимодействия с нервной системой человека.
В летнем проекте моей целью было усовершенствовать эту модель, протестировав ее на данных акселерометра и гироскопа, записанных при движении - это более простой набор данных, чем нейронные сигналы. Сеть классифицирует движения по таким категориям, как ходьба, поворот или сидение. Моей первой и, возможно, самой важной задачей было собрать данные. В нашем случае данные должны были быть сгенерированы сами!
Ходьба, ходьба, ходьба…
Нейронным сетям нужны данные; много этого. В моем случае это означало, что я часами хожу по офисному балкону с датчиком, привязанным к моей ноге, к большому удовольствию инженеров других стартапов. К счастью, с помощью Spotify, странных выступлений на TED и вклада моих коллег-стажеров эта утомительная, но необходимая задача вскоре собрала достаточно данных.
Если данные, вводимые в нейронную сеть, не собираются должным образом, получение полезных результатов может стать невозможным. Несколько лет назад нейронная сеть успешно смогла идентифицировать автомобили по изображениям улиц Лос-Анджелеса. Затем кембриджские аспиранты загрузили фотографии из своего более пасмурного родного города и обнаружили, что модель полностью не работает. Оказалось, что сеть научилась распознавать не автомобили, а тени, которые эти автомобили проецировали на землю на калифорнийском солнце.
Каждую деталь даже моей, казалось бы, простой задачи нужно было продумать заранее, например, о точном расположении датчика на теле. Также были учтены такие факторы, как маршрут, пройденный вокруг балкона, и размер нашего круга поворота, поскольку, хотя в идеале модель могла бы обрабатывать любое движение, диапазон движения был ограничен для моей проверки концепции, чтобы увеличить вероятность успеха. Один фактор, который я изначально забыл включить - и который заметил мой коллега-стажер, - это ориентация датчика. Иногда он был перевернут, добавляя дополнительную переменную в набор данных, что снижало производительность. К счастью, данные можно было исправить с помощью сценария, и повторная запись не потребовалась.
Обучение на работе
Перед тем, как начать это размещение, я знал только о простой нейронной сети с прямой связью. По сути, это функции, которые принимают ввод, например изображение, и производят вывод, например, метку («кошка» или «собака»). Эти модели обучаются / обучаются, просматривая десятки тысяч изображений, на которых известен правильный ответ, и алгоритмически настраивая функцию, чтобы она чаще выводила правильный ответ. Затем они могут посмотреть на новое изображение, не зная ответа, и сказать, кошка это или собака. Эти сети могут быть мощными, но они предполагают, что все входы независимы друг от друга. Это не относится к большинству данных, которые меняются со временем, включая записи моего собственного движения. Ни одно показание акселерометра не является независимым от предыдущего. Именно здесь в игру вступают повторяющиеся нейронные сети (РНС).
RNN - это, по сути, серия сетей прямого распространения, каждая из которых имеет t двух i входов: текущая точка данных и выход предыдущей сети. Эта сеть была загружена в предыдущую точку данных, а выходная сеть была перед этим. RNN очень популярны и также используются в таких приложениях, как перевод и прогнозирование текста, поскольку языки являются отличными примерами зависимых входных данных (одно слово является одним входом).
Разобравшись в теории и особенностях модели компании, я был готов приступить к ее оптимизации. Это означало настройку гиперпараметров, большую часть разработки нейронных сетей. Гиперпараметры - это «настройки» модели, которые задаются вручную перед началом обучения. Возьмите мой классификатор движения. Сколько секунд данных движения следует ввести в модель в качестве одного входа? 1? 5? На этот вопрос нет однозначного правильного ответа, и на самом деле это один из примерно 12 гиперпараметров данной конкретной модели. Нахождение оптимальной точки в двенадцатимерном пространстве нетривиально и требует сочетания интуиции и проб и ошибок. В том же примере один ввод можно принять за полсекунды данных - приблизительную продолжительность одного шага. Скорее всего, это будет лучше, чем миллисекунда, но как насчет 0,4 секунды? Единственный способ узнать это - попробовать.
Последние мысли
Моей целью на этом стажировке было получить первый опыт машинного обучения на рабочем месте. Изучение биоинженерии было забавным, но принципы, которые я усвоил, применимы в любой отрасли. Конечным результатом моей работы стал классификатор, который мог категоризировать движение вживую. Точность была не идеальной, особенно при переходе от одного действия к другому (например, вставание), но достаточно хорошей, чтобы подтвердить концепцию. Это было очень приятно и побудило меня пройти курсы машинного обучения, чтобы получить степень. Это объединит мою новообретенную интуицию с теоретическим обоснованием. В общем, опыт мне очень понравился.
Чтобы узнать больше о CBAS, посетите cbas.global