Share This
Связаться со мной
Крути в низ
Categories
//Чат-бот на Python (Deep Learning + TensorFlow). Часть VII: обучение модели

Чат-бот на Python (Deep Learning + TensorFlow). Часть VII: обучение модели

29.04.2021Category : Python

chat bot na python deep learning tensorflow chast vii obuchenie modeli a77a1bc - Чат-бот на Python (Deep Learning + TensorFlow). Часть VII: обучение модели

Предыдущая статья — Чат-бот на Python (Deep Learning + TensorFlow). Часть VI: набор данных для обучения.

Добро пожаловать в седьмую часть серии статей про создание чат-бота при помощи алгоритмов глубокого обучения и библиотеки TensorFlow. В ней мы собираемся обсудить нашу модель обучения.

Существует бесконечное количество моделей, которые вы можете придумать и использовать или найти в Интернете и адаптировать к своим потребностям. Но больше всего нас интересовали модели sequence-to-sequence. Дело в том, что они отлично применимы к чат-ботам, хотя, конечно, могут использоваться и для решения многих других задач. По сути, все в жизни можно свести к отображению одной последовательности в другую, так что таким образом можно создать и обучить весьма много моделей для различных задач. Но пока займемся чат-ботами.

В процессе поисков чат-бота мы наткнулись на оригинальное пособие  TensorFlow translation seq2seq, посвященное переводу с английского на французский. И, надо заметить, авторы пособия преуспели в этом. К сожалению, эта модель устарела из-за некоторых изменений в seq2seq.

Существует устаревшая версия seq2seq, которую вы можете использовать с новейшей TensorFlow, но у нас это не сработало. Так что, если вы хотите использовать эту модель, вам, вероятно, потребуется понизить версию TensorFlow (pip install tensorflow-gpu == 1.0.0).

Кроме того, вы можете изучить более поздние модели нейронного машинного перевода (NMT), используя последнюю и лучшую seq2seq от TensorFlow. Последний учебник по NMT и код от TensorFlow можно найти здесь: Neural Machine Translation (seq2seq) Tutorial. На русском языке подобное пособие можно найти здесь.

Наш проект находится здесь:  NMT Chatbot. Он представляет из себя набор утилит, построенных на базе кода TensorFlow NMT.

Проект может быть изменен, поэтому вам следует проверить файл readme, который на момент написания этой статьи имел следующий вид:

$ git clone --recursive https://github.com/daniel-kukiela/nmt-chatbot $ cd nmt-chatbot $ pip install -r requirements.txt $ cd setup (optional) edit settings.py to your liking. These are a decent starting point for ~4gb of VRAM, you should first start by trying to raise vocab if you can. (optional) Edit text files containing rules in setup directory Place training data inside "new_data" folder (train.(from|to), tst2012.(from|to)m tst2013(from|to)). We have provided some sample data for those who just want to do a quick test drive. $ python prepare_data.py ...Run setup/prepare_data.py - new folder called "data" will be created with prepared training data $ cd ../ $ python train.py Begin training

Итак, давайте приступим! Сначала мы все настроим, запустим, а потом разберем основные концепции, необходимые для понимания происходящего.

Если вам потребуется больше вычислительной мощности, то можете попробовать заглянуть в Paperspace. У вас будет достаточно времени, чтобы получить что-нибудь приличное. Мы иногда пользуемся этим сервисом, там можно включить опцию «ML-in-a-Box» и сразу же обучить модель.

Убедитесь в том, что вы загрузили пакет из нашего репозитория либо из самого TensorFlow. В нашем форке есть только одно изменение, связанное с проверкой версии, которая, по крайней мере, в то время, требовала очень специфической версии 1.4.0, что на самом деле не было необходимо. Возможно, это уже исправлено, однако мы можем также вносить и другие изменения в базовый код NMT.

chat bot na python deep learning tensorflow chast vii obuchenie modeli c978079 - Чат-бот на Python (Deep Learning + TensorFlow). Часть VII: обучение модели

Больше материалов по машинному обучению

Подписывайтесь на нас в Телеграм

Подписаться ×

Сразу после загрузки отредактируйте файл setup/settings.py. Если вы пока не понимаете, что к чему, ничего страшного. В таком случае пока не надо ничего менять. Предустановленные настройки потребуют всего около 4 ГБ видеопамяти, но все же позволят произвести согласованную модель. Charles v2 (Чарльз — это имя нашего чат-бота) был обучен именно с такими настройками и ‘vocab_size’: 100000 (это значение в коде было установлено ранее):

hparams = {     'attention': 'scaled_luong',     'src': 'from',     'tgt': 'to',     'vocab_prefix': os.path.join(train_dir, "vocab"),     'train_prefix': os.path.join(train_dir, "train"),     'dev_prefix': os.path.join(train_dir, "tst2012"),     'test_prefix': os.path.join(train_dir, "tst2013"),     'out_dir': out_dir,     'num_train_steps': 500000,     'num_layers': 2,     'num_units': 512,     'override_loaded_hparams': True,     'learning_rate':0.001, #    'decay_factor': 0.99998,     'decay_steps': 1, #    'residual': True,     'start_decay_step': 1,     'beam_width': 10,     'length_penalty_weight': 1.0,     'optimizer': 'adam',     'encoder_type': 'bi',     'num_translations_per_input': 30 } 

Мы вручную уменьшили скорость обучения (learning rate), так как оптимизатору Adam в действительности не нужно плавное затухание (ada означает адаптивный, а m расшифровывается как момент, то есть Adam = адаптивный момент).

Мы сделали скорость 0,001 для начала, затем уменьшили вдвое до 0,0005, потом до 0,00025, а после — до 0,0001. Количество таких шагов зависит от объема ваших данных.

При использовании оптимизатора Adam мы рекомендуем уменьшать скорость обучения (learning rate) раз в 1-2 эпохи. Размер пакета по умолчанию составляет 128, поэтому вы можете рассчитать точное количество шагов для ваших эпох, если вы все же хотите настроить его на автоматическое затухание.

При использовании оптимизатора SGD (стохастический градиентный спуск) лучше закомментируйте коэффициент затухания и поставьте скорость обучения, равную 1.

После установки всех настроек внутри основного каталога (с каталогами utils, tests и setup) добавьте свои файлы train.to и train.from вместе с соответствующими файлами tst2012 и tst2013 в каталог new_data. Теперь наберите cd setup и запустите в этой директории файл prepare_data.py:

 $ python3 prepare_data.py

Наконец, наберите cd ../ и следующую команду:

 $ python3 train.py

В следующей статье мы более подробно обсудим, как работает модель, а также параметры и метрики, участвующие в обучении.

Следующая статья — Чат-бот на Python (Deep Learning + TensorFlow). Часть VIII: изучаем концепции и параметры нашей модели.

chat bot na python deep learning tensorflow chast vii obuchenie modeli a6df1ba - Чат-бот на Python (Deep Learning + TensorFlow). Часть VII: обучение модели

Больше материалов по машинному обучению

Подписывайтесь на нас в Телеграм

Подписаться ×

  • 20 views
  • 0 Comment

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Связаться со мной
Close