Понимание космической научной темы с использованием Python и машинного обучения: классы астероидов

TL;DRЕсли вас интересует проект Python, который связывает космическую науку с машинным обучением, этот проект может быть им. В онлайн-руководстве из 14 сессий мы рассмотрим так называемые спектры отражения астероидов для создания различных контролируемых и неконтролируемых моделей на основе машинного обучения. Эти модели помогают нам различать различные спектры астероидов и связанные с ними классы. Код и видео доступны на GitHub и YouTube.

Введение

За последние пару лет возрос интерес общественности к космической науке, астрономии, пилотируемым полетам и беспилотным космическим кораблям. Новые коммерческие компании, такие как SpaceX, Blue Origin или Virgin Galactic, привлекли большое внимание и планы на будущее, такие как Starship SpaceX, предстоящая посадка на Луну в рамках программы NASA Artemis, а также недавняя научная деятельность, такая как марсоход Perseverance с его удивительно успешным вертолетом Ingenuity, или запуск космического телескопа Джеймса Уэбба (JWST) были восприняты с энтузиазмом.

Но общественные научные интересы не заканчиваются внутри космической науки. Быстро разработанные модели, новые подходы и почти ежедневное развертывание под руководством университетов и технологических компаний, таких как Google, Meta и другие крупные игроки, представили нам новый программный мир искусственного интеллекта (ИИ), особенно глубокого обучения. Такие модели, как GPT-3 или StyleGAN3, продемонстрировали текущую передовую дорожную карту искусственного интеллекта для генерации текста и преобразования текста в изображение соответственно. Обобщающий веб-сайт, такой как paperswithcode, пытается собрать все большее количество статей, новых методов и соответствующих наборов данных. В дополнение к процессору и графическому процессору Google разработал специализированное оборудование Tensorflow, называемое TPU, чтобы еще больше повысить производительность обучения ИИ. В ближайшие пару лет мы увидим, куда нас приведет дорога: будет ли появляться все больше и больше попыток обобщенных решений ИИ (например, Гато DeepMind), будут ли у нас автономные транспортные средства 5-го уровня или ИИ зима приведет к остановке дальнейшей финансовой поддержки, интереса и исследовательской деятельности.



Несомненно, технический прогресс ускоряется в нескольких областях. Благодаря, например, 3D-принтерам, простому в использовании оборудованию, решениям с открытым исходным кодом и огромному количеству документации, лекций и онлайн-уроков, знания с каждым днем ​​становятся все более и более демократичными.

Прекрасным примером демократизации программирования является Python. Большинство из вас свободно владеет этим конкретным языком программирования или, по крайней мере, знает самые важные основы и соответствующие библиотеки. Будь то разработка веб-сайта с внутренним и внешним интерфейсом, научные исследования данных, программирование Raspberry Pi и его оборудования, машинное обучение или наука: Python открыл множество областей и дает заинтересованной публике легкий доступ к кодированию.

Итак, в качестве первого краткого резюме, 3 темы в настоящее время объединяют много общего:

  1. Космос
  2. Машинное обучение
  3. питон

А теперь переходим к связыванию!

Космическая наука с Python

В моей серии онлайн-руководств Космическая наука с Python я связываю первые две темы: Космос… и… ну… Python. Индивидуальные учебные занятия на YouTube с соответствующими бесплатными блокнотами Jupyter Notebook позволят каждому, кто интересуется этой междисциплинарной темой, добиться успеха.



Но речь идет не только об индивидуальных занятиях и преподавании фундаментальных космических научных понятий. Иногда несколько учебных курсов связаны друг с другом со всеми необходимыми этапами для проведения научного проекта. Эти шаги включают в себя:

  • Определение научной задачи/объема/цели
  • Изучение литературы и работы, которая была проделана до сих пор
  • Планирование проекта (от начала до конца… с учетом неожиданных поворотных моментов и новых вопросов, которые могут возникнуть)
  • Аналитическая часть: выборка данных, очистка, получение статистики/понимания, применение лежащей в основе теории к данным и т. д.
  • Интерпретация
  • Краткое содержание
  • Перспектива

И первый проект, который я хотел бы вам подробно представить, связан не только с Space и Python, но и с Machine Learning.

Спектры астероидов…

Вы, наверное, видели научно-фантастические фильмы, в которых пилот космического корабля отчаянно пытается избежать столкновения с астероидом в поясе астероидов. Тысячи объектов таятся в поясе, со средним расстоянием, которое позволяет пролететь только опытному пилоту!

Я должен разрушить ваше воображение. На самом деле пояс астероидов совершенно пустой. Конечно, сотни тысяч объектов вращают Солнце между Марсом и Юпитером. Но эти большие масштабы приводят к очень низкой плотности объектов. В противном случае мы не смогли бы провести через него наш космический корабль.

Как следует из названия: пояс населен каменными мирами, называемыми Астероидами. И предполагается, что пояс содержит остатки объектов, которые должны были образовать планетарный мир. Благодаря гравитационным возмущениям этого не произошло. Однако в поясе есть более крупные астероиды, такие как Паллада, Веста или Церера. Возможно, вы знаете названия этих астероидов благодаря недавнему научно-фантастическому сериалу, такому как «Пространство».

Хотя они выглядят как «мертвые миры», астероиды — увлекательная тема для изучения. Фактически, эти остатки содержат минералогическую химию формирования нашей Солнечной системы. И, конечно же, как и все, что открывается, наблюдается и описывается исследователями, астероиды также классифицируются в разных каталогах. Классификация выполняется по показателю наблюдения, который называется спектр отражения. Эти спектры можно объяснить довольно просто:

  • Солнечный свет поглощается и частично отражается астероидом
  • Отраженный свет улавливается телескопом и соответствующим спектрометром.
  • Этот спектрометр «разделяет» свет по его цветам
  • «Интенсивность цвета» зависит от отражательных свойств астероида.
  • Разный состав поверхности астероидов приводит к разным спектрам

… и эти разные спектры позволяют исследователям делать выводы о составе астероида.

На диаграммах ниже показаны примеры таких спектров. Надпись описывает это более подробно.

Однако существует несколько классификационных схем разных исследователей. На следующей диаграмме Санки показано, как подмножество этих классификационных данных связано друг с другом. Для нас важна группа справа:

  • Тип C: «Углеродные» астероиды имеют поверхность, богатую углеродом.
  • Тип S: «Каменные» астероиды с обилием полезных ископаемых.
  • X Тип: «Железные» астероиды; вероятно, остаток внутреннего ядра протопланеты (поскольку планеты имеют богатое железом ядро)
  • Конечный член и выбросы (другие): Ну… все остальное, например, астероиды типа А, которые связаны с мантией планет.

… go ML

Ладно, хватит космической науки! На самом деле все гораздо глубже, и об астероидах можно написать тонны и тонны книг. Но в этой статье я хотел бы представить вам проект, который использует данные этих спектров для проекта машинного обучения.

Этот проект является частью моей серии руководств по Космической науке с Python на GitHub и YouTube. Но позвольте мне описать вам масштаб наших исследований астероидов:

Целью нашего проекта будет получение, очистка, понимание и визуализация спектров отражения астероидов. Кроме того, мы будем классифицировать спектры, используя различные инструменты, связанные с машинным обучением, такие как машины опорных векторов (SVM) и глубокое обучение.

Прежде чем я начну описывать эти проекты с 14 ноутбуками, позвольте мне поделиться с вами соответствующим репозиторием GitHub…



…и плейлист:

Часть 1 — 3: выборка данных, очистка синтаксического анализа

В первую очередь нам нужны данные [Блокнот №1]! И, к счастью, SMASS: спектроскопическое исследование малых астероидов главного пояса предоставляет спектральные данные, которые можно использовать. Кроме того, они также предоставляют больше наборов данных, связанных с астероидами:



Первые блокноты связаны с получением этих данных и добавлением класса main group, как мы видели выше на диаграмме Санки. Так как эта тема скорее нишевая, я стараюсь объяснить как можно больше деталей [Записная книжка №2 и Записная книжка №3].

Часть 4: Понимание спектров

Какие данные вы использовали до сих пор для своего пути к машинному обучению? Данные Ирис? СИФАР или МНИСТ? Или данные о жилье в Нью-Йорке?

Что ж, я думаю, большинство из вас хотя бы раз работали с одним из наборов данных. И на самом деле они по-прежнему являются хорошим набором тестов для сравнения моделей машинного обучения. На самом деле из этих данных извлекается МНОГО знаний.

Однако данные спектров отражения мало исследовались энтузиастами машинного обучения и программистами. Итак, прежде чем мы начнем погружаться в машинное обучение, давайте создадим интерактивную программу просмотра спектров ipwidgets, чтобы лучше понять и почувствовать, как эти данные выглядят [Notebook #4]!

Часть 5-7: машины опорных векторов

Первый проект по машинному обучению был направлен на обучение машины опорных векторов (SVM) решению простой бинарной задачи: различению астероидов X-класса и не-X-класса [Notebook #5]. Во-первых, я хотел, чтобы все было как можно проще, прежде чем углубиться в тему, связанную с ML (поскольку этот проект будет адресован разным уровням навыков). Используя методы поиска гиперпараметров scikit-learn [Notebook #6], мы смогли оптимизировать параметры, связанные с SVM, чтобы выжать больше точности из модель.



Наконец, мультиклассовые методы SVM позволили нам провести эксперимент по машинному обучению, в котором различались классы C, S, X и Другие [Notebook #7].

Часть 8-10: Глубокое обучение (контролируемая классификация)

PyTorch или TensorFlow? Один из самых фундаментальных «отправных вопросов» для практиков глубокого обучения. Эта статья не предназначена для того, чтобы начать очередныедебаты о том, какая библиотека лучше.Лично мне нравится TensorFlow и его высокоуровневые API-керасы.



После первоначальных экспериментов scikit-learn пришло время провести несколько экспериментов по глубокому обучению (с использованием keras). Мультиклассовая классификация была целью с самого начала [Notebook #8]. И так же, как scikit-learn, keras позволяет создавать модели для лучшего поиска гиперпараметров, называемого keras-tuner.



В Notebook #9мы использовали этот тюнер, чтобы познакомиться с таким способом самооптимизации. Используя грубую силу, байесовские методы или Hyperband, можно найти наилучшие параметры и гиперпараметры примерно определенной нейронной сети.

Наконец, мы использовали сверточные сети, чтобы повысить точность на процентный пункт [Notebook #10].

Часть 11 — 14: Глубокое обучение (неконтролируемый автоэнкодер + GMM)

Схемы классификации «создаются человеком», пытаясь дифференцировать спектры по определенным характеристикам отражения/поглощения в определенных диапазонах длин волн (цветов). Эта классификационная работа в космической науке распространяется не только на астероиды, но и на метеоры, кометы, звезды, галактики и так далее. Огромные каталоги бесчисленных объектов, разбитых на столбцы и строки, чтобы внести какой-то порядок в этот космический хаос.

Но… можем ли мы обосновать эти классы с точки зрения науки о данных?

Что ж, чтобы ответить на этот вопрос, мы усилили нашу игру глубокого обучения, применив неконтролируемые алгоритмы; уделяя особое внимание автоэнкодерам.

Автоэнкодеры — это определенная архитектура глубокого обучения, выходные данные которой соответствуют ее входным данным (по сути, это регрессия входных данных к самим себе). Автоэнкодер «сжимает» информацию до определенного заранее определенного количества нейронов. Или, по крайней мере, пытается это сделать в процессе обучения.

В Notebook #11 мы создали наш первый автоэнкодер и проверили его мощность восстановления. Количество нейронов, которые мы использовали для сжатия информации: 2. Чрезвычайно малое количество, которое приводит к потере информации. Но в этом случае мы хотели впоследствии нарисовать скрытое пространство, чтобы получить чувство, как это скрытое пространство может выглядеть. На следующем рисунке показан хороший пример производительности реконструкции:

Notebook #12 затем использовался для построения двухмерного скрытого пространства. Конечно, это неконтролируемый метод, но мы также добавили класс спектра в качестве цветового кода в скрытое пространство. Таким образом, мы смогли увидеть, разделены ли разные классы или нет (обратите внимание: автоэнкодер не знает никаких классов!)

Как мы видим, астероиды S-класса создали доминирующее скопление в центре, вокруг которого разбросаны «Другие». Второй кластер содержит классы C и X с определенной границей между ними. Алгоритмы кластеризации, вероятно, не смогут различать эти классы.

Или будет?

Наконец, в Notebooks #13 и Notebook #14 мы использовали 5-D Autoencoder, применили гауссовскую смешанную модель (GMM) и вычислили байесовский информационный критерий (BIC) для нескольких GMM. В итоге мы нашли 4–5 кластеров (в зависимости от начальных весов).

Однако, благодаря удивительному, но малоизвестному пакету pingouin, мы обнаружили, что эти данные не описываются мультинормальным гауссианом. Отрицательный результат/вывод. Но эй, это наука: отрицательные результаты — это тоже результаты, и я не хотел, чтобы у меня сложилось впечатление, что в научном проекте все на 100 % предопределено!



Резюме и перспективы

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

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

Для меня это путешествие заканчивается здесь. Пришло время искать новые, неизвестные космические темы и пути кодирования.

Томас

Свяжитесь со мной в Твиттере