Тестовое задание команды CoreML |
||
МЕНЮ Искусственный интеллект Поиск Регистрация на сайте Помощь проекту ТЕМЫ Новости ИИ Искусственный интеллект Разработка ИИГолосовой помощник Городские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Техническое зрение Чат-боты Авторизация |
2019-06-28 18:28 Второе тестовое задание на стажировку звучало так: «Цель — научиться вычислять эмбеддинги текстов. Необходимо сделать модель машинного обучения, вычисляющую эмбеддинги текста (векторное представление фиксированной длины). Для этого можно использовать готовые наработки или обучить модель самостоятельно. Вид векторного представления может быть произвольным, но каждый из эмбеддингов не должен содержать более 1000 чисел. После этого нужно по датасету вопросов Quora Question Pairs обучить модель, возвращающую вероятность сходства пар вопросов только по паре их эмбеддингов. Модель должна выдавать на тестовой выборке в публичном лидерборде Kaggle log-loss не больше 0,5. В качестве выполненного задания необходимо предоставить код обучения моделей и формирования итогового файла с результатами, код вычисления эмбеддингов, а также указать ссылку на свой профиль в Kaggle. Кроме log-loss будет учитываться сложность и эффективность представленного решения. Сначала разберёмся с основными понятиями:
Чтобы решить эту задачу, кандидаты могли найти известный способ посчитать эмбеддинг текста (например, по предобученным данным) и применить любую модель классификации достаточной обобщающей способности (например, XGBoost или нейронную сеть). Разумеется, можно было и придумать свой вариант решения. Наиболее популярным среди кандидатов оказался такой подход:
Но в обоих пунктах были и другие решения. Несколько человек попробовали обучить свои эмбеддинги с помощью нейронки по датасету Quora Question Pairs. Обычно это не самая лучшая идея, потому что датасет для классификации существенно меньше, чем текстовые корпуса, на которых обучается Word2Veс. В нём может не хватить контекста для многих редких слов, а у высокочастотных может быть сильно смещённый контекст. Кто-то вместо среднего значения W2V применял взвешивание из TF-IDF, а кто-то использовал не gensim, а более продвинутые варианты эмбеддингов, которые учитывают n-граммы. И то и другоев среднем улучшает показатели качества. На втором этапе решения задачи тоже были подходы, отличающиеся от наиболее популярного. В частности, вместо того чтобы подавать на вход сами эмбеддинги, достаточно эффективным было использовать в качестве признаков расстояния между ними — скалярное произведение, евклидово расстояние. Вообще, в таких задачах feature engineering может показывать результаты намного лучше наивного подхода, кроме того обеспечивая большую скорость и сходимость обучения. В некоторых решениях были представлены и более классические подходы к решению задачи классификации текстов — рекуррентные и сверточные нейронные сети. Этот подход выдавал сравнимые с другими, а иногда и значительно более качественные классификаторы, хотя и требовал от разработчика более глубокого понимания алгоритма обучения модели. Кроме двух основных этапов был ещё нулевой этап — препроцессинг текста. Требования к его качеству часто недооценивают, но он важен, когда векторизация происходит на уровне отдельных слов. Большинство кандидатов использовали стандартные функции для фильтрации высокочастотных слов, убирали пунктуацию и проводили нормализацию регистра. Кроме этого можно было проанализировать слова, которые не вошли в словарь используемых эмбеддингов, заменить именованные сущности на соответствующие им типы (города, места, имена и другие) и исправить опечатки. Но эти преобразования борются за небольшие проценты качества — основной вклад вносят алгоритмы эмбеддингов и классификации. В целом все работы были достойными, и мы рады, что кандидаты постарались написать хороший код и выполнить задачу на максимально высоком уровне. Источник: m.vk.com Комментарии: |
|