# Майкл Катберт: «Извлечение признаков — это процесс превращения музыки в зомби»

Источник: https://www.youtube.com/watch?v=ivvxfWR1azI
Канал: MIT OpenCourseWare
Опубликовано: 15.10.2025

---

Извлечение признаков (Feature Extraction) и машинное обучение в музыке — центральная тема 27-й лекции курса MIT «Computational Music Theory». Преподаватель Майкл Катберт (Michael Cuthbert) представляет этот этап как «необходимое зло», превращающее живое звучание в сухие цифры, без которых работа современных ИИ-алгоритмов невозможна.

## 🎹 Извлечение признаков: Музыка как набор чисел
[[JUMP:08:58]]

По определению Майкла Катберта, извлечение признаков — это процесс конвертации музыкальных элементов в числа, массивы, векторы или тензоры [09:12]. Несмотря на то что этот процесс может показаться скучным, Катберт называет его критически важным этапом, так как любые алгоритмы глубокого обучения работают исключительно с числовыми данными [10:05].

Для демонстрации процесса используется корпус произведений И. С. Баха (в частности, хорал BWV 66.6). Ручное извлечение признаков может выглядеть просто: например, определение количества голосов или размера [12:16]. Однако для работы с большими данными требуются автоматизированные экстракторы на Python.

### Стек инструментов и ПО:

*   **Библиотека `music21`**: Основной инструмент для анализа нотных текстов.
*   **Orange 3**: Визуальный и программный инструментарий для машинного обучения.
*   **scikit-learn**: Библиотека, устанавливаемая вместе с Orange для реализации классических алгоритмов (например, K-Nearest Neighbors).

## ⚖️ Этические дилеммы и «Sentinel Values»
[[JUMP:14:45]]

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

1.  **Проблема отсутствующих данных**: Если в партитуре нет размера (например, в григорианском хорале), программа может выдать ошибку. Катберт предлагает возвращать «сигнальные значения» (sentinel values), такие как `0, 0` [15:25]. Это предотвращает падение системы при многочасовых вычислениях в облаке.
2.  **Риск «проглатывания» ошибок**: Сигнальные значения могут скрыть за собой дефекты в логике программы. Например, игнорирование аккордов при поиске высоты тона может привести к потере важной части данных [17:04].
3.  **Социокультурная предвзятость ИИ**: Катберт подчеркивает, что технические допущения программистов (например, в системах распознавания лиц) часто приводят к дискриминации меньшинств. В музыкальном анализе это проявляется в игнорировании незападных или внеметровых традиций [17:23].

## 🎻 Кейс: Отличие Жиги от Рила
[[JUMP:18:34]]

Основная практическая задача лекции — построение системы, способной отличить жанр «жига» (jig) от жанра «рил» (reel) на основе коллекции Райана (Ryan’s Mammoth Collection). Это собрание содержит около 1050 скрипичных мелодий XIX века [19:32].

Ключевые признаки, выделенные студентами и преподавателем:

*   **Размер**: Жиги чаще пишутся в 6/8, рилы — в 2/4 или 4/4 [21:51].
*   **Ритмическое деление**: В рилах преобладают 16-е ноты, в жигах — 8-е [22:29].
*   **Тональность**: Количество знаков при ключе (Sharps feature) также может служить признаком [27:04].

Преподаватель предупреждает о проблеме «Ground Truth» (эталонной истины). Если жанр в названии файла указан неверно или два эксперта спорят о классификации, ИИ получит «грязные» данные, на которых невозможно построить точную модель [25:37].

## 🤖 Обучение классификатора и оценка точности
[[JUMP:45:07]]

После того как признаки извлечены и сохранены в текстовый файл с разделителями (TSV), данные делятся на тренировочную и тестовую выборки [38:55].

В работе используются два типа «учеников» (Learners):

1.  **Majority Learner**: Контрольная группа. Он просто всегда выдает самый частый класс из выборки (например, «это всегда жига») [45:30]. Если ваш алгоритм не показывает результат выше Majority Learner, он бесполезен.
2.  **K-Nearest Neighbors (KNN)**: Алгоритм, который классифицирует объект, анализируя ближайших «соседей» в многомерном пространстве признаков [47:13].

**Результаты эксперимента:**

*   **Majority Learner**: 59% точности (так как 59% базы составляли жиги) [52:34].
*   **KNN (с 4-5 признаками)**: 87% точности [52:55].
*   **KNN (с использованием JSymbolic/Music21)**: Несмотря на добавление десятков новых признаков, точность упала до 61% [57:50].

Катберт поясняет этот парадокс: на малых наборах данных избыток сложных признаков («кухонная раковина») только вредит. Эффективнее использовать несколько, но глубоко продуманных музыкальных характеристик [58:11].

## 🔍 Дерево решений: Бах против Монтеверди
[[JUMP:1:02:14]]

В финальной части лектор сравнивает кораллы Баха и мадригалы Монтеверди. Вместо «черного ящика» нейросетей он предлагает использовать **Decision Tree** (дерево решений), которое наглядно показывает логику ИИ [1:06:00].

Признаки, которые нашел компьютер для отделения Баха (с точностью 99%):

*   Если нота «фа» малой октавы используется чаще 14% времени — это Бах [1:06:27].
*   Если дистанция между сопрано и басом меньше двух октав и малой сексты — это Бах [1:06:40].

Однако Катберт разоблачает этот успех: ИИ на самом деле не «понял» музыку. Он отследил привычки современных редакторов, которые по-разному записывали размеры и расставляли тактовые черты для композиторов разных эпох [1:08:13]. Аналогичный пример приводится с классификатором аудио: ИИ научился различать не жанры, а типы микрофонов, характерные для кантри или хип-хопа [1:08:41].