Poster

Anime2vec — Частина 1. По той бік ключових слів

image
Мене, як і багатьох, не влаштовує стандартний підхід до рекомендацій аніме. Пошук за ключовими словами та поради «схожого» на основі голосувань рідко допомагають знайти справжні перлини.
Тому я поставив собі за мету створити щось краще. Я хотів отримати інструмент, який розумітиме аніме на рівні сенсів, а не лише тегів. За основу я взяв унікальні дані нашої української спільноти з її авторськими описами.
У цій статті я розповім про перший і найважливіший крок проєкту anime2vec: як я «донавчив» нейромережу для глибокого розуміння семантики українських аніме-описів.

Фундамент для проєкту: Чому все починається з тексту

Фінальна мета проєкту anime2vec полягає у створенні «ДНК-коду» для кожного аніме, що комбінує текст, жанри та інші дані. Але щоб така складна система працювала, її серцем має стати компонент, що бездоганно розуміє текст. Саме тому я почав зі створення спеціалізованої моделі hikka-forge-paraphrase, яка відповідає виключно за аналіз описів.
Це необхідно, бо стандартні мовні моделі поверхневі. Вони не бачать різниці між меланхолією в «Мушіші» та екзистенційною кризою в «Євангеліоні». Моїм першим завданням було створити інструмент, що перетворює текст на глибокі, насичені сенсами вектори. Ця стаття розповідає саме про створення цього фундаменту.


Глава 1. Проблема: Чому звичайні моделі бачать лише слова

Хоча сучасні мультимовні нейромережі є потужними інструментами, вони схожі на туристів із розмовником. Вони знають основи багатьох мов, але не вловлюють специфічний контекст. Для них «драма» в аніме про гігантських роботів і в п'єсі Шекспіра сприймається як майже одне й те саме. Вони бачать ключові слова, проте не відчувають нюансів.
Якість даних на Hikka давала унікальну можливість це виправити. Я вирішив не створювати модель з нуля, а взяти існуючу й «відправити її на стажування» на наших даних, щоб вона навчилася культурного та смислового контексту аніме.


Глава 2. Наочний експеримент: Чи може машина відрізнити меланхолію від комедії?

Я перевірив цю гіпотезу простим тестом. Взяв меланхолійну «Проводжальницю Фрірен» і дав моделям завдання оцінити її схожість із чотирма різними аніме. Серед них був тематично ідеальний кандидат («Для тебе, Вічний»), «пастка» зі схожими тегами («Сталевий алхімік»), і два зовсім сторонні твори для контролю («Брама Штейна» та «Гінтама»).
Результати виявились красномовними.
image
Подивіться на фіолетові стовпці (оригінальна модель). Вона повністю розгубилася. Для неї "Фрірен" виявився майже однаково схожим на всіх кандидатів: Всі результати збилися в купу. Модель побачила загальні слова на кшталт "подорож", "друзі", "драма" і не змогла відрізнити глибоку меланхолію від комедії чи наукової фантастики. Це і є та "поверхневість", про яку я казав.


Глава 3. Практика: Створення "шпаргалок" для нейромережі

Процес "додаткового навчання" (fine-tuning) простий: показати моделі два семантично однакових тексти і змусити її зробити їхні вектори максимально близькими. Головна проблема — де взяти сотні тисяч таких пар-прикладів?
Я вирішив її, написавши скрипт, який генерував "шпаргалки" для моделі за кількома принципами:
  1. Частина дорівнює цілому. Я створював пари [ключове речення] ↔ [повний опис], щоб модель вчилася бачити суть у фрагменті.
  2. Багато імен, одна суть. Пари з усіх можливих назв одного аніме ("Атака Титанів" ↔ "Attack on Titan") вчили модель асоціювати різні імена з єдиною сутністю.
  3. Мости між мовами. Це ключовий крок. Я створював крос-мовні пари, пов'язуючи українські та англійські назви й описи між собою, щоб зробити модель по-справжньому двомовною.
  4. Контекст з метаданих. Пари на кшталт ["Science Fiction"] ↔ ["Наукова фантастика"] або ["Атака Титанів"] ↔ ["Екшн"] використовували жанри як семантичні "якорі".
Скрипт згенерував понад 170 тисяч таких унікальних "шпаргалок". Після кількох годин навчання я повторив тест із "Фрірен".
image
Як видно на графіку, донавчена модель (помаранчеві стовпці) зробила впевнений вибір: схожість із "Для тебе, Вічний" стала найвищою, а з іншими — значно нижчою. Це довело, що модель навчилася бачити за ключовими словами справжню суть аніме.


Що далі?

Тепер у мене є надійний інструмент, що перетворює будь-який аніме-опис на змістовний вектор. Це фундамент, на якому буде побудовано головну частину проєкту.
У наступній статті я розповім, як ми перейдемо до найцікавішого: справжньої аніме-алгебри.

Посилання
  •  - більш детальний опис та технічні подробиці
розробка
forge
embedding
Ви не авторизовані
Увійдіть у свій акаунт, щоб залишити коментар