- Склонируйте этот репозиторий
- Установите зависимости
- Сделайте задание
- Пришлите @bobazooba в телеграм ссылку
Можно объединяться в группы из двоих человек.
Нужно будет реализовать генеративную модель для ответов на вопросы. В качестве датасета будем использовать вопросы-ответы из сервиса Ответы@Mail.ru.
Данные, которые можете использовать для обучения:
Советую использовать не все данные. Вы можете их пофильтровать. Оптимально, чтобы на одна эпоха обучения для обычной LSTM у вас занимала не больше часа. Вам нужно будет обучать модель на GPU. Научиться работать на GPU, вам поможет это видео.
Вам очень поможет этот туториал про языковую модель.
- Написать Dataset для задачи seq2seq
- Разделить данные на тренировочные и валидационные
- Реализовать модель
- Сделать цикл обучения
- Обучить модель
- Реализовать метод генерации ответа по вопросу с помощью вашей модели
- Обернуть это в телеграм бота используя скрипт
telegram.py
(скоро будет дописан)
Для отладки возьмите небольшой объем данных. Такой, чтобы обучение не занимало больше 10—30-ти минут. Это поможет вам гораздо быстрее итерироваться.
Допустим, у вас баг в инференсе модели. Вы обучаете ее 5 часов, а затем пробуете что-нибудь сгенерировать. У вас не получается, вы понимаете где ошиблись.
Теперь, чтобы исправить этот баг, вам нужно еще 5 часов обучать сетку. Такой подход занимает много времени, поэтому лучше выбрать небольшой кусок данных, обучиться на нем,
написать функцию, которая генерирует ответ и проверить все ли адекватно работает для 30-ти минут обучения. Если модель будет отдавать совершенно рандомные токены в ответе, то значит есть проблема.
В другом случае этих 30-ти минут маленькой модели хватит для того, чтобы не выдавать рандом. Да, этого мало и модель будет плохо отвечать, но она будет хоть как-то отвечать и вы сможете понять что именно не так.
Рекомендуемые действия:
- Написать пайплайн обучения (датасет, модель, трейнлуп, валидация, генерация ответа по вопросу)
- Обучать в течение 30-ти минут
- Проверить генерацию ответа по вопросу, то есть нужна такая функция, на вход которой приходит текст и результат этот функции тоже текст (ответ на вопрос)
- Проверить простые случаи (учитывайте домен данных), можно посмотреть на то как модель отвечает на вопросы из валидации и сравнить на глаз с ответами из датасета
- Если все хорошо, поставить модель учиться на пару часов, если нет, то проверить:
- Функцию генерации ответа
Dataset
, есть ли тамBOS
иEOS
в данных или еще какие-нибудь баги- Проверить модель
- Проверить трейнлуп
Необязательно реализовывать все
- Сделать модель, основанную на lstm/gru 6 баллов
- Сделать модель, основанную на cnn 10 баллов
- Сделать модель, основанную на трансформере (реализовать все слои самому) 10 баллов
- Добавить в rnn/cnn модель attention 5 баллов
- Реализовать жадное семплирование (генерацию по самому вероятному токену, как в туториале про языковую модель) 3 балла
- Реализовать beam search 5 баллов
- Реализовать nucleus sampling 5 баллов
- Добавить condition (в первом датасете дается еще тема вопроса) в модель 3 балла
- Добавить layer norm/residual в cnn или rnn модель 2 балла
- Реализовать аккамуляцию градиентов 3 балл
- Сделать телеграм бота 1 балла
Сделать модель подразумевает весь код с обучением и генерацией ответа по аналогии с языковой моделью.
6-й пункт: у нас есть категория вопроса и мы можем явным образом добавить эту информацию в модель. Затем мы сможем задавать вопрос из любой категории, а отвечать таким ответом, которой больше будет соответствовать категории (которую мы сможем сами задать в модель). То есть на этапе предсказания мы задаем сети вопрос и категорию ответа, то есть в каком стиле наша сеть должна ответить. То есть должно получиться что-то такое:
Вопрос пользователя:
Что мне делать с моей девушкой? она плохо себя ведет
Задаем категорию:
Авто
Ответ модели:
Сдайте ее в техосмотр
Задаем категорию:
Сад и огород
Ответ модели:
Вам нужно лучше ее поливать
7-й пункт:
Статья: https://arxiv.org/pdf/1904.09751.pdf
В помощь: https://huggingface.co/blog/how-to-generate
Необходимые сторонние библиотеки
pip install -r requirements.txt
Будет проверяться корректность логики обучения, будут даваться комментарии что нужно исправить, если домашка будет сдана вовремя. Максимальный балл: 10.
24/12/2021
Далее максимальный балл за работу: 7
- Не отправляйте ссылку на
colab
- Прежде чем отправить задание на проверку, очистите свой код от неиспользованного кода и неважных комментариев
Вопрос: автомобиль стоит в гараже на нем не кто не ездиет, что делать чтобы в дальнейшем не было проблем
Ответ: не ездить на машине
Вопрос: почему иногда дети (почти всегда) готовы послушать мнение кого угодно только не родителей, ведь родители это именно те
Ответ: потому что родители не могут быть объективными
Вопрос: посоветуйте диету для похудения. я хожу в тренажерку 3 раза в неделю. посоветуйте диету для похудения.
Ответ: не есть после 18.00
Вопрос: салават юлаев сыграл третий подряд матч не пропустив ни одной шайбы и забил 15..в нхл бывали такие случаи?
Ответ: да было такое
Вопрос: чем взрослее становится человек, тем.. . (закончите фразу)
Ответ: тем становиться больше
Вопрос: что делать если брат не любит играть в компьютерные игры совсем? ему 30 лет, он говорит что я как дурак веду ся
Ответ: а он не дурак?
Вопрос: элеутерококк, не эффективен?...
Ответ: я не пила и очень помогает
Вопрос: если очень-очень хорошо попросить, то человек сделает это?
Ответ: если просить помощи, то да
Вопрос: улыбаться??? один хрен.. наши проблемы никого не волнуют)))???
Ответ: а я улыбаюсь
Вопрос: что почитать? мне 10.
Ответ: почитай стивена кинга
Вопрос: вы всё ещё верите... в чудо?
Ответ: чудеса бывают разные
Вопрос: мир вам, возлюбленные! вы ищете мудрости и стремитесь стать мудрыми?
Ответ: а я уже давно не ищу.
Вопрос: остекленение балкона 37 тыщ. р. (с установкой) это дорого?
Ответ: смотря в каком регионе
Вопрос: сколько стоит мотор
Ответ: смотря какой у тебя бюджет
Вопрос: какой самый глупый вопрос задаёт мужчина женщине?
Ответ: что ты куришь?
Вопрос: чё творится с людьми!!!?
Ответ: а что с ними происходит?
Вопрос: если человек в ответ на вежливое и добродушное обращение хамит и грубит (неоднократно), это что такое?
Ответ: это значит что он хочет тебя послать
Вопрос: вопрос к психологу) от куда у меня тяга к шансону?)
Ответ: а ты не лезь в эту хрень
Вопрос: а где же спрятались наши обворожительные мужчины?)))
Ответ: в голове и в голове
Вопрос: что мне делать,потерялся интерес к жизни,в мои то15 лет,странно не правда ли?жизнь и дальше будет такой скучной?(((
Ответ: а что ты хочешь найти в жизни????
Вопрос: нашел автомобильный колпак, который кстати меня чуть не прибил(отлетел в меня)) что мне теперь с ним делать???
Ответ: если не умеешь ездить, то не лезь.
Вопрос: что вы сами ну никак не можете увидеть?)
Ответ: то, что я вижу в зеркале
Вопрос: что может сохранить современную семью, если в ней нет любви?
Ответ: любовь и уважение
Вопрос: как найти друзей на улице?
Ответ: в интернете ищи
Вопрос: как поддерживать обьективное восприятие реальности?
Ответ: не надо быть в реальности.
Вопрос: как поставить на место евродверь балконного блока, которая "слетела" верхним углом с пазов?
Ответ: а зачем вам это?
Вопрос: кот в истерике, в чем проблема?
Ответ: он не понимает что он не понимает
Вопрос: для вас работа смысл жизни или как у меня--вырванный из жизни кусок? для меня это только способ заработать деньги !
Ответ: работа для меня работа, работа и работа
Вопрос: как вы придумываете вопросы?)?)?)?)?))))))))))))))) а то что то в голову ничего не лезет, трезвая жизнь она очень трудна
Ответ: а я не спрашиваю зачем мне это надо?
Вопрос: может девяточку на зиму прикупить?
Ответ: а почему бы и нет!
Вопрос: как понять женщин? то они не хотят то они хотят?
Ответ: а ты не знаешь как они хотят
Вопрос: случайностей не бывает?
Ответ: случайность - это не случайность.
Вопрос: может ли сумбурное начало привести к логическому продолжению?)
Ответ: если это не математика, то почему бы и нет?
Вопрос: солнышки, заиньки и просто женщины
Ответ: и тебе того же
Вопрос: что красиво смотрится со стороны?)
Ответ: смотря что ты предпочитаешь
Вопрос: я добрая и преданная была подругам, а они меня предавали, и теперь я не верю
Ответ: а ты не отчаивайся, а то потом будешь жалеть о том что ты не сможешь изменить дружбу.
Вопрос: правда классно, всем всего наобещать и ничего не сделать?:))
Ответ: ну если ты не знаешь что делать - то не стоит
Вопрос: что можно сделать на вечер? сладкое что то.
Ответ: фруктовый салат, оладьи с сахаром и бананами
Вопрос: как вылечить секущиеся волосы
Ответ: в аптеке продается шампунь для волос
Вопрос: ребята, кстати к теме о любви! мне предложили руку и сердце! не знаю как быть?
Ответ: а что ты хочешь услышать?
Вопрос: что будет если артистам "звёзды на льду" вместо коньков выдать ласты ?
Ответ: а что такое ласты?